维度建模

本文从维度建模的基本概念以及工具实践两方面为您介绍如何使用维度建模。

维度建模储备知识介绍

基本概念

说明

智能建模强依赖于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

说明
  • [1] 亚当森.Star Schema完全参考手册.北京:清华大学出版社,2012

  • [2] Ralph Kimball ,Margy Ross.数据仓库工具箱(第3版).北京:清华大学出版社,2015

例如,如何划分数据域:建模理论

说明
  • 以上为数据域划分案例,和本次实验的数据域划分有一点出入。

  • 以上示意图引用自阿里巴巴数据技术及产品部《大数据之路:阿里巴巴大数据实践》。

实验预期:本文操作结果

预期的分层划域,下图中从下到上数仓分层,从左到右划分数据域。这里您仅需了解一下概貌,后面会一步一步配置,蓝色字体为本实验中需要使用到的表,需将模型发布至引擎生成物理表。业务分类电商业务

实验操作:维度建模

说明

维度建模中部分标注了可选,表示不操作不影响后续实验。建议您都进行操作一下,以便结合业务从整体角度了解一下维度建模。

步骤一:数仓规划

  1. 新建如下一个业务分类:

    业务名称:电商业务,英文缩写:ec。49

  2. 数仓分层:系统内置了常规的数据分层,您可以针对每个数据分层设置表名检查器。本实验使用默认分层结构,并且为了规范模型的命名,将同一分层中表名称的命名格式统一,系统为每个数仓分层配置对应的表名“检查器”,开启并设置默认检查器,在进行模型设计时,表名会按照检查器设置自动填充,设计师仅需补充自定义内容即可。

    • 贴源层:数据引入层ODS。

    • 公共层:维度层DIM、明细数据层DWD、汇总数据层DWS。

    • 应用层:应用数据层ADS。

    50

    表名检查器示例:

    • 弱规则:新建对象时,根据规则定义内容,推荐填写规则名称。

    • 强规则:新建对象时,根据规则定义内容,推荐填写并强制校验规则名称。

    分层

    规则定义

    规则示例

    维度层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层不需要做数据建模,所以这里忽略。

    -

  3. 公共层:

    1. 新建六个如下表的数据域。您也可以使用通用工具导入数据域

      英文缩写

      英文名

      中文名

      模型评审人

      负责人

      备注

      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

      企业或者个人信用及风险相关的数据,包括审核、风控监控事件、评价、投诉、举报、申诉、处罚等相关数据。

      51
    2. 业务过程。

      1. 参照下表,新建会员域下的业务。您也可以使用通用工具导入业务过程

        英文缩写

        中文名

        英文名

        数据域

        负责人

        备注

        login

        登录

        login

        会员域

        xxx

        -

        register

        注册

        register

        会员域

        xxx

        -

        mbf_default(系统)

        会员域_默认(系统)

        mbr_default

        会员域

        xxx

        数据域下默认的业务过程。

        52
      2. 参照下表,新建交易域下的业务过程。

        英文缩写

        中文名

        英文名

        数据域

        负责人

        备注

        cart

        加购

        cart

        交易域

        xxx

        加入购物车

        create

        下单

        create

        交易域

        xxx

        创建订单

        pay

        支付

        pay

        交易域

        xxx

        -

        refund

        退款

        refund

        交易域

        xxx

        -

        trd_default(系统)

        交易域_默认

        trd_default

        交易域

        xxx

        数据域下的默认业务过程。

      3. 参照下表,新建商品域下的业务过程。

        英文缩写

        中文名

        英文名

        数据域

        负责人

        备注

        on_off

        商品上下架

        on_off

        商品域

        xxx

        -

        publish

        商品发布

        publish

        商品域

        xxx

        -

        itm_default(系统)

        商品域_默认

        itm_default

        商品域

        xxx

        数据域下的默认业务过程。

      4. 参照下表,新建物流域下的业务过程。

        英文缩写

        中文名

        英文名

        数据域

        负责人

        备注

        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

        数据域下的默认的业务过程。

      5. 参照下表,新建日志域下的业务过程。

        英文缩写

        中文名

        英文名

        数据域

        负责人

        备注

        exp

        曝光

        exposure

        日志域

        xxx

        -

        se

        搜索

        search

        日志域

        xxx

        -

        clk

        点击

        click

        日志域

        xxx

        -

        pv

        浏览

        pv

        日志域

        xxx

        -

        log_default(系统)

        日志域_默认

        log_default

        日志域

        xxx

        数据域下的默认业务过程。

      6. 参照下表,新建信用与风控域下的业务过程。

        英文缩写

        中文名

        英文名

        数据域

        负责人

        备注

        remark

        评价

        remark

        信用&风控域

        xxx

        -

        risk_default(系统)

        信用&风控域,默认

        risk_default

        信用&风控域

        xxx

        数据域下的默认业务过程

  4. 应用层:

    1. 参照下表,新建一个数据集市。

      英文缩写

      集市名称

      所属业务分类

      ec

      电商集市

      电商业务

    2. 参照下表,新建一级主题域。

      英文缩写

      主题域名称

      所属数据集市

      备注

      ec360

      电商360

      电商集市

      -

      open_red

      开门红

      电商集市

      -

      rfd

      退款

      电商集市

      -

      lgt

      物流

      电商集市

      -

      flow

      流量通道

      电商集市

      -

      act

      活动

      电商集市

      -

      byr

      买家

      电商集市

      -

      brand

      品牌

      电商集市

      -

      cate

      品类

      电商集市

      -

      slr

      商家

      电商集市

      -

      itm

      商品

      电商集市

      -

  5. 建模空间。

    当您所需要管理多个DataWorks工作空间且需要复用一套数仓规划时,面对跨多个工作空间的复杂数据体系,可以通过设计空间来共享一套数据建模工具,针对整个数据体系进行统一地数仓规划、维度建模及指标定义等工作。当配置了数据研发工作空间后,在后续模型发布时可以选择对应的工作空间。更多关于建模空间的内容,请参见建模空间建模空间

    说明

    当前步骤仅为核心功能展示,不操作不影响后续实验。

