零售电商数据建模

DataWorks智能数据建模产品内置了零售电子商务数据仓库行业模型模板,您可以一键导入模板,本文结合零售电子商务业务背景以及模型构建核心步骤来帮助您了解维度建模理论和智能数据建模产品。

案例使用流程

ecec894d12cbf5d8d61071f6c9d3f63a.jpg

零售电子商务公司背景简介

零售电子商务公司是全品类综合性电商平台,随着业务的发展,每天新增的用户访问行为日志、订单交易等数据越来越庞大,对这部分数据进行分析挖掘可以更好地了解用户行为、商品销售情况等,从而更好地进行运营和决策。

通过对数据进行建模,平台可以发现数据中的规律和趋势,更好地进行数据分析和挖掘,因此零售电商公司需要搭建一套完整数据模型。

我们会在DataWorks智能建模产品上完成整套模型的开发和管理,模型可以直接对接DataWorks其他模块,基于数仓云产品使用,也可以导出对应的DDL或ETL代码实现更灵活的应用。本案例搭建完成后我们会为您介绍如何在DataWorks其他模块中消费和使用这一套模型。

我们可以在DataWorks数据资产模块中查看数据模型、数据指标资产的全景。

说明

数据资产目前处于邀测阶段,保有DataWorks标准版、专业版、企业版的用户如需使用数据资产,可提交工单联系技术支持人员开通白名单免费使用。邀测结束后,数据资产需单独购买才可使用。升级或购买DataWorks相应版本,请参见DataWorks各版本详解

image.png

本案例中涉及到的分层划域、事实表模型、维度表模型、维度模型概览如下图所示:

5b48c4389ee6a6f5f4e65a65b213d05a.jpg

维度建模储备知识介绍

说明

智能建模强依赖于Kimball维度建模理论,请您在实际操作前务必阅读一下数仓分层和维度建模中的基本概念。

以下结合案例简单介绍了维度建模模型理论,更多关于维度建模方法论、维度表事实表模型设计内容,请参见《Star Schema完全参考手册》[1]中的第2章~第6章节和第11章节、《数据仓库工具箱(第3版)[2]

实施工作流可以参考下图:

image.png

说明

上面示意图引用自阿里巴巴数据技术及产品部《大数据之路:阿里巴巴大数据实践》,部分修改。

数仓规划相关概念

  • 业务分类:业务分类是某一大类的业务的指标和维度的集合。在后续模型设计过程中,可将模型归属到对应的业务分类,提升后续模型使用的便捷性。例如零售电子商务就是一个一级业务分类,如需进一步细分,可分为门店零售,电子商务等。

  • 数据域:数据域是指一个或多个业务过程或者维度的集合。例如在电商领域,可以划分消费者域、商品域、交易域等。

  • 业务过程:业务过程指企业的业务活动事件,如下单,支付。

  • 数据集市:是基于业务分类,面向特定应用场景或者产品的数据组织。通常位于数据应用层,依赖于公共层的整合数据。例如电商集市(数据应用集市)、供应链数据集市(业务集市)等。

  • 主题域:用于将数据集市按照分析视角进行划分,通常是联系较为紧密的数据主题的集合。例如在行业集市下,可以创建商品、渠道等主题域。

  • 数仓分层体系:数据仓库的分层体系如下图所示:

    image.png

维度概念

维度:维度是观察业务状况的视角,提供围绕某一业务过程事件所涉及的“谁、什么、何处、何时、为什么、如何”等背景。例如,会员维度、日期维度、城市维度等。

指标概念

指标:是衡量业务特征的统计数值,用于体现企业某一业务活动的业务状况。例如,会员数、销售额、支付金额。

指标体系由原子指标、修饰词、时间周期和派生指标构成。

  • 原子指标:是基于某一业务过程下的度量,如“支付订单”业务过程中的“支付金额”。度量:是指可以被分析的数值数据,例如,销售额、支付金额等。

  • 修饰词:是对指标统计业务范围的限定,如限定“支付金额”的统计范围为“母婴类产品”。

  • 时间周期:用于明确指标统计的时间范围或者时间点,如指定统计“支付金额”的时间周期为“最近7天”。

  • 派生指标:由原子指标、修饰词、时间周期组合定义。如,统计“最近7天”“母婴类产品”的“支付金额”。

环境准备

创建工作空间并创建MaxCompute数据源

  1. 登录DataWorks控制台,单击左侧导航栏的工作空间,选择工作空间地域为华东2(上海)后,在工作空间列表页面单击创建工作空间。进入创建工作空间详情页面,配置工作空间信息后单击创建工作空间。其中核心配置参数如表所示,其他参数可自定义配置或保持默认值即可。

    参数

    描述

    工作空间名称

    可自定义工作空间名称。由于工作空间名称需要全局唯一,如果后续操作时提示名称已存在,可更换名称。

    本案例设置工作空间名称为retail_e_commerce_<自定义>

    生产、开发环境隔离

    选择:默认不打开生产、开发环境隔离开关,本案例选择简单模式即可。

    【扩展知识】

    DataWorks的工作空间分为简单模式标准模式

    • 简单模式:指一个DataWorks工作空间对应一个引擎项目,无法设置开发和生产环境,只能进行简单的数据开发,无法对数据开发流程以及表权限进行严格控制。

    • 标准模式:指一个DataWorks工作空间对应两个引擎项目,可以设置开发和生产两种环境,提升代码开发规范,并能够对表权限进行严格控制,禁止随意操作生产环境的表,保证生产表的数据安全。

    详情请参见必读:简单模式和标准模式的区别

  2. 创建MaxCompute数据源。MaxCompute为计费产品,您可以创建数据源时选择已有的MaxCompute项目,或新创建一个MaxCompute项目。创建数据源的操作请参见创建MaxCompute数据源

导入模型

  1. 创建完成后,找到已创建的工作空间,单击操作列的快速进入 > 智能数据建模

  2. 默认进入数仓分层页面,在顶部菜单栏单击行业模型模板,进入行业模型模板页面。

  3. 单击进入零售电子商务模板。

  4. 在页面中单击载入完整版零售电子商务模型模板,进入载入模板配置页面,选择载入方式后单击确认,等待载入完成,您可以前往相应模块进行体验。

    说明

    在导入模型前,确保当前账号已有项目所有者空间管理员模型设计师角色(个人版仅限主账号登录)。授权详情请参见空间级模块权限管控

模型设计

数仓规划

业务分类规划

当企业业务比较复杂,不同业务之间需要共享数据域,但是又希望能在模型设计和应用过程中快速定位本业务的数据时,您可结合真实业务情况,规划不同的业务分类。在后续事实表、维度表建模后,可以关联到业务分类中。创建业务分类的操作可参见业务分类

查看零售电子商务行业模板导入的“零售”业务分类,如果有更细粒度的分类需求也可以继续创建子分类。image.png

数仓分层规划

