某业务数仓建模理论学习
JRQZ
数仓分层理论
- ODS(Operational Data Store):操作数据存储是一个中间数据存储层,用于存储来自多个源系统的实时操作数据。ODS通常包含原始数据,用于支持实时查询和报告。它作为数据仓库的前身,提供了一个集中式的数据存储,以便将数据进一步转换、清洗和加载到数据仓库中。
- DWD(Data Warehouse Detail):数据仓库详细层是数据仓库体系结构中的一个层次,用于存储经过清洗、转换和集成的详细数据。在这一层,数据通常以事实表和维度表的形式组织,以支持多维数据分析。DWD层的数据具有较高的数据质量和一致性,可以用于进一步的数据挖掘和报告。
- DWM(Data Warehouse Mart):数据仓库集市层是数据仓库体系结构中的另一个层次,用于存储为特定业务领域或部门定制的数据子集。DWM层的数据通常是从DWD层中提取、汇总和转换而来的。数据仓库集市提供了更高层次的数据聚合,以支持特定业务需求的分析和报告。
- DM(Data Mart):数据集市是针对特定业务领域或部门的小型数据仓库。数据集市通常包含有限的数据主题,以便更快速、更有效地支持特定业务需求的数据分析和报告。数据集市可以是独立的,也可以作为更大数据仓库体系结构的一部分。
某业务数仓分享
数仓建模:业务->领域->逻辑->物理
业务数仓实际设计过程分为七个步骤:梳理业务流程,划分主题,梳理指标,调研实体关系,梳理维度,数仓分层,构建数据仓库
- 梳理业务流程
找到谁,在什么环节,做什么关键动作,得到什么结果
在现有业务流程上找到数据节点
- 划分主题域
主题域是业务业务过程中一个个不可划分的行为事件
例如申购主题域中有预审购、申购、确认申购结果等业务流程
主题域划分要尽量涵盖所有业务需求
- 梳理指标体系
目标:统一语言,统一口径
- 分析实体关系
建模方法:从全业务的高度,用实体关系模型来描述业务
根据现有的实体关系图分析需要建设哪些dwd表
- 梳理维度
目标:构建一致性库表,避免维度概念散落在业务数仓各处
例如账户类型、入口类型、事件类型等维度
好处:有利于统一建设维表、方便后续维度建模
- 数仓分层
核心是逐层解耦
越到底层,越接近业务发生的记录
越到上层,越接近业务目标
ODS保存原始数据,生命周期默认永久
DWD基于之前的实体关系图建设,充分反映业务本身,而且是稳定的,这层是进入数仓的关键通道,需要对数据质量严格把关
DWM基于维度建模(如星型模式、雪花模式)的理论设计,能够有效提升数据的使用效率
DM层按照宽表模型进行设计,以空间换时间提升产品获取指标的效率
- 数仓物理建模
真正的代码开发阶段,有几个要点:
设计先行,现在腾讯文档上设计库表模型,优先评审,避免返工
根据评审的库表模型,在xdata平台上配置计算任务,配置任务依赖
任务名和表明最好一致
生命周期的管理,ODS尽可能保留所有历史数据,对于DWD/DWM/DM需要设置生命周期,存款侧实体类数据一般保存5年,用户行为类数据保存3年
如何提升数据质量:
关键:早发现,早恢复
添加校验任务&建立全链路数据视图
DWD表清洗
目的:高效、高质量的支撑业务的数据诉求,依赖方须向产品/业务团队提供dwd层以上的数据表,而非ods源数据
清洗要求:
-
ods去重(重复数据造成上层数据处理复杂,数据倾斜),dwd配置数据唯一性质量告警
-
base64解码(Base64是一种用于将二进制数据编码为ASCII文本的方法,Base64编码使用64个字符(A-Z,a-z,0-9,+ 和 /)以及一个可选的填充字符(=)来表示二进制数据。它将二进制数据划分为每3个字节(24位)一组,然后将这24位数据分成4个6位的数据块。每个6位数据块对应一个Base64字符。如果二进制数据的长度不是3的倍数,那么在编码时会用填充字符(=)补齐)
-
加密敏感信息可在计算过程中解密,但不能解密落地
-
时间戳统一格式,如”yyyy-mm-dd hh:mm:ss“,默认值统一为”1970-01-01 08:00:00“
-
属性/结构化字段必须对其模型展开,如果出现NULL值必须和产品沟通处理方式
-
总结:DWD表是屏蔽技术实现的用于业务分析的数仓表(如自增id、校验码、时间戳等纯技术语义字段不能进入dwd层)
要求:
- 配置告警(质量告警、失败/延迟告警)
- 完善数据字典(表描述、所属领域、责任人、设计文档、字段描述等元数据)
- 加入主干数仓