4.1 离线数仓—DWD层工具域事实表实现

本文详细介绍了DWD层中工具域的优惠券领取、使用(下单)和使用(支付)三个事务事实表的设计与装载过程,包括建表语句、首日及每日装载语句。在装载过程中,特别提醒注意不能使用字段is not null的判断来确认更新操作,因为这可能导致错误的结果。

前言

前面完成了交易域6张事务事实表的设计,下面继续进行DWD层工具域事务事实表的设计

一、工具域优惠券领取事务事实表

1.建表语句

DROP TABLE IF EXISTS dwd_tool_coupon_get_inc;
CREATE EXTERNAL TABLE dwd_tool_coupon_get_inc
(
    `id`        STRING COMMENT '编号',
    `coupon_id` STRING COMMENT '优惠券ID',
    `user_id`   STRING COMMENT 'userid',
    `date_id`   STRING COMMENT '日期ID',
    `get_time`  STRING COMMENT '领取时间'
) COMMENT '优惠券领取事务事实表'
    PARTITIONED BY (`dt` STRING)
    STORED AS ORC
    LOCATION '/warehouse/gmall/dwd/dwd_tool_coupon_get_inc/'
    TBLPROPERTIES ("orc.compress" = "snappy");

2.首日装载语句

insert overwrite table dwd_tool_coupon_get_inc partition(dt)
select
    data.id,
    data.coupon_id,
    data.user_id,
    date_format(data.get_time,'yyyy-MM-dd') date_id,
    data.get_time,
    date_format(data.get_time,'yyyy-MM-dd')
from ods_coupon_use_inc
where dt='2020-06-14'
and type
### 离线数据仓库 DWD 的作用及功能介绍 #### 1. 数据清洗与结构化 DWD(Data Warehouse Detail)是离线数据仓库中承上启下的重要次,其主要作用是对 ODS(Operational Data Store)中的原始数据进行清洗、转换和结构化处理[^1]。通过去除无效数据、修正错误数据以及补充缺失字段,DWD 能够为后续的数据分析提供高质量的基础数据支持。 #### 2. 数据去重与一致性保证 在数据装载过程中,DWD 会确保数据的一致性和完整性。例如,在购物车周期快照事实表实现中,通过过滤条件 `is_ordered='0'` 和指定日期分区 `dt='2020-06-14'`,可以有效避免重复数据的加载,并保持数据的时间维度一致性。 #### 3. 数据分区与存储优化 为了提高查询效率和降低存储成本,DWD 通常会对数据进行分区管理,例如按照日期字段 `dt` 进行分区。此外,DWD 还会采用压缩技术(如 LZO 压缩算法)来减少存储空间占用,同时保持较高的查询性能[^2]。 #### 4. 数据模型规范化 DWD 的设计遵循严格的数据建模规范,旨在为后续的 DWS(Data Warehouse Summary)和 ADS(Application Data Service)提供清晰、一致的数据结构[^2]。例如,在流量页面浏览事务事实表实现中,DWD 会定义详细的建表语句,并明确各字段的含义和用途[^3]。 #### 5. 数据生命周期管理 DWD 的数据通常具有较长的生命周期,可能保留多年甚至永久保存。这种设计是为了满足历史数据分析的需求,同时也便于追溯数据来源和变化过程。 #### 6. 支持多维度分析 DWD 通过对不同业务(如交易、流量等)的事实表进行建模,能够为多维度分析提供丰富的数据支持。例如,流量中的页面浏览、启动、动作、曝光和错误等事务事实表分别记录了用户行为的不同方面,从而为精细化运营提供了数据基础[^3]。 ```sql -- 示例:DWD 数据装载语句 insert overwrite table dwd_trade_cart_full partition(dt='2020-06-14') select id, user_id, sku_id, sku_name, sku_num from ods_cart_info_full where dt='2020-06-14' and is_ordered='0'; ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值