为了提升数据的加工效率,我们需要对数据模型进行分层。数仓分层是结合对业务场景、实际数据、使用系统的综合分析,对数据模型进行的整体架构设计及层级划分。DataWorks为您默认创建业界通用的五层数仓分层如下表所示,也可以新建其他层级。后续所有表模型都至少关联且仅关联一个层级。

层级

描述

数据引入层 ODS(Operational Data Store)

ODS层用于存放未经过处理的原始数据至数据仓库系统,其数据表的结构与原始数据所在的数据系统中的表结构一致,是数据仓库的数据准备区。

公共维度层 DIM(Dimension)

DIM层使用维度构建数据模型。可基于实际业务,存放逻辑模型的维度表;或存放概念模型的维度定义,通过定义维度,确定维度主键,添加维度属性,关联不同维度等操作,建立整个企业的一致性数据分析维表。 维度表推荐表名规范:dim_{业务分类}_{数据域}_{自定义内容}_{存储策略}

明细数据层DWD(Data Warehouse Detail)

DWD层通过企业的业务活动事件构建数据模型。基于具体业务事件的特点,构建最细粒度的明细数据表。您可以结合企业的数据使用特点,将明细数据表的某些重要维度属性字段适当冗余,即宽表化处理。同时,也可以减少明细数据表及维度表的关联,提高明细表的易用性。 推荐表名规范:dwd_{业务分类}_{数据域}_{业务过程}_{自定义内容}_{存储策略}

汇总数据层DWS(Data Warehouse Summary)

DWS层通过分析的主题对象构建数据模型。基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表。推荐表名规范:dws_{业务分类}_{数据域}_{自定义内容}_{时间周期}

应用数据层ADS(Application Data Service)

以分析的主题对象作为建模驱动,基于公共粒度的汇总指标表,构建直接面向业务分析需求的业务分析指标表。推荐表名规范:ads_{业务分类}_{数据集市}_{主题域}_{自定义内容}_{时间周期}

image.png

公共层规划

公共层用于加工、整合贴源层输入的公共数据,建立统一的指标维度,构建可复用面向分析和统计的明细事实数据和汇总数据。该层级可挂载明细表、维度表、汇总表。

在公共层规划中我们需要创建好数据域以及业务过程,以便后面创建的明细表模型、维度表模型、汇总表模型可以进行挂载。在实际建模时我们需要先选择好业务过程,再根据业务过程进行划分数据域。

  • 数据域构建

    划分数据域可以更好地管理数据,提高数据的利用率,降低数据冗余度、帮助企业更好地了解自己的业务。数据域面向业务分析,可以概括为一个个不可拆分的行为事件。在划分数据域时,既能涵盖当前所有业务需求,又能在新业务拓展时无影响地被包含进已有的数据域中,并扩展新的数据域。

    数据域示例:

    数据域

    说明

    消费者域

    包含访客注册、会员登录等相关行为的数据。

    商品域

    包含商家对商品进行入库、上架、下架等相关行为的数据。

    交易域

    包含所有消费者和商家之间的交易行为如加购、下单、支付等相关的数据。

    我们将各个域录入到系统中,以便后续新建业务过程、新建公共层表模型的时候做关联,每个业务过程、公共层表模型等都必须归属且仅归属于一个数据域。

    零售电子商务行业模型模板已经导入数据域,如下图所示。

    image.png

  • 业务过程构建

    在明确了业务需求以后,需要对业务的整个生命周期进行分析,明确关键的业务步骤,选择和需求有关的业务过程。

    例如,在一次交易过程中,涉及到买家加购、买家下单、订单创建、等待买家付款、买家付款、等待卖家发货、卖家发货、等待买家确认收货、买家确认收货、交易成功等步骤,而对分析有意义的我们仅需要关注买家加购、订单创建、买家付款、交易成功这些核心步骤,再从核心步骤中抽象出业务过程“加购、订单创建、订单支付”。image.png

    说明

    上面示意图引用自阿里巴巴数据技术及产品部《大数据之路:阿里巴巴大数据实践》,部分修改。

    我们将抽象好的各个业务过程录入到系统中,以便后续在创建公共层汇总表模型、公共层指标的时候做关联,公共层汇总表模型、公共层指标等都必须归属且仅归属于一个业务过程。零售电子商务行业模型模板已经导入业务过程,如下图所示,以“订单支付”为例,英文缩写为“order_pay,归属于交易域,包含了消费者和商家之间的订单支付相关行为数据。

    image.png

    我们再查看数据域“交易域”,可以看到已关联的业务过程“加购、订单创建、订单支付、退款”等。

    image.png

应用层规划

应用层是基于实际应用需求,获取公共层加工整合后的数据,面向具体应用场景或指定产品进行的个性化数据统计。该层级可以挂载应用表、维度表。在应用层规划中我们需要创建好数据集市以及主题域,以便后面创建的应用表模型、维度表模型可以进行挂载。

  • 数据集市构建

    数据集市是基于业务分类,面向特定应用场景或者产品的数据组织。通常位于数据应用层,依赖于公共层的整合数据。

    零售电子商务行业模型模板已经导入数据集市,如下图,以“行业集市”为例,重点服务行业运营人员的分析需求,所属业务分类为零售,后续基于不同视角对行业集市中的数据划分成“商品、品类、品牌”等主题域。后续在创建应用层派生指标、创建应用层模型时需要关联到目标集市和主题域中。

    image.png

  • 主题域构建

    创建完数据集市以后,我们需要将目标“行业集市”基于不同的视角划分成“商品、品类、品牌、消费者、商家、渠道、地区”等主题域,最终面向业务应用统计分析数据。

    零售电子商务行业模型模板已经导入主题域,如下图所示,以“消费者”主题域为例,消费者主题域重点服务行业运营人员关于消费者画像的分析需求,归属于行业集市。后续在创建应用层派生指标、创建应用层模型时需要关联到对应主题域中。

    image.png

构建维度

维度是您观察业务状况的视角,您可在维度建模中规划并创建维度,后续创建维度表时进行关联,关联后即可通过不同维度分析呈现不同视角的业务数据状况。

如下图所示,我们可以通过“日期维度、订单维度、商品维度、订单类型维度、订单状态维度”来描述“订单创建”业务过程的环境。

875c924a6de75aa60750593a3afbe984.jpg

维度示例:

数据域 (功能模块/业务线)

维度

消费者域

账户、会员等

商品域

品牌、类目、品类、商品等

交易域

订单、订单类型、支付币种、支付方式等

零售电子商务行业模型模板已经导入了各个数据域下的维度,如下图所示,我们尝试新建一个“账户_测试”维度,归属于“公共层-维度层”,数据域为“消费者域”,英文缩写“account_test”,中文名称“账户_测试”。

image.png

构建维度表模型

维度表一般由主键列和表示维度的列也叫维度属性组成,表示维度的列提供事实存在的环境。维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。

