详情页标题前

阿里云云原生大数据计算服务 MaxCompute明细粒度事实层(DWD)-云淘科技

详情页1

明细粒度事实层DWD(Data Warehouse Detail)以业务过程驱动建模,基于每个具体的业务过程特点,构建最细粒度的明细层事实。您可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。

公共汇总粒度事实层(DWS)和明细粒度事实层(DWD)的事实表作为数据仓库维度建模的核心,需紧绕业务过程来设计。通过获取描述业务过程的度量来描述业务过程,包括引用的维度和与业务过程有关的度量。度量通常为数值型数据,作为事实逻辑表的依据。事实逻辑表的描述信息是事实属性,事实属性中的外键字段通过对应维度进行关联。

事实表中一条记录所表达的业务细节程度被称为粒度。通常粒度可以通过两种方式来表述:一种是维度属性组合所表示的细节程度,一种是所表示的具体业务含义。

作为度量业务过程的事实,通常为整型或浮点型的十进制数值,有可加性、半可加性和不可加性三种类型:

  • 可加性事实是指可以按照与事实表关联的任意维度进行汇总。
  • 半可加性事实只能按照特定维度汇总,不能对所有维度汇总。例如库存可以按照地点和商品进行汇总,而按时间维度把一年中每个月的库存累加则毫无意义。
  • 完全不可加性,例如比率型事实。对于不可加性的事实,可分解为可加的组件来实现聚集。

事实表相对维表通常更加细长,行增加速度也更快。维度属性可以存储到事实表中,这种存储到事实表中的维度列称为维度退化,可加快查询速度。与其他存储在维表中的维度一样,维度退化可以用来进行事实表的过滤查询、实现聚合操作等。

明细粒度事实层(DWD)通常分为三种:事务事实表、周期快照事实表和累积快照事实表,详情请参见数仓建设指南。

  • 事务事实表用来描述业务过程,跟踪空间或时间上某点的度量事件,保存的是最原子的数据,也称为原子事实表。
  • 周期快照事实表以具有规律性的、可预见的时间间隔记录事实。
  • 累积快照事实表用来表述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点。当累积快照事实表随着生命周期不断变化时,记录也会随着过程的变化而被修改。

明细粒度事实表设计原则

明细粒度事实表设计原则如下所示:

  • 通常,一个明细粒度事实表仅和一个维度关联。
  • 尽可能包含所有与业务过程相关的事实 。
  • 只选择与业务过程相关的事实。
  • 分解不可加性事实为可加的组件。
  • 在选择维度和事实之前必须先声明粒度。
  • 在同一个事实表中不能有多种不同粒度的事实。
  • 事实的单位要保持一致。
  • 谨慎处理Null值。
  • 使用退化维度提高事实表的易用性。

明细粒度事实表整体设计流程如下图所示。阿里云云原生大数据计算服务 MaxCompute明细粒度事实层(DWD)-云淘科技

在一致性度量中已定义好了交易业务过程及其度量。明细事实表注意针对业务过程进行模型设计。明细事实表的设计可以分为四个步骤:选择业务过程、确定粒度、选择维度、确定事实(度量)。粒度主要是在维度未展开的情况下记录业务活动的语义描述。在您建设明细事实表时,需要选择基于现有的表进行明细层数据的开发,清楚所建表记录存储的是什么粒度的数据。

明细粒度事实层(DWD)规范

通常您需要遵照的命名规范为:dwd_{业务板块/pub}_{数据域缩写}_{业务过程缩写}[_{自定义表命名标签缩写}] _{单分区增量全量标识},pub表示数据包括多个业务板块的数据。单分区增量全量标识通常为:i表示增量,f表示全量。例如: dwd_asale_trd_ordcrt_trip_di(A电商公司航旅机票订单下单事实表,日刷新增量)及dwd_asale_itm_item_df(A电商商品快照事实表,日刷新全量)。

本教程中,DWD层主要由三个表构成:

  • 交易商品信息事实表:dwd_asale_trd_itm_di。
  • 交易会员信息事实表:dwd_asale_trd_mbr_di。
  • 交易订单信息事实表:dwd_asale_trd_ord_di。

DWD层数据存储及生命周期管理规范请参见CDM明细层设计规范。

建表示例

本教程中充分使用了维度退化以提升查询效率,建表语句如下所示。

