数仓模型设计与开发规范
数仓架构
1、数仓架构分3部分:业务层、数仓层(细分:ods/dwd[dim]/dws/ads)、业务调用层
2、数仓层只做数据清洗、数仓建模,不涉及业务调用相关的内容
w’t# 模型设计思路总结
1、设计单一业务过程事实表扩展计算某个指标[事实表可能会进行维度退化,要结合查询性能和数据存储考虑(详细说说?待补充)]
2、设计大宽表计算跨多个业务过程的复杂指标[要考虑下游模型调用的频次、存储空间、查询性能来判断(详细说说?待补充)]
3、周期快照表设计方式?(分区、字段设计),应用场景?
4、拉链表的设计方式?(分区、字段设计),应用场景?
5、设计大宽表时,把每个表的主键id加进去,方便排查和追溯
6、dws 层计算尽量不要要多事实表关联聚合,若需要跨多业务过程计算指标可以考虑库设计dwd明细宽表(特别是实时数仓,可以避免业务过程数据频繁更新导致状态过大和数据乱序问题)
数据存储设计
1、ods层:尽量与业务模型保持一致,使用行式存储与压缩(采用行级存储压缩的原因是因为dwd基于ods的计算一般都是全表扫描,使用行级存储可以加快查询与计算性能)
2、dwd层只包括明细指标、按列式存储压缩(dws基于dwd计算大多数情况下,只会查询部分字段进行聚合,而且可能会提前过滤数据,用列式存储可以加快数据过滤(因为列式存储有索引))
3、dws层:按通用维度做轻度聚合、按列存储压缩
4、ads层:因为提供外部应用查询,一般是按行查询,可以使用行式存储
行列存储参考:https://blog.csdn.net/weixin_36755535/article/details/126579818
开发规范
表名定义规范
/