例如,商品维度表,由主键“商品id”,维度属性“商品名称、商品单价”,以及与品牌维度表建立关联关系的外键“品牌id”组成。

c8610e661767cd29ad3085d5bb574a9c.jpg

维度设计重要且复杂,当前案例没有详细展开,更多相关方法论可以参考《Star Schema完全参考手册》[1]第5章、第6章,《数据仓库工具箱(第3版)》[2]第2章第3节、第4节。

零售电子商务行业模型模板已经导入了各个数据域下的维度表模型,我们尝试新建一个“商品属性维度表_测试”模型。

  1. 基本信息

    基本信息

    *数仓分层

    公共层-维度层

    业务分类

    零售

    *数据域

    商品域

    存储策略

    每日全量(df)

    维度

    商品(sku)

    表名规则

    -(在“数仓规划-数仓分层”单击具体分层,可以为每个层级配置强/弱表名检查器,新建表模型时可以选择对应的检查器,那么表名就会根据选择的数仓分层、业务分类、数据域等自动填充英文缩写)

    *表名

    dim_ec_itm_attribute_df_test

    维度表推荐表名规范:dim_{业务分类}_{数据域}_{自定义内容}_{存储策略}

    *表中文名

    商品属性维度表_测试

    生命周期

    7

    描述

    零售&泛交易类业务商品属性维度表。

    image.png

  2. 字段和分区字段管理

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

    这里使用“代码模式-FML语言(适用于维度建模领域的类SQL语言,代码模式建模)”快速覆盖导入(需先保存一次基本信息,再编辑代码模式导入)

    商品属性维度表FML脚本:

    -- 模型开始发布物理表(发布前审批、发布中、发布成功后)后,表名均无法进行修改。
    CREATE DIM TABLE dim_ec_itm_attribute_df_test ALIAS '商品属性维度表' 
    (
       id          ALIAS 'id' STRING COMMENT 'id',
       gmt_create  ALIAS '创建时间' TIMESTAMP COMMENT '创建时间',
       gmt_modfied ALIAS '修改时间' TIMESTAMP COMMENT '修改时间',
       name        ALIAS '属性名称' STRING COMMENT '属性名称'
    )
    COMMENT '零售&泛交易类业务商品属性维度表。'
    PARTITIONED BY
    (
       ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd'
    )
    WITH('life_cycle'='7');

构建明细表模型

明细表用于存储大量能够体现业务活动状况的实际数据或详细数值,是数据聚合后依据某个维度生成的结果表。

明细表是一张事实表,事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计,通过描述业务过程的度量来表达业务过程。事实表存储事件的数值化度量,围绕事实表的是多个维度表。

如下图所示,我们可以通过“日期维度、订单维度、商品维度、订单类型维度、订单状态维度”来描述“订单创建”业务过程的环境,并通过“商品件数”来度量“订单创建”业务过程。

c221ad6248f95695e152ba5219759eb6.jpg

事实表的设计方法

例如,我们需要设计一个订单创建明细表事实表模型。

  • 方法一(常用):

    1. 复制贴源层(ODS)的表结构。

      通常已经涵盖了维度和度量信息。

    2. 冗余维度属性。

      冗余常用的维度属性字段,减少下游查询关联表的数量,降低数据获取复杂性。

  • 方法二(根据建模理论从0到1确定字段):

    1. 选择业务过程。

      属于“交易域”中的“订单创建”业务过程。

    2. 声明粒度。

      粒度意味着定义事实表中每一行所表示的业务含义,应该尽量选择最细级别的原子粒度,以确保事实表的应用具有最大的灵活性。比如在电商订单中有父子订单的概念,即一个子订单对应一种商品,这些子订单一同结算就会生成一个父订单,那么为了确保事实表应用灵活性,在这里我们选择每行的粒度为子订单级别。

    3. 确定维度。

      相关维度有“商品、收货地址、订单、订单类型”等。

    4. 确定事实。

      事实可以通过回答“业务过程的度量是什么”来确定,基本上都是以数量值来表示。例如,在“订单创建”业务过程中,“商品件数”具体的值就是事实。

    5. 冗余字段。

      传统维度建模星型模型中,维度存储在维度表中,通过事实表的外键获取维度,目的是为了减少存储消耗。而在维度模型设计中,为了提高下游的查询效率,降低数据获取的复杂性,减少关联表的数量,通常事实表中会冗余常用的维度。例如,“订单创建明细表”冗余了“收货地址维度表”中的“收货地址”维度,包含“收货人地址、收货人手机号”等维度属性。

事实表设计重要且复杂,当前案例没有详细展开,更多相关方法论可以参考《Star Schema完全参考手册》[1]第4章、第11章,《数据仓库工具箱(第3版)》[2]第2章第2节。

零售电子商务行业模型模板已经导入了各个数据域下的明细表模型,我们尝试新建一个“订单创建明细表_测试”模型。

  1. 基本信息:

    基本信息

    *数仓分层

    公共层-明细数据层

    业务分类

    零售

    *业务过程

    交易域/订单创建

    存储策略

    每日增量(di)

    表名规则

    -

    *表名

    dwd_ec_trd_order_create_di_test

    (推荐表名规范:dwd_{业务分类}_{数据域}_{业务过程}_{自定义内容}_{存储策略})

    *表中文名

    订单创建明细表_测试

    生命周期

    7天

    image.png

  2. 字段和分区字段管理

    这里使用“代码模式-FML语言”快速覆盖导入。

    订单创建明细表FML脚本:

    -- 模型开始发布物理表(发布前审批、发布中、发布成功后)后,表名均无法进行修改。
    CREATE FACT TABLE dwd_ec_trd_order_create_di_test ALIAS '订单创建明细表' 
    (
       gmt_create      ALIAS '订单创建时间' DATETIME COMMENT '订单创建时间',
       gmt_modified    ALIAS '订单修改时间' DATETIME COMMENT '订单修改时间',
       gmt_pay         ALIAS '订单支付时间' STRING COMMENT '订单支付时间',
       master_order_id ALIAS '父订单号' STRING COMMENT '父订单号',
       sub_order_id    ALIAS '子订单号' STRING COMMENT '子订单号',
       item_id         ALIAS '商品id' STRING COMMENT '商品id',
       item_name       ALIAS '商品名称' STRING COMMENT '商品名称',
       num             ALIAS '商品件数' STRING COMMENT '商品件数',
       order_type      ALIAS '订单类型' STRING COMMENT '订单类型',
       status          ALIAS '订单状态' STRING COMMENT '订单状态',
       adress          ALIAS '收货地址' STRING COMMENT '收货地址',
       phone           ALIAS '收货人手机号' STRING COMMENT '收货人手机号',
       name            ALIAS '收货人姓名' STRING COMMENT '收货人姓名'
    )
    COMMENT '订单创建明细表'
    PARTITIONED BY
    (
       ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd'
    )
    WITH('life_cycle'='7');

构建数据指标

