美文网首页
浅谈数仓分层

浅谈数仓分层

作者: xiaoc024 | 来源:发表于2020-09-09 14:45 被阅读0次

1. Background:

生产中,数仓分层没有一个统一的规范,各家公司都有一套自己的逻辑。命名更是五花八门。但只要有一套适合业务的分层、建模逻辑并贯彻执行,对开发效率的提升将会是很大的帮助。这篇文章将介绍一种四层分层的方案。

2. Basic

2.1 维度表 vs 事实表

  • 维度表一般是对事实的描述信息,每一张维度表对应现实世界中的一个对象或者概念,如用户、商品、日期、地区这些都可以作为维度表。一张维度表一般由一个主键和若干属性字段构成。
  • 事实表一般是对某种动作的描述,每行数据代表一个业务事件。“事实”这个术语表示对业务事件的度量值。例如事实表可以是下单、支付。其中事实(度量值)可以是下单的次数、下单的金额;支付的次数、支付的金额。一张事实表一般由若干维度表的外键和若干度量值构成。

2.2 星型模型 vs 雪花模型

  • 星型模型:事实表中外键关联的维度表只有一个层级。例如事实表中地区维度的外键 location_key 关联的维度表只有一层,可以通过 location_key 获取都所有关于地区的属性。
  • 雪花模型:事实表中外键关联的维度表可以有多个层级。例如事实表中地区维度的外键 location_key 关联的维度表有多层,通过 location_key 只能获取到部分关于地区的属性,获取更多的属性需要进行 join 操作关联下一层级的维度表。

2.3 关系建模 vs 维度建模

  • 关系建模一般用于关系型数据库,遵循范式理论建模。
  • 维度建模一般在数仓的原始数据层的上一层,遵循星型模型建模。

3. Deep

掌握了上一节介绍的基本知识后,这里介绍一种四层数仓的搭建方式。分别是 ODS 层,DWD 层,宽表层(DWS,DWT),ADS 层。

3.1 ODS 层

该层保持数据原貌,不对数据进行任何修改。如用户行为埋点数据可以直接使用一行 line string 进行存储。数据库产生的业务数据则维持原表结构进行存储。

3.2 DWD 层

所谓维度建模就是在这一层完成的。整体分为四个步骤。

DWD 层的特点是多维度,少度量(单个事实表的度量值)。

  • 选择业务过程
    • 即选择需要的所有事实表
  • 声明粒度
    • 声明一行数据代表的含义,这里取最小的粒度
  • 确认维度
    • 确认所选择的每张事实表需要的所有维度
  • 确认事实
    • 事实即是度量值。确认所选择的每张事实表需要统计的度量值

根据以上步骤最终将得出一个表格:

时间 会员 地区 度量值
订单 次数、金额
支付 次数、金额
收藏 次数

得出该表格后,根据每一个事实表进行建模。以订单事实表为例,需要关联时间维度、用户维度、地区维度,并统计次数和金额。需要注意的是,如果维度有多级,需要使用 join 操作进行维度退化,满足星型模型的规范。

3.3 宽表层

该层的特点是主题驱动,在 DWD 层建模后理论上所有的统计都可以从 DWD 层进行统计获取,但是实际生产中往往是主题驱动的,如果不设置一层宽表层将会造成大量的重复计算并且统计分析的难度也大大提升。宽表层从维度出发,观察各个事实表的度量值并进行建表。

宽表层的特点是单维度,多度量(多张事实表的度量值)

宽表层可以进一步细化出 DWS 层、DWT 层。其中 DWS 层每行数据的是天粒度的度量值。DWT 层则更广泛,如事件开始时间、结束时间的度量值。粒度也会更大,如全部时间的累积度量值、近 30 天的度量值等等。这里以会员主题为例,说明 DWS 和 DWT 都具备哪些度量值。

  • DWS

    • 单维度:会员(user_id)
    • 多度量
      • 当天下单次数、当天下单金额
      • 当天支付次数、当天支付金额
      • 当天收藏次数
  • DWT

    • 单维度:会员(user_id)
    • 多度量
      • 首次下单时间、末次下单时间、累积下单次数、累积下单金额、最近 30 天下单次数、最近 30 天下单金额
      • 累积支付次数、累积支付金额、最近 30 天支付次数、最近 30 天支付金额
      • 累积收藏次数、最近 30 天收藏次数

3.4 ADS 层

该层主要利用上面的 DWD、DWS、DWT 层进行具体指标的分析

以上。

相关文章

  • 浅谈数仓分层

    1. Background: 生产中,数仓分层没有一个统一的规范,各家公司都有一套自己的逻辑。命名更是五花八门。但...

  • 用户行为数仓搭建

    # 数仓分层概念 1.数仓分层 ods 存放原始数据 dwd 数据清洗 dws 数据汇总 ads 为统计报表提供数...

  • 数仓分层

    DW :data warehouse 翻译成数据仓库DW数据分层,由下到上为 DWD,DWB,DWSDWD:dat...

  • 数仓分层

      数仓分层的理论不仅是一种数据仓库的建设思想,对大数据的统计分析过程设计同样具有指导意义。  数仓分层的理论有很...

  • 数仓实战01:数仓分层

    1.为什么分层 1.1 数仓分层: 1.2 为什么分层 2.数据集市和数据仓库概念 3.数仓命名规范 3.1 表命...

  • 离线数仓的架构模型

    1)数仓的分层原则 好的数仓分层并不是为了分层而分层,没有最好的只有更合适的,要考虑对下游及整个链路的影响 好的分...

  • 浅谈数仓建设中的分层

    作者介绍 数据仓库@唐刚 “数据人创作者联盟”成员。 01数仓为什么要分层 数仓分层的原因也即是分层的好处体现在下...

  • 从0开始研究数据仓库的一些想法

    研究方向 数仓理论:分层设计理论、维度建模理论基于OLAP数仓:adb/clickhouse/greenplum/...

  • 数仓建设规范

    1、数仓分层原则 优秀可靠的数仓体系,往往需要清晰的数据分层结构,即要保证数据层的稳定又要屏蔽对下游的影响,并且要...

  • 基于Apache doris怎么构建数据中台(八)-数仓管理

    数仓分层模型 数仓分层模型的好处: 1、数据结构化更清晰:每一个数据分层都有它的作用域和职责,在使用表的时候能更方...

网友评论

      本文标题:浅谈数仓分层

      本文链接:https://www.haomeiwen.com/subject/thleektx.html