步骤二:数据标准

  1. 新建字段标准。

    1. 新建根目录,名称:线上业务;新建子目录,名称:会员。53

    2. 参照下表,新建五个标准。您也可以单击导入图标,导入字段标准

      标准编码

      英文缩写

      英文名称

      中文名称

      数据类型

      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

  2. 新建标准代码。

    1. 新建目录。目录1名称:基础代码;目录2名称:风控。54

    2. 新建两个代码标准,执行并发布到MaxCompute引擎retail_e_commerce_2实例的开发和生产环境。55

      • 代码标准1。

        代码编号:is_del;代码名称:是否删除;英文名称:is_del。

        编码取值

        编码名称

        英文名称

        编码含义

        1

        true

        true

        0

        false

        false

      • 代码标准2。

        代码编号:risks_level;代码名称:风险等级;英文名称:risks_level。

        编码取值

        编码名称

        英文名称

        编码含义

        1

        高级

        high

        高级

        2

        中级

        middle

        中级

  3. 参照如下信息,新建度量单位。56

    • 英文缩写:people_cnt。

    • 英文名称:people_cnt。

    • 中文名称:人数。

    • 分类:对象量词。

步骤三:数据指标

概览

  • 原子指标和派生指标可以被汇总层或应用层表模型关联。在后续建表模型时,我们可以快速勾选派生指标,构建模型,模型中的字段也可以和指标构建关联关系。

    例如:原子指标mbr_cnt被汇总表模型“dws_ec_mbr_cnt_std”所关联。5

  • 派生指标由原子指标、修饰词、时间周期构成。6

    例如,存量会员数+历史截止当日+异常会员=历史截至当日_异常会员_存量会员数,该派生指标可以作为模型的字段存在,也可以和模型的字段做关联。7

原子指标

参照下表,新建13个原子指标保存并提交。您也可以导入原子指标,如果部分可选数据域未创建,请先将下载的Excel文件中相关数据域删除再执行导入。08

业务过程

英文缩写

英文名称

中文名称

业务口径

描述

指标来源

计算函数

小数位数