指标是衡量业务特征的统计数值,用于体现企业某一业务活动的业务状况。在指标体系建设中我们需要明确原子指标派生指标。在构建汇总表模型时可以从指标导入作为字段。

通常情况下,我们会在需求分析阶段,从分析师、运营同学的需求中了解到具体的业务指标,再对业务指标进行提取,确定派生指标,最后从派生指标中抽象出时间周期、修饰词原子指标

例如, 分析师期望查看“昨天订单创建的总额、上周订单创建的总额、上一财年订单创建的总额”(业务指标),模型设计师提取出派生指标“近1天_订单创建_订单总额、近7天_订单创建_订单总额、财年_订单创建_订单总额”,最后抽象出时间周期“近1天、近7天、财年”,修饰词“订单创建”,原子指标“订单总额”。

指标示例:

数据域/业务过程

原子指标

派生指标

消费者域-注册

会员数

-

交易域-订单创建

订单金额、订单数、订单客价

近1天_订单创建&子_订单金额、近3天_订单创建&子_订单金额等

商品域-商品入库

商品数量

-

零售电子商务行业模型模板已经导入部分相关原子指标、修饰词、时间周期(系统自带)、派生指标。我们尝试新建其中一个原子指标“订单金额_测试”,归属于业务过程“交易域/订单创建”,描述为“对订单金额进行求和汇总”,计算函数为“累加(SUM)”,小数保留两位,数据单位“元(人民币)”。

image.png

查看其中一个修饰词“订单创建”,英文名称“order_create”,业务口径为“订单创建”。归属于汇总数据层,零售业务分类,交易数据域。

image.png

查看系统自带的时间周期,有天粒度的“近1天、近3天”等,有年粒度的“自然年、财年”等,以“自然年”为例,英文缩写为“cy”。

image.png

批量创建4个派生指标:近1天_订单支付_订单金额、近7天_订单支付_订单金额、近1天_订单创建_订单金额、近7天_订单创建_订单金额

  • 原子指标:订单金额_测试

  • 修饰词:订单支付、订单创建(这里需一个一个勾选确认,如果一起勾选会拼接在一起,因为派生指标允许多个修饰词)

  • 时间周期:近1天、近7天

    image.png为了后续构建汇总表模型、应用表模型能够关联和引用指标,这里我们需要将公共层-交易域下的所有派生指标(共109个)在列表页批量提交。

    image.png

构建公共汇总模型

汇总表用于组织一个数据域相同时间周期、相同维度的多个派生指标的统计数据,为后续的业务查询,OLAP分析,数据分发等提供基础。您可以使用汇总表呈现相同时间、相同维度下,多个派生指标所统计的业务情况。

