如何处理数据仓库的DWS层

本文探讨了数据仓库DWS层的基本建设思路,包括特点、设计原则和步骤。重点介绍了如何设计合理的DWS层表,确保数据的一致性和可重用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于数据仓库的分层,似乎我们都有共同的理解。但这是关于每个层应该如何建模的,也许每个人都有自己的理解。数据建模无疑是数据仓库建设的重中之重,那么在实际的开发过程中,大量的时间会花费在需求开发上,数据建模常常被忽略(在特殊的DWS层建模中)。 从长远来看,数据模型变得越来越混乱,指标的口径无法统一,结果是:尽管有很多表,但是很难获取数据。本文主要介绍DWS层建模的基本方法,希望对您有所帮助。

为什么要对数据仓库进行分层

合理的数据仓库分层一方面可以减少耦合,提高重用性,可读性,可维护性,另一方面还可以提高操作效率,影响数据需求迭代的速度。实际上,它影响了产品的及时性。建立数据层次结构可以优化公共层,避免烟囱发展,可见适当合理的数据仓库分层极为重要。

通用分层设计思路

  • ODS:运营数据(Operational Data Store),指的是其结构与源系统基本一致的增量或完整数据。在DW准备数据区的同时,它还负责记录基本数据的历史变化,我们之所以要保持原始数据与原始数据在线一致,是为了方便以后的数据检查需求。
  • CDM:通用数据模型,也称为数据中间层(Common Data Model),包含DWD,DWS,DIM层。
  • DWD:数据仓库明细层数据(Data Warehouse Detail)。是ODS层数据清理和转换,由业务流程建模驱动,基于每个特定业务流程的特征,构建最细粒度的概况介绍。它可以与企业的数据使用特性相结合,基于维度建模的思想,使详细事实表的一些重要属性字段适当地冗余,即进行广泛的表面处理,建立零件清单。
  • DWS:数据仓库总结层数据(Data Warehouse Summary),根据索引要求,建立初步的摘要事实表,通常是一个广泛的观察。根据应用的高层和产品指标要求,构造通用粒度汇总指标表。通过宽面的物理模型,建筑命名惯例,相同口径的统计指标,为上梯队提供共同的指标。
  • DIM:建立一致的数据分析维度表,可以减少数据计算口径不一致的风险,同时也方便了交叉检测。维度驱动的建模,基于每个维度的业务含义,通过添加维度属性,相关维度来定义计算逻辑,完成属性定义的过程并建立一致的数据分析维度表。
  • ADS:面向应用的数据服务层(Application Data Service)。为了汇总和分析主题领域的服务数据,应用逻辑的数据处理。该层主要存储数据产品的个性化统计指标数据,该数据层直接与数据消费者连接,这是产品,操作等角色可以直接感知和理解的层,该层中的大多数表都可以放置直接在BI中以图表的形式直接显示。

不,DWS没办法

当我们在进行数据需求时,会不会有这样的问题:我可以直接从DWD Layer获取它,因此非常方便地获取您想要的数据,为什么我们必须构建DWS地板的摘要表?这是否意味着您不必构建DWS层表呢,答案是:可以接受但是有一个前提,业务场景并不复杂。在短期内,它可以快速满足数据开发的需求,但从长远来看,将存在以下问题:

  • 对于复杂的业务场景,将有大量的跨领域,跨事实的交叉检查,如果没有统一统一口径关闭的DWS Layer索引,则同一索引将具有不同的口径和命名,其结果是数据检索变得越来越多。更加不便的是,很容易引起商业人士怀疑数据是否正确。
  • 没有统一的公共指标计算,每次都需要相同的指标时,您需要重新计算访问逻辑,不仅效率低下(需要关联表,计算索引),而且浪费了计算资源。

DWS 表设计

以分析主题对象为建模驱动器,根据上层应用和产品指标要求,构建通用粒度汇总指标表。通过宽面的物理模型,建立命名约定,相同口径的统计指标,为上梯队提供通用指标,创建汇总表。如:形成日,周,月度汇总明细,或基于某个维度,如商品类别粒度的汇总日表,统计信息便于下一步报表数据结构的组织。

DWS层的基本特征

  • DWS Layer是为分析维度而设计的,“分析”维度通常是企业经常需要的数据透视图。
  • DWS层表满足数据报告和数据产品的索引要求
  • ADS层的索引数据中会有交叉探测,因此DWS层的索引应保持相同的命名和口径,避免ADS层的索引数据混淆
  • DWS是公共聚合层,提供不同维度的统计指标,指标的口径应保持一致,并提供详细的说明
  • 以宽表的形式进行设计,例如,可以将相同粒度的统计指标放在一起,避免创建太多表
  • 通用摘要层中的表通常对应于派生指标
  • DWS存储派生的度量(统计周期+修饰符+统计粒度+原子索引),原子指标存储在DWD中在层的事实表中
原子指数和导数指数

所谓的原子指数,是业务流程的度量,是情况说明书中的度量。例如订单,则与订单相对应的订单金额是一个原子指标,该指标与订单的业务流程一起生成。

所谓的衍生指标,按统计周期+修饰符+统计粒度+原子指数指标的组合

其中,统计时间段:指您要计算的时间段,如日,周,月