数据单位

是否去重

会员域/注册

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个修饰词保存并提交。您也可以直接导入修饰词9

修饰词类型

英文缩写

英文名称

中文名称

业务口径

描述

数仓分层

普通业务修饰词

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

初级会员

初级会员

-

-

时间周期

使用默认配置。10

派生指标

  1. 会员域下的派生指标:

    • 批量创建[会员域/会员域_默认]业务过程下的13个派生指标。11

      • 原子指标:存量会员数。

      • 修饰词:上文修饰词列表中的所有一共12个,再加一个修饰词system_empty(空),批量选会合并成一个,所以这里需要一个一个选后添加。

      • 时间周期:std(历史截止当日)。

    • 单个创建[会员域/注册]业务过程下的1个派生指标。12

      时间周期

      修饰词

      原子指标

      数仓分层

      业务分类

      业务过程

      中文名称

      英文名称

      描述

      cm(自然月)

      -

      new_mbr_cnt(注册会员数)

      公共层:汇总数据层

      电商业务

      会员域/注册

      自然月_注册会员数(点击智能推荐)

      new_mbr_cnt_cm(点击智能推荐)

      -

  2. 交易域下的派生指标:分两次批量创建[交易域/支付]业务过程下的派生指标,方法同上。

    • 第一批:

      • 原子指标:成交金额完成度、客单价、支付商品数、支付子订单数、订单支付成功金额。

      • 修饰词:system_empty(空)。

      • 时间周期:1d(近1天)。

    • 第二批:

      • 原子指标:成交金额完成度、订单支付成功金额。

      • 修饰词:system_empty(空)。

      • 时间周期:fy(财年)。

  3. 物流域下的派生指标:参照下表,创建物流域下的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

    -

  4. 信用与风控域下的派生指标:参照下表,创建信用与风控域下的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

    -

