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

维度建模储备知识介绍

基本概念

说明 智能建模强依赖于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
    表名检查器示例:
    • 弱规则:新建对象时,根据规则定义内容,推荐填写规则名称。
    • 强规则:新建对象时,根据规则定义内容,推荐填写并强制校验规则名称。
    分层规则定义规则示例
    维度层DIMdim_业务大类英文缩写_数据域英文缩写_自定义e.g:dim_ec_mbr_user_info 会员基础信息维度表_维度表_电商业务_会员域_xxxx。
    明细数据层DWDdwd_业务大类英文缩写_数据域英文缩写_业务过程英文缩写_自定义_存储策略缩写
    • e.g:dwd_ec_trd_create_ord_di 交易下单明细事实表。
    • 明细表_电商业务_交易域_下单业务过程_xxxx_每日增量。
    汇总数据层DWSdws_业务大类英文缩写_数据域英文缩写_自定义_统计周期
    • e.g dws_ec_mbr_cnt_std 历史截至当日_存量会员数_cube统计表。
    • 汇总表_电商业务_会员域_xxx_历史截止当日。
    应用数据层ADSads_业务大类英文缩写_主题域英文缩写_自定义。真实场景中建议使用ads_业务大类英文缩写_数据集市英文缩写_主题域英文缩写_自定义
    • e.g: ads_ec_ec360_gmv_kpi_overview 电商360KPI概览。
    • 应用表_电商业务<业务分类>_电商360<主题域>_xxx
    数据引入层ODS 通常ODS层不需要做数据建模,所以这里忽略。-
  3. 公共层:
    1. 新建六个如下表的数据域。您也可以使用通用工具导入数据域
      英文缩写英文名中文名模型评审人负责人备注
      mbrmbr会员域xxxxxx网站服务的注册会员及潜在会员(Leads)的各种基础信息。
      trdtrd交易域xxxxxx交易从加入购物车到下单、支付、发货、退款及成果交易的各个过程,同时还包括拍卖、机票、彩票等各种类型的交易。
      itmitm商品域xxxxxx网站可供用户交易的商品数据,包括类目、品牌、SPU、SKU等相关商品基础信息。
      lgtlgt物流域xxxxxx-
      loglog日志域xxxxxx各种类型的网站日志数据。
      riskrisk信用&风控域xxxxxx企业或者个人信用及风险相关的数据,包括审核、风控监控事件、评价、投诉、举报、申诉、处罚等相关数据。
      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. 参照下表,新建五个标准。您也可以单击导入图标,导入字段标准
      标准编码英文缩写英文名称中文名称数据类型
      birthdaybirthdaybirthday生日DATETIME
      user_nameuser_nameuser_name用户名称STRING
      nicknicknick昵称STRING
      gendergendergender性别STRING
      user_iduser_iduser_id用户IDBIGINT
  2. 新建标准代码。
    1. 新建目录。目录1名称:基础代码;目录2名称:风控。54
    2. 新建两个代码标准,执行并发布到MaxCompute引擎retail_e_commerce_2实例的开发和生产环境。55
      • 代码标准1。
        代码编号:is_del;代码名称:是否删除;英文名称:is_del。
        编码取值编码名称英文名称编码含义
        1truetrue
        0falsefalse
      • 代码标准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_cntnew member count注册会员数注册会员数--计数(COUNT)0人数
会员域/会员域_默认mbr_cntmember count存量会员数注册且激活的会员总量--计数(COUNT)0人数
交易域/支付pay_ord_cntpay order count支付子订单数支付子订单数--计数(COUNT)0人数
交易域/支付pay_ord_amtGMV订单支付成功金额GMV,订单支付成功金额。订单类型包含:等待卖家发货、等待买家确认收货、交易成功;订单支付状态包含付款成功。--累加(SUM)4元(人民币)
交易域/支付pay_itm_cntpay item count支付商品数支付商品数--计数(COUNT)0
交易域/支付pay_ord_pbtpay order pbt客单价@订单支付成功金额 / @支付子订单数--求平均(AVG)4元(人民币)
交易域/支付kpi_gmv_ratekpi_gmv_rate成交金额完成度成交金额目标值为3000万;成交金额目标完成度=成交金额实际完成值/成交金额目标值。--4小数
物流域/揽件lgt_lanshou_ord_cntlgt_lanshou_ord_cnt物流揽收订单数物流揽收订单数--计数(COUNT)0
物流域/接单lgt_crt_ord_cntlgt_crt_ord_cnt物流接单订单数物流接单订单数--计数(COUNT)0
物流域/签收lgt_sign_ord_cntlgt_sign_ord_cnt物流签收订单数物流签收订单数--计数(COUNT)0
物流域/物流域_默认lgt_ord_cntlgt_ord_cnt物流订单总数物流订单总数--累加(SUM)0
信用&风控域/评价remark_ord_cntremark order count评价订单数评价订单数--计数(COUNT)0
信用&风控域/评价remark_ord_rateremark order rate评价订单占比@评价订单数/ @支付子订单数--4小数

修饰词

参照下表,新建12个修饰词保存并提交。您也可以直接导入修饰词9
修饰词类型英文缩写英文名称中文名称业务口径描述数仓分层
普通业务修饰词00s00s00后00后--
普通业务修饰词90s90s90后90后--
普通业务修饰词80s80s80后80后--
普通业务修饰词70s70s70后70后--
普通业务修饰词menmen男性会员男性会员--
普通业务修饰词womenwomen女性会员女性会员--
普通业务修饰词act_telact_tel手机激活手机激活--
普通业务修饰词act_emailact_email邮箱激活邮箱激活--
普通业务修饰词expexp异常会员异常会员--
普通业务修饰词highhigh高级会员高级会员--
普通业务修饰词midmid中级会员中级会员--
普通业务修饰词lowlow初级会员初级会员--

时间周期

使用默认配置。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语言,使用FML语句配置并管理数据表)、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. 配置基本信息。
      数仓分层集市/主题时间周期修饰词表名表中文名生命周期描述表类型
      应用层:应用数据层电商360fy(财年)、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
引擎实例根据需求将表物化至引擎类型参数中相应类型的数据存储引擎。
生效环境标准模式下,可选择发布至开发或生产环境。
发布模式
  • 增量发布:选择该模式,发布时仅会将目标模型此次变更的内容发布至对应引擎。
  • 删除重建:选择该模式,发布时会将对应引擎中之前已发布的该模型删除,删除后再重新创建此次发布的模型。