当前位置:   article > 正文

数据仓库模型报表设计_报表数据模型设计

报表数据模型设计

夫道、德、仁、义、礼,五者一体也。
——黄石公《素书·第一章·原始》


前言

记录数据仓库模型报表设计过程中遇到的坑及其设计可以遵循的规则。持续更新中。


一、ODS接入

ods接入时不做过多的处理,可以选择直接贴源或者做一些普遍存在的问题处理(比如空值的展示样式统一,关系型数据库中字符串数据类型直接使用sqoop接入时会变成null,可以加参数统一空值)。

详细可参考本人博文:Sqoop接入数据时统一空值

二、DIM设计

  1. 维度表需要注意的是必须保证一个分区内每条数据唯一,避免和事实表关联时一对多产生笛卡尔积。
  2. 一般可以直接将维度表设计成扁平化,这样关联主键可以带出多个维度,使用起来方便(比如物料维度表,包含物料名称,物料多级分类,物料属性等等)。
  3. 维度表设计时不用过多考虑现有需求,可以将有用的维度都拿进来。

详细可参考本人博文:维度建模之维度表的设计经验分享

三、DWD设计

  1. 尽可能地细粒度,保证下游下钻的可能(比如订单事务事实表可以把粒度定为订单行粒度)。
  2. 标准的事实表是不含有具体维度字段,而是有很多维度外键以便其下游关联维度,但实际工作中,因为存储成本较低,会把很多维度字段也冗余到事实表里,让表更加简单易懂,有时也会把一些复用率很低的维度直接退化到事实表中,不独立成维度表。
  3. 尽量都先建事务事实表,本人目前所在的公司使用很多saas系统,数据库没有在自己公司手里,都在saas的云端,接入数据时使用接口接入,这场景和传统数仓直接从业务数据库接入数据很不一样,因为金蝶接口并没有类似数据更新时间(当一条数据更新时更新日期字段不一定会记录当时日期,甚至表行数据改变时表头的更新日期字段也并不一定跟随一起更新,这非常非常不友好!!!)和数据删除标志这样的字段,这造成无法直接按数据更新时间增量接入数据,只能一次取一段时间的数据,后续建模时按时间排序取最新,形成快照表。
  4. 事实表设计时也不用过多考虑现有需求,应该从具体的业务流程入手,将整个业务流程构建成事实表。

详细可参考本人博文:维度建模之事实表的设计经验分享

四、DWS设计

  1. dws表可以做成宽表,实现下游复用。
  2. 通常从dws表开始直接服务于分析,大部分由分析师使用,设计时要从需求出发(比如dws包含公司所有部门的销售数据,其下游ads再分部门汇总数据,类似这样来实现复用)。

详细可参考本人博文:维度建模之汇总分析表的设计经验分享

五、ADS设计

ads的设计需要结合报表的展示样式考虑。

详细可参考本人博文:维度建模之应用层报表设计经验分享


总结

夫道、德、仁、义、礼,五者一体也。出自汉代黄石公的《素书》,意为道、德、仁、义、礼五位一体,密不可分。
数据仓库分层亦是如此,ODS、DIM、DWD、DWS、ADS各司其职,有不同的侧重点,如果按各自的规则特点去设计,会起到事半功倍的效果,整体形成更加实用的架构。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/592022
推荐阅读
相关标签
  

闽ICP备14008679号