步骤四:维度建模(公共层维度表模型和明细表模型)

  1. 创建4张公共层维度表。

    • 维度表1:dim_ec_itm_item_info商品基础信息维度表。57

      1. 配置基本信息。

        说明

        表名是在选完业务分类、数据域后根据数仓分层中配置的检查器自动填充dim_ec_itm部分内容,再手动填写自定义_item_info部分。

        数仓分层

        数据域

        业务分类

        存储策略

        表名

        表中文名

        生命周期

        描述

        公共层:维度层

        商品域(itm)

        电商业务

        -

        dim_ec_itm_item_info

        商品基础信息维度表

        365天

        商品基础信息维度表

      2. 配置字段管理和分区字段管理。

        支持手动录入、快捷模式或代码模式的方式配置字段管理和分区字段管理,建议新建模型时使用快捷模式查找已有表/视图的方式来快速导入,修改模型时使用代码模式,两种方式结合使用。

        本实验各个层级其中一张表会使用快捷模式来配置,其余表由于创建方法大体一致,为减少重复操作使用代码模式创建,代码模式支持FML、MaxCompute DDL、Hive DDL、MySQL DDL等多种语言,本实验中会贴出FML(适用于维度建模领域的类SQL语言,代码模式建模)、MaxCompute DDL两种的DDL语句,您可以根据情况选择任意一种。

        • 使用快捷模式配置:

          1. 进入编辑状态,使用快捷模式,搜索表:odps.retail_e_commerce_2.ods_item_info,选择导入全部字段,导入后,还能追溯到来源表来源字段

            说明

            快捷模式使用到了查找已有表/视图,由于当前空间全新,没有已有表,请先执行附录:MaxCompute ODS层DDL建表语句中的ODS层DDL语句。实际应用过程中,可以直接使用已存在的表或视图。

            58
          2. 选中id字段,单击删除59

          3. 修改模型字段类型。

            • gmt_creategmt_modified字段类型批量修改为string60

            • reserve_pricesecure_trade_ordinary_post_feesecure_trade_fast_post_feesecure_trade_ems_post_fee字段类型修改为double61

          4. 修改模型字段显示名。

            • gmt_modified字段显示名称修改为商品最后修改日期

            • gmt_create字段显示名称修改为商品创建时间

          5. 修改模型字段顺序。

            单击编辑,使用代码模式调整一下字段顺序,将gmt_modified字段调整到gmt_create字段前面。

          6. 单击保存

        • 使用代码模式配置:

          • 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;
      3. 配置完成后,保存并发布当前模型,生成物理表。62

      4. (可选)使用模型开发功能联动数据开发模块。

        说明

        本步骤仅作为核心功能演示,在后续实验步骤中可以使用该功能来进行数据开发,您也可以体验操作后不保存,不影响主流实验流程。

        6364

        • 如果使用快捷模式中的查找表、冗余字段查找表构建模型,系统会自动构建完整度较高的ETL,开发者只需要补充业务逻辑即可。

        • 不使用快捷模式查找表创建模型,如手动录入、DDL导入,构建的ETL代码需要补充的信息相对就会多,且需要查看元数据来确认字段含义。

    • 维度表2:dim_ec_mbr_user_info 会员基础信息维度表。

      1. 配置基本信息。

        数仓分层

        数据域

        业务分类

        存储策略

        表名

        表中文名

        生命周期

        描述

        表类型

        公共层:维度层

        会员域(mbr)

        电商业务

        每日全量(df)

        dim_ec_mbr_user_info

        会员基础信息维度表

        365天

        -

        普通维度表

      2. 配置字段管理和分区字段管理。

        • 配置要点2

          • user_id字段设置为业务主键非空

            设置后,后续将模型发布至MaxCompute引擎会生成对应的数据质量DQC校验规则来检查user_id字段的值是否唯一和非空。

          • nick字段(关联字段标准)“昵称”。

          • is_delete字段(关联标准代码)“是否删除”。

        • 代码示例1

          • 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. 配置完成后,保存并发布当前模型,生成物理表。

    • 维度表3:dim_ec_trd_biz_type 交易类型(可选)。

      1. 配置基本信息。

        数仓分层

        数据域

        业务分类

        存储策略

        表名

        表中文名

        生命周期

        描述

        表类型

        公共层:维度层

        交易域(trd)

        电商业务

        -

        dim_ec_trd_biz_type

        交易类型

        -

        交易类型

        普通维度表

      2. 配置字段管理和分区字段管理。

        • 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 '交易类型';
      3. 配置完成后,保存并发布当前模型,生成物理表。

    • (可选)维度表4:dim_ec_itm_cat 商品类目维度表。

      1. 配置基本信息。

        数仓分层

        数据域

        业务分类

        存储策略

        表名

        表中文名

        生命周期

        描述

        表类型

        公共层:维度层

        商品域(itm)

        电商业务

        每日全量(df)

        dim_ec_itm_cat

        商品类目维度表

        -

        商品类目维度表

        普通维度表

      2. 配置字段管理和分区字段管理。

        • 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'
          )
          ;
      3. 配置完成后,保存并发布当前模型,生成物理表。

    • 功能延伸介绍:关联关系。

      维度模型间如果有业务上的“外键”概念,可以使用[关联关系]来建立两个维度表模型之间的联系。比如dim_ec_itm_item_info的cate_id与dim_ec_itm_cat的业务主键cate_id通过画板拉线的方式建立关联关系。3

  2. 创建3张公共层明细表。

    • (可选)明细表1:dwd_ec_mbr_register_event_di 会员注册事件明细事实表。4

      1. 配置基本信息。

        数仓分层

        数据域

        业务分类

        存储策略

        表名

        表中文名

        生命周期

        描述

        表类型

        公共层:明细数据层

        电商业务

        会员域/注册

        每日增量(di)

        dwd_ec_mbr_register_event_di

        会员注册事件明细事实表

        365天

        -

        事实事务表

      2. 配置字段管理和分区字段管理。

        说明

        由于明细表字段配置这里没有涉及到新的功能点,所以全部使用代码模式配置作为示例。

        • 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;
      3. 配置完成后,保存并发布当前模型,生成物理表。

    • 明细表2:dwd_ec_trd_create_ord_di 交易下单明细事实表。

      1. 配置基本信息。

        数仓分层

        数据域

        业务分类

        存储策略

        表名

        表中文名

        生命周期

        描述

        表类型

        公共层:明细数据层

        电商业务

        交易域/下单

        每日增量(di)

        dwd_ec_trd_create_ord_di

        交易下单明细事实表

        365天

        交易下单明细事实表

        事实事务表

      2. 配置字段管理和分区字段管理。

        • 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. 配置完成后,保存并发布当前模型,生成物理表。

    • (可选)明细表3:dwd_ec_itm_publish_event_detail_di 商品发布事件详情事实表。

      1. 配置基本信息。:

        数仓分层

        数据域

        业务分类

        存储策略

        表名

        表中文名

        生命周期

        描述

        表类型

        公共层:明细数据层

        电商业务

        商品域/商品发布

        每日增量(di)

        dwd_ec_itm_publish_event_detail_di

        商品发布事件详情事实表

        365天

        商品发布事件详情事实表

        事实事务表

      2. 配置字段管理和分区字段管理。

        • 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;
      3. 配置完成后,保存并发布当前模型,生成物理表。

