
数仓分层的核心目的解决数据重复计算模块之间能够复用以及数据功能的解耦合理的数仓分层能够快速响应多变的业务需求同时能够提高开发效率还可以方便数据血缘的追踪比如一张表出问题了能够快速定位到源头如果数仓建设只是从满足业务分析需求这一个点出发的话其实一个ods层就足够了但随着数据仓库接入的数据来源越来越多数据量也越来越大同时也对应着更多的业务分析需求在这么多分析需求提取同一份数据源后在后续的计算中不同的业务需求之间存在着重复的中间计算过程而这些重复的中间计算过程随着业务分析需求量的加大重复计算的次数也变得越来越多为了避免这些无谓的重复计算所带来的计算资源的浪费可以将共性计算的部分给提取出来形成固定的中间层而且这个中间层数据不用等到每次业务分析需求开始时才计算但数据源一旦进入到数据仓库中就可以开始中间层的数据计算并把计算结果保存到中间状态表中提前为各个业务需要做好数据准备。又因为随着业务需求的复杂性不断增加为了提高这个中间数据使用范围需要把这个中间数据根据其功能和特点进一步划分然后就形成了现在业界比较统一的分层第一统一不同来源数据的接入和清洗第二沉淀公共加工逻辑减少重复开发和重复计算第三统一业务口径提升数据一致性数仓建设保证数据质量开发前的工作:主要是做数据探查,数据探查有助于我们更好地去理解数据集1.做数据量的统计,看底表数据量多大,指定同步策略2.字段类型检查,看每个字段类型是否与预期一致3.查找统计重复数据,看对业务的影响情况4.异常值检测,寻找超出正常范围的值5.根据探查的结果制定清洗策略,比如去重,处理空值,数据类型转换,日期格式统一6.ods层到dwd做清洗规范字段名称和字段类型开发中的工作:1.可以在dwd设计清洗层,根据数据探查的结果对源数据进行清洗,保证基层数据的质量2.开发的时候遵循数仓团队内部的开发规范进行开发,比如合理设计模型,代码规范编写,以及比如对一个表新增了指标,在上线前要做数据校验,与测试表的数据进行对比,无误后才发布上线任务上线后3.上线后,可以对任务做监控,比如运行成功,运行超时,保证数据的及时性;还可以对表做监控,比如主键唯一性监控,数据量波动监控,核心字段枚举值监控来保证数据质量4.还有当满足不了下游的产出时间要求时,要有兜底的能力,先用t-2天的数据去兜底,比如让看板先有数据,然后继续跑t-1天的数据,跑完后要把看板数据快速切换到t-1天的数据数据域为用户域交易域根据此讨论主题域