零售电子商务行业模型模板已经导入了各个数据域下的汇总表模型,我们尝试新建一个“订单分析表_测试”模型,如下表所示,订单分析汇总表呈现了在“1d(近1天)、3d(近3天)、1w(近7天)...”等时间周期,“订单”维度下多个派生指标所统计的业务情况。

  1. 基本信息:

    基本信息

    *数仓分层

    公共层-汇总数据层

    业务分类

    零售

    *数据域

    交易域

    时间周期

    1d(近1天)、3d(近3天)、1w(近7天)、2w(近14天)、1m(近30天)、cm(自然月)、cy(自然年)、std(历史截止当日)

    修饰词

    order_create(订单创建)、order_pay(订单支付)

    表名规则

    -

    *表名

    dws_ec_trd_order_nd_test

    推荐表名规范:dws_{业务分类}_{数据域}_{自定义内容}_{时间周期}

    *表中文名

    订单分析表_测试

    生命周期

    7天

    image.png

  2. 字段和分区字段管理

    这里使用快捷模式>从指标导入快速导入,按基本信息中的时间周期和修饰词进行过滤后批量导入字段。

    image.png手动创建一个分区字段“ds”,类型为“字符串(STRING)”,描述“业务日期, yyyymmdd”。

    image.png附:订单分析表FML脚本

    -- 模型开始发布物理表(发布前审批、发布中、发布成功后)后,表名均无法进行修改。
    CREATE DWS TABLE dws_ec_trd_order_nd_test ALIAS '订单分析表' 
    (
       order_amt_std_order_create        ALIAS '累计_订单创建_订单金额' DECIMAL COMMENT '累计_订单创建_订单金额' REFERENCES (order_amt_std_order_create),
       order_amt_fy_order_create         ALIAS '财年_订单创建_订单金额' DECIMAL COMMENT '财年_订单创建_订单金额' REFERENCES (order_amt_fy_order_create),
       order_amt_cq_order_create         ALIAS '自然季度_订单创建_订单金额' DECIMAL COMMENT '自然季度_订单创建_订单金额' REFERENCES (order_amt_cq_order_create),
       order_amt_cm_order_create         ALIAS '自然月_订单创建_订单金额' DECIMAL COMMENT '自然月_订单创建_订单金额' REFERENCES (order_amt_cm_order_create),
       order_amt_3d_order_create         ALIAS '近3天_订单创建_订单金额' DECIMAL COMMENT '近3天_订单创建_订单金额' REFERENCES (order_amt_3d_order_create),
       order_amt_1w_order_create         ALIAS '近7天_订单创建_订单金额' DECIMAL COMMENT '近7天_订单创建_订单金额' REFERENCES (order_amt_1w_order_create),
       order_amt_1m_order_create         ALIAS '近30天_订单创建_订单金额' DECIMAL COMMENT '近30天_订单创建_订单金额' REFERENCES (order_amt_1m_order_create),
       order_amt_1d_order_create         ALIAS '近1天_订单创建_订单金额' DECIMAL COMMENT '近1天_订单创建_订单金额' REFERENCES (order_amt_1d_order_create),
       order_amt_std_order_create_master ALIAS '累计_订单创建&父_订单金额' DECIMAL COMMENT '累计_订单创建&父_订单金额' REFERENCES (order_amt_std_order_create_master),
       order_amt_1w_order_create_sub     ALIAS '近7天_订单创建&子_订单金额' DECIMAL COMMENT '近7天_订单创建&子_订单金额' REFERENCES (order_amt_1w_order_create_sub),
       order_amt_3d_order_create_master  ALIAS '近3天_订单创建&父_订单金额' DECIMAL COMMENT '近3天_订单创建&父_订单金额' REFERENCES (order_amt_3d_order_create_master),
       order_amt_1m_order_create_sub     ALIAS '近30天_订单创建&子_订单金额' DECIMAL COMMENT '近30天_订单创建&子_订单金额' REFERENCES (order_amt_1m_order_create_sub),
       order_amt_cq_order_create_master  ALIAS '自然季度_订单创建&父_订单金额' DECIMAL COMMENT '自然季度_订单创建&父_订单金额' REFERENCES (order_amt_cq_order_create_master),
       order_amt_cm_order_create_master  ALIAS '自然月_订单创建&父_订单金额' DECIMAL COMMENT '自然月_订单创建&父_订单金额' REFERENCES (order_amt_cm_order_create_master),
       order_amt_2w_order_create_sub     ALIAS '近14天_订单创建&子_订单金额' DECIMAL COMMENT '近14天_订单创建&子_订单金额' REFERENCES (order_amt_2w_order_create_sub),
       order_amt_1d_order_create_master  ALIAS '近1天_订单创建&父_订单金额' DECIMAL COMMENT '近1天_订单创建&父_订单金额' REFERENCES (order_amt_1d_order_create_master),
       order_amt_cy_order_create_sub     ALIAS '自然年_订单创建&子_订单金额' DECIMAL COMMENT '自然年_订单创建&子_订单金额' REFERENCES (order_amt_cy_order_create_sub),
       order_amt_1m_order_create_master  ALIAS '近30天_订单创建&父_订单金额' DECIMAL COMMENT '近30天_订单创建&父_订单金额' REFERENCES (order_amt_1m_order_create_master),
       order_amt_cq_order_create_sub     ALIAS '自然季度_订单创建&子_订单金额' DECIMAL COMMENT '自然季度_订单创建&子_订单金额' REFERENCES (order_amt_cq_order_create_sub),
       order_amt_3d_order_create_sub     ALIAS '近3天_订单创建&子_订单金额' DECIMAL COMMENT '近3天_订单创建&子_订单金额' REFERENCES (order_amt_3d_order_create_sub),
       order_amt_2w_order_create_master  ALIAS '近14天_订单创建&父_订单金额' DECIMAL COMMENT '近14天_订单创建&父_订单金额' REFERENCES (order_amt_2w_order_create_master),
       order_amt_cm_order_create_sub     ALIAS '自然月_订单创建&子_订单金额' DECIMAL COMMENT '自然月_订单创建&子_订单金额' REFERENCES (order_amt_cm_order_create_sub),
       order_amt_1d_order_create_sub     ALIAS '近1天_订单创建&子_订单金额' DECIMAL COMMENT '近1天_订单创建&子_订单金额' REFERENCES (order_amt_1d_order_create_sub),
       order_amt_1w_order_create_master  ALIAS '近7天_订单创建&父_订单金额' DECIMAL COMMENT '近7天_订单创建&父_订单金额' REFERENCES (order_amt_1w_order_create_master),
       order_amt_cy_order_create_master  ALIAS '自然年_订单创建&父_订单金额' DECIMAL COMMENT '自然年_订单创建&父_订单金额' REFERENCES (order_amt_cy_order_create_master),
       order_amt_std_order_create_sub    ALIAS '累计_订单创建&子_订单金额' DECIMAL COMMENT '累计_订单创建&子_订单金额' REFERENCES (order_amt_std_order_create_sub),
       order_amt_std_order_pay_sub       ALIAS '累计_订单支付&子_订单金额' DECIMAL COMMENT '累计_订单支付&子_订单金额' REFERENCES (order_amt_std_order_pay_sub),
       order_amt_std_order_pay_master    ALIAS '累计_订单支付&父_订单金额' DECIMAL COMMENT '累计_订单支付&父_订单金额' REFERENCES (order_amt_std_order_pay_master),
       order_amt_cy_order_pay_sub        ALIAS '自然年_订单支付&子_订单金额' DECIMAL COMMENT '自然年_订单支付&子_订单金额' REFERENCES (order_amt_cy_order_pay_sub),
       order_amt_cy_order_pay_master     ALIAS '自然年_订单支付&父_订单金额' DECIMAL COMMENT '自然年_订单支付&父_订单金额' REFERENCES (order_amt_cy_order_pay_master),
       order_amt_cq_order_pay_sub        ALIAS '自然季度_订单支付&子_订单金额' DECIMAL COMMENT '自然季度_订单支付&子_订单金额' REFERENCES (order_amt_cq_order_pay_sub),
       order_amt_cq_order_pay_master     ALIAS '自然季度_订单支付&父_订单金额' DECIMAL COMMENT '自然季度_订单支付&父_订单金额' REFERENCES (order_amt_cq_order_pay_master),
       order_amt_cm_order_pay_sub        ALIAS '自然月_订单支付&子_订单金额' DECIMAL COMMENT '自然月_订单支付&子_订单金额' REFERENCES (order_amt_cm_order_pay_sub),
       order_amt_cm_order_pay_master     ALIAS '自然月_订单支付&父_订单金额' DECIMAL COMMENT '自然月_订单支付&父_订单金额' REFERENCES (order_amt_cm_order_pay_master),
       order_amt_3d_order_pay_sub        ALIAS '近3天_订单支付&子_订单金额' DECIMAL COMMENT '近3天_订单支付&子_订单金额' REFERENCES (order_amt_3d_order_pay_sub),
       order_amt_3d_order_pay_master     ALIAS '近3天_订单支付&父_订单金额' DECIMAL COMMENT '近3天_订单支付&父_订单金额' REFERENCES (order_amt_3d_order_pay_master),
       order_amt_2w_order_pay_sub        ALIAS '近14天_订单支付&子_订单金额' DECIMAL COMMENT '近14天_订单支付&子_订单金额' REFERENCES (order_amt_2w_order_pay_sub),
       order_amt_2w_order_pay_master     ALIAS '近14天_订单支付&父_订单金额' DECIMAL COMMENT '近14天_订单支付&父_订单金额' REFERENCES (order_amt_2w_order_pay_master),
       order_amt_1w_order_pay_sub        ALIAS '近7天_订单支付&子_订单金额' DECIMAL COMMENT '近7天_订单支付&子_订单金额' REFERENCES (order_amt_1w_order_pay_sub),
       order_amt_1w_order_pay_master     ALIAS '近7天_订单支付&父_订单金额' DECIMAL COMMENT '近7天_订单支付&父_订单金额' REFERENCES (order_amt_1w_order_pay_master),
       order_amt_1m_order_pay_sub        ALIAS '近30天_订单支付&子_订单金额' DECIMAL COMMENT '近30天_订单支付&子_订单金额' REFERENCES (order_amt_1m_order_pay_sub),
       order_amt_1m_order_pay_master     ALIAS '近30天_订单支付&父_订单金额' DECIMAL COMMENT '近30天_订单支付&父_订单金额' REFERENCES (order_amt_1m_order_pay_master),
       order_amt_1d_order_pay_sub        ALIAS '近1天_订单支付&子_订单金额' DECIMAL COMMENT '近1天_订单支付&子_订单金额' REFERENCES (order_amt_1d_order_pay_sub),
       order_amt_1d_order_pay_master     ALIAS '近1天_订单支付&父_订单金额' DECIMAL COMMENT '近1天_订单支付&父_订单金额' REFERENCES (order_amt_1d_order_pay_master),
       order_amt_3d_order_pay            ALIAS '近3天_订单支付_订单金额' DECIMAL COMMENT '近3天_订单支付_订单金额' REFERENCES (order_amt_3d_order_pay),
       order_amt_1w_order_pay            ALIAS '近7天_订单支付_订单金额' DECIMAL COMMENT '近7天_订单支付_订单金额' REFERENCES (order_amt_1w_order_pay),
       order_amt_1d_order_pay            ALIAS '近1天_订单支付_订单金额' DECIMAL COMMENT '近1天_订单支付_订单金额' REFERENCES (order_amt_1d_order_pay),
       order_amt_fy_order_pay            ALIAS '财年_订单支付_订单金额' DECIMAL COMMENT '财年_订单支付_订单金额' REFERENCES (order_amt_fy_order_pay),
       order_amt_cq_order_pay            ALIAS '自然季度_订单支付_订单金额' DECIMAL COMMENT '自然季度_订单支付_订单金额' REFERENCES (order_amt_cq_order_pay),
       order_amt_cm_order_pay            ALIAS '自然月_订单支付_订单金额' DECIMAL COMMENT '自然月_订单支付_订单金额' REFERENCES (order_amt_cm_order_pay),
       order_amt_std_order_pay           ALIAS '累计_订单支付_订单金额' DECIMAL COMMENT '累计_订单支付_订单金额' REFERENCES (order_amt_std_order_pay),
       order_amt_1m_order_pay            ALIAS '近30天_订单支付_订单金额' DECIMAL COMMENT '近30天_订单支付_订单金额' REFERENCES (order_amt_1m_order_pay),
       member_cnt_3d_order_create        ALIAS '近3天_订单创建_会员数' BIGINT COMMENT '近3天_订单创建_会员数' REFERENCES (member_cnt_3d_order_create),
       member_cnt_1w_order_create        ALIAS '近7天_订单创建_会员数' BIGINT COMMENT '近7天_订单创建_会员数' REFERENCES (member_cnt_1w_order_create),
       member_cnt_1m_order_create        ALIAS '近30天_订单创建_会员数' BIGINT COMMENT '近30天_订单创建_会员数' REFERENCES (member_cnt_1m_order_create),
       member_cnt_1d_order_create        ALIAS '近1天_订单创建_会员数' BIGINT COMMENT '近1天_订单创建_会员数' REFERENCES (member_cnt_1d_order_create),
       goods_cnt_std_order_create        ALIAS '累计_订单创建_商品数量' BIGINT COMMENT '累计_订单创建_商品数量' REFERENCES (goods_cnt_std_order_create),
       goods_cnt_fy_order_create         ALIAS '财年_订单创建_商品数量' BIGINT COMMENT '财年_订单创建_商品数量' REFERENCES (goods_cnt_fy_order_create),
       goods_cnt_cq_order_create         ALIAS '自然季度_订单创建_商品数量' BIGINT COMMENT '自然季度_订单创建_商品数量' REFERENCES (goods_cnt_cq_order_create),
       goods_cnt_cm_order_create         ALIAS '自然月_订单创建_商品数量' BIGINT COMMENT '自然月_订单创建_商品数量' REFERENCES (goods_cnt_cm_order_create),
       goods_cnt_3d_order_create         ALIAS '近3天_订单创建_商品数量' BIGINT COMMENT '近3天_订单创建_商品数量' REFERENCES (goods_cnt_3d_order_create),
       goods_cnt_1w_order_create         ALIAS '近7天_订单创建_商品数量' BIGINT COMMENT '近7天_订单创建_商品数量' REFERENCES (goods_cnt_1w_order_create),
       seller_cnt_1w_order_create        ALIAS '近7天_订单创建_卖家数' BIGINT COMMENT '近7天_订单创建_卖家数' REFERENCES (seller_cnt_1w_order_create),
       seller_cnt_cq_order_create        ALIAS '自然季度_订单创建_卖家数' BIGINT COMMENT '自然季度_订单创建_卖家数' REFERENCES (seller_cnt_cq_order_create),
       seller_cnt_1m_order_create        ALIAS '近30天_订单创建_卖家数' BIGINT COMMENT '近30天_订单创建_卖家数' REFERENCES (seller_cnt_1m_order_create),
       seller_cnt_std_order_create       ALIAS '累计_订单创建_卖家数' BIGINT COMMENT '累计_订单创建_卖家数' REFERENCES (seller_cnt_std_order_create),
       seller_cnt_3d_order_create        ALIAS '近3天_订单创建_卖家数' BIGINT COMMENT '近3天_订单创建_卖家数' REFERENCES (seller_cnt_3d_order_create),
       seller_cnt_1d_order_create        ALIAS '近1天_订单创建_卖家数' BIGINT COMMENT '近1天_订单创建_卖家数' REFERENCES (seller_cnt_1d_order_create),
       seller_cnt_fy_order_create        ALIAS '财年_订单创建_卖家数' BIGINT COMMENT '财年_订单创建_卖家数' REFERENCES (seller_cnt_fy_order_create),
       seller_cnt_cm_order_create        ALIAS '自然月_订单创建_卖家数' BIGINT COMMENT '自然月_订单创建_卖家数' REFERENCES (seller_cnt_cm_order_create),
       member_cnt_std_order_create       ALIAS '累计_订单创建_会员数' BIGINT COMMENT '累计_订单创建_会员数' REFERENCES (member_cnt_std_order_create),
       member_cnt_fy_order_create        ALIAS '财年_订单创建_会员数' BIGINT COMMENT '财年_订单创建_会员数' REFERENCES (member_cnt_fy_order_create),
       member_cnt_cq_order_create        ALIAS '自然季度_订单创建_会员数' BIGINT COMMENT '自然季度_订单创建_会员数' REFERENCES (member_cnt_cq_order_create),
       member_cnt_cm_order_create        ALIAS '自然月_订单创建_会员数' BIGINT COMMENT '自然月_订单创建_会员数' REFERENCES (member_cnt_cm_order_create),
       goods_cnt_1m_order_create         ALIAS '近30天_订单创建_商品数量' BIGINT COMMENT '近30天_订单创建_商品数量' REFERENCES (goods_cnt_1m_order_create),
       goods_cnt_1d_order_create         ALIAS '近1天_订单创建_商品数量' BIGINT COMMENT '近1天_订单创建_商品数量' REFERENCES (goods_cnt_1d_order_create),
       seller_cnt_std_order_pay          ALIAS '累计_订单支付_卖家数' BIGINT COMMENT '累计_订单支付_卖家数' REFERENCES (seller_cnt_std_order_pay),
       seller_cnt_cq_order_pay           ALIAS '自然季度_订单支付_卖家数' BIGINT COMMENT '自然季度_订单支付_卖家数' REFERENCES (seller_cnt_cq_order_pay),
       seller_cnt_cm_order_pay           ALIAS '自然月_订单支付_卖家数' BIGINT COMMENT '自然月_订单支付_卖家数' REFERENCES (seller_cnt_cm_order_pay),
       goods_cnt_std_order_pay           ALIAS '累计_订单支付_商品数量' BIGINT COMMENT '累计_订单支付_商品数量' REFERENCES (goods_cnt_std_order_pay),
       goods_cnt_1w_order_pay            ALIAS '近7天_订单支付_商品数量' BIGINT COMMENT '近7天_订单支付_商品数量' REFERENCES (goods_cnt_1w_order_pay),
       goods_cnt_1m_order_pay            ALIAS '近30天_订单支付_商品数量' BIGINT COMMENT '近30天_订单支付_商品数量' REFERENCES (goods_cnt_1m_order_pay),
       seller_cnt_1w_order_pay           ALIAS '近7天_订单支付_卖家数' BIGINT COMMENT '近7天_订单支付_卖家数' REFERENCES (seller_cnt_1w_order_pay),
       seller_cnt_1m_order_pay           ALIAS '近30天_订单支付_卖家数' BIGINT COMMENT '近30天_订单支付_卖家数' REFERENCES (seller_cnt_1m_order_pay),
       seller_cnt_3d_order_pay           ALIAS '近3天_订单支付_卖家数' BIGINT COMMENT '近3天_订单支付_卖家数' REFERENCES (seller_cnt_3d_order_pay),
       member_cnt_std_order_pay          ALIAS '累计_订单支付_会员数' BIGINT COMMENT '累计_订单支付_会员数' REFERENCES (member_cnt_std_order_pay),
       member_cnt_fy_order_pay           ALIAS '财年_订单支付_会员数' BIGINT COMMENT '财年_订单支付_会员数' REFERENCES (member_cnt_fy_order_pay),
       member_cnt_cq_order_pay           ALIAS '自然季度_订单支付_会员数' BIGINT COMMENT '自然季度_订单支付_会员数' REFERENCES (member_cnt_cq_order_pay),
       member_cnt_cm_order_pay           ALIAS '自然月_订单支付_会员数' BIGINT COMMENT '自然月_订单支付_会员数' REFERENCES (member_cnt_cm_order_pay),
       member_cnt_1w_order_pay           ALIAS '近7天_订单支付_会员数' BIGINT COMMENT '近7天_订单支付_会员数' REFERENCES (member_cnt_1w_order_pay),
       member_cnt_1m_order_pay           ALIAS '近30天_订单支付_会员数' BIGINT COMMENT '近30天_订单支付_会员数' REFERENCES (member_cnt_1m_order_pay),
       goods_cnt_3d_order_pay            ALIAS '近3天_订单支付_商品数量' BIGINT COMMENT '近3天_订单支付_商品数量' REFERENCES (goods_cnt_3d_order_pay),
       goods_cnt_1d_order_pay            ALIAS '近1天_订单支付_商品数量' BIGINT COMMENT '近1天_订单支付_商品数量' REFERENCES (goods_cnt_1d_order_pay),
       seller_cnt_1d_order_pay           ALIAS '近1天_订单支付_卖家数' BIGINT COMMENT '近1天_订单支付_卖家数' REFERENCES (seller_cnt_1d_order_pay),
       member_cnt_3d_order_pay           ALIAS '近3天_订单支付_会员数' BIGINT COMMENT '近3天_订单支付_会员数' REFERENCES (member_cnt_3d_order_pay),
       goods_cnt_fy_order_pay            ALIAS '财年_订单支付_商品数量' BIGINT COMMENT '财年_订单支付_商品数量' REFERENCES (goods_cnt_fy_order_pay),
       member_cnt_1d_order_pay           ALIAS '近1天_订单支付_会员数' BIGINT COMMENT '近1天_订单支付_会员数' REFERENCES (member_cnt_1d_order_pay),
       goods_cnt_cq_order_pay            ALIAS '自然季度_订单支付_商品数量' BIGINT COMMENT '自然季度_订单支付_商品数量' REFERENCES (goods_cnt_cq_order_pay),
       seller_cnt_fy_order_pay           ALIAS '财年_订单支付_卖家数' BIGINT COMMENT '财年_订单支付_卖家数' REFERENCES (seller_cnt_fy_order_pay),
       goods_cnt_cm_order_pay            ALIAS '自然月_订单支付_商品数量' BIGINT COMMENT '自然月_订单支付_商品数量' REFERENCES (goods_cnt_cm_order_pay),
       CONSTRAINT TP TIME_PERIOD KEY REFERENCES (1d,3d,1w,2w,1m,cm,cy,std)
    )
    COMMENT '订单分析表'
    PARTITIONED BY
    (
       ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd'
    )
    WITH('life_cycle'='7');