步骤五:维度建模(公共层汇总表模型和应用层应用表模型)

  1. 创建6张公共层汇总表。

    • 汇总表1:dws_ec_mbr_cnt_std 历史截至当日存量会员数cube统计表。13

      1. 配置基本信息。

        数仓分层

        业务分类

        数据域

        时间周期

        修饰词

        表名

        表中文名

        生命周期

        描述

        表类型

        公共层:汇总数据层

        电商业务

        会员域(mbr)

        std(历史截止当日)

        -

        dws_ec_mbr_cnt_std

        历史截至当日存量会员数cube统计表

        365天

        历史截至当日存量会员数cube统计表

        轻度汇总表

      2. 配置字段管理和分区字段管理。

        当前表结合使用了快捷模式和代码模式两种方式来进行配置操作。

        • 快捷模式配置:

          1. (可选)从指标导入。

            说明

            这里仅作为从指标导入的核心功能演示,实际当前表不需要导入,后续的汇总表中会使用到从指标导入的功能。

            14
          2. 使用代码模式,将下文中的示例代码语句复制进去,点击确定替换表内容。

            • 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');
          3. 可视化编辑关联粒度/指标,并按下图关联对应的统计粒度原子指标派生指标,单击确定·5

          4. 得到如下图表结构,单击保存,并发布当前模型,生成物理表。16

    • (可选)汇总表2:dws_ec_mbr_register_cm 近1自然月会员注册信息统计。

      1. 配置基本信息。

        数仓分层

        业务分类

        数据域

        时间周期

        修饰词

        表名

        表中文名

        生命周期

        描述

        表类型

        公共层:汇总数据层

        电商业务

        会员域(mbr)

        cm(自然月)

        -

        dws_ec_mbr_register_cm

        近1自然月会员注册信息统计

        720天

        近1自然月会员注册信息统计

        普通汇总表

      2. 配置字段管理和分区字段管理。

        • 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. 可视化编辑或查看关联粒度/指标信息,完成后单击保存并发布当前模型,生成物理表。20

    • 汇总表3:dws_ec_trd_cate_commodity_gmv_kpi_fy 财年KPI类目品类_GMV统计。

      1. 配置基本信息。

        数仓分层

        业务分类

        数据域

        时间周期

        修饰词

        表名

        表中文名

        生命周期

        描述

        表类型

        公共层:汇总数据层

        电商业务

        交易域(trd)

        fy(财年)

        -

        dws_ec_trd_cate_commodity_gmv_kpi_fy

        财年KPI类目品类_GMV统计

        365天

        财年KPI_类目品类GMV统计

        普通汇总表

      2. 配置字段管理和分区字段管理。

        • 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;
      3. 可视化查看或编辑关联粒度/指标,完成后保存并发布当前模型,生成物理表。21

    • (可选)汇总表4:dws_ec_trd_pay_cate_commodity_1d 近1天类目品类_交易支付指标汇总。

      1. 配置基本信息。

        数仓分层

        业务分类

        数据域

        时间周期

        修饰词

        表名

        表中文名

        生命周期

        描述

        表类型

        汇总层:公共数据层

        电商业务

        交易域(trd)

        1d(近1天)

        -

        dws_ec_trd_pay_cate_commodity_1d

        近1天类目品类_交易支付指标汇总

        720天

        近1天_类目品类交易支付指标汇总

        普通汇总表

      2. 配置字段管理和分区字段管理。

        • 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;

      3. 可视化查看或编辑关联粒度/指标,完成后保存并发布模型,生成物理表。22

    • (可选)汇总表5:dws_ec_lgt_ord_overview_1d 近1天_物流订单概览指标汇总

      1. 配置基本信息。

        数仓分层

        业务分类

        数据域

        时间周期

        修饰词

        表名

        表中文名

        生命周期

        描述

        表类型

        公共层:汇总数据层

        电商业务

        物流域(lgt)

        1d(近1天)

        -

        dws_ec_lgt_ord_overview_1d

        近1天_物流订单概览指标汇总

        365天

        近1天_物流订单概览指标汇总

        普通汇总表

      2. 配置字段管理和分区字段管理。:

        • 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;
      3. 可视化查看或编辑关联粒度/指标,完成后保存并发布模型,生成物理表。23

    • (可选)汇总表6:dws_ec_risk_remark_tag_1d 近1天_评价算法打标分类指标汇总表。

      1. 配置基本信息。

        数仓分层

        业务分类

        数据域

        时间周期

        修饰词

        表名

        表中文名

        生命周期

        描述

        表类型

        公共层:汇总数据层

        电商业务

        信用&风控域(risk)

        1d(近1天)

        -

        dws_ec_risk_remark_tag_1d

        近1天_评价算法打标分类指标汇总表

        365天

        近1天_评价算法打标分类指标汇总表

        普通汇总表

      2. 配置字段管理和分区字段管理。

        • 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;
      3. 可视化查看或编辑关联粒度/指标,完成后保存并发布模型,生成物理表。24

  2. 创建应用表模型。

    创建一张应用表模型:ads_ec_ec360_gmv_kpi_overview 电商360KPI概览25

    1. 配置基本信息。

      数仓分层

      集市/主题

      时间周期

      修饰词

      表名

      表中文名

      生命周期

      描述

      表类型

      应用层:应用数据层

      电商360

      fy(财年)、std(历史截止当日)

      -

      ads_ec_ec360_gmv_kpi_overview

      电商360KPI概览

      -

      电商360KPI概览

      普通应用表

    2. 配置字段管理和分区字段管理。

      • 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'
        )
        ;
    3. 可视化查看或编辑关联粒度/指标,完成后保存并发布模型,生成物理表。26

