- 第2章 项目需求及架构设计
- 需求分析
- 项目框架
- 技术选型
- 数据流程设计
- 框架版本选型
- 服务器选型
- 集群规模
- 集群资源规划设计
- 第3章 数据生成模块
- 目标数据
- 页面
- 事件
- 曝光
- 启动
- 错误
- 数据埋点
- 主流埋点方式(了解)
- 埋点数据上报时机
- 埋点数据日志结构
数仓笔记
数据仓库和数据集市详解:ODS、DW、DWD、DWM、DWS、ADS
尚硅谷数据仓库实战之1项目需求及架构设计
尚硅谷数据仓库实战之2数仓分层+维度建模
尚硅谷数据仓库实战之3数仓搭建
尚硅谷数据仓库4.0视频教程
第2章 项目需求及架构设计 需求分析B站直达:2021新版电商数仓V4.0丨大数据数据仓库项目实战
百度网盘:https://pan.baidu.com/s/1FGUb8X0Wx7IWAmKXBRwVFg ,提取码:yyds
阿里云盘:https://www.aliyundrive.com/s/F2FuMVePj92 ,提取码:335o
- 用户行为数据采集平台搭建
- 业务数据采集平台搭建
- 数据仓库维度建模
- 业务埋点
- 即席查询工具,随时进行指标分析
- 集群监控,异常报警
- 元数据管理
- 质量监控
- 权限管理
考虑因素:数据量大小、业务需求、行业内经验、技术成熟度、维护成本、总成本运算
相关技术列举:
根据需求选择合适的技术,设计规划具体的数据仓库架构流程
尚硅谷测试稳定适配的版本
在企业中通常会搭建一套生产集群和一套测试集群。生产集群运行生产任务,测试集群用于上线前代码编写和测试。
1)生产集群
(1)消耗内存的分开 (2)数据传输数据比较紧密的放在一起(Kafka 、Zookeeper) (3)客户端尽量放在一到两台服务器上,方便外部访问 (4)有依赖关系的尽量放到同一台服务器(例如:Hive和Azkaban Executor)
2)测试集群服务器规划
我们要收集和分析的数据主要包括页面数据、事件数据、曝光数据、启动数据和错误数据。
页面页面数据主要记录一个页面的用户访问情况,包括访问时间、停留时间、页面路径等信息。
事件数据主要记录应用内一个具体 *** 作行为,包括 *** 作类型、 *** 作对象、 *** 作对象描述等信息。
曝光数据主要记录页面所曝光的内容,包括曝光对象,曝光类型等信息。
启动数据记录应用的启动信息。
错误数据记录应用使用
过程中的错误信息,包括错误编号及错误信息。
目前主流的埋点方式,有代码埋点(前端/后端)、可视化埋点、全埋点三种。
***代码埋点***是通过调用埋点SDK函数,在需要埋点的业务逻辑功能位置调用接口,上报埋点数据。例如,我们对页面中的某个按钮埋点后,当这个按钮被点击时,可以在这个按钮对应的 onClick 函数里面调用SDK提供的数据发送接口,来发送数据。
可视化埋点只需要研发人员集成采集 SDK,不需要写埋点代码,业务人员就可以通过访问分析平台的“圈选”功能,来“圈”出需要对用户行为进行捕捉的控件,并对该事件进行命名。圈选完毕后,这些配置会同步到各个用户的终端上,由采集 SDK 按照圈选的配置自动进行用户行为数据的采集和发送。
***全埋点***是通过在产品中嵌入SDK,前端自动采集页面上的全部用户行为事件,上报埋点数据,相当于做了一个统一的埋点。然后再通过界面配置哪些数据需要在系统里面进行分析。
埋点数据上报时机埋点数据上报时机包括两种方式。
方式一,在离开该页面时,上传在这个页面产生的所有数据(页面、事件、曝光、错误等)。优点,批处理,减少了服务器接收数据压力。缺点,不是特别及时。
方式二,每个事件、动作、错误等,产生后,立即发送。优点,响应及时。缺点,对服务器接收数据压力比较大。
本次项目采用方式一埋点。
埋点数据日志结构我们的日志结构大致可分为两类,一是普通页面埋点日志,二是启动日志。
普通页面日志结构如下,每条日志包含了,当前页面的页面信息,所有事件(动作)、所有曝光信息以及错误信息。除此之外,还包含了一系列公共信息,包括设备信息,地理位置,应用信息等,即下边的common字段。
(1)普通页面埋点日志格式
{ "common": { -- 公共信息 "ar": "230000", -- 地区编码 "ba": "iPhone", -- 手机品牌 "ch": "Appstore", -- 渠道 "is_new": "1",--是否首日使用,首次使用的当日,该字段值为1,过了24:00,该字段置为0 "md": "iPhone 8", -- 手机型号 "mid": "YXfhjAYH6As2z9Iq", -- 设备id "os": "iOS 13.2.9", -- *** 作系统 "uid": "485", -- 会员id "vc": "v2.1.134" -- app版本号 }, "actions": [ --动作(事件) { "action_id": "favor_add", --动作id "item": "3", --目标id "item_type": "sku_id", --目标类型 "ts": 1585744376605 --动作时间戳 } ], "displays": [ { "displayType": "query", -- 曝光类型 "item": "3", -- 曝光对象id "item_type": "sku_id", -- 曝光对象类型 "order": 1, --出现顺序 "pos_id": 2 --曝光位置 }, { "displayType": "promotion", "item": "6", "item_type": "sku_id", "order": 2, "pos_id": 1 } ], "page": { --页面信息 "during_time": 7648, -- 持续时间毫秒 "item": "3", -- 目标id "item_type": "sku_id", -- 目标类型 "last_page_id": "login", -- 上页类型 "page_id": "good_detail", -- 页面ID "sourceType": "promotion" -- 来源类型 }, "err":{ --错误 "error_code": "1234", --错误码 "msg": "***********" --错误信息 }, "ts": 1585744374423 --跳入时间戳,何时发送到服务器 }
(2)启动日志格式
启动日志结构相对简单,主要包含公共信息,启动信息和错误信息。
{ "common": { "ar": "370000", "ba": "Honor", "ch": "wandoujia", "is_new": "1", "md": "Honor 20s", "mid": "eQF5boERMJFOujcp", "os": "Android 11.0", "uid": "76", "vc": "v2.1.134" }, "start": { "entry": "icon", --icon手机图标 notice 通知 install 安装后启动 "loading_time": 18803, --启动加载时间 "open_ad_id": 7, --广告页ID "open_ad_ms": 3449, -- 广告总共播放时间 "open_ad_skip_ms": 1989 -- 用户跳过广告时点 }, "err":{ --错误 "error_code": "1234", --错误码 "msg": "***********" --错误信息 }, "ts": 1585744304000 } ```xxxxxxxxxx { "common": { "ar": "370000", "ba": "Honor", "ch": "wandoujia", "is_new": "1", "md": "Honor 20s", "mid": "eQF5boERMJFOujcp", "os": "Android 11.0", "uid": "76", "vc": "v2.1.134" }, "start": { "entry": "icon", --icon手机图标 notice 通知 install 安装后启动 "loading_time": 18803, --启动加载时间 "open_ad_id": 7, --广告页ID "open_ad_ms": 3449, -- 广告总共播放时间 "open_ad_skip_ms": 1989 -- 用户跳过广告时点 },"err":{ --错误"error_code": "1234", --错误码 "msg": "***********" --错误信息}, "ts": 1585744304000}
本文由博客一文多发平台 OpenWrite 发布!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)