修饰符:它是指业务的约束条件,通常发生在SQL的条件所在的地方,例如订单通道等

统计粒度:它是维的组合,通常在SQL分组中按出现,例如,计算对应于商品一级类别的销售量,该类别是统计粒度

DWS图层设计原则

摘要层的表建模应遵循以下原则:

  • 诸如数据汇总表可以与其他人共享吗?数据分析或报表中经常使用基于某个维度的数据汇总吗?如果满足这些条件,我们有必要将详细数据存储到汇总表中。
  • 不跨数据域数据域是对数据进行更高级别的分类和汇总的抽象,如果交易在交易域下是统一的,则商品的添加,修改都应放在商品领域下。
  • 区分统计周期表名称应能够指示数据的统计周期,例如_1d表示最近的1个上帝,_td在一天结束时,_nd表示最近的N个上帝。
  • 避免多层次的数据您应该避免将不同级别的数据放在一起,例如,如果有7天30神的真理,我们可以选择将其存储在两列7天30神的真理中,但是您需要做到这一点清除列名和字段注释。同时,我们还可以使用两个表来存储不同统计周期的数据以进行区分。
  • 聚集不超出事实聚集是原始Star模型的汇总,要获得与查询的原始模型一致的结果,聚集的维数和度量必须与原始模型一致,因此聚集不会与事实交叉。水平钻探(交叉检查)是基于一致性维度的多个事实的分析,很多时候我们使用融合的事实表,预先存储横向钻探的结果,以提高查询性能。因此,合并事实表是一种导出模式,而不是一种汇总。

DWS图层设计步骤

  • 首先,确定聚合维度,即确定统计粒度,例如商品粒度
  • 然后,确定统计周期,如日
  • 最后,确认事实,即得出指标

如果不存在则创建表

dws_asale_trd_itm_ord_1d(
item_id BIGINT COMMENT'商品ID',
item_title STRING COMMENT'商品名称',
cate_id BIGINT COMMENT'商品类别ID',
cate_name STRING COMMENT'商品类别名称',
mord_prov STRING COMMENT ,
confirm_paid_amt_sum_1d DOUBLE COMMENT'最近一天已确认收到的订单总额'
)
COMMENT'最近一天的商品交易摘要事实'
PARTITIONED BY(ds STRING COMMENT'Partition字段YYYYMMDD');

关于DWS一楼建设中的一些问题

为什么一个DWS A表通常只对应一个衍生指标?

在设计DWS表时,很多人会采用所有可以聚合的维度,因此您将获得很多派生指标,而这些派生指标在同一张表中无疑会增加使用该表的难度,对于例如,在实际数据检索中,通常只关心某个统计粒度指标。实际上是多维数据集尝试将数据放在ADS层中,这样,在应用程序层中开发数据接口或访问数据将更加方便。因此在设计DWS的层时,应遵循上述一些原则,总之,设计应尽可能公开,易于使用且易于用户理解。

如何设计完美的DWS Layer表?

数据仓库的构建是一个反复的过程,数据建模也是一个反复的过程。同时,业务在不断变化,建模人员对业务的理解也在变化,所有这些使建模成为一个迭代过程。尽管有这些更改,但是在对数据建模时我们也必须遵循一定的规范,不要做您想要的事情。

如何评估DWS一楼建筑的质量?

由于数据仓库的建设与业务息息相关,数据仓库建设的方法论只是我们构建数据仓库的一个方向,在实际的实现过程中会出现各种各样的问题,不能被监禁。这些理论。一句话:恰到好处。因此,请从用户的角度评估模型的质量,例如,简单,易于访问,表的数量仅为。

概括

本文主要介绍了数据仓库DWS的基本建设思路,包括DWS的特点,层的特点,设计原理和设计步骤,以及在DWS上,论述了数据仓库DWS层建设中存在的一些问题。当然,这些只是DWS的一些层建模方法,明智的见仁见智,仁者见仁,在实际数据建模过程中,我们可以参考这些方法,但也要注意与特定业务场景的结合,数据建模基于自己对业务的理解,切勿盲目复制,灵活使用。另外,不要建立完美的数据模型,应当追求简单,方便,易用。让我换一种说法,建模没有对与错,正好。

原文链接:https://chowdera.com/2021/03/20210330055437505P.html

 


文章最后,给大家推荐一些受欢迎的技术博客链接

  1. JAVA相关的深度技术博客链接
  2. Flink 相关技术博客链接
  3. Spark 核心技术链接
  4. 设计模式 —— 深度技术博客链接
  5. 机器学习 —— 深度技术博客链接
  6. Hadoop相关技术博客链接
  7. 超全干货--Flink思维导图,花了3周左右编写、校对
  8. 深入JAVA 的JVM核心原理解决线上各种故障【附案例】
  9. 请谈谈你对volatile的理解?--最近小李子与面试官的一场“硬核较量”
  10. 聊聊RPC通信,经常被问到的一道面试题。源码+笔记,包懂
  11. 深入聊聊Java 垃圾回收机制【附原理图及调优方法】

欢迎扫描下方的二维码或 搜索 公众号“大数据高级架构师”,我们会有更多、且及时的资料推送给您,欢迎多多交流!

                                           

       

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不埋雷的探长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值