谈到数据仓库的分层,你知道为什么要分层吗?
你可能会这么说。。。什么
1、清晰数据结构、复杂问题简单化
2、减少重复开发、统一数据口径
分层是有业务需求才去做的,而不是为了分层而分层。由于你的数据量又大又杂,数据一点都不好用,所以出现了分层。所以分层本质上是解决了易用性,降低使用数据的成本。
如果不分层的话,会怎么样呢?不分层的话,不同的人需要同一份数据时,都需要都从原始数据开始计算,同时也会造成数据不一致问题。而分层后,我提前已经计算好了,直接在我的公共层取,一定程度上节省计算资源,同时统一数据出口。
经典的分层模型
简单每一层做的事情:
- ods:原封不动拉过来,不做修改
- dwd:维度补全、维度退化、数据处理(处理null值、数据类型标准化、单位标准化、编码转换)、拆表、公共字段的解析
- dws:维度对象天粒度的汇总。沉淀一些公共指标,这些指标是面向度量的,比如:总金额
- dwm: 维度对象历史累计汇总。数据集市和指标库
- app:个性化指标的加工。比如留存、同环比等
- dim 一致性维度建设(维度提取、维度整合)
分好层后,那你的使用原则是什么呢?
1、数据流是自下而上,禁止逆向调用,避免同层调用
2、优先使用公共层。dws和dwm
3、避免跨层调用。
聊到这里,相信对分层有个大概的认知了吧。。那宽表有什么作用呢?
- 减少上层应用对明细数据的访问
- 节省资源
- 统一统计口径
所以说宽表是很重要的,一定要保证宽表的数据是正确的!!!
总结
万事都是合理的。分层没有绝对的好与坏,适合你的就是最好的。