• 整体方案
  • 1.根据主题域、专题域对接 业务系统,对数仓中的ods层,根据 ER实体建模的方式进行范式建模
  • 2.使用维度建模方式对数仓分层
  • 3.使用维度建模的方法论对dwd dim 层将数据表抽离出维度表和事实表,以及后续层级的设计
  • 4.使用星型或者星座模型创建表关联关系图谱
  • 5.开发阶段(建表、配置采集、配置工作流、作图)
  • 维度 建模案例
  • 淘宝电商平台,经常需要对用户订单进行分析,以用户订单为例,使用维度建模的方式来设计模型。
  • 以上涉及到的事实表有:订单明细表。
  • 订单明细表中的维度有用户维度,区域维度,时间维度,商品维度,商户维度。度量有商品件数,商品金额。
  • 用户维度表:用户ID,用户姓名,用户性别,用户年龄,用户职业,用户区域。
  • 区域维度表:区域ID,区域名称。
  • 时间维度表:时间ID,年份,季度,月份,天。
  • 商品维度表:商品ID,商品名称,商品单价,商品类别,商品产地。
  • 商户维度表:商户ID,商户名称,开店年限。
  • 建模设计如下:
  • 1.1 数据仓库的分层
  • 1.1.1 数据仓库分层设计
  • 在大数据分析中,我们希望我们分析的数据在整个分析流程中有秩序的流转,数据的整个流程能够清晰明确的被我们掌握使用。
  • 上图中的数据流转我们更希望得到A图中的数据流转过程。所以我们希望有一套行之有效的数据组织和管理方法来让我们的数据更有序,这就需要在数据处理中进行数据分层的原因。基于大数据的数据仓库建设要求快速响应需求,同时需求灵活多变,对实时性有不同的要求,除了面向DSS、BI等应用外,还要响应用户画像、个性化推荐、机器学习、数据分析等各种复杂的应用场景,实际上在大数据开发中,涉及到数仓设计都会进行分层设计。
  • 数据分层好处如下:
  • ü 清晰的数据结构:每层数据都有各自的作用域和职责,在使用表的时候更方便定位和理解。
  • ü 减少重复开发:规范数据分层,开发一层公用的中间层数据,减少重复计算流转数据。
  • ü 统一数据出口:通过数据分层,提供统一的数据出口,保证对外输出数据口径一致。
  • ü 简化问题:通过数据分层,将复杂的业务简单化,将复杂的业务拆解为多层数据,每层数据负责解决特定的问题。
  • l ODS(Operational Data Store)层 – 操作数据层
  • ODS层,操作数据层,也叫贴源层,本层直接存放从业务系统抽取过来的数据,这些数据从结构上和数据上与业务系统保持一致,降低了数据抽取的复杂性,本层数据大多是按照源头业务系统的分类方式而分类的。一般来讲,为了考虑后续可能需要追溯数据问题,因此对于这一层就不建议做过多的数据清洗工作,原封不动地接入原始数据即可。
  • l DW(Data Warehouse)层 – 数据仓库层
  • 数据仓库层是我们在做数据仓库时要核心设计的一层,本层将从 ODS 层中获得的数据按照主题建立各种数据模型,每一个主题对应一个宏观的分析领域,数据仓库层排除对决策无用的数据,提供特定主题的简明视图。DW层又细分为 DWD(Data Warehouse Detail)层、DWM(Data Warehouse Middle)层和DWS(Data Warehouse Service)层。
  • n 数据明细层:DWD(Data Warehouse Detail)
  • 该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证,在ODS的基础上对数据进行加工处理,提供更干净的数据。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,当一个维度没有数据仓库需要的任何数据时,就可以退化维度,将维度退化至事实表中,减少事实表和维表的关联。例如:订单id,这种量级很大的维度,没必要用一张维度表来进行存储,而我们一般在进行数据分析时订单id又非常重要,所以我们将订单id冗余在事实表中,这种维度就是退化维度。
  • n 数据中间层:DWM(Data Warehouse Middle)
  • 该层会在DWD层的数据基础上,对数据做轻度的聚合操作,生成一系列的中间表,提升公共指标的复用性,减少重复加工处理数据。简单来说,就是对通用的维度进行聚合操作,算出相应的统计指标,方便复用。
  • n 数据服务层:DWS(Data Warehouse Service)
  • 该层数据表会相对比较少,大多都是宽表(一张表会涵盖比较多的业务内容,表中的字段较多)。按照主题划分,如订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。
  • 在实际业务处理中,如果直接从DWD或者ODS计算出宽表的统计指标,会存在计算量太大并且维度太少的问题,因此一般的做法是,在DWM层先计算出多个小的中间表,然后再拼接成一张DWS的宽表。由于宽和窄的界限不易界定,也可以去掉DWM这一层,只留DWS层,将所有的数据在放在DWS也没有问题。
  • l DM(Data Mart)层 – 数据集市层
  • 数据集市层,也可以称为数据应用层,基于DW上的基础数据,整合汇总成分析某一个主题域的报表数据。主要是提供给数据产品和数据分析使用的数据,一般会存放在 ES、PostgreSql、Redis等系统中供线上系统使用,也可能会存在 Hive 或者 Druid 中供数据分析和数据挖掘使用。比如我们经常说的报表数据,一般就放在这里。
  • 1.1.2 数据仓库分层案例
  • 现在以购物网站电商日志为例,来说明数据仓库分层的使用,这里我们只是关注用户产生的日志这一部分数据。
  • 某购物网站用户可以在pc端、ipad、手机app端、微信小程序登录购物网站进行购物,用户购物会产生一些订单、浏览商品、地域登录登出等日志数据。为方便后期分析用户日志数据和订单数据更好的辅助决策,设计数据仓库分层如下:

作者 admin

张宴银,大数据开发工程师

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注