构建应用汇总模型

应用表是面向具体业务场景时,用于组织相同时间周期、相同维度多个原子指标、派生指标统计粒度的统计数据,为后续的业务查询,OLAP分析,数据分发等提供基础。

应用表是将一个数据集市或主题域中的多个原子指标或派生指标,通过时间周期关联维度整合在一起,关联的维度、时间周期、原子指标、派生指标,用于生成应用表中的统计字段,帮助您进行报表等分析展示。您可以使用应用表呈现相同时间、相同维度下,多个指标所统计的业务情况。

零售电子商务行业模型模板已经导入了各个主题域下的应用表模型,我们尝试新建一个“消费者活跃程度分析表_测试”模型,如下表所示。

  1. 基本信息

    基本信息

    *数仓分层

    应用层-应用数据层

    *集市/主题

    消费者

    时间周期

    1d(近1天)、3d(近3天)、1w(近7天)、2w(近14天)、1m(近30天)、cm(自然月)、cy(自然年)、std(历史截止当日)

    修饰词

    high_acticity(高活)、medium_activity(中活)、low_activity(低活)、lost(流失)

    表名规则

    -

    *表名

    ads_ec_industry_consumer_active_nd_test

    推荐表名规范:ads_{业务分类}_{数据集市}_{主题域}_{自定义内容}_{时间周期}

    *表中文名

    消费者活跃程度分析表_测试

    生命周期

    30天

  2. 字段和分区字段管理

    方式和上面构建汇总模型类似,这里使用“代码模式-FML语言”快速覆盖导入。

    消费者活跃程度分析表FML脚本:

    -- 模型开始发布物理表(发布前审批、发布中、发布成功后)后,表名均无法进行修改。
    CREATE ADS TABLE ads_ec_industry_consumer_active_nd_test ALIAS '消费者活跃程度分析表' 
    (
       member_cnt_cy_high_activity   ALIAS '自然年_高活_会员数' BIGINT COMMENT '自然年_高活_会员数' REFERENCES (member_cnt_cy_high_activity),
       member_cnt_cq_high_activity   ALIAS '自然季度_高活_会员数' BIGINT COMMENT '自然季度_高活_会员数' REFERENCES (member_cnt_cq_high_activity),
       member_cnt_1m_high_activity   ALIAS '近30天_高活_会员数' BIGINT COMMENT '近30天_高活_会员数' REFERENCES (member_cnt_1m_high_activity),
       member_cnt_2w_high_activity   ALIAS '近14天_高活_会员数' BIGINT COMMENT '近14天_高活_会员数' REFERENCES (member_cnt_2w_high_activity),
       member_cnt_1w_high_activity   ALIAS '近7天_高活_会员数' BIGINT COMMENT '近7天_高活_会员数' REFERENCES (member_cnt_1w_high_activity),
       member_cnt_1d_high_activity   ALIAS '近1天_高活_会员数' BIGINT COMMENT '近1天_高活_会员数' REFERENCES (member_cnt_1d_high_activity),
       member_cnt_cy_medium_activity ALIAS '自然年_中活_会员数' BIGINT COMMENT '自然年_中活_会员数' REFERENCES (member_cnt_cy_medium_activity),
       member_cnt_cq_medium_activity ALIAS '自然季度_中活_会员数' BIGINT COMMENT '自然季度_中活_会员数' REFERENCES (member_cnt_cq_medium_activity),
       member_cnt_1m_medium_activity ALIAS '近30天_中活_会员数' BIGINT COMMENT '近30天_中活_会员数' REFERENCES (member_cnt_1m_medium_activity),
       member_cnt_2w_medium_activity ALIAS '近14天_中活_会员数' BIGINT COMMENT '近14天_中活_会员数' REFERENCES (member_cnt_2w_medium_activity),
       member_cnt_1w_medium_activity ALIAS '近7天_中活_会员数' BIGINT COMMENT '近7天_中活_会员数' REFERENCES (member_cnt_1w_medium_activity),
       member_cnt_1d_medium_activity ALIAS '近1天_中活_会员数' BIGINT COMMENT '近1天_中活_会员数' REFERENCES (member_cnt_1d_medium_activity),
       member_cnt_cy_low_activity    ALIAS '自然年_低活_会员数' BIGINT COMMENT '自然年_低活_会员数' REFERENCES (member_cnt_cy_low_activity),
       member_cnt_cq_low_activity    ALIAS '自然季度_低活_会员数' BIGINT COMMENT '自然季度_低活_会员数' REFERENCES (member_cnt_cq_low_activity),
       member_cnt_1m_low_activity    ALIAS '近30天_低活_会员数' BIGINT COMMENT '近30天_低活_会员数' REFERENCES (member_cnt_1m_low_activity),
       member_cnt_2w_low_activity    ALIAS '近14天_低活_会员数' BIGINT COMMENT '近14天_低活_会员数' REFERENCES (member_cnt_2w_low_activity),
       member_cnt_1w_low_activity    ALIAS '近7天_低活_会员数' BIGINT COMMENT '近7天_低活_会员数' REFERENCES (member_cnt_1w_low_activity),
       member_cnt_1d_low_activity    ALIAS '近1天_低活_会员数' BIGINT COMMENT '近1天_低活_会员数' REFERENCES (member_cnt_1d_low_activity),
       member_cnt_cy_lost            ALIAS '自然年_流失_会员数' BIGINT COMMENT '自然年_流失_会员数' REFERENCES (member_cnt_cy_lost),
       member_cnt_cq_lost            ALIAS '自然季度_流失_会员数' BIGINT COMMENT '自然季度_流失_会员数' REFERENCES (member_cnt_cq_lost),
       member_cnt_1m_lost            ALIAS '近30天_流失_会员数' BIGINT COMMENT '近30天_流失_会员数' REFERENCES (member_cnt_1m_lost),
       member_cnt_2w_lost            ALIAS '近14天_流失_会员数' BIGINT COMMENT '近14天_流失_会员数' REFERENCES (member_cnt_2w_lost),
       member_cnt_1w_lost            ALIAS '近7天_流失_会员数' BIGINT COMMENT '近7天_流失_会员数' REFERENCES (member_cnt_1w_lost),
       member_cnt_1d_lost            ALIAS '近1天_流失_会员数' BIGINT COMMENT '近1天_流失_会员数' REFERENCES (member_cnt_1d_lost),
       CONSTRAINT TP TIME_PERIOD KEY REFERENCES (1d,3d,1w,2w,1m,cm,cq,cy)
    )
    COMMENT '消费者活跃程度分析表'
    PARTITIONED BY
    (
       ds ALIAS '业务日期, yyyymmdd' STRING COMMENT '业务日期, yyyymmdd'
    )
    WITH('life_cycle'='7');

