概要
数据中台建设是大数据应用的关键环节,其中数据体系建设是重中之重。通过构建统一的数据体系结构,能够实现对数据的整合、处理、分析和应用,为企业的业务决策提供有力支持。本文将详细介绍数据中台建设中数据体系的建设,包括数据分层、数据建模、数据存储和管理等方面。
一、数仓分层
数仓概念
- 什么是数仓:数据仓库是为企业所有决策制定过程,提供所有系统数据支持的战略集合。通过对数据仓库中数据的分析,可以帮助企业改进业务流程、控制成本、提高产品质量等。数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好准备。这些准备包括对数据的清洗、转义、分类、重组、合并、拆分、统计等等
- 数仓的输入系统:埋点产生的用户行为数据、JavaEE 后台产生的业务数据、爬虫数据。
- 输出系统:报表系统、用户画像系统、风控系统、推荐系统、机器学习等.
ODS(原始数据层)
是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的 ETL 之后,装入本层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。但是,这一层面的数据却不等同于原始数据。在源数据装入这一层时,要进行诸如去噪(例如有一条数据中人的年龄是 300 岁,这种属于异常数据,就需要提前做一些处理)、去重(例如在个人资料表中,同一 ID 却有两条重复数据,在接入的时候需要做一步去重)、字段命名规范等一系列操作。
DW(数据仓库层【DWD,DWM,DWS】)
数据仓库层(DW),是数据仓库的主体.在这里,从 ODS 层中获得的数据按照主题建立各种数据模型。这一层和维度建模会有比较深的联系。
细分:
- 数据明细层:DWD(Data Warehouse Detail)
- 数据中间层:DWM(Data WareHouse Middle)
- 数据服务层:DWS(Data WareHouse Servce)
DWD(明细数据层)
数据清洗
(1)空值去除
(2)过滤核心字段无意义的数据,比如订单表中订单 id 为 null,支付表中支付 id 为空
(3)将用户行为宽表和业务表进行数据一致性处理
清洗的手段
Sql、mr、rdd、kettle、Python等等
清洗掉多少数据算合理
1 万条数据清洗掉 1 条。
脱敏
对手机号、身份证号等敏感数据脱敏
维度退化
对业务数据传过来的表进行维度退化和降维。(商品一级二级三级、省市县、年月日)
LZO压缩
列式存储 parquet
DWM(数据中间层)
DWM是对DWD层的生产数据进行轻度综合和汇总统计(可以把复杂的清洗,处理包含,如根据PV日志生成的会话数据)。轻度综合层与DWD的主要区别在于二者的应用领域不同。
- 库与表命名。库名:dwb,表名:初步考虑格式为:dwb日期业务表名,待定。
- 旧数据更新方式:直接覆盖
DWS(服务数据层)
它会将来自下层(如DWD或DWM)的数据进一步整合和汇总,形成可以直接服务于报表系统、BI工具或者数据分析应用的数据集。
DWS 层有 3-5 张宽表(处理 100-200 个指标 70%以上的需求)
具体宽表名称:用户行为宽表,用户购买商品明细行为宽表,商品宽表,购物车宽表,物流宽表、登录注册、售后等。
哪个宽表最宽?大概有多少个字段?
最宽的是用户行为宽表。大概有 60-100 个字段
具体用户行为宽表字段名称
评论、打赏、收藏、关注–商品、关注–人、点赞、分享、好价爆料、文章发布、活跃、签到、补签卡、幸运屋、礼品、金币、电商点击、gmv
ADS(应用数据层)
ADS层主要关注的是对原始数据进行加工处理后形成便于应用端使用的数据集
如何分析用户活跃?
在启动日志中统计不同设备 id 出现次数。
如何分析用户新增?
用活跃用户表 left join 用户新增表,用户新增表中 mid 为空的即为用户新增。
如何分析用户 1 天留存?
留存用户=前一天新增 join 今天活跃
用户留存率=留存用户/前一天新增
如何分析沉默用户?
(登录时间为 7 天前,且只出现过一次)
按照设备 id 对日活表分组,登录次数为 1,且是在一周前登录。
如何分析本周回流用户?
本周活跃 left join 本周新增 left join 上周活跃,且本周新增 id 和上周活跃 id 都为 null。
如何分析流失用户?
(登录时间为 7 天前)
按照设备 id 对日活表分组,且七天内没有登录过。
如何分析最近连续 3 周活跃用户数?
按照设备 id 对周活进行分组,统计次数大于 3 次。
如何分析最近七天内连续三天活跃用户数?
1)查询出最近 7 天的活跃用户,并对用户活跃日期进行排名
2)计算用户活跃日期及排名之间的差值
3)对同用户及差值分组,统计差值个数
4)将差值相同个数大于等于 3 的数据取出,然后去重,即为连续 3 天及以上活跃的用户
7 天连续收藏、点赞、购买、加购、付款、浏览、商品点击、退货
1 个月连续 7 天
连续两周
二、数仓建模
常用的建模工具
PowerDesigner/SQLYog/EZDML
在数据分层的基础上,需要对数据进行建模。建模的目的是将现实世界的数据关系抽象化,以便更好地组织和管理数据。在数据中台中,一般采用星型模型或雪花型模型进行建模。星型模型由一个事实表和多个维度表组成,而雪花型模型则在星型模型的基础上进一步细化了维度表的结构。
三、数据存储和管理
在数据建模的基础上,需要选择合适的存储和管理技术对数据进行存储和管理。在数据中台中,一般采用分布式存储系统对数据进行存储和管理,如Hadoop、Spark等。这些系统具有高可用性、高扩展性和高并发性等特点,能够满足大数据应用的需求。