• 数仓学习之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类型
    但是比较无法帮助比较类型转换
    无法判断是想按左边比较还是想按右边进行比较,无法识别意图
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    redis的原理和源码-源码阅读指南
    高分植物线粒体研究:揭示棉花细胞质雄性不育的花粉败育机制
    跨平台应用开发进阶(三十):uni-app 实现视频直播
    2024年元旦怎么放假?元旦放假时间安排表记录到待办APP
    java计算机毕业设计考试编排管理系统MyBatis+系统+LW文档+源码+调试部署
    翻译: 如何学习编译器:LLVM Edition
    数学建模笔记 因子分析
    Rovio智能车北极星定位分析
    【javaWeb技术】·外卖点餐小程序(脚手架学习2·脚手架运行)
    SpringBoot项目打印接口请求日志,CommonsRequestLoggingFilter实现方式
  • 原文地址:https://blog.csdn.net/qq_42265608/article/details/132759818