本文从维度建模的基本概念以及工具实践两方面为您介绍如何使用维度建模。
维度建模储备知识介绍
基本概念
说明
智能建模强依赖于Kimball维度建模理论,请您在实际操作前务必阅读一下数仓分层和维度建模中的基本概念。
-
维度建模:关于维度建模的详细说明,请参见维度建模。
-
业务分类:业务分类是某一大类的业务的指标和维度的集合。在后续模型设计过程中,可将模型归属到对应的业务分类,提升后续模型使用的便捷性。例如零售电子商务就是一个一级业务分类,如需进一步细分,可分为门店零售,电子商务等。
-
数据域:是指一个或多个业务过程或者维度的集合。例如在电商领域,可以划分会员域、商品域、交易域等。
-
业务过程:业务过程指企业的业务活动事件,如下单、支付。
-
数据集市:是基于业务分类,面向特定应用场景或者产品的数据组织。通常位于数据应用层,依赖于公共层的整合数据。例如电商集市、供应链数据集市等。
-
主题域:用于将数据集市按照分析视角进行划分,通常是联系较为紧密的数据主题的集合。例如在电商集市下,可以创建电商360、活动等主题域。
-
维度:维度是用于分析数据的一个角度,一方面对维度进行可控管理,另一方面指导维度表的设计,如地理维度,时间维度。
-
维度属性:维度属性隶属于一个维度,用来描述维度的属性,如地理维度中的国家名称,省份名称。
-
时间周期:时间周期是用来明确数据统计的时间范围或者时间点,如最近30天,自然周。
-
修饰词:修饰词是对指标统计业务范围的划定,指除了统计维度外指标的业务场景的限定抽象,如PC端,无线端。
-
原子指标:用于明确业务的统计口径和计算逻辑,是基于用户的业务活动(即业务过程)创建的,用于统计业务活动中某一业务状况的数值。例如,存量会员数。
-
派生指标:由原子指标、时间周期、修饰词构成,用于反映企业某一业务活动在指定时间周期及目标范围中的业务状况。例如,历史截至当日(时间周期)_异常会员(修饰词)_存量会员数(原子指标)。
-
数仓分层:关于数仓分层的详细说明,请参见数仓分层。
-
数据引入层ODS:Operation Data Store。
-
数据公共层CDM:Common Data Model,又称通用数据模型层。分为如下层级:
-
公共维度层(DIM)。
-
公共汇总粒度事实层(DWS)。
-
明细粒度事实层(DWD)。
-
-
数据应用层ADS:Application Data Service。
-
模型设计理论
以下简单介绍了维度建模模型设计方法论,举例说明了如何划分数据域等,更多关于维度建模方法论、事实表维度表模型设计内容,请参见《Star Schema完全参考手册》[1]中的第2章~第6章节和第11章节、《数据仓库工具箱(第3版)》[2]。
说明
-
[1] 亚当森.Star Schema完全参考手册.北京:清华大学出版社,2012
-
[2] Ralph Kimball ,Margy Ross.数据仓库工具箱(第3版).北京:清华大学出版社,2015
例如,如何划分数据域:
说明
-
以上为数据域划分案例,和本次实验的数据域划分有一点出入。
-
以上示意图引用自阿里巴巴数据技术及产品部《大数据之路:阿里巴巴大数据实践》。
实验预期:本文操作结果
预期的分层划域,下图中从下到上数仓分层,从左到右划分数据域。这里您仅需了解一下概貌,后面会一步一步配置,蓝色字体为本实验中需要使用到的表,需将模型发布至引擎生成物理表。
实验操作:维度建模
说明
维度建模中部分标注了可选,表示不操作不影响后续实验。建议您都进行操作一下,以便结合业务从整体角度了解一下维度建模。
步骤一:数仓规划
-
新建如下一个业务分类:
业务名称:电商业务,英文缩写:ec。
-
数仓分层:系统内置了常规的数据分层,您可以针对每个数据分层设置表名检查器。本实验使用默认分层结构,并且为了规范模型的命名,将同一分层中表名称的命名格式统一,系统为每个数仓分层配置对应的表名“检查器”,开启并设置默认检查器,在进行模型设计时,表名会按照检查器设置自动填充,设计师仅需补充自定义内容即可。
-
贴源层:数据引入层ODS。
-
公共层:维度层DIM、明细数据层DWD、汇总数据层DWS。
-
应用层:应用数据层ADS。
表名检查器示例:
-
弱规则:新建对象时,根据规则定义内容,推荐填写规则名称。
-
强规则:新建对象时,根据规则定义内容,推荐填写并强制校验规则名称。
分层
规则定义
规则示例
维度层DIM
dim_业务大类英文缩写_数据域英文缩写_自定义
e.g:dim_ec_mbr_user_info 会员基础信息维度表_维度表_电商业务_会员域_xxxx。
明细数据层DWD
dwd_业务大类英文缩写_数据域英文缩写_业务过程英文缩写_自定义_存储策略缩写
-
e.g:dwd_ec_trd_create_ord_di 交易下单明细事实表。
-
明细表_电商业务_交易域_下单业务过程_xxxx_每日增量。
汇总数据层DWS
dws_业务大类英文缩写_数据域英文缩写_自定义_统计周期
-
e.g dws_ec_mbr_cnt_std 历史截至当日_存量会员数_cube统计表。
-
汇总表_电商业务_会员域_xxx_历史截止当日。
应用数据层ADS
ads_业务大类英文缩写_主题域英文缩写_自定义。真实场景中建议使用ads_业务大类英文缩写_数据集市英文缩写_主题域英文缩写_自定义。
-
e.g: ads_ec_ec360_gmv_kpi_overview 电商360KPI概览。
-
应用表_电商业务<业务分类>_电商360<主题域>_xxx
数据引入层ODS
通常ODS层不需要做数据建模,所以这里忽略。
-
-
-
公共层:
-
新建六个如下表的数据域。您也可以使用通用工具导入数据域。
英文缩写
英文名
中文名
模型评审人
负责人
备注
mbr
mbr
会员域
xxx
xxx
网站服务的注册会员及潜在会员(Leads)的各种基础信息。
trd
trd
交易域
xxx
xxx
交易从加入购物车到下单、支付、发货、退款及成功交易的各个过程,同时还包括拍卖、机票、彩票等各种类型的交易。
itm
itm
商品域
xxx
xxx
网站可供用户交易的商品数据,包括类目、品牌、SPU、SKU等相关商品基础信息。
lgt
lgt
物流域
xxx
xxx
-
log
log
日志域
xxx
xxx
各种类型的网站日志数据。
risk
risk
信用&风控域
xxx
xxx
企业或者个人信用及风险相关的数据,包括审核、风控监控事件、评价、投诉、举报、申诉、处罚等相关数据。
-
业务过程。
-
参照下表,新建会员域下的业务。您也可以使用通用工具导入业务过程。
英文缩写
中文名
英文名
数据域
负责人
备注
login
登录
login
会员域
xxx
-
register
注册
register
会员域
xxx
-
mbf_default(系统)
会员域_默认(系统)
mbr_default
会员域
xxx
数据域下默认的业务过程。
-
参照下表,新建交易域下的业务过程。
英文缩写
中文名
英文名
数据域
负责人
备注
cart
加购
cart
交易域
xxx
加入购物车
create
下单
create
交易域
xxx
创建订单
pay
支付
pay
交易域
xxx
-
refund
退款
refund
交易域
xxx
-
trd_default(系统)
交易域_默认
trd_default
交易域
xxx
数据域下的默认业务过程。
-
参照下表,新建商品域下的业务过程。
英文缩写
中文名
英文名
数据域
负责人
备注
on_off
商品上下架
on_off
商品域
xxx
-
publish
商品发布
publish
商品域
xxx
-
itm_default(系统)
商品域_默认
itm_default
商品域
xxx
数据域下的默认业务过程。
-
参照下表,新建物流域下的业务过程。
英文缩写
中文名
英文名
数据域
负责人
备注
take_over
揽件
take_over
物流域
xxx
-
lg_order_crt
接单
lg_order_crt
物流域
xxx
-
ship
发货
ship
物流域
xxx
-
delivery
派送
delivery
物流域
xxx
-
sign
签收
sign
物流域
xxx
-
lgt_default(系统)
物流域_默认
lgt_default(系统
物流域
xxx
数据域下的默认的业务过程。
-
参照下表,新建日志域下的业务过程。
英文缩写
中文名
英文名
数据域
负责人
备注
exp
曝光
exposure
日志域
xxx
-
se
搜索
search
日志域
xxx
-
clk
点击
click
日志域
xxx
-
pv
浏览
pv
日志域
xxx
-
log_default(系统)
日志域_默认
log_default
日志域
xxx
数据域下的默认业务过程。
-
参照下表,新建信用与风控域下的业务过程。
英文缩写
中文名
英文名
数据域
负责人
备注
remark
评价
remark
信用&风控域
xxx
-
risk_default(系统)
信用&风控域,默认
risk_default
信用&风控域
-
-