关于数据仓库的分层,似乎我们都有共同的理解。但这是关于每个层应该如何建模的,也许每个人都有自己的理解。数据建模无疑是数据仓库建设的重中之重,那么在实际的开发过程中,大量的时间会花费在需求开发上,数据建模常常被忽略(在特殊的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
文章最后,给大家推荐一些受欢迎的技术博客链接:
- JAVA相关的深度技术博客链接
- Flink 相关技术博客链接
- Spark 核心技术链接
- 设计模式 —— 深度技术博客链接
- 机器学习 —— 深度技术博客链接
- Hadoop相关技术博客链接
- 超全干货--Flink思维导图,花了3周左右编写、校对
- 深入JAVA 的JVM核心原理解决线上各种故障【附案例】
- 请谈谈你对volatile的理解?--最近小李子与面试官的一场“硬核较量”
- 聊聊RPC通信,经常被问到的一道面试题。源码+笔记,包懂
- 深入聊聊Java 垃圾回收机制【附原理图及调优方法】
欢迎扫描下方的二维码或 搜索 公众号“大数据高级架构师”,我们会有更多、且及时的资料推送给您,欢迎多多交流!