• 数仓学习之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');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    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';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    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)
    );
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

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

  • 相关阅读:
    java 企业工程管理系统软件源码 自主研发 工程行业适用
    Verilog specify 块语句
    安卓使用动画启动Acitvity
    Centos服务在服务器重启后自启
    Java图书借阅管理系统(含源码+论文+答辩PPT等)
    基于信通院 Serverless 工具链模型的实践:Serverless Devs
    文件上传漏洞
    枚举类型enum用法笔记
    Java调试谷歌PC浏览器,控制操作网页
    PyQt5的笔记(中-4)
  • 原文地址:https://blog.csdn.net/qq_42265608/article/details/132759818