(可选)步骤六:扩展功能演示——逆向建模

说明

以下功能介绍仅为逆向建模的核心功能展示,不操作不会影响后续实验。

上文中主要是讲解了正向建模,但是在实际生产中很多企业已经有了大量的MaxCompute物理表,同时又希望在DataWorks智能数据建模产品统一管理所有模型,那么逆向建模功能就可以帮助企业快速将已创建的数据表生成规范的数仓模型。该功能无需您再次执行建模操作,即可快速将已有物理表反向建模至DataWorks的维度建模中,节省了大量的时间成本。更多关于逆向建模的操作,请参见逆向建模:物理表反向建模27

步骤七:模型发布

确认模型无误后,将其中的维度表(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)发布至对应空间的开发环境和生产环境,后续实验中应用到这几张表。发布成功后可以前往数据地图查看表结构。28

设置项

说明

工作空间

这里会列出建模空间中配置的所有数据研发工作空间。本实验选择当前工作空间。

引擎类型

支持MaxCompute、E-MapReduce、Hologres等多种引擎。本实验选择MaxCompute

引擎实例

根据需求将表物化至引擎类型参数中相应类型的数据存储引擎。

生效环境

标准模式下,可选择发布至开发或生产环境。

发布模式

  • 增量发布:选择该模式,发布时仅会将目标模型此次变更的内容发布至对应引擎。

  • 删除重建:选择该模式,发布时会将对应引擎中之前已发布的该模型删除,删除后再重新创建此次发布的模型。