逆向建模

以上公共层和应用层模型都是通过正向建模创建,在实际场景中一般物理引擎中已有大量物理表,如果希望通过DataWorks智能数据建模产品统一管理所有模型,就可以使用逆向建模:物理表反向建模将物理表反向建模至DataWorks的维度建模。

逆向建模流程

  1. 配置逆向建模策略。确定建模范围、建模规则、建模执行方式等。

    image.png

  2. 确认模型信息。

    平台根据逆向策略里的配置自动解析并匹配模型,您可以根据业务需求进行模型信息调整,例如更改表所在的数据域、业务过程等模型基础信息。

  3. 单击开始生成模型,生成最终模型。

    完成后,您可以在维度建模>公共层-商品域-维度表下查看模型,并保存模型

模型应用

数据模型搭建完成后,有多种场景可以消费应用,本文为您介绍物化模型和查看模型资产两个场景。

物化模型

DataWorks智能建模提供了灵活的方式将模型生成物理表:

  • 方式一:导出DDL语句,复制到对应引擎执行。image.png

  • 方式二:直接发布到DataWorks已创建的MaxCompute数据源。

    例如,我们将其中一个明细汇总层表模型dws_ec_trd_order_nd(订单分析表)发布至MaxCompute引擎开发和生产环境生成物理表,并查看物理表元数据信息。更多关于发布参数的说明已经支持物化的引擎列表可以参考发布模型至引擎官方文档。

    image.png

    显示发布成功后,我们可以前往数据地图 > 全部数据搜索目标表(dws_ec_trd_order_nd),查看retail_e_commerce_5.dws_ec_trd_order_nd的元数据信息,如下图所示,除了基础的元数据信息之外,还可以查看模型信息、字段关联指标等信息。如果数据地图搜索无返回,请先执行一下手动刷新表元数据

    image.png

查看模型资产

在搭建完模型并提交之后,我们可以在DataWorks数据资产模块查看数据模型、数据指标资产的全景。

说明

数据资产目前处于邀测阶段,保有DataWorks标准版、专业版、企业版的用户如需使用数据资产,可提交工单联系技术支持人员开通白名单免费使用。邀测结束后,数据资产需单独购买才可使用。升级或购买DataWorks相应版本,请参见DataWorks各版本详解

image.png

重要

DataWorks智能数据建模开通后可以免费获取零售模型模板,并按照文档进行学习操作。您可以根据自身的业务场景,选择合适的版本进行购买,详情请参见:购买地址