数仓学习之DWD学习

在这里插入图片描述
在这里插入图片描述

登录不是原子行为,而登录成功是,
而支付也不是原子,也分成功失败。
在这里插入图片描述
什么是原子型? 一条线
注意一下密码, mysql的密码是MD5加密,而MD5的长度为固定的32
在这里插入图片描述

1.怎么构建事务表?

1.确定表名
2.确定一行数据所表示的含义
3.确定列定义
4.确定度量值,就是可以统计的值,

2.加购DWD表设置

1.什么是加购?

放入购物车或者增加数量

2.表的思考

1. 对应物品

购物车 用户 商品
购物车ID 用户ID 商品ID 商品数量

2.度量

商品数量

购物车ID,用户ID,商品ID 商品数量 修改时间(添加时间)

3. 为什么需要日期ID和加购时间

日期ID是为了维度分析
加购时间是行为时间(ts)

DROP TABLE IF EXISTS dwd_trade_cart_add_inc;
CREATE EXTERNAL TABLE dwd_trade_cart_add_inc
(
    `id`                  STRING COMMENT '编号',
    `user_id`            STRING COMMENT '用户ID',
    `sku_id`             STRING COMMENT 'SKU_ID',
    `date_id`            STRING COMMENT '日期ID',
    `create_time`        STRING COMMENT '加购时间',
    `sku_num`            BIGINT COMMENT '加购物车件数'
) COMMENT '交易域加购事务事实表'
    PARTITIONED BY (`dt` STRING)
    STORED AS ORC
    LOCATION '/warehouse/gmall/dwd/dwd_trade_cart_add_inc/'
    TBLPROPERTIES ('orc.compress' = 'snappy');

4.数据装载

1.首日数据装载

默认首日全部都是增量

-- 首日数据装载
insert overwrite table dwd_trade_cart_add_inc partition (dt)
select
    data.`id`                 ,-- STRING COMMENT '编号',
    data.`user_id`            ,--STRING COMMENT '用户ID',
    data.`sku_id`             ,--STRING COMMENT 'SKU_ID',
    date_format(data.create_time, 'yyyy-MM-dd') `date_id`            ,--STRING COMMENT '日期ID',
    data.`create_time`        ,--STRING COMMENT '加购时间',
    data.`sku_num`            ,--BIGINT COMMENT '加购物车件数'
    date_format(data.create_time, 'yyyy-MM-dd')
from ods_cart_info_inc
where dt = '2022-06-08'
and type = 'bootstrap-insert';

2.每日数据装载

-- 每日数据装载
    -- 9号只能获取9号的数据,所以分区采用静态分区即可
insert overwrite table dwd_trade_cart_add_inc partition (dt='2022-06-09')
select
    data.`id`                 ,-- STRING COMMENT '编号',
    data.`user_id`            ,--STRING COMMENT '用户ID',
    data.`sku_id`             ,--STRING COMMENT 'SKU_ID',
    date_format(if ( type = 'insert', data.`create_time`, data.operate_time  ), 'yyyy-MM-dd') `date_id`            ,--STRING COMMENT '日期ID',
    if ( type = 'insert', data.`create_time`, data.operate_time  )         ,--STRING COMMENT '加购时间',
    if ( type = 'insert', data.`sku_num`, data.sku_num - cast(old['sku_num'] as bigint) )             --BIGINT COMMENT '加购物车件数'
from ods_cart_info_inc 
where dt = '2022-06-09'
and type = 'insert'
or  (
    type = 'update'
  and
    array_contains(map_keys(old), 'sku_num')
  and
    data.sku_num > cast(old['sku_num'] as bigint)
);

在这里插入图片描述
long类型 - 字符串
hive自动转化为了long类型
但是比较无法帮助比较类型转换
无法判断是想按左边比较还是想按右边进行比较,无法识别意图
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42265608/article/details/132759818