• 数仓分层设计


    目录

    一、分层目的

    二、分层架构概览

    三、详细分层设计

    1.ODS (opreational data store)

    2.DWD(data warehouse detail) 

    3.DIM(dimension) 

    4.DWS(data warehouse service) 

    5.ADS(Application Data Service)


    一、分层目的

    数仓分层的目的是:逐层解耦,减少重复计算,降低烟囱式开发

    越到底层,越接近业务发生的记录,越到顶层,越接近业务目标。

    二、分层架构概览

     

    三、详细分层设计

    1.ODS (opreational data store)

    • 存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区。
    • 作用
      • ①保持数据原貌不做任何修改,起到备份数据的作用
      • ②数据采用压缩,减少磁盘存储空间
      • ③创建分区表,防止后续的全表扫描

    2.DWD(data warehouse detail) 

    DWD层是以业务过程为驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。

    可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联,在该层也会做一部分的数据聚合,将相同主题的数据汇集到一张表中,提高数据的可用性。

    维度建模一般按照以下5个步骤: 确定数据域→选择业务过程→声明粒度→确认维度→确定事实

    (1).确定数据域(Domain)

    数据域划分就是对数据分类。而基于不同的目的,有不同的分类标准。

    设计时注意点:

    1.不重不漏,确保每个表都在一个域里,且只在一个域里(精确定位)
    2.每个域下都可以根据需要再分子域,不限定层级(最自由方便)
    3.如果分子域就不能放表,表只放在最底层的域中(树状目录管理时更方便)
    4.最好保证每个域下的子域数量或表数量在20个左右(太多了不方便记忆管理,太少了没必要划分)
    5.不好划分的可归类为【其它】(减少域层级数量有理由理解记忆)
    6.数据团队分域可以作为分工的标准(数据不重复、分工明确、界限清晰)
    7.数据团队分域后,可以决定域内表的中间命名(看到表名时可以理解更多信息)

    示例:

    交易域

    (2).选择业务过程

    业务过程是一个不可拆分的行为事件

    示例:

    下单、支付、发货、确认收货 

    (3).声明粒度 

    声明粒度意味着精确定义事实表中的一行数据表示什么,应该尽可能选择最小粒度,以此来应各种各样的需求。

    示例:

    订单当中的每个商品项作为下单事实表中的一行,粒度为每次。

    (4).确定维度 

    维度就是看事情的角度,5W1H(when、where、who、what、why、how)

    示例:

    时间维度、地区维度、用户维度、商品维度

    (5).确定事实

    事实即业务中的度量值

    示例:

    订单金额、下单次数

    dwd层主要做的事

    1.统一标准

     字段格式命名统一,统一时间格式,单位统一

    2.数据清洗

    清洗掉脏数据,去除空值、过滤核心字段无意义的数据

    3.维度退化

    对业务数据传过来的表进行维度退化和降维。(商品一级二级三级、省市县、年月日)

    3.DIM(dimension) 

    基于维度建模理念思想,建立整个企业的一致性维度。降低数据计算口径和算法不统一风险。

    示例:

    1.维度退化(雪花型退化成星型)

    地区表和省份表退化为地区维度表,商品表、品类表、spu表、商品三级分类、商品二级分类、商品一级分类表退化为商品维度表,活动信息表和活动规则表退化为活动维度表。

    2.缓慢变化维

    直接覆盖原值、新增维度列(旧列、新列)、新增维度行拉链(2个时间戳 开始时间 结束时间) 

    4.DWS(data warehouse service) 

    DWS层会在DWD层的数据基础上,对数据做横向的连接,纵向轻度的聚合操作,生成一系列的中间表,提升公共指标的复用性,减少重复加工。 

    示例:

    用户订单汇总表

    用户id,商品id,当日订单数,当日退单数

    5.ADS(Application Data Service)

    存放数据产品个性化的统计指标数据。根据CDM与ODS层加工生成。

    示例:

    用户运营表

    用户id,浏览次数,登陆次数,购买次数,退款次数,确认收货次数

  • 相关阅读:
    【Python3】【力扣题】190. 颠倒二进制位
    java-php-net-python-放心花投资理财网系统计算机毕业设计程序
    C++编译报错:does not name a type
    解答嵌入式和单片机的关系
    【万字长文】使用 LSM-Tree 思想基于.Net 6.0 C# 实现 KV 数据库(案例版)
    2022年中级经济师《工商管理》考试大纲
    深入理解JVM虚拟机第十篇:两个Class对象是否来源于一个类文件的标准以及类的主动使用与被动使用
    如何使用Node.js快速创建HTTP服务器并实现公网访问本地Server
    JWY-32B电压继电器
    Cross-Entropy Loss(多分类损失函数)
  • 原文地址:https://blog.csdn.net/chimchim66/article/details/125593667