本文从维度建模的基本概念以及工具实践两方面为您介绍如何使用维度建模。
维度建模储备知识介绍
基本概念
智能建模强依赖于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
信用&风控域
xxx
数据域下的默认业务过程
应用层:
参照下表,新建一个数据集市。
英文缩写
集市名称
所属业务分类
英文缩写
集市名称
所属业务分类
ec
电商集市
电商业务
参照下表,新建一级主题域。
英文缩写
主题域名称
所属数据集市
备注
英文缩写
主题域名称
所属数据集市
备注
ec360
电商360
电商集市
-
open_red
开门红
电商集市
-
rfd
退款
电商集市
-
lgt
物流
电商集市
-
flow
流量通道
电商集市
-
act
活动
电商集市
-
byr
买家
电商集市
-
brand
品牌
电商集市
-
cate
品类
电商集市
-
slr
商家
电商集市
-
itm
商品
电商集市
-
建模空间。
当您所需要管理多个DataWorks工作空间且需要复用一套数仓规划时,面对跨多个工作空间的复杂数据体系,可以通过设计空间来共享一套数据建模工具,针对整个数据体系进行统一地数仓规划、维度建模及指标定义等工作。当配置了数据研发工作空间后,在后续模型发布时可以选择对应的工作空间。更多关于建模空间的内容,请参见建模空间。
当前步骤仅为核心功能展示,不操作不影响后续实验。
步骤二:数据标准
新建字段标准。
新建根目录,名称:线上业务;新建子目录,名称:会员。
参照下表,新建五个标准。您也可以单击
图标,导入字段标准。
标准编码
英文缩写
英文名称
中文名称
数据类型
标准编码
英文缩写
英文名称
中文名称
数据类型
birthday
birthday
birthday
生日
DATETIME
user_name
user_name
user_name
用户名称
STRING
nick
nick
nick
昵称
STRING
gender
gender
gender
性别
STRING
user_id
user_id
user_id
用户ID
BIGINT
新建标准代码。
新建目录。目录1名称:基础代码;目录2名称:风控。
新建两个代码标准,执行并发布到MaxCompute引擎retail_e_commerce_2实例的开发和生产环境。
代码标准1。
代码编号:is_del;代码名称:是否删除;英文名称:is_del。
编码取值
编码名称
英文名称
编码含义
编码取值
编码名称
英文名称
编码含义
1
true
true
是
0
false
false
否
代码标准2。
代码编号:risks_level;代码名称:风险等级;英文名称:risks_level。
编码取值
编码名称
英文名称
编码含义
编码取值
编码名称
英文名称
编码含义
1
高级
high
高级
2
中级
middle
中级
参照如下信息,新建度量单位。
英文缩写:people_cnt。
英文名称:people_cnt。
中文名称:人数。
分类:对象量词。
步骤三:数据指标
概览
原子指标和派生指标可以被汇总层或应用层表模型关联。在后续建表模型时,我们可以快速勾选派生指标,构建模型,模型中的字段也可以和指标构建关联关系。
例如:原子指标mbr_cnt被汇总表模型“dws_ec_mbr_cnt_std”所关联。
派生指标由原子指标、修饰词、时间周期构成。
例如,存量会员数+历史截止当日+异常会员=历史截至当日_异常会员_存量会员数,该派生指标可以作为模型的字段存在,也可以和模型的字段做关联。
原子指标
参照下表,新建13个原子指标保存并提交。您也可以导入原子指标,如果部分可选数据域未创建,请先将下载的Excel文件中相关数据域删除再执行导入。
业务过程 | 英文缩写 | 英文名称 | 中文名称 | 业务口径 | 描述 | 指标来源 | 计算函数 | 小数位数 | 数据单位 | 是否去重 |
业务过程 | 英文缩写 | 英文名称 | 中文名称 | 业务口径 | 描述 | 指标来源 | 计算函数 | 小数位数 | 数据单位 | 是否去重 |
会员域/注册 | new_mbr_cnt | new member count | 注册会员数 | 注册会员数 | - | - | 计数(COUNT) | 0 | 人数 | 是 |
会员域/会员域_默认 | mbr_cnt | member count | 存量会员数 | 注册且激活的会员总量 | - | - | 计数(COUNT) | 0 | 人数 | 是 |
交易域/支付 | pay_ord_cnt | pay order count | 支付子订单数 | 支付子订单数 | - | - | 计数(COUNT) | 0 | 人数 | 否 |
交易域/支付 | pay_ord_amt | GMV | 订单支付成功金额 | GMV,订单支付成功金额。订单类型包含:等待卖家发货、等待买家确认收货、交易成功;订单支付状态包含付款成功。 | - | - | 累加(SUM) | 4 | 元(人民币) | 否 |
交易域/支付 | pay_itm_cnt | pay item count | 支付商品数 | 支付商品数 | - | - | 计数(COUNT) | 0 | 个 | 否 |
交易域/支付 | pay_ord_pbt | pay order pbt | 客单价 | @订单支付成功金额 / @支付子订单数 | - | - | 求平均(AVG) | 4 | 元(人民币) | 否 |
交易域/支付 | kpi_gmv_rate | kpi_gmv_rate | 成交金额完成度 | 成交金额目标值为3000万;成交金额目标完成度=成交金额实际完成值/成交金额目标值。 | - | - | 率 | 4 | 小数 | 否 |
物流域/揽件 | lgt_lanshou_ord_cnt | lgt_lanshou_ord_cnt | 物流揽收订单数 | 物流揽收订单数 | - | - | 计数(COUNT) | 0 | 笔 | 否 |
物流域/接单 | lgt_crt_ord_cnt | lgt_crt_ord_cnt | 物流接单订单数 | 物流接单订单数 | - | - | 计数(COUNT) | 0 | 笔 | 否 |
物流域/签收 | lgt_sign_ord_cnt | lgt_sign_ord_cnt | 物流签收订单数 | 物流签收订单数 | - | - | 计数(COUNT) | 0 | 笔 | 否 |
物流域/物流域_默认 | lgt_ord_cnt | lgt_ord_cnt | 物流订单总数 | 物流订单总数 | - | - | 累加(SUM) | 0 | 笔 | 否 |
信用&风控域/评价 | remark_ord_cnt | remark order count | 评价订单数 | 评价订单数 | - | - | 计数(COUNT) | 0 | 笔 | 否 |
信用&风控域/评价 | remark_ord_rate | remark order rate | 评价订单占比 | @评价订单数/ @支付子订单数 | - | - | 率 | 4 | 小数 | 否 |
修饰词
参照下表,新建12个修饰词保存并提交。您也可以直接导入修饰词。
修饰词类型 | 英文缩写 | 英文名称 | 中文名称 | 业务口径 | 描述 | 数仓分层 |
修饰词类型 | 英文缩写 | 英文名称 | 中文名称 | 业务口径 | 描述 | 数仓分层 |
普通业务修饰词 | 00s | 00s | 00后 | 00后 | - | - |
普通业务修饰词 | 90s | 90s | 90后 | 90后 | - | - |
普通业务修饰词 | 80s | 80s | 80后 | 80后 | - | - |
普通业务修饰词 | 70s | 70s | 70后 | 70后 | - | - |
普通业务修饰词 | men | men | 男性会员 | 男性会员 | - | - |
普通业务修饰词 | women | women | 女性会员 | 女性会员 | - | - |
普通业务修饰词 | act_tel | act_tel | 手机激活 | 手机激活 | - | - |
普通业务修饰词 | act_email | act_email | 邮箱激活 | 邮箱激活 | - | - |
普通业务修饰词 | exp | exp | 异常会员 | 异常会员 | - | - |
普通业务修饰词 | high | high | 高级会员 | 高级会员 | - | - |
普通业务修饰词 | mid | mid | 中级会员 | 中级会员 | - | - |
普通业务修饰词 | low | low | 初级会员 | 初级会员 | - | - |
时间周期
使用默认配置。
派生指标
会员域下的派生指标:
批量创建[会员域/会员域_默认]业务过程下的13个派生指标。
原子指标:存量会员数。
修饰词:上文修饰词列表中的所有一共12个,再加一个修饰词system_empty(空),批量选会合并成一个,所以这里需要一个一个选后添加。
时间周期:std(历史截止当日)。
单个创建[会员域/注册]业务过程下的1个派生指标。
时间周期
修饰词
原子指标
数仓分层
业务分类
业务过程
中文名称
英文名称
描述
时间周期
修饰词
原子指标
数仓分层
业务分类
业务过程
中文名称
英文名称
描述
cm(自然月)
-
new_mbr_cnt(注册会员数)
公共层:汇总数据层
电商业务
会员域/注册
自然月_注册会员数(点击智能推荐)
new_mbr_cnt_cm(点击智能推荐)
-
交易域下的派生指标:分两次批量创建[交易域/支付]业务过程下的派生指标,方法同上。
第一批:
原子指标:成交金额完成度、客单价、支付商品数、支付子订单数、订单支付成功金额。
修饰词:system_empty(空)。
时间周期:1d(近1天)。
第二批:
原子指标:成交金额完成度、订单支付成功金额。
修饰词:system_empty(空)。
时间周期:fy(财年)。
物流域下的派生指标:参照下表,创建物流域下的4个派生指标。
时间周期
修饰词
原子指标
数仓分层
业务分类
业务过程
中文名称
英文名称
描述
时间周期
修饰词
原子指标
数仓分层
业务分类
业务过程
中文名称
英文名称
描述
1d(近1天)
-
lgt_lanshou_ord_cnt(物流揽收订单数)
公共层:汇总数据层
电商业务
物流域/揽件
近1天_物流揽收订单数
lgt_lanshou_ord_cnt_1d
-
1d(近1天)
-
lgt_crt_ord_cnt(物流接单订单数)
公共层:汇总数据层
电商业务
物流域/接单
近1天_物流接单订单数
lgt_crt_ord_cnt_1d
-
1d(近1天)
-
lgt_sign_ord_cnt(物流签收订单数)
公共层:汇总数据层
电商业务
物流域/签收
近1天_物流签收订单数
lgt_sign_ord_cnt_1d
-
1d(近1天)
-
lgt_ord_cnt(物流订单总数)
公共层:汇总数据层
电商业务
物流域/物流域_默认
近1天_物流订单总数
lgt_ord_cnt_1d
-
信用与风控域下的派生指标:参照下表,创建信用与风控域下的3个派生指标。
时间周期
修饰词
原子指标
数仓分层
业务分类
业务过程
中文名称
英文名称
描述
时间周期
修饰词
原子指标
数仓分层
业务分类
业务过程
中文名称
英文名称
描述
1d(近1天)
-
remark_ord_cnt(评价订单数)
公共层:汇总数据层
电商业务
信用&风控域/评价
近1天_评价订单数
remark_ord_cnt_1d
-
1d(近1天)
-
remark_ord_rate(评价订单占比)
公共层:汇总数据层
电商业务
信用&风控域/评价
近1天_评价订单占比
remark_ord_rate_1d
-
1d(近1天)
00s(00后)
remark_ord_cnt(评价订单数)
公共层:汇总数据层
电商业务
信用&风控域/评价
近1天_00后_评价订单数
remark_ord_cnt_1d_00s
-
步骤四:维度建模(公共层维度表模型和明细表模型)
创建4张公共层维度表。
维度表1:dim_ec_itm_item_info商品基础信息维度表。
配置基本信息。
表名是在选完业务分类、数据域后根据数仓分层中配置的检查器自动填充dim_ec_itm部分内容,再手动填写自定义_item_info部分。
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
公共层:维度层
商品域(itm)
电商业务
-
dim_ec_itm_item_info
商品基础信息维度表
365天
商品基础信息维度表
配置字段管理和分区字段管理。
支持手动录入、快捷模式或代码模式的方式配置字段管理和分区字段管理,建议新建模型时使用快捷模式查找已有表/视图的方式来快速导入,修改模型时使用代码模式,两种方式结合使用。
本实验各个层级其中一张表会使用快捷模式来配置,其余表由于创建方法大体一致,为减少重复操作使用代码模式创建,代码模式支持FML、MaxCompute DDL、Hive DDL、MySQL DDL等多种语言,本实验中会贴出FML(适用于维度建模领域的类SQL语言,代码模式建模)、MaxCompute DDL两种的DDL语句,您可以根据情况选择任意一种。
使用快捷模式配置:
进入编辑状态,使用快捷模式,搜索表:odps.retail_e_commerce_2.ods_item_info,选择导入全部字段,导入后,还能追溯到来源表和来源字段。
快捷模式使用到了查找已有表/视图,由于当前空间全新,没有已有表,请先执行附录:MaxCompute ODS层DDL建表语句中的ODS层DDL语句。实际应用过程中,可以直接使用已存在的表或视图。
选中id字段,单击删除。
修改模型字段类型。
将gmt_create、gmt_modified字段类型批量修改为string。
将reserve_price、secure_trade_ordinary_post_fee、secure_trade_fast_post_fee、secure_trade_ems_post_fee字段类型修改为double。
修改模型字段显示名。
将gmt_modified字段显示名称修改为商品最后修改日期。
将gmt_create字段显示名称修改为商品创建时间。
修改模型字段顺序。
单击编辑,使用代码模式调整一下字段顺序,将gmt_modified字段调整到gmt_create字段前面。
单击保存。
使用代码模式配置:
FML代码示例
CREATE DIM TABLE dim_ec_itm_item_info ALIAS '商品基础信息维度表' ( gmt_modified ALIAS '商品最后修改日期'STRING COMMENT'商品最后修改日期', gmt_create ALIAS '商品创建时间'STRING COMMENT'商品创建时间', item_id ALIAS '商品数字ID'BIGINT COMMENT'商品数字ID', title ALIAS '商品标题'STRING COMMENT'商品标题', sub_title ALIAS '商品子标题'STRING COMMENT'商品子标题', pict_url ALIAS '主图URL'STRING COMMENT'主图URL', desc_path ALIAS '商品描述的路径'STRING COMMENT'商品描述的路径', item_status ALIAS '商品状态1:确认通过0:未确认通过'BIGINT COMMENT'商品状态1:确认通过0:未确认通过', last_online_time ALIAS '最近一次开始销售时间,商品上架时间'DATETIME COMMENT'最近一次开始销售时间,商品上架时间', last_offline_time ALIAS '销售结束时间,表示一个销售周期的结束,仅作用于拍卖商品'DATETIME COMMENT'销售结束时间,表示一个销售周期的结束,仅作用于拍卖商品', duration ALIAS '有效期,销售周期,只有两个值,7天或14天'BIGINT COMMENT'有效期,销售周期,只有两个值,7天或14天', reserve_price ALIAS '当前价格'DOUBLE COMMENT'当前价格', secure_trade_ordinary_post_fee ALIAS '平邮费用'DOUBLE COMMENT'平邮费用', secure_trade_fast_post_fee ALIAS '快递费用'DOUBLE COMMENT'快递费用', secure_trade_ems_post_fee ALIAS 'EMS邮费'DOUBLE COMMENT 'EMS邮费', last_online_quantity ALIAS '商品最近一次上架时的库存数量'BIGINT COMMENT'商品最近一次上架时的库存数量', features ALIAS '商品特征'STRING COMMENT'商品特征', cate_id ALIAS '商品叶子类目ID'BIGINT COMMENT'商品叶子类目ID', cate_name ALIAS '商品叶子类目名称'STRING COMMENT'商品叶子类目名称', commodity_id ALIAS '品类ID'BIGINT COMMENT'品类ID', commodity_name ALIAS '品类名称'STRING COMMENT'品类名称', is_virtual ALIAS '是否虚拟商品'STRING COMMENT'是否虚拟商品', shop_id ALIAS '商家ID'BIGINT COMMENT'商家ID', shop_nick ALIAS '商家NICK'STRING COMMENT'商家NICK', is_deleted ALIAS '类目是否删除'BIGINT COMMENT'类目是否删除' ) COMMENT'商品基础信息维度表' PARTITIONED BY ( ds ALIAS'业务日期, yyyymmdd'STRING COMMENT '业务日期,yyyymmdd' ) WITH('life_cycle'='365');
MaxCompute DDL代码示例
CREATE TABLE dim_ec_itm_item_info ( gmt_modified STRING COMMENT '商品最后修改日期', gmt_create STRING COMMENT '商品创建时间', item_id BIGINT COMMENT '商品数字ID', title STRING COMMENT '商品标题', sub_title STRING COMMENT '商品子标题', pict_url STRING COMMENT '主图URL', desc_path STRING COMMENT '商品描述的路径', item_status BIGINT COMMENT '商品状态1:确认通过0:未确认通过', last_online_time DATETIME COMMENT '最近一次开始销售时间,商品上架时间', last_offline_time DATETIME COMMENT '销售结束时间,表示一个销售周期的结束,仅作用于拍卖商品', duration BIGINT COMMENT '有效期,销售周期,只有两个值,7天或14天', reserve_price DOUBLE COMMENT '当前价格', secure_trade_ordinary_post_fee DOUBLE COMMENT '平邮费用', secure_trade_fast_post_fee DOUBLE COMMENT '快递费用', secure_trade_ems_post_fee DOUBLE COMMENT 'EMS邮费', last_online_quantity BIGINT COMMENT '商品最近一次上架时的库存数量', features STRING COMMENT '商品特征', cate_id BIGINT COMMENT '商品叶子类目ID', cate_name STRING COMMENT '商品叶子类目名称', commodity_id BIGINT COMMENT '品类ID', commodity_name STRING COMMENT '品类名称', is_virtual STRING COMMENT '是否虚拟商品', shop_id BIGINT COMMENT '商家ID', shop_nick STRING COMMENT '商家NICK', is_deleted BIGINT COMMENT '类目是否删除' ) COMMENT '商品基础信息维度表' PARTITIONED BY ( ds STRING COMMENT '业务日期, yyyymmdd' ) LIFECYCLE 365;
配置完成后,保存并发布当前模型,生成物理表。
(可选)使用模型开发功能联动数据开发模块。
本步骤仅作为核心功能演示,在后续实验步骤中可以使用该功能来进行数据开发,您也可以体验操作后不保存,不影响主流实验流程。
如果使用快捷模式中的查找表、冗余字段查找表构建模型,系统会自动构建完整度较高的ETL,开发者只需要补充业务逻辑即可。
不使用快捷模式查找表创建模型,如手动录入、DDL导入,构建的ETL代码需要补充的信息相对就会多,且需要查看元数据来确认字段含义。
维度表2:dim_ec_mbr_user_info 会员基础信息维度表。
配置基本信息。
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
表类型
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
表类型
公共层:维度层
会员域(mbr)
电商业务
每日全量(df)
dim_ec_mbr_user_info
会员基础信息维度表
365天
-
普通维度表
配置字段管理和分区字段管理。
配置要点
将user_id字段设置为业务主键和非空。
设置后,后续将模型发布至MaxCompute引擎会生成对应的数据质量DQC校验规则来检查user_id字段的值是否唯一和非空。
对nick字段(关联字段标准)“昵称”。
对is_delete字段(关联标准代码)“是否删除”。
代码示例
FML代码示例
CREATE DIM TABLE dim_ec_mbr_user_info ALIAS '会员基础信息维度表' ( user_id ALIAS '会员数字ID' BIGINT NOT NULL COMMENT '会员数字ID', nick ALIAS '昵称' STRING COMMENT '会员NICK。会员昵称' WITH ('dict'='nick'), gmt_create ALIAS '创建时间' STRING COMMENT '创建时间', gmt_modified ALIAS '修改时间' STRING COMMENT '修改时间', reg_fullname ALIAS '个人认证表示真实姓名,企业认证表示企业名称' STRING COMMENT '个人认证表示真实姓名,企业认证表示企业名称', reg_mobile_phone ALIAS '注册时绑定手机号码' STRING COMMENT '注册时绑定手机号码', reg_email ALIAS '注册填写EMAIL(用户可以修改)' STRING COMMENT '注册填写EMAIL(用户可以修改)', reg_gender ALIAS '注册填写性别(F女,M男,不是这两个就是未知的,说明性别保密)' STRING COMMENT '注册填写性别(F女,M男,不是这两个就是未知的,说明性别保密)', reg_gender_name ALIAS '注册填写性别(F女,M男,不是这两个就是未知的,说明性别保密)' STRING COMMENT '注册填写性别(F女,M男,不是这两个就是未知的,说明性别保密)', reg_birthdate ALIAS '注册填写生日(用户可以修改)' STRING COMMENT '注册填写生日(用户可以修改)', reg_address ALIAS '注册填写地址(用户可以修改)' STRING COMMENT '注册填写地址(用户可以修改)', reg_nation_id ALIAS '注册填写国家ID(暂时为空)' STRING COMMENT '注册填写国家ID(暂时为空)', reg_nation_id_name ALIAS '注册填写国家ID(暂时为空)' STRING COMMENT '注册填写国家ID(暂时为空)', reg_prov_id ALIAS '注册填写省ID' STRING COMMENT '注册填写省ID', reg_prov_name ALIAS '名称' STRING COMMENT '名称', reg_city_id ALIAS '注册填写城市ID' STRING COMMENT '注册填写城市ID', reg_city_name ALIAS '名称' STRING COMMENT '名称', user_regip ALIAS '注册IP' STRING COMMENT '注册IP', id_card_type ALIAS '会员认证证件类型 0:未知 1:身份证 2:企业营业执照号' BIGINT COMMENT '会员认证证件类型 0:未知 1:身份证 2:企业营业执照号', id_card_name ALIAS '会员认证证件类型 0:未知 1:身份证 2:企业营业执照号' STRING COMMENT '会员认证证件类型 0:未知 1:身份证 2:企业营业执照号', id_card_number ALIAS '个人认证表示身份证号,企业认证表示企业的营业执照号,没有认证不保证准确性' STRING COMMENT '个人认证表示身份证号,企业认证表示企业的营业执照号,没有认证不保证准确性', id_gender ALIAS '身份证解析性别(F女,M男,unkown表示身份证为空或格式不对)' STRING COMMENT '身份证解析性别(F女,M男,unkown表示身份证为空或格式不对)', id_bday ALIAS '身份证解析生日(身份证为空或格式不对则为-1)' STRING COMMENT '身份证解析生日(身份证为空或格式不对则为-1)', id_age ALIAS '身份证解析年龄(身份证为空或格式不对则为-1)' STRING COMMENT '身份证解析年龄(身份证为空或格式不对则为-1)', user_regdate ALIAS '注册时间' STRING COMMENT '注册时间', user_active_type ALIAS '用户激活方式,1 邮件;2 手机;' STRING COMMENT '用户激活方式,1 邮件;2 手机;', user_active_name ALIAS '用户激活激活方式名称' STRING COMMENT '用户激活激活方式名称', user_active_time ALIAS '激活时间' STRING COMMENT '激活时间', vip_level ALIAS 'VIP等级' BIGINT COMMENT 'VIP等级', vip_level_name ALIAS 'VIP等级名称。v1,v2,v3等' STRING COMMENT 'VIP等级名称。v1,v2,v3等', is_delete ALIAS '是否删除' STRING COMMENT '是否删除' WITH ('code_table'='is_del'), CONSTRAINT PK PRIMARY KEY(user_id) ) COMMENT '会员基础信息维度表' PARTITIONED BY ( ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd' ) WITH('life_cycle'='365');
MaxCompute DDL代码示例
CREATE TABLE dim_ec_mbr_user_info ( user_id BIGINT COMMENT '会员数字ID', nick STRING COMMENT '会员NICK。会员昵称', gmt_create STRING COMMENT '创建时间', gmt_modified STRING COMMENT '修改时间', reg_fullname STRING COMMENT '个人认证表示真实姓名,企业认证表示企业名称', reg_mobile_phone STRING COMMENT '注册时绑定手机号码', reg_email STRING COMMENT '注册填写EMAIL(用户可以修改)', reg_gender STRING COMMENT '注册填写性别(F女,M男,不是这两个就是未知的,说明性别保密)', reg_gender_name STRING COMMENT '注册填写性别(F女,M男,不是这两个就是未知的,说明性别保密)', reg_birthdate STRING COMMENT '注册填写生日(用户可以修改)', reg_address STRING COMMENT '注册填写地址(用户可以修改)', reg_nation_id STRING COMMENT '注册填写国家ID(暂时为空)', reg_nation_id_name STRING COMMENT '注册填写国家ID(暂时为空)', reg_prov_id STRING COMMENT '注册填写省ID', reg_prov_name STRING COMMENT '名称', reg_city_id STRING COMMENT '注册填写城市ID', reg_city_name STRING COMMENT '名称', user_regip STRING COMMENT '注册IP', id_card_type BIGINT COMMENT '会员认证证件类型 0:未知 1:身份证 2:企业营业执照号', id_card_name STRING COMMENT '会员认证证件类型 0:未知 1:身份证 2:企业营业执照号', id_card_number STRING COMMENT '个人认证表示身份证号,企业认证表示企业的营业执照号,没有认证不保证准确性', id_gender STRING COMMENT '身份证解析性别(F女,M男,unkown表示身份证为空或格式不对)', id_bday STRING COMMENT '身份证解析生日(身份证为空或格式不对则为-1)', id_age STRING COMMENT '身份证解析年龄(身份证为空或格式不对则为-1)', user_regdate STRING COMMENT '注册时间', user_active_type STRING COMMENT '用户激活方式,1 邮件;2 手机;', user_active_name STRING COMMENT '用户激活激活方式名称', user_active_time STRING COMMENT '激活时间', vip_level BIGINT COMMENT 'VIP等级', vip_level_name STRING COMMENT 'VIP等级名称。v1,v2,v3等', is_delete STRING COMMENT '是否删除' ) COMMENT '会员基础信息维度表' PARTITIONED BY ( ds STRING COMMENT '业务日期, yyyymmdd' ) LIFECYCLE 365;
配置完成后,保存并发布当前模型,生成物理表。
维度表3:dim_ec_trd_biz_type 交易类型(可选)。
配置基本信息。
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
表类型
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
表类型
公共层:维度层
交易域(trd)
电商业务
-
dim_ec_trd_biz_type
交易类型
-
交易类型
普通维度表
配置字段管理和分区字段管理。
FML代码示例
CREATE DIM TABLE dim_ec_trd_biz_type ALIAS '交易类型' ( `code` ALIAS 'code' STRING, value ALIAS 'value' STRING, description ALIAS 'description' STRING ) COMMENT '交易类型';
MaxCompute DDL代码示例
CREATE TABLE dim_ec_trd_biz_type ( code STRING, value STRING, description STRING ) COMMENT '交易类型';
配置完成后,保存并发布当前模型,生成物理表。
(可选)维度表4:dim_ec_itm_cat 商品类目维度表。
配置基本信息。
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
表类型
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
表类型
公共层:维度层
商品域(itm)
电商业务
每日全量(df)
dim_ec_itm_cat
商品类目维度表
-
商品类目维度表
普通维度表
配置字段管理和分区字段管理。
FML代码示例
CREATE DIM TABLE dim_ec_itm_cat ALIAS '商品类目维度表' ( cate_id ALIAS 'cate_id' BIGINT NOT NULL, cate_name ALIAS 'cate_name' STRING, CONSTRAINT PK PRIMARY KEY(cate_id) ) COMMENT '商品类目维度表' PARTITIONED BY ( ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd' );
MaxCompute SQL代码示例
CREATE TABLE dim_ec_itm_cat ( cate_id BIGINT, cate_name STRING ) COMMENT '商品类目维度表' PARTITIONED BY ( ds STRING COMMENT '业务日期, yyyymmdd' ) ;
配置完成后,保存并发布当前模型,生成物理表。
功能延伸介绍:关联关系。
维度模型间如果有业务上的“外键”概念,可以使用[关联关系]来建立两个维度表模型之间的联系。比如dim_ec_itm_item_info的cate_id与dim_ec_itm_cat的业务主键cate_id通过画板拉线的方式建立关联关系。
创建3张公共层明细表。
(可选)明细表1:dwd_ec_mbr_register_event_di 会员注册事件明细事实表。
配置基本信息。
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
表类型
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
表类型
公共层:明细数据层
电商业务
会员域/注册
每日增量(di)
dwd_ec_mbr_register_event_di
会员注册事件明细事实表
365天
-
事实事务表
配置字段管理和分区字段管理。
由于明细表字段配置这里没有涉及到新的功能点,所以全部使用代码模式配置作为示例。
FML代码示例
CREATE FACT TABLE dwd_ec_mbr_register_event_di ALIAS '会员注册事件明细事实表' ( event_time ALIAS '日志输出时间' DATETIME COMMENT '日志输出时间', session_id ALIAS '注册临时会话id' STRING COMMENT '注册临时会话id', `application` ALIAS '应用名称' STRING COMMENT '应用名称', process ALIAS '注册流程' STRING COMMENT '注册流程', action ALIAS '流程中的步骤' STRING COMMENT '流程中的步骤', ip ALIAS 'ip' STRING COMMENT 'ip', mobile_area ALIAS '手机对应国家区号' STRING COMMENT '手机对应国家区号', mobile ALIAS '注册或激活手机号码' STRING COMMENT '注册或激活手机号码', email ALIAS '注册或激活邮箱' STRING COMMENT '注册或激活邮箱', nick ALIAS '注册或激活nick' STRING COMMENT '注册或激活nick', reg_from ALIAS '注册来源' STRING COMMENT '注册来源', local_host_name ALIAS '日志记录服务器' STRING COMMENT '日志记录服务器', verify_type ALIAS '验证方式' STRING COMMENT '验证方式', action_result ALIAS '当前action结果信息' STRING COMMENT '当前action结果信息', is_success ALIAS '当前action结果信息' STRING COMMENT '当前action结果信息', target_url ALIAS '注册传入目标跳转地址' STRING COMMENT '注册传入目标跳转地址', os_type ALIAS '操作系统类型' STRING COMMENT '操作系统类型', app_version ALIAS 'app版本' STRING COMMENT 'app版本' ) PARTITIONED BY ( ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd' ) WITH('life_cycle'='365');
MaxCompute DDL代码示例
CREATE TABLE dwd_ec_mbr_register_event_di ( event_time DATETIME COMMENT '日志输出时间', session_id STRING COMMENT '注册临时会话id', `application` STRING COMMENT '应用名称', process STRING COMMENT '注册流程', action STRING COMMENT '流程中的步骤', ip STRING COMMENT 'ip', mobile_area STRING COMMENT '手机对应国家区号', mobile STRING COMMENT '注册或激活手机号码', email STRING COMMENT '注册或激活邮箱', nick STRING COMMENT '注册或激活nick', reg_from STRING COMMENT '注册来源', local_host_name STRING COMMENT '日志记录服务器', verify_type STRING COMMENT '验证方式', action_result STRING COMMENT '当前action结果信息', is_success STRING COMMENT '当前action结果信息', target_url STRING COMMENT '注册传入目标跳转地址', os_type STRING COMMENT '操作系统类型', app_version STRING COMMENT 'app版本' ) COMMENT '会员注册事件明细事实表' PARTITIONED BY ( ds STRING COMMENT '业务日期, yyyymmdd' ) LIFECYCLE 365;
配置完成后,保存并发布当前模型,生成物理表。
明细表2:dwd_ec_trd_create_ord_di 交易下单明细事实表。
配置基本信息。
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
表类型
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
表类型
公共层:明细数据层
电商业务
交易域/下单
每日增量(di)
dwd_ec_trd_create_ord_di
交易下单明细事实表
365天
交易下单明细事实表
事实事务表
配置字段管理和分区字段管理。
FML代码示例
CREATE FACT TABLE dwd_ec_trd_create_ord_di ALIAS '交易下单明细事实表' ( id ALIAS '主键' BIGINT COMMENT '主键', gmt_create ALIAS '订单创建时间' DATETIME COMMENT '创建时间', gmt_modified ALIAS '订单修改时间' DATETIME COMMENT '修改时间', sub_order_id ALIAS '子订单ID ' BIGINT NOT NULL COMMENT '子订单ID ', parent_order_id ALIAS '父订单ID' BIGINT COMMENT '父订单ID', buyer_id ALIAS '买家数字id' BIGINT COMMENT '买家数字id', buyer_nick ALIAS '买家昵称' STRING COMMENT '买家昵称', item_id ALIAS '商品数字id' BIGINT COMMENT '商品数字id', item_price ALIAS '商品价格,单位分 ' DECIMAL(38,18) COMMENT '商品价格 单位分 ', buy_amount ALIAS '购买数量' BIGINT COMMENT '购买数量', biz_type ALIAS '交易类型' BIGINT COMMENT '交易类型', memo ALIAS '备注' STRING COMMENT '备注', pay_status ALIAS '支付状态' BIGINT COMMENT '支付状态', logistics_status ALIAS '物流状态' BIGINT COMMENT '物流状态', status ALIAS '状态' BIGINT COMMENT '状态', seller_memo ALIAS '卖家的给交易的备注' STRING COMMENT '卖家的给交易的备注', buyer_memo ALIAS '买家给交易的备注' STRING COMMENT '买家给交易的备注', ip ALIAS '买家IP' STRING COMMENT '买家IP', end_time ALIAS '交易结束时间' DATETIME COMMENT '交易结束时间', pay_time ALIAS '付款的时间' DATETIME COMMENT '付款的时间', is_sub ALIAS '是否是子订单1表示子订单 ' BIGINT COMMENT '是否是子订单1表示子订单 ', is_parent ALIAS '是否是父订单1表示父订单' BIGINT COMMENT '是否是父订单1表示父订单', shop_id ALIAS '商家id' BIGINT COMMENT '商家id', total_fee ALIAS '去除折扣和调整后的子订单费用' DECIMAL(38,18) COMMENT '去除折扣和调整后的子订单费用', PRIMARY KEY(sub_order_id) ) COMMENT '交易下单明细事实表' PARTITIONED BY ( ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd' ) WITH('life_cycle'='365');
MaxCompute DDL代码示例
CREATE TABLE dwd_ec_trd_create_ord_di ( id BIGINT COMMENT '主键', gmt_create DATETIME COMMENT '创建时间', gmt_modified DATETIME COMMENT '修改时间', sub_order_id BIGINT COMMENT '子订单ID ', parent_order_id BIGINT COMMENT '父订单ID', buyer_id BIGINT COMMENT '买家数字id', buyer_nick STRING COMMENT '买家昵称', item_id BIGINT COMMENT '商品数字id', item_price DECIMAL(38,18) COMMENT '商品价格,单位分 ', buy_amount BIGINT COMMENT '购买数量', biz_type BIGINT COMMENT '交易类型', memo STRING COMMENT '备注', pay_status BIGINT COMMENT '支付状态', logistics_status BIGINT COMMENT '物流状态', status BIGINT COMMENT '状态', seller_memo STRING COMMENT '卖家的给交易的备注', buyer_memo STRING COMMENT '买家给交易的备注', ip STRING COMMENT '买家IP', end_time DATETIME COMMENT '交易结束时间', pay_time DATETIME COMMENT '付款的时间', is_sub BIGINT COMMENT '是否是子订单1表示子订单 ', is_parent BIGINT COMMENT '是否是父订单1表示父订单', shop_id BIGINT COMMENT '商家id', total_fee DECIMAL(38,18) COMMENT '去除折扣和调整后的子订单费用' ) COMMENT '交易下单明细事实表' PARTITIONED BY ( ds STRING COMMENT '业务日期, yyyymmdd' ) ;
配置完成后,保存并发布当前模型,生成物理表。
(可选)明细表3:dwd_ec_itm_publish_event_detail_di 商品发布事件详情事实表。
配置基本信息。:
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
表类型
数仓分层
数据域
业务分类
存储策略
表名
表中文名
生命周期
描述
表类型
公共层:明细数据层
电商业务
商品域/商品发布
每日增量(di)
dwd_ec_itm_publish_event_detail_di
商品发布事件详情事实表
365天
商品发布事件详情事实表
事实事务表
配置字段管理和分区字段管理。
FML代码示例
CREATE FACT TABLE dwd_ec_itm_publish_event_detail_di ALIAS '商品发布事件详情事实表' ( operation_type ALIAS '操作类型' BIGINT COMMENT '操作类型', source_from ALIAS '商品发布源头' STRING COMMENT '商品发布源头', item_id ALIAS '商品数字ID' STRING COMMENT '商品数字ID', user_id ALIAS '用户id' STRING COMMENT '用户id', is_success ALIAS '是否发布成功' STRING COMMENT '是否发布成功', cate_id ALIAS '商品叶子类目ID' BIGINT COMMENT '商品叶子类目ID', cate_name ALIAS '商品叶子类目名称' STRING COMMENT '商品叶子类目名称' ) COMMENT '商品发布事件详情事实表' PARTITIONED BY ( ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd' ) WITH('life_cycle'='365');
MaxCompute DDL代码示例
CREATE TABLE dwd_ec_itm_publish_event_detail_di ( operation_type BIGINT COMMENT '操作类型', source_from STRING COMMENT '商品发布源头', item_id STRING COMMENT '商品数字ID', user_id STRING COMMENT '用户id', is_success STRING COMMENT '是否发布成功', cate_id BIGINT COMMENT '商品叶子类目ID', cate_name STRING COMMENT '商品叶子类目名称' ) COMMENT '商品发布事件详情事实表' PARTITIONED BY ( ds STRING COMMENT '业务日期, yyyymmdd' ) LIFECYCLE 365;
配置完成后,保存并发布当前模型,生成物理表。
步骤五:维度建模(公共层汇总表模型和应用层应用表模型)
创建6张公共层汇总表。
汇总表1:dws_ec_mbr_cnt_std 历史截至当日存量会员数cube统计表。
配置基本信息。
数仓分层
业务分类
数据域
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
数仓分层
业务分类
数据域
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
公共层:汇总数据层
电商业务
会员域(mbr)
std(历史截止当日)
-
dws_ec_mbr_cnt_std
历史截至当日存量会员数cube统计表
365天
历史截至当日存量会员数cube统计表
轻度汇总表
配置字段管理和分区字段管理。
当前表结合使用了快捷模式和代码模式两种方式来进行配置操作。
快捷模式配置:
(可选)从指标导入。
这里仅作为从指标导入的核心功能演示,实际当前表不需要导入,后续的汇总表中会使用到从指标导入的功能。
使用代码模式,将下文中的示例代码语句复制进去,点击确定替换表内容。
MaxCompute DDL代码示例
CREATE TABLE dws_ec_mbr_cnt_std ( reg_prov_id STRING COMMENT '注册填写省ID', reg_prov_name STRING COMMENT '注册填写省名称', reg_gender STRING COMMENT '身份证解析性别(F女,M男,unkown表示身份证为空或格式不对)', reg_gender_name STRING COMMENT '身份证解析性别(F女,M男,unkown表示身份证为空或格式不对)', age_tag STRING COMMENT '出生年代', user_active_type STRING COMMENT '用户激活方式', user_active_name STRING COMMENT '激活方式名称', vip_level BIGINT COMMENT 'VIP等级', vip_level_name STRING COMMENT 'VIP等级名称。v1,v2,v3等', mbr_cnt BIGINT COMMENT '存量会员数' ) COMMENT '历史截至当日_存量会员数_cube统计表' PARTITIONED BY ( ds STRING COMMENT '业务日期, yyyymmdd' ) LIFECYCLE 365;
FML代码示例
CREATE DWS TABLE dws_ec_mbr_cnt_std ALIAS '历史截至当日_存量会员数_cube统计表' ( reg_prov_id ALIAS '注册填写省ID' STRING COMMENT '注册填写省ID' REFERENCES dim_ec_mbr_user_info.reg_prov_id, reg_prov_name ALIAS '注册填写省名称' STRING COMMENT '注册填写省名称', reg_gender ALIAS '身份证解析性别(F女,M男,unkown表示身份证为空或格式不对)' STRING COMMENT '身份证解析性别(F女,M男,unkown表示身份证为空或格式不对)' REFERENCES dim_ec_mbr_user_info.reg_gender, reg_gender_name ALIAS '身份证解析性别(F女,M男,unkown表示身份证为空或格式不对)' STRING COMMENT '身份证解析性别(F女,M男,unkown表示身份证为空或格式不对)', age_tag ALIAS '出生年代' STRING COMMENT '出生年代' REFERENCES dim_ec_mbr_user_info.id_age, user_active_type ALIAS '用户激活方式' STRING COMMENT '用户激活方式' REFERENCES dim_ec_mbr_user_info.user_active_type, user_active_name ALIAS '激活方式名称' STRING COMMENT '激活方式名称', vip_level ALIAS 'VIP等级' BIGINT COMMENT 'VIP等级' REFERENCES dim_ec_mbr_user_info.vip_level, vip_level_name ALIAS 'VIP等级名称。v1,v2,v3等' STRING COMMENT 'VIP等级名称。v1,v2,v3等', mbr_cnt ALIAS '存量会员数' BIGINT COMMENT '存量会员数' WITH ('atomic_indicator'='mbr_cnt','time_period'='std'), CONSTRAINT TP TIME_PERIOD KEY REFERENCES (std) ) COMMENT '历史截至当日_存量会员数_cube统计表' PARTITIONED BY ( ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd' ) WITH('life_cycle'='365');
可视化编辑关联粒度/指标,并按下图关联对应的统计粒度、原子指标、派生指标,单击确定。
得到如下图表结构,单击保存,并发布当前模型,生成物理表。
(可选)汇总表2:dws_ec_mbr_register_cm 近1自然月会员注册信息统计。
配置基本信息。
数仓分层
业务分类
数据域
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
数仓分层
业务分类
数据域
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
公共层:汇总数据层
电商业务
会员域(mbr)
cm(自然月)
-
dws_ec_mbr_register_cm
近1自然月会员注册信息统计
720天
近1自然月会员注册信息统计
普通汇总表
配置字段管理和分区字段管理。
FML代码示例
-- 不支持修改表名 CREATE DWS TABLE dws_ec_mbr_register_cm ALIAS '近1自然月_会员_注册信息统计' ( reg_month ALIAS '注册月份' STRING COMMENT '注册月份', new_mbr_cnt_cm ALIAS '自然月_注册会员数' BIGINT COMMENT '自然月_注册会员数' REFERENCES (new_mbr_cnt_cm), CONSTRAINT TP TIME_PERIOD KEY REFERENCES (cm) ) COMMENT '近1自然月_会员_注册信息统计' PARTITIONED BY ( ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd' ) WITH('life_cycle'='720');
MaxCompute DDL代码示例
-- 不支持修改表名 CREATE TABLE dws_ec_mbr_register_cm ( reg_month STRING COMMENT '注册月份', new_mbr_cnt_cm BIGINT COMMENT '自然月_注册会员数' ) COMMENT '近1自然月_会员_注册信息统计' PARTITIONED BY ( ds STRING COMMENT '业务日期, yyyymmdd' ) LIFECYCLE 720;
可视化编辑或查看关联粒度/指标信息,完成后单击保存并发布当前模型,生成物理表。
汇总表3:dws_ec_trd_cate_commodity_gmv_kpi_fy 财年KPI类目品类_GMV统计。
配置基本信息。
数仓分层
业务分类
数据域
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
数仓分层
业务分类
数据域
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
公共层:汇总数据层
电商业务
交易域(trd)
fy(财年)
-
dws_ec_trd_cate_commodity_gmv_kpi_fy
财年KPI类目品类_GMV统计
365天
财年KPI_类目品类GMV统计
普通汇总表
配置字段管理和分区字段管理。
FML代码示例
CREATE DWS TABLE dws_ec_trd_cate_commodity_gmv_kpi_fy ALIAS '财年KPI_类目_品类_GMV统计' ( cate_id ALIAS '商品叶子类目ID' BIGINT COMMENT '商品叶子类目ID', cate_name ALIAS '商品叶子类目名称' STRING COMMENT '商品叶子类目名称', commodity_id ALIAS '品类ID' BIGINT COMMENT '品类ID', commodity_name ALIAS '品类名称' STRING COMMENT '品类名称', pay_ord_amt_fy ALIAS '财年_订单支付成功金额' DECIMAL COMMENT '财年_订单支付成功金额' REFERENCES (pay_ord_amt_fy), kpi_gmv_rate_fy ALIAS '财年_成交金额完成度' DECIMAL COMMENT '财年_成交金额完成度' ) COMMENT '财年KPI_类目_品类_GMV统计' PARTITIONED BY ( ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd' ) WITH('life_cycle'='365');
MaxCompute DDL代码示例
CREATE TABLE dws_ec_trd_cate_commodity_gmv_kpi_fy ( cate_id BIGINT COMMENT '商品叶子类目ID', cate_name STRING COMMENT '商品叶子类目名称', commodity_id BIGINT COMMENT '品类ID', commodity_name STRING COMMENT '品类名称', pay_ord_amt_fy DECIMAL COMMENT '财年_订单支付成功金额', kpi_gmv_rate_fy DECIMAL COMMENT '财年_成交金额完成度' ) COMMENT '财年KPI_类目_品类_GMV统计' PARTITIONED BY ( ds STRING COMMENT '业务日期, yyyymmdd' ) LIFECYCLE 365;
可视化查看或编辑关联粒度/指标,完成后保存并发布当前模型,生成物理表。
(可选)汇总表4:dws_ec_trd_pay_cate_commodity_1d 近1天类目品类_交易支付指标汇总。
配置基本信息。
数仓分层
业务分类
数据域
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
数仓分层
业务分类
数据域
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
汇总层:公共数据层
电商业务
交易域(trd)
1d(近1天)
-
dws_ec_trd_pay_cate_commodity_1d
近1天类目品类_交易支付指标汇总
720天
近1天_类目品类交易支付指标汇总
普通汇总表
配置字段管理和分区字段管理。
FML代码示例
CREATE DWS TABLE dws_ec_trd_pay_cate_commodity_1d ALIAS '近1天_类目_品类_交易支付指标汇总' ( stat_date ALIAS '统计日期' STRING COMMENT '统计日期', stat_month ALIAS '统计月份' STRING COMMENT '统计月份 ', stat_year ALIAS '统计年份' STRING COMMENT '统计年份', cate_id ALIAS '商品叶子类目ID' BIGINT COMMENT '商品叶子类目ID' REFERENCES dim_ec_itm_item_info.cate_id, cate_name ALIAS '商品叶子类目名称' STRING COMMENT '商品叶子类目名称', commodity_id ALIAS '品类ID' BIGINT COMMENT '品类ID' REFERENCES dim_ec_itm_item_info.commodity_id, commodity_name ALIAS '品类名称' STRING COMMENT '品类名称', pay_ord_cnt_1d ALIAS '近1天_支付子订单数' BIGINT COMMENT '近1天_支付子订单数' REFERENCES (pay_ord_cnt_1d), pay_itm_cnt_1d ALIAS '近1天_支付商品数' BIGINT COMMENT '近1天_支付商品数' REFERENCES (pay_itm_cnt_1d), pay_ord_amt_1d ALIAS '近1天_订单支付成功金额' DECIMAL COMMENT '近1天_订单支付成功金额' REFERENCES (pay_ord_amt_1d), pay_ord_pbt_1d ALIAS '近1天_客单价' DECIMAL COMMENT '近1天_客单价' REFERENCES (pay_ord_pbt_1d) ) COMMENT '近1天_类目_品类_交易支付指标汇总' PARTITIONED BY ( ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd' ) WITH('life_cycle'='720');
MaxCompute DDL代码示例
CREATE TABLE dws_ec_trd_pay_cate_commodity_1d ( stat_date STRING COMMENT '统计日期', stat_month STRING COMMENT '统计月份 ', stat_year STRING COMMENT '统计年份', cate_id BIGINT COMMENT '商品叶子类目ID', cate_name STRING COMMENT '商品叶子类目名称', commodity_id BIGINT COMMENT '品类ID', commodity_name STRING COMMENT '品类名称', pay_ord_cnt_1d BIGINT COMMENT '近1天_支付子订单数', pay_itm_cnt_1d BIGINT COMMENT '近1天_支付商品数', pay_ord_amt_1d DECIMAL COMMENT '近1天_订单支付成功金额', pay_ord_pbt_1d DECIMAL COMMENT '近1天_客单价' ) COMMENT '近1天_类目_品类_交易支付指标汇总' PARTITIONED BY ( ds STRING COMMENT '业务日期, yyyymmdd' ) LIFECYCLE 720;
:
可视化查看或编辑关联粒度/指标,完成后保存并发布模型,生成物理表。
(可选)汇总表5:dws_ec_lgt_ord_overview_1d 近1天_物流订单概览指标汇总
配置基本信息。
数仓分层
业务分类
数据域
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
数仓分层
业务分类
数据域
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
公共层:汇总数据层
电商业务
物流域(lgt)
1d(近1天)
-
dws_ec_lgt_ord_overview_1d
近1天_物流订单概览指标汇总
365天
近1天_物流订单概览指标汇总
普通汇总表
配置字段管理和分区字段管理。:
FML代码示例
CREATE DWS TABLE dws_ec_lgt_ord_overview_1d ALIAS '近1天_物流订单概览指标汇总' ( stat_date ALIAS '统计日期' STRING COMMENT '统计日期', lgt_ord_cnt_1d ALIAS '近1天_物流订单总数' BIGINT MEASUREMENT COMMENT '近1天_物流订单总数' REFERENCES (lgt_ord_cnt_1d), lgt_crt_ord_cnt_1d ALIAS '近1天_物流接单订单数' BIGINT MEASUREMENT COMMENT '近1天_物流接单订单数' REFERENCES (lgt_crt_ord_cnt_1d), lgt_lanshou_ord_cnt_1d ALIAS '近1天_物流揽收订单数' BIGINT MEASUREMENT COMMENT '近1天_物流揽收订单数' REFERENCES (lgt_lanshou_ord_cnt_1d), lgt_sign_ord_cnt_1d ALIAS '近1天_物流签收订单数' BIGINT MEASUREMENT COMMENT '近1天_物流签收订单数' REFERENCES (lgt_sign_ord_cnt_1d) ) COMMENT '近1天_物流订单概览指标汇总' PARTITIONED BY ( ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd' ) WITH('life_cycle'='365');
MaxCompute DDL代码示例
CREATE TABLE dws_ec_lgt_ord_overview_1d ( stat_date STRING COMMENT '统计日期', lgt_ord_cnt_1d BIGINT COMMENT '近1天_物流订单总数', lgt_crt_ord_cnt_1d BIGINT COMMENT '近1天_物流接单订单数', lgt_lanshou_ord_cnt_1d BIGINT COMMENT '近1天_物流揽收订单数', lgt_sign_ord_cnt_1d BIGINT COMMENT '近1天_物流签收订单数' ) COMMENT '近1天_物流订单概览指标汇总' PARTITIONED BY ( ds STRING COMMENT '业务日期, yyyymmdd' ) LIFECYCLE 365;
可视化查看或编辑关联粒度/指标,完成后保存并发布模型,生成物理表。
(可选)汇总表6:dws_ec_risk_remark_tag_1d 近1天_评价算法打标分类指标汇总表。
配置基本信息。
数仓分层
业务分类
数据域
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
数仓分层
业务分类
数据域
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
公共层:汇总数据层
电商业务
信用&风控域(risk)
1d(近1天)
-
dws_ec_risk_remark_tag_1d
近1天_评价算法打标分类指标汇总表
365天
近1天_评价算法打标分类指标汇总表
普通汇总表
配置字段管理和分区字段管理。
FML代码示例
CREATE DWS TABLE dws_ec_risk_remark_tag_1d ALIAS '近1天_评价算法打标分类指标汇总表' ( stat_date ALIAS '统计日期' STRING COMMENT '统计日期', remark_tag ALIAS '评价打标分类' STRING COMMENT '评价打标分类 ', cate_id ALIAS '商品叶子类目ID' BIGINT COMMENT '商品叶子类目ID' REFERENCES dim_ec_itm_cat.cate_id, cate_name ALIAS '商品叶子类目名称' STRING COMMENT '商品叶子类目名称', commodity_id ALIAS '品类ID' BIGINT COMMENT '品类ID' REFERENCES dim_ec_itm_item_info.commodity_name, commodity_name ALIAS '品类名称' STRING COMMENT '品类名称', remark_ord_cnt_1d ALIAS '近1天_评价订单数' BIGINT COMMENT '近1天_评价订单数' REFERENCES (remark_ord_cnt_1d) ) COMMENT '近1天_评价算法打标分类指标汇总表' PARTITIONED BY ( ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd' ) WITH('life_cycle'='365');
MaxCompute DDL代码示例
CREATE TABLE dws_ec_risk_remark_tag_1d ( stat_date STRING COMMENT '统计日期', remark_tag STRING COMMENT '评价打标分类', cate_id BIGINT COMMENT '商品叶子类目ID', cate_name STRING COMMENT '商品叶子类目名称', commodity_id BIGINT COMMENT '品类ID', commodity_name STRING COMMENT '品类名称', remark_ord_cnt_1d BIGINT COMMENT '近1天_评价订单数' ) COMMENT '近1天_评价算法打标分类指标汇总表' PARTITIONED BY ( ds STRING COMMENT '业务日期, yyyymmdd' ) LIFECYCLE 365;
可视化查看或编辑关联粒度/指标,完成后保存并发布模型,生成物理表。
创建应用表模型。
创建一张应用表模型:ads_ec_ec360_gmv_kpi_overview 电商360KPI概览。
配置基本信息。
数仓分层
集市/主题
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
数仓分层
集市/主题
时间周期
修饰词
表名
表中文名
生命周期
描述
表类型
应用层:应用数据层
电商360
fy(财年)、std(历史截止当日)
-
ads_ec_ec360_gmv_kpi_overview
电商360KPI概览
-
电商360KPI概览
普通应用表
配置字段管理和分区字段管理。
FML代码示例
CREATE DWS TABLE ads_ec_ec360_gmv_kpi_overview ALIAS '电商360KPI概览' ( pay_ord_amt_fy ALIAS 'pay_ord_amt_fy' DECIMAL REFERENCES (pay_ord_amt_fy), mbr_cnt_std ALIAS 'mbr_cnt_std' BIGINT REFERENCES (mbr_cnt_std), kpi_gmv_rate_fy ALIAS 'kpi_gmv_rate_fy' DECIMAL REFERENCES (kpi_gmv_rate_fy) ) COMMENT '电商360KPI概览' PARTITIONED BY ( ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd' );
MaxCompute DDL代码示例
CREATE TABLE ads_ec_ec360_gmv_kpi_overview ( pay_ord_amt_fy DECIMAL, mbr_cnt_std BIGINT, kpi_gmv_rate_fy DECIMAL ) COMMENT '电商360KPI概览' PARTITIONED BY ( ds STRING COMMENT '业务日期, yyyymmdd' ) ;
可视化查看或编辑关联粒度/指标,完成后保存并发布模型,生成物理表。
(可选)步骤六:扩展功能演示——逆向建模
以下功能介绍仅为逆向建模的核心功能展示,不操作不会影响后续实验。
上文中主要是讲解了正向建模,但是在实际生产中很多企业已经有了大量的MaxCompute物理表,同时又希望在DataWorks智能数据建模产品统一管理所有模型,那么逆向建模功能就可以帮助企业快速将已创建的数据表生成规范的数仓模型。该功能无需您再次执行建模操作,即可快速将已有物理表反向建模至DataWorks的维度建模中,节省了大量的时间成本。更多关于逆向建模的操作,请参见逆向建模:物理表反向建模。
步骤七:模型发布
确认模型无误后,将其中的维度表(dim_ec_itm_item_info、dim_ec_mbr_user_info)、汇总表(dws_ec_trd_cate_commodity_gmv_kpi_fy、dws_ec_mbr_cnt_std)、明细表(dwd_ec_trd_create_ord_di)、应用表(ads_ec_ec360_gmv_kpi_overview)发布至对应空间的开发环境和生产环境,后续实验中应用到这几张表。发布成功后可以前往数据地图查看表结构。
设置项 | 说明 |
设置项 | 说明 |
工作空间 | 这里会列出建模空间中配置的所有数据研发工作空间。本实验选择当前工作空间。 |
引擎类型 | 支持MaxCompute、E-MapReduce、Hologres等多种引擎。本实验选择MaxCompute |
引擎实例 | 根据需求将表物化至引擎类型参数中相应类型的数据存储引擎。 |
生效环境 | 标准模式下,可选择发布至开发或生产环境。 |
发布模式 |
|
- 本页导读 (1)
- 维度建模储备知识介绍
- 基本概念
- 模型设计理论
- 实验预期:本文操作结果
- 实验操作:维度建模
- 步骤一:数仓规划
- 步骤二:数据标准
- 步骤三:数据指标
- 步骤四:维度建模(公共层维度表模型和明细表模型)
- 步骤五:维度建模(公共层汇总表模型和应用层应用表模型)
- (可选)步骤六:扩展功能演示——逆向建模
- 步骤七:模型发布