CREATE TABLE IF NOT EXISTS dwd_asale_trd_itm_di
(
    item_id              BIGINT COMMENT '商品ID',
    item_title           STRING COMMENT '商品名称',
    item_price           DOUBLE COMMENT '商品价格',
    item_stuff_status    BIGINT COMMENT '商品新旧程度_0全新1闲置2二手',
    item_prov            STRING COMMENT '商品省份',
    item_city            STRING COMMENT '商品城市',
    cate_id              BIGINT COMMENT '商品类目ID',
    cate_name            STRING COMMENT '商品类目名称',
    commodity_id         BIGINT COMMENT '品类ID',
    commodity_name       STRING COMMENT '品类名称',
    buyer_id             BIGINT COMMENT '买家ID'
)
COMMENT '交易商品信息事实表'
PARTITIONED BY (ds     STRING COMMENT '日期')
LIFECYCLE 400;

CREATE TABLE IF NOT EXISTS dwd_asale_trd_mbr_di
(
    order_id         BIGINT COMMENT '订单ID',
    bc_type          STRING COMMENT '业务分类',
    buyer_id         BIGINT COMMENT '买家ID',
    buyer_nick       STRING COMMENT '买家昵称',
    buyer_star_id    BIGINT COMMENT '买家星级ID',
    seller_id        BIGINT COMMENT '卖家ID',
    seller_nick      STRING COMMENT '卖家昵称',
    seller_star_id   BIGINT COMMENT '卖家星级ID',
    shop_id          BIGINT COMMENT '店铺ID',
    shop_name        STRING COMMENT '店铺名称'
)
COMMENT '交易会员信息事实表'
PARTITIONED BY (ds     STRING COMMENT '日期')
LIFECYCLE 400;

CREATE TABLE IF NOT EXISTS dwd_asale_trd_ord_di
(
    order_id              BIGINT COMMENT '订单ID',
    pay_order_id          BIGINT COMMENT '支付订单ID',
    pay_status            BIGINT COMMENT '支付状态_1未付款2已付款3已退款',
    succ_time             STRING COMMENT '订单交易结束时间',
    item_id               BIGINT COMMENT '商品ID',
    item_quantity         BIGINT COMMENT '购买数量',
    confirm_paid_amt      DOUBLE COMMENT '订单已经确认收货的金额',
    logistics_id          BIGINT COMMENT '物流订单ID',
    mord_prov             STRING COMMENT '收货人省份',
    mord_city             STRING COMMENT '收货人城市',
    mord_lgt_shipping     BIGINT COMMENT '发货方式_1平邮2快递3EMS',
    mord_address          STRING COMMENT '收货人地址',
    mord_mobile_phone     STRING COMMENT '收货人手机号',
    mord_fullname         STRING COMMENT '收货人姓名',
    buyer_nick            STRING COMMENT '买家昵称',
    buyer_id              BIGINT COMMENT '买家ID'
)
COMMENT '交易订单信息事实表'
PARTITIONED BY (ds       STRING COMMENT '日期')
LIFECYCLE 400;

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/159235.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云对象存储OSSHive以EMR集群的方式处理OSS-HDFS服务中的数据-云淘科技

    本文介绍Hive如何以EMR集群的方式处理OSS-HDFS服务中的数据。 前提条件 已创建EMR-3.42.0及以上版本或EMR-5.8.0及以上版本的集群。具体步骤,请参见创建集群。 已开通并授权访问OSS-HDFS服务。具体操作,请参见开通并授权访问OSS-HDFS服务。 操作步骤 登录EMR集群。 登录EMR on ECS控制台。 单击创建的EMR集群…

    阿里云对象存储 2023年12月10日
  • 阿里云RDS数据库MigrateDBInstance – 迁移主机组内的RDS实例-云淘科技

    调用MigrateDBInstance接口迁移专属集群内的RDS实例。 接口说明 专属集群功能以集群形式批量管理实例,一个地域可以创建多个专属集群,一个专属集群包含多个主机,一个主机包含多个实例。详情请参见专属集群简介。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动…

    阿里云数据库 2023年12月9日
  • 阿里云容器服务ACK查看所有集群实例-云淘科技

    查看您在容器服务中创建的所有集群。 API请求响应 请求格式 aliyun cs GET /clusters 响应结果 [ { “agent_version”: “string”, “cluster_id”: “string”, “created”: “datetime”, “external_loadbalancer_id”: “string”, “mas…

    阿里云容器服务 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云容器服务ACKRAM鉴权-云淘科技

    在使用RAM账号调用阿里云API前,需要主账号(即阿里云账号)通过创建授权策略对RAM账号进行授权。 资源授权 默认RAM账号没有权限通过调用阿里云API去创建、修改云资源。使用RAM账号调用API时,您需要先创建一个授权策略,然后将这个授权策略关联给对应的RAM账号完成资源授权。 在创建授权策略时,您可以通过ARN(Aliyun Resource Name…

    阿里云容器服务 2023年12月10日
  • 阿里云大数据开发治理平台 DataWorksUpdateMetaTable-云淘科技

    调用UpdateMetaTable更新表的Meta信息。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 UpdateMetaTable 系统规定参数。取值:Update…

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。