zoukankan      html  css  js  c++  java
  • 离线数仓(七)

    8 数仓搭建-DWT

    8.1 访客主题

      1)建表语句

    drop table if exists dwt_visitor_topic;
    create external table dwt_visitor_topic(
        --dws_visitor_action_daycount
        `mid_id` string comment '设备id',
        `brand` string comment '手机品牌',
        `model` string comment '手机型号',
        `channel` array<string> comment '渠道',
        `os` array<string> comment '操作系统',
        `area_code` array<string> comment '地区ID',
        `version_code` array<string> comment '应用版本',
        `visit_date_first` string comment '首次访问时间',
        `visit_date_last` string comment '末次访问时间',
        `visit_last_1d_count` bigint comment '最近1日访问次数',
        `visit_last_1d_day_count` bigint comment '最近1日访问天数',
        `visit_last_7d_count` bigint comment '最近7日访问次数',
        `visit_last_7d_day_count` bigint comment '最近7日访问天数',
        `visit_last_30d_count` bigint comment '最近30日访问次数',
        `visit_last_30d_day_count` bigint comment '最近30日访问天数',
        `visit_count` bigint comment '累积访问次数',  --用户行为日志历史数据无法获取,故该字段实为从数仓搭建日至今的累积值
        `visit_day_count` bigint comment '累积访问天数' --用户行为日志历史数据无法获取,故该字段实为从数仓搭建日至今的累积值
    ) comment '设备主题宽表'
    partitioned by (`dt` string)
    stored as parquet
    location '/warehouse/gmall/dwt/dwt_visitor_topic'
    tblproperties ("parquet.compression"="lzo");

      2)数据装载

        (1)首日数据

    insert overwrite table dwt_visitor_topic partition(dt='2021-06-08')
    select mid_id,
    concat_ws('|',map_keys(str_to_map( concat_ws('|',collect_list(brand)),'\\|'))) brand,
    concat_ws('|',map_keys(str_to_map( concat_ws('|',collect_list(model)),'\\|'))) model,
    -- 去重: set(不建议) , map(key不允许重复) array ------->str---------->map
    map_keys(str_to_map(concat_ws('|',collect_list(concat_ws('|',channel) )),'\\|')) channel,
    map_keys(str_to_map(concat_ws('|',collect_list(concat_ws('|',os) )),'\\|')) os,
    map_keys(str_to_map(concat_ws('|',collect_list(concat_ws('|',area_code) )),'\\|')) area_code,
    map_keys(str_to_map(concat_ws('|',collect_list(concat_ws('|',version_code) )),'\\|')) version_code,
    min(dt) visit_date_first,
    max(dt) visit_date_last,
    sum(`if`(dt='2021-06-08',visit_count,0)) visit_last_1d_count,
    sum(`if`(dt='2021-06-08',1,0)) visit_last_1d_day_count,
    sum(`if`(dt > date_sub('2021-06-08',7),visit_count,0)) visit_last_7d_count,
    sum(`if`(dt > date_sub('2021-06-08',7),1,0)) visit_last_7d_day_count,
    sum(`if`(dt > date_sub('2021-06-08',30),visit_count,0)) visit_last_30d_count,
    sum(`if`(dt > date_sub('2021-06-08',30),1,0)) visit_last_30d_day_count,
    sum(visit_count) visit_count,
    count(*) visit_day_count
    -- 每个设备在每天统计一行
    from dws_visitor_action_daycount
    where dt <= '2021-06-08'
    group by mid_id;

        (2)每日数据

    insert overwrite table  dwt_visitor_topic partition (dt='2021-06-09')
    -- 取dwt和dws层所有的mid,优先取dws层,如果为NULL,再取dwt层
    select nvl(dws_data.mid_id,dwt_data.mid_id) mid_id,
    -- 取 dwt 拼接 dws 之后去重
    -- 字符串拼接
    concat_ws('|',map_keys(str_to_map(concat_ws('|',dwt_data.brand ,dws_data.brand),'\\|'))) brand,
    concat_ws('|',map_keys(str_to_map(concat_ws('|' ,dwt_data.model , dws_data.model),'\\|'))) model,
    -- array('a','b') array('c','b') -----> a|b|c|b
    map_keys(str_to_map(concat_ws('|',dwt_data.channel ,dws_data.channel),'\\|')) channel,
    map_keys(str_to_map(concat_ws('|',dwt_data.os ,dws_data.os),'\\|')) os,
    map_keys(str_to_map(concat_ws('|',dwt_data.area_code ,dws_data.area_code),'\\|')) area_code,
    map_keys(str_to_map(concat_ws('|',dwt_data.version_code ,dws_data.version_code),'\\|')) version_code,
    -- 判断设备是否是今天的新设备,如果是 visit_date_first=今天,否则取dwt层visit_date_first
    `if`(dwt_data.mid_id is null,'2021-06-09', dwt_data.visit_date_first ) visit_date_first,
    -- 判断设备是否今天活跃,如果是 visit_date_last=今天,否则取dwt层visit_date_last
    `if`(dws_data.mid_id is not null,'2021-06-09', dwt_data.visit_date_last ) visit_date_last,
    -- 判断今天在dws层是否活跃,如果活跃,取visit_count
    `if`(dws_data.mid_id is not null,dws_data.visit_count, 0 ) visit_last_1d_count,
    -- 判断今天在dws层是否活跃,如果活跃,记1,否则记0
    `if`(dws_data.mid_id is not null, 1, 0 ) visit_last_1d_day_count,
    -- 求 dws层 dt= date_sub('2021-06-09' - 7 ) 天的数据
    -- 采取滑动的方式: 2021-06-09日最近7天的活跃次数 =
    -- 2021-06-08日最近7天的活跃次数 - dws层 dt=('2021-06-09' - 7 )的活跃次数 + dws层 dt=('2021-06-09')的活跃次数
    nvl(dwt_data.visit_last_7d_count,0) - nvl(dws_7days_ago_data.visit_count,0) + nvl(dws_data.visit_count,0) visit_last_7d_count,
    -- 2021-06-08日最近7天的活跃天数 - dws层 dt=('2021-06-09' - 7 )是否活跃,如果活跃记1,否则记0 + dws层 dt=('2021-06-09') 是否活跃,活跃记1,否则记0
    nvl(dwt_data.visit_last_7d_day_count,0) - if(dws_7days_ago_data.mid_id is null,0,1) +
    `if`(dws_data.mid_id is not null ,1 ,0 ) visit_last_7d_day_count,
    nvl(dwt_data.visit_last_30d_count,0) - nvl(dws_30days_ago_data.visit_count,0) + nvl(dws_data.visit_count,0) visit_last_30d_count,
    nvl(dwt_data.visit_last_30d_day_count,0) - if(dws_30days_ago_data.mid_id is null,0,1) +
    `if`(dws_data.mid_id is not null ,1 ,0 ) visit_last_30d_day_count,
    -- dwt 累积的visit_count + dws层 今天累积的 visit_count full join后都可能存在null值,先判null再处理
    nvl(dwt_data.visit_count,0) + nvl(dws_data.visit_count,0) visit_count,
    nvl(dwt_data.visit_day_count,0) + `if`(dws_data.mid_id is not null, 1, 0 ) visit_day_count
    from
    (
    select *
    from dwt_visitor_topic
    where dt=date_sub('2021-06-09',1)
    ) dwt_data
    full join
    (
    select *
    from dws_visitor_action_daycount
    where dt='2021-06-09'
    ) dws_data on dwt_data.mid_id = dws_data.mid_id
    left join
    --求 dws层 dt=('2021-06-09' - 7 )的数据
    (
    select *
    from dws_visitor_action_daycount
    where dt=date_sub('2021-06-09', 7 )
    ) dws_7days_ago_data on dwt_data.mid_id = dws_7days_ago_data.mid_id
    left join
    (
    select *
    from dws_visitor_action_daycount
    where dt=date_sub('2021-06-09' , 30 )
    ) dws_30days_ago_data on dwt_data.mid_id = dws_30days_ago_data.mid_id;

      3)查询加载结果

    8.2 用户主题

      1)建表语句

    drop table if exists dwt_user_topic;
    create external table dwt_user_topic(
        `user_id` string comment '用户id',
        `login_date_first` string comment '首次活跃日期',
        `login_date_last` string comment '末次活跃日期',
        `login_date_1d_count` string comment '最近1日登录次数',
        `login_last_1d_day_count` bigint comment '最近1日登录天数',
        `login_last_7d_count` bigint comment '最近7日登录次数',
        `login_last_7d_day_count` bigint comment '最近7日登录天数',
        `login_last_30d_count` bigint comment '最近30日登录次数',
        `login_last_30d_day_count` bigint comment '最近30日登录天数',
        `login_count` bigint comment '累积登录次数',
        `login_day_count` bigint comment '累积登录天数',
        `order_date_first` string comment '首次下单时间',
        `order_date_last` string comment '末次下单时间',
        `order_last_1d_count` bigint comment '最近1日下单次数',
        `order_activity_last_1d_count` bigint comment '最近1日订单参与活动次数',
        `order_activity_reduce_last_1d_amount` decimal(16,2) comment '最近1日订单减免金额(活动)',
        `order_coupon_last_1d_count` bigint comment '最近1日下单用券次数',
        `order_coupon_reduce_last_1d_amount` decimal(16,2) comment '最近1日订单减免金额(优惠券)',
        `order_last_1d_original_amount` decimal(16,2) comment '最近1日原始下单金额',
        `order_last_1d_final_amount` decimal(16,2) comment '最近1日最终下单金额',
        `order_last_7d_count` bigint comment '最近7日下单次数',
        `order_activity_last_7d_count` bigint comment '最近7日订单参与活动次数',
        `order_activity_reduce_last_7d_amount` decimal(16,2) comment '最近7日订单减免金额(活动)',
        `order_coupon_last_7d_count` bigint comment '最近7日下单用券次数',
        `order_coupon_reduce_last_7d_amount` decimal(16,2) comment '最近7日订单减免金额(优惠券)',
        `order_last_7d_original_amount` decimal(16,2) comment '最近7日原始下单金额',
        `order_last_7d_final_amount` decimal(16,2) comment '最近7日最终下单金额',
        `order_last_30d_count` bigint comment '最近30日下单次数',
        `order_activity_last_30d_count` bigint comment '最近30日订单参与活动次数',
        `order_activity_reduce_last_30d_amount` decimal(16,2) comment '最近30日订单减免金额(活动)',
        `order_coupon_last_30d_count` bigint comment '最近30日下单用券次数',
        `order_coupon_reduce_last_30d_amount` decimal(16,2) comment '最近30日订单减免金额(优惠券)',
        `order_last_30d_original_amount` decimal(16,2) comment '最近30日原始下单金额',
        `order_last_30d_final_amount` decimal(16,2) comment '最近30日最终下单金额',
        `order_count` bigint comment '累积下单次数',
        `order_activity_count` bigint comment '累积订单参与活动次数',
        `order_activity_reduce_amount` decimal(16,2) comment '累积订单减免金额(活动)',
        `order_coupon_count` bigint comment '累积下单用券次数',
        `order_coupon_reduce_amount` decimal(16,2) comment '累积订单减免金额(优惠券)',
        `order_original_amount` decimal(16,2) comment '累积原始下单金额',
        `order_final_amount` decimal(16,2) comment '累积最终下单金额',
        `payment_date_first` string comment '首次支付时间',
        `payment_date_last` string comment '末次支付时间',
        `payment_last_1d_count` bigint comment '最近1日支付次数',
        `payment_last_1d_amount` decimal(16,2) comment '最近1日支付金额',
        `payment_last_7d_count` bigint comment '最近7日支付次数',
        `payment_last_7d_amount` decimal(16,2) comment '最近7日支付金额',
        `payment_last_30d_count` bigint comment '最近30日支付次数',
        `payment_last_30d_amount` decimal(16,2) comment '最近30日支付金额',
        `payment_count` bigint comment '累积支付次数',
        `payment_amount` decimal(16,2) comment '累积支付金额',
        `refund_order_last_1d_count` bigint comment '最近1日退单次数',
        `refund_order_last_1d_num` bigint comment '最近1日退单件数',
        `refund_order_last_1d_amount` decimal(16,2) comment '最近1日退单金额',
        `refund_order_last_7d_count` bigint comment '最近7日退单次数',
        `refund_order_last_7d_num` bigint comment '最近7日退单件数',
        `refund_order_last_7d_amount` decimal(16,2) comment '最近7日退单金额',
        `refund_order_last_30d_count` bigint comment '最近30日退单次数',
        `refund_order_last_30d_num` bigint comment '最近30日退单件数',
        `refund_order_last_30d_amount` decimal(16,2) comment '最近30日退单金额',
        `refund_order_count` bigint comment '累积退单次数',
        `refund_order_num` bigint comment '累积退单件数',
        `refund_order_amount` decimal(16,2) comment '累积退单金额',
        `refund_payment_last_1d_count` bigint comment '最近1日退款次数',
        `refund_payment_last_1d_num` bigint comment '最近1日退款件数',
        `refund_payment_last_1d_amount` decimal(16,2) comment '最近1日退款金额',
        `refund_payment_last_7d_count` bigint comment '最近7日退款次数',
        `refund_payment_last_7d_num` bigint comment '最近7日退款件数',
        `refund_payment_last_7d_amount` decimal(16,2) comment '最近7日退款金额',
        `refund_payment_last_30d_count` bigint comment '最近30日退款次数',
        `refund_payment_last_30d_num` bigint comment '最近30日退款件数',
        `refund_payment_last_30d_amount` decimal(16,2) comment '最近30日退款金额',
        `refund_payment_count` bigint comment '累积退款次数',
        `refund_payment_num` bigint comment '累积退款件数',
        `refund_payment_amount` decimal(16,2) comment '累积退款金额',
        `cart_last_1d_count` bigint comment '最近1日加入购物车次数',
        `cart_last_7d_count` bigint comment '最近7日加入购物车次数',
        `cart_last_30d_count` bigint comment '最近30日加入购物车次数',
        `cart_count` bigint comment '累积加入购物车次数',
        `favor_last_1d_count` bigint comment '最近1日收藏次数',
        `favor_last_7d_count` bigint comment '最近7日收藏次数',
        `favor_last_30d_count` bigint comment '最近30日收藏次数',
        `favor_count` bigint comment '累积收藏次数',
        `coupon_last_1d_get_count` bigint comment '最近1日领券次数',
        `coupon_last_1d_using_count` bigint comment '最近1日用券(下单)次数',
        `coupon_last_1d_used_count` bigint comment '最近1日用券(支付)次数',
        `coupon_last_7d_get_count` bigint comment '最近7日领券次数',
        `coupon_last_7d_using_count` bigint comment '最近7日用券(下单)次数',
        `coupon_last_7d_used_count` bigint comment '最近7日用券(支付)次数',
        `coupon_last_30d_get_count` bigint comment '最近30日领券次数',
        `coupon_last_30d_using_count` bigint comment '最近30日用券(下单)次数',
        `coupon_last_30d_used_count` bigint comment '最近30日用券(支付)次数',
        `coupon_get_count` bigint comment '累积领券次数',
        `coupon_using_count` bigint comment '累积用券(下单)次数',
        `coupon_used_count` bigint comment '累积用券(支付)次数',
        `appraise_last_1d_good_count` bigint comment '最近1日好评次数',
        `appraise_last_1d_mid_count` bigint comment '最近1日中评次数',
        `appraise_last_1d_bad_count` bigint comment '最近1日差评次数',
        `appraise_last_7d_good_count` bigint comment '最近7日好评次数',
        `appraise_last_7d_mid_count` bigint comment '最近7日中评次数',
        `appraise_last_7d_bad_count` bigint comment '最近7日差评次数',
        `appraise_last_7d_default_count` bigint comment '最近7日默认评价次数',
        `appraise_last_30d_good_count` bigint comment '最近30日好评次数',
        `appraise_last_30d_mid_count` bigint comment '最近30日中评次数',
        `appraise_last_30d_bad_count` bigint comment '最近30日差评次数',
        `appraise_last_30d_default_count` bigint comment '最近30日默认评价次数',
        `appraise_good_count` bigint comment '累积好评次数',
        `appraise_mid_count` bigint comment '累积中评次数',
        `appraise_bad_count` bigint comment '累积差评次数',
        `appraise_default_count` bigint comment '累积默认评价次数'
    ) comment '会员主题宽表'
    partitioned by (`dt` string)
    stored as parquet
    location '/warehouse/gmall/dwt/dwt_user_topic/'
    tblproperties ("parquet.compression"="lzo");

      2)数据装载

        (1首日装载

    insert overwrite table dwt_user_topic partition (dt = '2021-06-08')
    select  t1.id user_id,                      --用户id
            login_date_first,                   --首次活跃日期
            login_date_last,                    --末次活跃日期
            nvl(login_date_1d_count,0),         --最近1日登录次数
            nvl(login_last_1d_day_count,0),     --最近1日登录天数
            nvl(login_last_7d_count,0),         --最近7日登录次数
            nvl(login_last_7d_day_count,0),     --最近7日登录天数
            nvl(login_last_30d_count,0),        --最近30日登录次数
            nvl(login_last_30d_day_count,0),    --最近30日登录天数
            nvl(login_count,0),                 --累积登录次数
            nvl(login_day_count,0),             --累积登录天数
            order_date_first,                   --首次下单时间
            order_date_last,                    --末次下单时间
            nvl(order_last_1d_count,0),         --最近1日下单次数
            nvl(order_activity_last_1d_count,0),--最近1日订单参与活动次数
            nvl(order_activity_reduce_last_1d_amount,0.0),      --最近1日订单减免金额(活动)
            nvl(order_coupon_last_1d_count,0),                  --最近1日下单用券次数
            nvl(order_coupon_reduce_last_1d_amount,0.0),        --最近1日订单减免金额(优惠券)
            nvl(order_last_1d_original_amount,0.0),             --最近1日原始下单金额
            nvl(order_last_1d_final_amount,0.0),                --最近1日最终下单金额
            nvl(order_last_7d_count,0),                         --最近7日下单次数
            nvl(order_activity_last_7d_count,0),                --最近7日订单参与活动次数
            nvl(order_activity_reduce_last_7d_amount,0.0),      --最近7日订单减免金额(活动)
            nvl(order_coupon_last_7d_count,0),                  --最近7日下单用券次数
            nvl(order_coupon_reduce_last_7d_amount,0.0),        --最近7日订单减免金额(优惠券)
            nvl(order_last_7d_original_amount,0.0),             --最近7日原始下单金额
            nvl(order_last_7d_final_amount,0.0),                --最近7日最终下单金额
            nvl(order_last_30d_count,0),                        --最近30日下单次数
            nvl(order_activity_last_30d_count,0),               --最近30日订单参与活动次数
            nvl(order_activity_reduce_last_30d_amount,0.0),     --最近30日订单减免金额(活动)
            nvl(order_coupon_last_30d_count,0),                 --最近30日下单用券次数
            nvl(order_coupon_reduce_last_30d_amount,0.0),       --最近30日订单减免金额(优惠券)
            nvl(order_last_30d_original_amount,0.0),            --最近30日原始下单金额
            nvl(order_last_30d_final_amount,0.0),               --最近30日最终下单金额
            nvl(order_count,0),                                 --累积下单次数
            nvl(order_activity_count,0),                        --累积订单参与活动次数
            nvl(order_activity_reduce_amount,0.0),              --累积订单减免金额(活动)
            nvl(order_coupon_count,0),                          --累积下单用券次数
            nvl(order_coupon_reduce_amount,0.0),                --累积订单减免金额(优惠券)
            nvl(order_original_amount,0.0),                     --累积原始下单金额
            nvl(order_final_amount,0.0),                        --累积最终下单金额
            payment_date_first,                                 --首次支付时间
            payment_date_last,                                  --末次支付时间
            nvl(payment_last_1d_count,0),                       --最近1日支付次数
            nvl(payment_last_1d_amount,0.0),                    --最近1日支付金额
            nvl(payment_last_7d_count,0),                       --最近7日支付次数
            nvl(payment_last_7d_amount,0.0),                    --最近7日支付金额
            nvl(payment_last_30d_count,0),                      --最近30日支付次数
            nvl(payment_last_30d_amount,0.0),                   --最近30日支付金额
            nvl(payment_count,0),                               --累积支付次数
            nvl(payment_amount,0.0),                            --累积支付金额
            nvl(refund_order_last_1d_count,0),                  --最近1日退单次数
            nvl(refund_order_last_1d_num,0),                    --最近1日退单件数
            nvl(refund_order_last_1d_amount,0.0),               --最近1日退单金额
            nvl(refund_order_last_7d_count,0),                  --最近7日退单次数
            nvl(refund_order_last_7d_num,0),                    --最近7日退单件数
            nvl(refund_order_last_7d_amount,0.0),               --最近7日退单金额
            nvl(refund_order_last_30d_count,0),                 --最近30日退单次数
            nvl(refund_order_last_30d_num,0),                   --最近30日退单件数
            nvl(refund_order_last_30d_amount,0.0),              --最近30日退单金额
            nvl(refund_order_count,0),                          --累积退单次数
            nvl(refund_order_num,0),                            --累积退单件数
            nvl(refund_order_amount,0.0),                       --累积退单金额
            nvl(refund_payment_last_1d_count,0),                --最近1日退款次数
            nvl(refund_payment_last_1d_num,0),                  --最近1日退款件数
            nvl(refund_payment_last_1d_amount,0.0),             --最近1日退款金额
            nvl(refund_payment_last_7d_count,0),                --最近7日退款次数
            nvl(refund_payment_last_7d_num,0),                  --最近7日退款件数
            nvl(refund_payment_last_7d_amount,0.0),             --最近7日退款金额
            nvl(refund_payment_last_30d_count,0),               --最近30日退款次数
            nvl(refund_payment_last_30d_num,0),                 --最近30日退款件数
            nvl(refund_payment_last_30d_amount,0.0),            --最近30日退款金额
            nvl(refund_payment_count,0),                        --累积退款次数
            nvl(refund_payment_num,0),                          --累积退款件数
            nvl(refund_payment_amount,0.0),                     --累积退款金额
            nvl(cart_last_1d_count,0),                          --最近1日加入购物车次数
            nvl(cart_last_7d_count,0),                          --最近7日加入购物车次数
            nvl(cart_last_30d_count,0),                         --最近30日加入购物车次数
            nvl(cart_count,0),                                  --累积加入购物车次数
            nvl(favor_last_1d_count,0),                         --最近1日收藏次数
            nvl(favor_last_7d_count,0),                         --最近7日收藏次数
            nvl(favor_last_30d_count,0),                        --最近30日收藏次数
            nvl(favor_count,0),                                 --累积收藏次数
            nvl(coupon_last_1d_get_count,0),                    --最近1日领券次数
            nvl(coupon_last_1d_using_count,0),                  --最近1日用券(下单)次数
            nvl(coupon_last_1d_used_count,0),                   --最近1日用券(支付)次数
            nvl(coupon_last_7d_get_count,0),                    --最近7日领券次数
            nvl(coupon_last_7d_using_count,0),                  --最近7日用券(下单)次数
            nvl(coupon_last_7d_used_count,0),                   --最近7日用券(支付)次数
            nvl(coupon_last_30d_get_count,0),                   --最近30日领券次数
            nvl(coupon_last_30d_using_count,0),                 --最近30日用券(下单)次数
            nvl(coupon_last_30d_used_count,0),                  --最近30日用券(支付)次数
            nvl(coupon_get_count,0),                            --累积领券次数
            nvl(coupon_using_count,0),                          --累积用券(下单)次数
            nvl(coupon_used_count,0),                           --累积用券(支付)次数
            nvl(appraise_last_1d_good_count,0),                 --最近1日好评次数
            nvl(appraise_last_1d_mid_count,0),                  --最近1日中评次数
            nvl(appraise_last_1d_bad_count,0),                  --最近1日差评次数
            nvl(appraise_last_7d_good_count,0),                 --最近7日好评次数
            nvl(appraise_last_7d_mid_count,0),                  --最近7日中评次数
            nvl(appraise_last_7d_bad_count,0),                  --最近7日差评次数
            nvl(appraise_last_7d_default_count,0),              --最近7日默认评价次数
            nvl(appraise_last_30d_good_count,0),                --最近30日好评次数
            nvl(appraise_last_30d_mid_count,0),                 --最近30日中评次数
            nvl(appraise_last_30d_bad_count,0),                 --最近30日差评次数
            nvl(appraise_last_30d_default_count,0),             --最近30日默认评价次数
            nvl(appraise_good_count,0),                         --累积好评次数
            nvl(appraise_mid_count,0),                          --累积中评次数
            nvl(appraise_bad_count,0),                          --累积差评次数
            nvl(appraise_default_count,0)                       --累积默认评价次数
    from
    (
        --从dim_user_info 取 全部的用户
        select id
        -- 按照用户信息的end_date分区,已经过期的,放入过期分区,9999-99-99分区存放的是最新的用户数据
        from dim_user_info
        where dt = '9999-99-99'
    ) t1
    left join
    (select  user_id,
            min(dt) login_date_first,
            max(dt) login_date_last,
            min(`if`(order_count > 0 , dt ,null)) order_date_first,
            max(`if`(order_count > 0 , dt ,null)) order_date_last,
            min(`if`(payment_count > 0 , dt ,null)) payment_date_first,
            max(`if`(payment_count > 0 , dt ,null))  payment_date_last,
            sum(`if`(dt > date_sub('2021-06-08',7),1,0)) login_last_7d_day_count,
            sum(`if`(dt > date_sub('2021-06-08',30),1,0)) login_last_30d_day_count,
            sum(`if`(dt='2021-06-08',1,0)) login_last_1d_day_count,
            count(*) login_day_count,
            --最近30日
            sum(if(dt > date_sub('2021-06-08',30),login_count,0)) login_last_30d_count,
            sum(if(dt > date_sub('2021-06-08',30),order_count,0)) order_last_30d_count,
            sum(if(dt > date_sub('2021-06-08',30),order_activity_count,0)) order_activity_last_30d_count,
            sum(if(dt > date_sub('2021-06-08',30),order_activity_reduce_amount,0)) order_activity_reduce_last_30d_amount,
            sum(if(dt > date_sub('2021-06-08',30),order_coupon_count,0)) order_coupon_last_30d_count,
            sum(if(dt > date_sub('2021-06-08',30),order_coupon_reduce_amount,0)) order_coupon_reduce_last_30d_amount,
            sum(if(dt > date_sub('2021-06-08',30),order_original_amount,0)) order_last_30d_original_amount,
            sum(if(dt > date_sub('2021-06-08',30),order_final_amount,0)) order_last_30d_final_amount,
            sum(if(dt > date_sub('2021-06-08',30),payment_count,0)) payment_last_30d_count,
            sum(if(dt > date_sub('2021-06-08',30),payment_amount,0)) payment_last_30d_amount,
            sum(if(dt > date_sub('2021-06-08',30),refund_order_count,0)) refund_order_last_30d_count,
            sum(if(dt > date_sub('2021-06-08',30),refund_order_num,0)) refund_order_last_30d_num,
            sum(if(dt > date_sub('2021-06-08',30),refund_order_amount,0)) refund_order_last_30d_amount,
            sum(if(dt > date_sub('2021-06-08',30),refund_payment_count,0)) refund_payment_last_30d_count,
            sum(if(dt > date_sub('2021-06-08',30),refund_payment_num,0)) refund_payment_last_30d_num,
            sum(if(dt > date_sub('2021-06-08',30),refund_payment_amount,0)) refund_payment_last_30d_amount,
            sum(if(dt > date_sub('2021-06-08',30),cart_count,0)) cart_last_30d_count,
            sum(if(dt > date_sub('2021-06-08',30),favor_count,0)) favor_last_30d_count,
            sum(if(dt > date_sub('2021-06-08',30),coupon_get_count,0)) coupon_last_30d_get_count,
            sum(if(dt > date_sub('2021-06-08',30),coupon_using_count,0)) coupon_last_30d_using_count,
            sum(if(dt > date_sub('2021-06-08',30),coupon_used_count,0)) coupon_last_30d_used_count,
            sum(if(dt > date_sub('2021-06-08',30),appraise_good_count,0)) appraise_last_30d_good_count,
            sum(if(dt > date_sub('2021-06-08',30),appraise_mid_count,0)) appraise_last_30d_mid_count,
            sum(if(dt > date_sub('2021-06-08',30),appraise_bad_count,0)) appraise_last_30d_bad_count,
            sum(if(dt > date_sub('2021-06-08',30),appraise_default_count,0)) appraise_last_30d_default_count,
            --最近7日
            sum(if(dt > date_sub('2021-06-08',7) , login_count, 0 ) ) login_last_7d_count,
            sum(if(dt > date_sub('2021-06-08',7) , order_count, 0 ) ) order_last_7d_count,
            sum(if(dt > date_sub('2021-06-08',7) , order_activity_count, 0 ) ) order_activity_last_7d_count,
            sum(if(dt > date_sub('2021-06-08',7) , order_activity_reduce_amount, 0 ) ) order_activity_reduce_last_7d_amount,
            sum(if(dt > date_sub('2021-06-08',7) , order_coupon_count, 0 ) ) order_coupon_last_7d_count,
            sum(if(dt > date_sub('2021-06-08',7) , order_coupon_reduce_amount, 0 ) ) order_coupon_reduce_last_7d_amount,
            sum(if(dt > date_sub('2021-06-08',7) , order_original_amount, 0 ) ) order_last_7d_original_amount,
            sum(if(dt > date_sub('2021-06-08',7) , order_final_amount, 0 ) ) order_last_7d_final_amount,
            sum(if(dt > date_sub('2021-06-08',7) , payment_count, 0 ) ) payment_last_7d_count,
            sum(if(dt > date_sub('2021-06-08',7) , payment_amount, 0 ) ) payment_last_7d_amount,
            sum(if(dt > date_sub('2021-06-08',7) , refund_order_count, 0 ) ) refund_order_last_7d_count,
            sum(if(dt > date_sub('2021-06-08',7) , refund_order_num, 0 ) ) refund_order_last_7d_num,
            sum(if(dt > date_sub('2021-06-08',7) , refund_order_amount, 0 ) ) refund_order_last_7d_amount,
            sum(if(dt > date_sub('2021-06-08',7) , refund_payment_count, 0 ) ) refund_payment_last_7d_count,
            sum(if(dt > date_sub('2021-06-08',7) , refund_payment_num, 0 ) ) refund_payment_last_7d_num,
            sum(if(dt > date_sub('2021-06-08',7) , refund_payment_amount, 0 ) ) refund_payment_last_7d_amount,
            sum(if(dt > date_sub('2021-06-08',7) , cart_count, 0 ) ) cart_last_7d_count,
            sum(if(dt > date_sub('2021-06-08',7) , favor_count, 0 ) ) favor_last_7d_count,
            sum(if(dt > date_sub('2021-06-08',7) , coupon_get_count, 0 ) ) coupon_last_7d_get_count,
            sum(if(dt > date_sub('2021-06-08',7) , coupon_using_count, 0 ) ) coupon_last_7d_using_count,
            sum(if(dt > date_sub('2021-06-08',7) , coupon_used_count, 0 ) ) coupon_last_7d_used_count,
            sum(if(dt > date_sub('2021-06-08',7) , appraise_good_count, 0 ) ) appraise_last_7d_good_count,
            sum(if(dt > date_sub('2021-06-08',7) , appraise_mid_count, 0 ) ) appraise_last_7d_mid_count,
            sum(if(dt > date_sub('2021-06-08',7) , appraise_bad_count, 0 ) ) appraise_last_7d_bad_count,
            sum(if(dt > date_sub('2021-06-08',7) , appraise_default_count, 0 ) ) appraise_last_7d_default_count,
            --最近1日
            sum(if(dt > date_sub('2021-06-08',1) , login_count  , 0 ) ) login_date_1d_count,
            sum(if(dt > date_sub('2021-06-08',1) , order_count  , 0 ) ) order_last_1d_count,
            sum(if(dt > date_sub('2021-06-08',1) , order_activity_count  , 0 ) ) order_activity_last_1d_count,
            sum(if(dt > date_sub('2021-06-08',1) , order_activity_reduce_amount  , 0 ) ) order_activity_reduce_last_1d_amount,
            sum(if(dt > date_sub('2021-06-08',1) , order_coupon_count  , 0 ) ) order_coupon_last_1d_count,
            sum(if(dt > date_sub('2021-06-08',1) , order_coupon_reduce_amount  , 0 ) ) order_coupon_reduce_last_1d_amount,
            sum(if(dt > date_sub('2021-06-08',1) , order_original_amount  , 0 ) ) order_last_1d_original_amount,
            sum(if(dt > date_sub('2021-06-08',1) , order_final_amount  , 0 ) ) order_last_1d_final_amount,
            sum(if(dt > date_sub('2021-06-08',1) , payment_count  , 0 ) ) payment_last_1d_count,
            sum(if(dt > date_sub('2021-06-08',1) , payment_amount  , 0 ) ) payment_last_1d_amount,
            sum(if(dt > date_sub('2021-06-08',1) , refund_order_count  , 0 ) ) refund_order_last_1d_count,
            sum(if(dt > date_sub('2021-06-08',1) , refund_order_num  , 0 ) ) refund_order_last_1d_num,
            sum(if(dt > date_sub('2021-06-08',1) , refund_order_amount  , 0 ) ) refund_order_last_1d_amount,
            sum(if(dt > date_sub('2021-06-08',1) , refund_payment_count  , 0 ) ) refund_payment_last_1d_count,
            sum(if(dt > date_sub('2021-06-08',1) , refund_payment_num  , 0 ) ) refund_payment_last_1d_num,
            sum(if(dt > date_sub('2021-06-08',1) , refund_payment_amount  , 0 ) ) refund_payment_last_1d_amount,
            sum(if(dt > date_sub('2021-06-08',1) , cart_count  , 0 ) ) cart_last_1d_count,
            sum(if(dt > date_sub('2021-06-08',1) , favor_count  , 0 ) ) favor_last_1d_count,
            sum(if(dt > date_sub('2021-06-08',1) , coupon_get_count  , 0 ) ) coupon_last_1d_get_count,
            sum(if(dt > date_sub('2021-06-08',1) , coupon_using_count  , 0 ) ) coupon_last_1d_using_count,
            sum(if(dt > date_sub('2021-06-08',1) , coupon_used_count  , 0 ) ) coupon_last_1d_used_count,
            sum(if(dt > date_sub('2021-06-08',1) , appraise_good_count  , 0 ) ) appraise_last_1d_good_count,
            sum(if(dt > date_sub('2021-06-08',1) , appraise_mid_count  , 0 ) ) appraise_last_1d_mid_count,
            sum(if(dt > date_sub('2021-06-08',1) , appraise_bad_count  , 0 ) ) appraise_last_1d_bad_count,
            sum(if(dt > date_sub('2021-06-08',1) , appraise_default_count  , 0 ) ) appraise_last_1d_default_count,
            --各种累计
            sum(login_count) login_count,
            sum(order_count) order_count,
            sum(order_activity_count) order_activity_count,
            sum(order_activity_reduce_amount) order_activity_reduce_amount,
            sum(order_coupon_count) order_coupon_count,
            sum(order_coupon_reduce_amount) order_coupon_reduce_amount,
            sum(order_original_amount) order_original_amount,
            sum(order_final_amount) order_final_amount,
            sum(payment_count) payment_count,
            sum(payment_amount) payment_amount,
            sum(refund_order_count) refund_order_count,
            sum(refund_order_num) refund_order_num,
            sum(refund_order_amount) refund_order_amount,
            sum(refund_payment_count) refund_payment_count,
            sum(refund_payment_num) refund_payment_num,
            sum(refund_payment_amount) refund_payment_amount,
            sum(cart_count) cart_count,
            sum(favor_count) favor_count,
            sum(coupon_get_count) coupon_get_count,
            sum(coupon_using_count) coupon_using_count,
            sum(coupon_used_count) coupon_used_count,
            sum(appraise_good_count) appraise_good_count,
            sum(appraise_mid_count) appraise_mid_count,
            sum(appraise_bad_count) appraise_bad_count,
            sum(appraise_default_count) appraise_default_count
    from dws_user_action_daycount
    where dt <= '2021-06-08'
    group by user_id) t2
    on t1.id = t2.user_id;

        (2)每日装载

    insert overwrite table dwt_user_topic partition(dt='2021-06-09')
    select user_id,
           login_date_first,
           login_date_last,
           login_date_1d_count,
           login_last_1d_day_count,
           login_last_7d_count,
           login_last_7d_day_count,
           login_last_30d_count,
           login_last_30d_day_count,
           login_count,
           login_day_count,
           order_date_first,
           order_date_last,
           order_last_1d_count,
           order_activity_last_1d_count,
           order_activity_reduce_last_1d_amount,
           order_coupon_last_1d_count,
           order_coupon_reduce_last_1d_amount,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_last_7d_count,
           order_activity_last_7d_count,
           order_activity_reduce_last_7d_amount,
           order_coupon_last_7d_count,
           order_coupon_reduce_last_7d_amount,
           order_last_7d_original_amount,
           order_last_7d_final_amount,
           order_last_30d_count,
           order_activity_last_30d_count,
           order_activity_reduce_last_30d_amount,
           order_coupon_last_30d_count,
           order_coupon_reduce_last_30d_amount,
           order_last_30d_original_amount,
           order_last_30d_final_amount,
           order_count,
           order_activity_count,
           order_activity_reduce_amount,
           order_coupon_count,
           order_coupon_reduce_amount,
           order_original_amount,
           order_final_amount,
           payment_date_first,
           payment_date_last,
           payment_last_1d_count,
           payment_last_1d_amount,
           payment_last_7d_count,
           payment_last_7d_amount,
           payment_last_30d_count,
           payment_last_30d_amount,
           payment_count,
           payment_amount,
           refund_order_last_1d_count,
           refund_order_last_1d_num,
           refund_order_last_1d_amount,
           refund_order_last_7d_count,
           refund_order_last_7d_num,
           refund_order_last_7d_amount,
           refund_order_last_30d_count,
           refund_order_last_30d_num,
           refund_order_last_30d_amount,
           refund_order_count,
           refund_order_num,
           refund_order_amount,
           refund_payment_last_1d_count,
           refund_payment_last_1d_num,
           refund_payment_last_1d_amount,
           refund_payment_last_7d_count,
           refund_payment_last_7d_num,
           refund_payment_last_7d_amount,
           refund_payment_last_30d_count,
           refund_payment_last_30d_num,
           refund_payment_last_30d_amount,
           refund_payment_count,
           refund_payment_num,
           refund_payment_amount,
           cart_last_1d_count,
           cart_last_7d_count,
           cart_last_30d_count,
           cart_count,
           favor_last_1d_count,
           favor_last_7d_count,
           favor_last_30d_count,
           favor_count,
           coupon_last_1d_get_count,
           coupon_last_1d_using_count,
           coupon_last_1d_used_count,
           coupon_last_7d_get_count,
           coupon_last_7d_using_count,
           coupon_last_7d_used_count,
           coupon_last_30d_get_count,
           coupon_last_30d_using_count,
           coupon_last_30d_used_count,
           coupon_get_count,
           coupon_using_count,
           coupon_used_count,
           appraise_last_1d_good_count,
           appraise_last_1d_mid_count,
           appraise_last_1d_bad_count,
           appraise_last_7d_good_count,
           appraise_last_7d_mid_count,
           appraise_last_7d_bad_count,
           appraise_last_7d_default_count,
           appraise_last_30d_good_count,
           appraise_last_30d_mid_count,
           appraise_last_30d_bad_count,
           appraise_last_30d_default_count,
           appraise_good_count,
           appraise_mid_count,
           appraise_bad_count,
           appraise_default_count
    from
    (
    select
            nvl(dws_data.user_id, dwt_data.user_id) user_id,
            -- dwt层,已经登录过的用户,取dwt_data.login_date_first,dws层今日新登录的用户,取今日,dws层今日注册的新用户,但是没有登录(login_count进行判断),取null
            if(dwt_data.user_id is not null,dwt_data.login_date_first, `if`(dws_data.login_count = 0 ,null ,'2021-06-09')) login_date_first,
            -- 优先判断dws_data中的数据,如果为null,取dwt_data的login_date_last,否则判断是否login_count大于0,大于0取今天,否则取null
            `if`(dws_data.user_id is null,dwt_data.login_date_last, `if`(dws_data.login_count > 0 ,'2021-06-09' , null) ) login_date_last,
    
            -- 先判断dws_data.user_id 是否为null,为null,取dwt_data.order_date_first, 判断dwt_data.order_count > 0, 取dwt_data.order_date_first,
                   -- 否则判断 dws_data.order_count > 0 ,取当天,否则取null
            `if`(dws_data.user_id is null ,dwt_data.order_date_first, `if`(dwt_data.order_count > 0 ,dwt_data.order_date_first , `if`(dws_data.order_count > 0 ,'2021-06-09',null) )  ) order_date_first,
    
            -- 判断dws_data的order_count 是否 >0 , >0可以取当天,否则取dwt_data.order_date_last
             `if`(dws_data.order_count > 0 ,'2021-06-09',dwt_data.order_date_last) order_date_last,
    
            `if`(dws_data.user_id is null ,dwt_data.payment_date_first, `if`(dwt_data.payment_count > 0 ,dwt_data.payment_date_first , `if`(dws_data.payment_count > 0 ,'2021-06-09',null) )  ) payment_date_first,
             `if`(dws_data.payment_count > 0 ,'2021-06-09',dwt_data.payment_date_last) payment_date_last,
            -- 最近N天登录天数
            nvl(dwt_data.login_last_7d_day_count,0 ) + if(dws_data.login_count > 0 ,1,0) - if(dws_7days_ago_data.login_count > 0 ,1,0) login_last_7d_day_count,
            nvl(dwt_data.login_last_30d_day_count,0 ) + if(dws_data.login_count > 0 ,1,0) - if(dws_30days_ago_data.login_count > 0 ,1,0) login_last_30d_day_count,
            if(dws_data.login_count > 0 ,1,0) login_last_1d_day_count,
            nvl(dwt_data.login_day_count,0 ) + if(dws_data.login_count > 0 ,1,0) login_day_count,
                   --累积
                nvl(dwt_data.login_count , 0 ) + nvl(dws_data.login_count,0)   login_count,
            nvl(dwt_data.order_count , 0 ) + nvl(dws_data.order_count,0)   order_count,
            nvl(dwt_data.order_activity_count , 0 ) + nvl(dws_data.order_activity_count,0)   order_activity_count,
            nvl(dwt_data.order_activity_reduce_amount , 0 ) + nvl(dws_data.order_activity_reduce_amount,0)   order_activity_reduce_amount,
            nvl(dwt_data.order_coupon_count , 0 ) + nvl(dws_data.order_coupon_count,0)   order_coupon_count,
            nvl(dwt_data.order_coupon_reduce_amount , 0 ) + nvl(dws_data.order_coupon_reduce_amount,0)   order_coupon_reduce_amount,
            nvl(dwt_data.order_original_amount , 0 ) + nvl(dws_data.order_original_amount,0)   order_original_amount,
            nvl(dwt_data.order_final_amount , 0 ) + nvl(dws_data.order_final_amount,0)   order_final_amount,
            nvl(dwt_data.payment_count , 0 ) + nvl(dws_data.payment_count,0)   payment_count,
            nvl(dwt_data.payment_amount , 0 ) + nvl(dws_data.payment_amount,0)   payment_amount,
            nvl(dwt_data.refund_order_count , 0 ) + nvl(dws_data.refund_order_count,0)   refund_order_count,
            nvl(dwt_data.refund_order_num , 0 ) + nvl(dws_data.refund_order_num,0)   refund_order_num,
            nvl(dwt_data.refund_order_amount , 0 ) + nvl(dws_data.refund_order_amount,0)   refund_order_amount,
            nvl(dwt_data.refund_payment_count , 0 ) + nvl(dws_data.refund_payment_count,0)   refund_payment_count,
            nvl(dwt_data.refund_payment_num , 0 ) + nvl(dws_data.refund_payment_num,0)   refund_payment_num,
            nvl(dwt_data.refund_payment_amount , 0 ) + nvl(dws_data.refund_payment_amount,0)   refund_payment_amount,
            nvl(dwt_data.cart_count , 0 ) + nvl(dws_data.cart_count,0)   cart_count,
            nvl(dwt_data.favor_count , 0 ) + nvl(dws_data.favor_count,0)   favor_count,
            nvl(dwt_data.coupon_get_count , 0 ) + nvl(dws_data.coupon_get_count,0)   coupon_get_count,
            nvl(dwt_data.coupon_using_count , 0 ) + nvl(dws_data.coupon_using_count,0)   coupon_using_count,
            nvl(dwt_data.coupon_used_count , 0 ) + nvl(dws_data.coupon_used_count,0)   coupon_used_count,
            nvl(dwt_data.appraise_good_count , 0 ) + nvl(dws_data.appraise_good_count,0)   appraise_good_count,
            nvl(dwt_data.appraise_mid_count , 0 ) + nvl(dws_data.appraise_mid_count,0)   appraise_mid_count,
            nvl(dwt_data.appraise_bad_count , 0 ) + nvl(dws_data.appraise_bad_count,0)   appraise_bad_count,
            nvl(dwt_data.appraise_default_count , 0 ) + nvl(dws_data.appraise_default_count,0)   appraise_default_count,
                -- 最近1天  判断在dws层有没有数据,如果有,就取dws层当天统计的指标
            nvl(dws_data.login_count , 0 )  login_date_1d_count,
            nvl(dws_data.order_count , 0 )  order_last_1d_count,
            nvl(dws_data.order_activity_count , 0 )  order_activity_last_1d_count,
            nvl(dws_data.order_activity_reduce_amount , 0.0 )  order_activity_reduce_last_1d_amount,
            nvl(dws_data.order_coupon_count , 0 )  order_coupon_last_1d_count,
            nvl(dws_data.order_coupon_reduce_amount , 0.0)  order_coupon_reduce_last_1d_amount,
            nvl(dws_data.order_original_amount , 0.0 )  order_last_1d_original_amount,
            nvl(dws_data.order_final_amount , 0.0 )  order_last_1d_final_amount,
            nvl(dws_data.payment_count , 0 )  payment_last_1d_count,
            nvl(dws_data.payment_amount , 0.0 )  payment_last_1d_amount,
            nvl(dws_data.refund_order_count , 0 )  refund_order_last_1d_count,
            nvl(dws_data.refund_order_num , 0 )  refund_order_last_1d_num,
            nvl(dws_data.refund_order_amount , 0.0 )  refund_order_last_1d_amount,
            nvl(dws_data.refund_payment_count , 0 )  refund_payment_last_1d_count,
            nvl(dws_data.refund_payment_num , 0 )  refund_payment_last_1d_num,
            nvl(dws_data.refund_payment_amount , 0.0 )  refund_payment_last_1d_amount,
            nvl(dws_data.cart_count , 0 )  cart_last_1d_count,
            nvl(dws_data.favor_count , 0 )  favor_last_1d_count,
            nvl(dws_data.coupon_get_count , 0 )  coupon_last_1d_get_count,
            nvl(dws_data.coupon_using_count , 0 )  coupon_last_1d_using_count,
            nvl(dws_data.coupon_used_count , 0 )  coupon_last_1d_used_count,
            nvl(dws_data.appraise_good_count , 0 )  appraise_last_1d_good_count,
            nvl(dws_data.appraise_mid_count , 0 )  appraise_last_1d_mid_count,
            nvl(dws_data.appraise_bad_count , 0 )  appraise_last_1d_bad_count,
            nvl(dws_data.appraise_default_count , 0 )  appraise_last_1d_default_count,
                   -- 最近7天
            nvl(dwt_data.login_last_7d_count , 0 ) + nvl(dws_data.login_count,0 ) -nvl(dws_7days_ago_data.login_count,0 ) login_last_7d_count,
            nvl(dwt_data.order_last_7d_count , 0 ) + nvl(dws_data.order_count,0 ) -nvl(dws_7days_ago_data.order_count,0 ) order_last_7d_count,
            nvl(dwt_data.order_activity_last_7d_count , 0 ) + nvl(dws_data.order_activity_count,0 ) -nvl(dws_7days_ago_data.order_activity_count,0 ) order_activity_last_7d_count,
            nvl(dwt_data.order_activity_reduce_last_7d_amount , 0 ) + nvl(dws_data.order_activity_reduce_amount,0 ) -nvl(dws_7days_ago_data.order_activity_reduce_amount,0 ) order_activity_reduce_last_7d_amount,
            nvl(dwt_data.order_coupon_last_7d_count , 0 ) + nvl(dws_data.order_coupon_count,0 ) -nvl(dws_7days_ago_data.order_coupon_count,0 ) order_coupon_last_7d_count,
            nvl(dwt_data.order_coupon_reduce_last_7d_amount , 0 ) + nvl(dws_data.order_coupon_reduce_amount,0 ) -nvl(dws_7days_ago_data.order_coupon_reduce_amount,0 ) order_coupon_reduce_last_7d_amount,
            nvl(dwt_data.order_last_7d_original_amount , 0 ) + nvl(dws_data.order_original_amount,0 ) -nvl(dws_7days_ago_data.order_original_amount,0 ) order_last_7d_original_amount,
            nvl(dwt_data.order_last_7d_final_amount , 0 ) + nvl(dws_data.order_final_amount,0 ) -nvl(dws_7days_ago_data.order_final_amount,0 ) order_last_7d_final_amount,
            nvl(dwt_data.payment_last_7d_count , 0 ) + nvl(dws_data.payment_count,0 ) -nvl(dws_7days_ago_data.payment_count,0 ) payment_last_7d_count,
            nvl(dwt_data.payment_last_7d_amount , 0 ) + nvl(dws_data.payment_amount,0 ) -nvl(dws_7days_ago_data.payment_amount,0 ) payment_last_7d_amount,
            nvl(dwt_data.refund_order_last_7d_count , 0 ) + nvl(dws_data.refund_order_count,0 ) -nvl(dws_7days_ago_data.refund_order_count,0 ) refund_order_last_7d_count,
            nvl(dwt_data.refund_order_last_7d_num , 0 ) + nvl(dws_data.refund_order_num,0 ) -nvl(dws_7days_ago_data.refund_order_num,0 ) refund_order_last_7d_num,
            nvl(dwt_data.refund_order_last_7d_amount , 0 ) + nvl(dws_data.refund_order_amount,0 ) -nvl(dws_7days_ago_data.refund_order_amount,0 ) refund_order_last_7d_amount,
            nvl(dwt_data.refund_payment_last_7d_count , 0 ) + nvl(dws_data.refund_payment_count,0 ) -nvl(dws_7days_ago_data.refund_payment_count,0 ) refund_payment_last_7d_count,
            nvl(dwt_data.refund_payment_last_7d_num , 0 ) + nvl(dws_data.refund_payment_num,0 ) -nvl(dws_7days_ago_data.refund_payment_num,0 ) refund_payment_last_7d_num,
            nvl(dwt_data.refund_payment_last_7d_amount , 0 ) + nvl(dws_data.refund_payment_amount,0 ) -nvl(dws_7days_ago_data.refund_payment_amount,0 ) refund_payment_last_7d_amount,
            nvl(dwt_data.cart_last_7d_count , 0 ) + nvl(dws_data.cart_count,0 ) -nvl(dws_7days_ago_data.cart_count,0 ) cart_last_7d_count,
            nvl(dwt_data.favor_last_7d_count , 0 ) + nvl(dws_data.favor_count,0 ) -nvl(dws_7days_ago_data.favor_count,0 ) favor_last_7d_count,
            nvl(dwt_data.coupon_last_7d_get_count , 0 ) + nvl(dws_data.coupon_get_count,0 ) -nvl(dws_7days_ago_data.coupon_get_count,0 ) coupon_last_7d_get_count,
            nvl(dwt_data.coupon_last_7d_using_count , 0 ) + nvl(dws_data.coupon_using_count,0 ) -nvl(dws_7days_ago_data.coupon_using_count,0 ) coupon_last_7d_using_count,
            nvl(dwt_data.coupon_last_7d_used_count , 0 ) + nvl(dws_data.coupon_used_count,0 ) -nvl(dws_7days_ago_data.coupon_used_count,0 ) coupon_last_7d_used_count,
            nvl(dwt_data.appraise_last_7d_good_count , 0 ) + nvl(dws_data.appraise_good_count,0 ) -nvl(dws_7days_ago_data.appraise_good_count,0 ) appraise_last_7d_good_count,
            nvl(dwt_data.appraise_last_7d_mid_count , 0 ) + nvl(dws_data.appraise_mid_count,0 ) -nvl(dws_7days_ago_data.appraise_mid_count,0 ) appraise_last_7d_mid_count,
            nvl(dwt_data.appraise_last_7d_bad_count , 0 ) + nvl(dws_data.appraise_bad_count,0 ) -nvl(dws_7days_ago_data.appraise_bad_count,0 ) appraise_last_7d_bad_count,
            nvl(dwt_data.appraise_last_7d_default_count , 0 ) + nvl(dws_data.appraise_default_count,0 ) -nvl(dws_7days_ago_data.appraise_default_count,0 ) appraise_last_7d_default_count,
    
                   --最近30天
            nvl(dwt_data.login_last_30d_count , 0 ) + nvl(dws_data.login_count,0 ) -nvl(dws_30days_ago_data.login_count,0 ) login_last_30d_count,
            nvl(dwt_data.order_last_30d_count , 0 ) + nvl(dws_data.order_count,0 ) -nvl(dws_30days_ago_data.order_count,0 ) order_last_30d_count,
            nvl(dwt_data.order_activity_last_30d_count , 0 ) + nvl(dws_data.order_activity_count,0 ) -nvl(dws_30days_ago_data.order_activity_count,0 ) order_activity_last_30d_count,
            nvl(dwt_data.order_activity_reduce_last_30d_amount , 0 ) + nvl(dws_data.order_activity_reduce_amount,0 ) -nvl(dws_30days_ago_data.order_activity_reduce_amount,0 ) order_activity_reduce_last_30d_amount,
            nvl(dwt_data.order_coupon_last_30d_count , 0 ) + nvl(dws_data.order_coupon_count,0 ) -nvl(dws_30days_ago_data.order_coupon_count,0 ) order_coupon_last_30d_count,
            nvl(dwt_data.order_coupon_reduce_last_30d_amount , 0 ) + nvl(dws_data.order_coupon_reduce_amount,0 ) -nvl(dws_30days_ago_data.order_coupon_reduce_amount,0 ) order_coupon_reduce_last_30d_amount,
            nvl(dwt_data.order_last_30d_original_amount , 0 ) + nvl(dws_data.order_original_amount,0 ) -nvl(dws_30days_ago_data.order_original_amount,0 ) order_last_30d_original_amount,
            nvl(dwt_data.order_last_30d_final_amount , 0 ) + nvl(dws_data.order_final_amount,0 ) -nvl(dws_30days_ago_data.order_final_amount,0 ) order_last_30d_final_amount,
            nvl(dwt_data.payment_last_30d_count , 0 ) + nvl(dws_data.payment_count,0 ) -nvl(dws_30days_ago_data.payment_count,0 ) payment_last_30d_count,
            nvl(dwt_data.payment_last_30d_amount , 0 ) + nvl(dws_data.payment_amount,0 ) -nvl(dws_30days_ago_data.payment_amount,0 ) payment_last_30d_amount,
            nvl(dwt_data.refund_order_last_30d_count , 0 ) + nvl(dws_data.refund_order_count,0 ) -nvl(dws_30days_ago_data.refund_order_count,0 ) refund_order_last_30d_count,
            nvl(dwt_data.refund_order_last_30d_num , 0 ) + nvl(dws_data.refund_order_num,0 ) -nvl(dws_30days_ago_data.refund_order_num,0 ) refund_order_last_30d_num,
            nvl(dwt_data.refund_order_last_30d_amount , 0 ) + nvl(dws_data.refund_order_amount,0 ) -nvl(dws_30days_ago_data.refund_order_amount,0 ) refund_order_last_30d_amount,
            nvl(dwt_data.refund_payment_last_30d_count , 0 ) + nvl(dws_data.refund_payment_count,0 ) -nvl(dws_30days_ago_data.refund_payment_count,0 ) refund_payment_last_30d_count,
            nvl(dwt_data.refund_payment_last_30d_num , 0 ) + nvl(dws_data.refund_payment_num,0 ) -nvl(dws_30days_ago_data.refund_payment_num,0 ) refund_payment_last_30d_num,
            nvl(dwt_data.refund_payment_last_30d_amount , 0 ) + nvl(dws_data.refund_payment_amount,0 ) -nvl(dws_30days_ago_data.refund_payment_amount,0 ) refund_payment_last_30d_amount,
            nvl(dwt_data.cart_last_30d_count , 0 ) + nvl(dws_data.cart_count,0 ) -nvl(dws_30days_ago_data.cart_count,0 ) cart_last_30d_count,
            nvl(dwt_data.favor_last_30d_count , 0 ) + nvl(dws_data.favor_count,0 ) -nvl(dws_30days_ago_data.favor_count,0 ) favor_last_30d_count,
            nvl(dwt_data.coupon_last_30d_get_count , 0 ) + nvl(dws_data.coupon_get_count,0 ) -nvl(dws_30days_ago_data.coupon_get_count,0 ) coupon_last_30d_get_count,
            nvl(dwt_data.coupon_last_30d_using_count , 0 ) + nvl(dws_data.coupon_using_count,0 ) -nvl(dws_30days_ago_data.coupon_using_count,0 ) coupon_last_30d_using_count,
            nvl(dwt_data.coupon_last_30d_used_count , 0 ) + nvl(dws_data.coupon_used_count,0 ) -nvl(dws_30days_ago_data.coupon_used_count,0 ) coupon_last_30d_used_count,
            nvl(dwt_data.appraise_last_30d_good_count , 0 ) + nvl(dws_data.appraise_good_count,0 ) -nvl(dws_30days_ago_data.appraise_good_count,0 ) appraise_last_30d_good_count,
            nvl(dwt_data.appraise_last_30d_mid_count , 0 ) + nvl(dws_data.appraise_mid_count,0 ) -nvl(dws_30days_ago_data.appraise_mid_count,0 ) appraise_last_30d_mid_count,
            nvl(dwt_data.appraise_last_30d_bad_count , 0 ) + nvl(dws_data.appraise_bad_count,0 ) -nvl(dws_30days_ago_data.appraise_bad_count,0 ) appraise_last_30d_bad_count,
            nvl(dwt_data.appraise_last_30d_default_count , 0 ) + nvl(dws_data.appraise_default_count,0 ) -nvl(dws_30days_ago_data.appraise_default_count,0 ) appraise_last_30d_default_count
    from
    (
        select *
        from dwt_user_topic
        where dt = date_sub('2021-06-09',1)
    ) dwt_data
    full join
    (
    -- dws层 今日 所有产生行为的用户的指标  + dws层 今日 只注册未产生行为的新用户的指标
    select  nvl(t1.id,t2.user_id)  user_id,         --用户id
            nvl(login_count,0) login_count,         --登录次数
            nvl(cart_count,0) cart_count,           --加入购物车次数
            nvl(favor_count,0) favor_count,         --收藏次数
            nvl(order_count,0) order_count,         --下单次数
            nvl(order_activity_count,0) order_activity_count,                   --订单参与活动次数
            nvl(order_activity_reduce_amount,0) order_activity_reduce_amount,   --订单减免活动金额
            nvl(order_coupon_count,0) order_coupon_count,                       --订单用券次数
            nvl(order_coupon_reduce_amount,0) order_coupon_reduce_amount,       --订单减免用券金额
            nvl(order_original_amount,0) order_original_amount,     --订单原始金额
            nvl(order_final_amount,0) order_final_amount,           --金丹最终金额
            nvl(payment_count,0) payment_count,                     --支付次数
            nvl(payment_amount,0) payment_amount,                   --支付金额
            nvl(refund_order_count,0) refund_order_count,           --退单次数
            nvl(refund_order_num,0) refund_order_num,               --退单件数
            nvl(refund_order_amount,0) refund_order_amount,         --退单金额
            nvl(refund_payment_count,0) refund_payment_count,       --退款次数
            nvl(refund_payment_num,0) refund_payment_num,           --退款件数
            nvl(refund_payment_amount,0) refund_payment_amount,     --退款金额
            nvl(coupon_get_count,0) coupon_get_count,               --优惠券领取次数
            nvl(coupon_using_count,0) coupon_using_count,           --优惠券下单使用次数
            nvl(coupon_used_count,0) coupon_used_count,             --优惠券支付使用次数
            nvl(appraise_good_count,0) appraise_good_count,         --好评数
            nvl(appraise_mid_count,0) appraise_mid_count,           --中评数
            nvl(appraise_bad_count,0) appraise_bad_count,           --差评数
            nvl(appraise_default_count,0) appraise_default_count    --默认评价数
    from
    (
        --今日注册的所有的新用户
         select id
         from dim_user_info
         where dt = '9999-99-99'
         and date_format(create_time, 'yyyy-MM-dd') = '2021-06-09'
    ) t1
    full join
    (
            select *
            from dws_user_action_daycount
            where dt = '2021-06-09'
    ) t2 on t1.id = t2.user_id
    ) dws_data on dwt_data.user_id = dws_data.user_id
    left join
    (
        --取dws层在7天前的指标
        select *
        from dws_user_action_daycount
        where dt = date_sub('2021-06-09',7)
    ) dws_7days_ago_data on dwt_data.user_id = dws_7days_ago_data.user_id
    left join
    (
        --取dws层在30天前的指标
        select *
        from dws_user_action_daycount
        where dt = date_sub('2021-06-09',30)
    ) dws_30days_ago_data on dwt_data.user_id = dws_30days_ago_data.user_id
    ) tmp;

      3)查询加载结果

    8.3 商品主题

      1)建表语句

    drop table if exists dwt_sku_topic;
    create external table dwt_sku_topic(
        `sku_id` string comment 'sku_id',
        `order_last_1d_count` bigint comment '最近1日被下单次数',
        `order_last_1d_num` bigint comment '最近1日被下单件数',
        `order_activity_last_1d_count` bigint comment '最近1日参与活动被下单次数',
        `order_coupon_last_1d_count` bigint comment '最近1日使用优惠券被下单次数',
        `order_activity_reduce_last_1d_amount` decimal(16,2) comment '最近1日优惠金额(活动)',
        `order_coupon_reduce_last_1d_amount` decimal(16,2) comment '最近1日优惠金额(优惠券)',
        `order_last_1d_original_amount` decimal(16,2) comment '最近1日被下单原始金额',
        `order_last_1d_final_amount` decimal(16,2) comment '最近1日被下单最终金额',
        `order_last_7d_count` bigint comment '最近7日被下单次数',
        `order_last_7d_num` bigint comment '最近7日被下单件数',
        `order_activity_last_7d_count` bigint comment '最近7日参与活动被下单次数',
        `order_coupon_last_7d_count` bigint comment '最近7日使用优惠券被下单次数',
        `order_activity_reduce_last_7d_amount` decimal(16,2) comment '最近7日优惠金额(活动)',
        `order_coupon_reduce_last_7d_amount` decimal(16,2) comment '最近7日优惠金额(优惠券)',
        `order_last_7d_original_amount` decimal(16,2) comment '最近7日被下单原始金额',
        `order_last_7d_final_amount` decimal(16,2) comment '最近7日被下单最终金额',
        `order_last_30d_count` bigint comment '最近30日被下单次数',
        `order_last_30d_num` bigint comment '最近30日被下单件数',
        `order_activity_last_30d_count` bigint comment '最近30日参与活动被下单次数',
        `order_coupon_last_30d_count` bigint comment  '最近30日使用优惠券被下单次数',
        `order_activity_reduce_last_30d_amount` decimal(16,2) comment '最近30日优惠金额(活动)',
        `order_coupon_reduce_last_30d_amount` decimal(16,2) comment '最近30日优惠金额(优惠券)',
        `order_last_30d_original_amount` decimal(16,2) comment '最近30日被下单原始金额',
        `order_last_30d_final_amount` decimal(16,2) comment '最近30日被下单最终金额',
        `order_count` bigint comment '累积被下单次数',
        `order_num` bigint comment '累积被下单件数',
        `order_activity_count` bigint comment '累积参与活动被下单次数',
        `order_coupon_count` bigint comment '累积使用优惠券被下单次数',
        `order_activity_reduce_amount` decimal(16,2) comment '累积优惠金额(活动)',
        `order_coupon_reduce_amount` decimal(16,2) comment '累积优惠金额(优惠券)',
        `order_original_amount` decimal(16,2) comment '累积被下单原始金额',
        `order_final_amount` decimal(16,2) comment '累积被下单最终金额',
        `payment_last_1d_count` bigint comment '最近1日被支付次数',
        `payment_last_1d_num` bigint comment '最近1日被支付件数',
        `payment_last_1d_amount` decimal(16,2) comment '最近1日被支付金额',
        `payment_last_7d_count` bigint comment '最近7日被支付次数',
        `payment_last_7d_num` bigint comment '最近7日被支付件数',
        `payment_last_7d_amount` decimal(16,2) comment '最近7日被支付金额',
        `payment_last_30d_count` bigint comment '最近30日被支付次数',
        `payment_last_30d_num` bigint comment '最近30日被支付件数',
        `payment_last_30d_amount` decimal(16,2) comment '最近30日被支付金额',
        `payment_count` bigint comment '累积被支付次数',
        `payment_num` bigint comment '累积被支付件数',
        `payment_amount` decimal(16,2) comment '累积被支付金额',
        `refund_order_last_1d_count` bigint comment '最近1日退单次数',
        `refund_order_last_1d_num` bigint comment '最近1日退单件数',
        `refund_order_last_1d_amount` decimal(16,2) comment '最近1日退单金额',
        `refund_order_last_7d_count` bigint comment '最近7日退单次数',
        `refund_order_last_7d_num` bigint comment '最近7日退单件数',
        `refund_order_last_7d_amount` decimal(16,2) comment '最近7日退单金额',
        `refund_order_last_30d_count` bigint comment '最近30日退单次数',
        `refund_order_last_30d_num` bigint comment '最近30日退单件数',
        `refund_order_last_30d_amount` decimal(16,2) comment '最近30日退单金额',
        `refund_order_count` bigint comment '累积退单次数',
        `refund_order_num` bigint comment '累积退单件数',
        `refund_order_amount` decimal(16,2) comment '累积退单金额',
        `refund_payment_last_1d_count` bigint comment '最近1日退款次数',
        `refund_payment_last_1d_num` bigint comment '最近1日退款件数',
        `refund_payment_last_1d_amount` decimal(16,2) comment '最近1日退款金额',
        `refund_payment_last_7d_count` bigint comment '最近7日退款次数',
        `refund_payment_last_7d_num` bigint comment '最近7日退款件数',
        `refund_payment_last_7d_amount` decimal(16,2) comment '最近7日退款金额',
        `refund_payment_last_30d_count` bigint comment '最近30日退款次数',
        `refund_payment_last_30d_num` bigint comment '最近30日退款件数',
        `refund_payment_last_30d_amount` decimal(16,2) comment '最近30日退款金额',
        `refund_payment_count` bigint comment '累积退款次数',
        `refund_payment_num` bigint comment '累积退款件数',
        `refund_payment_amount` decimal(16,2) comment '累积退款金额',
        `cart_last_1d_count` bigint comment '最近1日被加入购物车次数',
        `cart_last_7d_count` bigint comment '最近7日被加入购物车次数',
        `cart_last_30d_count` bigint comment '最近30日被加入购物车次数',
        `cart_count` bigint comment '累积被加入购物车次数',
        `favor_last_1d_count` bigint comment '最近1日被收藏次数',
        `favor_last_7d_count` bigint comment '最近7日被收藏次数',
        `favor_last_30d_count` bigint comment '最近30日被收藏次数',
        `favor_count` bigint comment '累积被收藏次数',
        `appraise_last_1d_good_count` bigint comment '最近1日好评数',
        `appraise_last_1d_mid_count` bigint comment '最近1日中评数',
        `appraise_last_1d_bad_count` bigint comment '最近1日差评数',
        `appraise_last_1d_default_count` bigint comment '最近1日默认评价数',
        `appraise_last_7d_good_count` bigint comment '最近7日好评数',
        `appraise_last_7d_mid_count` bigint comment '最近7日中评数',
        `appraise_last_7d_bad_count` bigint comment '最近7日差评数',
        `appraise_last_7d_default_count` bigint comment '最近7日默认评价数',
        `appraise_last_30d_good_count` bigint comment '最近30日好评数',
        `appraise_last_30d_mid_count` bigint comment '最近30日中评数',
        `appraise_last_30d_bad_count` bigint comment '最近30日差评数',
        `appraise_last_30d_default_count` bigint comment '最近30日默认评价数',
        `appraise_good_count` bigint comment '累积好评数',
        `appraise_mid_count` bigint comment '累积中评数',
        `appraise_bad_count` bigint comment '累积差评数',
        `appraise_default_count` bigint comment '累积默认评价数'
    ) comment '商品主题宽表'
    partitioned by (`dt` string)
    stored as parquet
    location '/warehouse/gmall/dwt/dwt_sku_topic/'
    tblproperties ("parquet.compression"="lzo");

      2)数据装载

        (1首日装载

    insert overwrite table dwt_sku_topic partition (dt = '2021-06-08')
    select  t1.id,
            nvl(order_last_1d_count,0 )  order_last_1d_count,
            nvl(order_last_1d_num,0 )  order_last_1d_num,
            nvl(order_activity_last_1d_count,0 )  order_activity_last_1d_count,
            nvl(order_coupon_last_1d_count,0 )  order_coupon_last_1d_count,
            nvl(order_activity_reduce_last_1d_amount,0.0 )  order_activity_reduce_last_1d_amount,
            nvl(order_coupon_reduce_last_1d_amount,0.0 )  order_coupon_reduce_last_1d_amount,
            nvl(order_last_1d_original_amount,0.0 )  order_last_1d_original_amount,
            nvl(order_last_1d_final_amount,0.0 )  order_last_1d_final_amount,
            nvl(order_last_7d_count,0 )  order_last_7d_count,
            nvl(order_last_7d_num,0 )  order_last_7d_num,
            nvl(order_activity_last_7d_count,0 )  order_activity_last_7d_count,
            nvl(order_coupon_last_7d_count,0 )  order_coupon_last_7d_count,
            nvl(order_activity_reduce_last_7d_amount,0.0 )  order_activity_reduce_last_7d_amount,
            nvl(order_coupon_reduce_last_7d_amount,0.0 )  order_coupon_reduce_last_7d_amount,
            nvl(order_last_7d_original_amount,0.0 )  order_last_7d_original_amount,
            nvl(order_last_7d_final_amount,0.0 )  order_last_7d_final_amount,
            nvl(order_last_30d_count,0 )  order_last_30d_count,
            nvl(order_last_30d_num,0 )  order_last_30d_num,
            nvl(order_activity_last_30d_count,0 )  order_activity_last_30d_count,
            nvl(order_coupon_last_30d_count,0 )  order_coupon_last_30d_count,
            nvl(order_activity_reduce_last_30d_amount,0.0 )  order_activity_reduce_last_30d_amount,
            nvl(order_coupon_reduce_last_30d_amount,0.0 )  order_coupon_reduce_last_30d_amount,
            nvl(order_last_30d_original_amount,0.0 )  order_last_30d_original_amount,
            nvl(order_last_30d_final_amount,0.0 )  order_last_30d_final_amount,
            nvl(order_count,0 )  order_count,
            nvl(order_num,0 )  order_num,
            nvl(order_activity_count,0 )  order_activity_count,
            nvl(order_coupon_count,0 )  order_coupon_count,
            nvl(order_activity_reduce_amount,0.0 )  order_activity_reduce_amount,
            nvl(order_coupon_reduce_amount,0.0 )  order_coupon_reduce_amount,
            nvl(order_original_amount,0.0 )  order_original_amount,
            nvl(order_final_amount,0.0 )  order_final_amount,
            nvl(payment_last_1d_count,0 )  payment_last_1d_count,
            nvl(payment_last_1d_num,0 )  payment_last_1d_num,
            nvl(payment_last_1d_amount,0.0 )  payment_last_1d_amount,
            nvl(payment_last_7d_count,0 )  payment_last_7d_count,
            nvl(payment_last_7d_num,0 )  payment_last_7d_num,
            nvl(payment_last_7d_amount,0.0 )  payment_last_7d_amount,
            nvl(payment_last_30d_count,0 )  payment_last_30d_count,
            nvl(payment_last_30d_num,0 )  payment_last_30d_num,
            nvl(payment_last_30d_amount,0.0 )  payment_last_30d_amount,
            nvl(payment_count,0 )  payment_count,
            nvl(payment_num,0 )  payment_num,
            nvl(payment_amount,0.0 )  payment_amount,
            nvl(refund_order_last_1d_count,0 )  refund_order_last_1d_count,
            nvl(refund_order_last_1d_num,0 )  refund_order_last_1d_num,
            nvl(refund_order_last_1d_amount,0.0 )  refund_order_last_1d_amount,
            nvl(refund_order_last_7d_count,0 )  refund_order_last_7d_count,
            nvl(refund_order_last_7d_num,0 )  refund_order_last_7d_num,
            nvl(refund_order_last_7d_amount,0.0 )  refund_order_last_7d_amount,
            nvl(refund_order_last_30d_count,0 )  refund_order_last_30d_count,
            nvl(refund_order_last_30d_num,0 )  refund_order_last_30d_num,
            nvl(refund_order_last_30d_amount,0.0 )  refund_order_last_30d_amount,
            nvl(refund_order_count,0 )  refund_order_count,
            nvl(refund_order_num,0 )  refund_order_num,
            nvl(refund_order_amount,0.0 )  refund_order_amount,
            nvl(refund_payment_last_1d_count,0 )  refund_payment_last_1d_count,
            nvl(refund_payment_last_1d_num,0 )  refund_payment_last_1d_num,
            nvl(refund_payment_last_1d_amount,0.0 )  refund_payment_last_1d_amount,
            nvl(refund_payment_last_7d_count,0 )  refund_payment_last_7d_count,
            nvl(refund_payment_last_7d_num,0 )  refund_payment_last_7d_num,
            nvl(refund_payment_last_7d_amount,0.0 )  refund_payment_last_7d_amount,
            nvl(refund_payment_last_30d_count,0 )  refund_payment_last_30d_count,
            nvl(refund_payment_last_30d_num,0 )  refund_payment_last_30d_num,
            nvl(refund_payment_last_30d_amount,0.0 )  refund_payment_last_30d_amount,
            nvl(refund_payment_count,0 )  refund_payment_count,
            nvl(refund_payment_num,0 )  refund_payment_num,
            nvl(refund_payment_amount,0.0 )  refund_payment_amount,
            nvl(cart_last_1d_count,0 )  cart_last_1d_count,
            nvl(cart_last_7d_count,0 )  cart_last_7d_count,
            nvl(cart_last_30d_count,0 )  cart_last_30d_count,
            nvl(cart_count,0 )  cart_count,
            nvl(favor_last_1d_count,0 )  favor_last_1d_count,
            nvl(favor_last_7d_count,0 )  favor_last_7d_count,
            nvl(favor_last_30d_count,0 )  favor_last_30d_count,
            nvl(favor_count,0 )  favor_count,
            nvl(appraise_last_1d_good_count,0 )  appraise_last_1d_good_count,
            nvl(appraise_last_1d_mid_count,0 )  appraise_last_1d_mid_count,
            nvl(appraise_last_1d_bad_count,0 )  appraise_last_1d_bad_count,
            nvl(appraise_last_1d_default_count,0 )  appraise_last_1d_default_count,
            nvl(appraise_last_7d_good_count,0 )  appraise_last_7d_good_count,
            nvl(appraise_last_7d_mid_count,0 )  appraise_last_7d_mid_count,
            nvl(appraise_last_7d_bad_count,0 )  appraise_last_7d_bad_count,
            nvl(appraise_last_7d_default_count,0 )  appraise_last_7d_default_count,
            nvl(appraise_last_30d_good_count,0 )  appraise_last_30d_good_count,
            nvl(appraise_last_30d_mid_count,0 )  appraise_last_30d_mid_count,
            nvl(appraise_last_30d_bad_count,0 )  appraise_last_30d_bad_count,
            nvl(appraise_last_30d_default_count,0 )  appraise_last_30d_default_count,
            nvl(appraise_good_count,0 )  appraise_good_count,
            nvl(appraise_mid_count,0 )  appraise_mid_count,
            nvl(appraise_bad_count,0 )  appraise_bad_count,
            nvl(appraise_default_count,0 )  appraise_default_count
    from
    (
        --一部分sku,没有产生任何相关行为
        select id
        from dim_sku_info
        where dt = '2021-06-08'
    ) t1
    left join
    (
        -- 产生行为的sku指标
        select
                sku_id,
                --累积   sum()
                sum(order_num) order_num,
                sum(payment_num) payment_num,
                sum(refund_order_num) refund_order_num,
                sum(refund_payment_num) refund_payment_num,
                sum(order_count) order_count,
                sum(order_activity_count) order_activity_count,
                sum(order_coupon_count) order_coupon_count,
                sum(order_activity_reduce_amount) order_activity_reduce_amount,
                sum(order_coupon_reduce_amount) order_coupon_reduce_amount,
                sum(order_original_amount) order_original_amount,
                sum(order_final_amount) order_final_amount,
                sum(payment_count) payment_count,
                sum(payment_amount) payment_amount,
                sum(refund_order_count) refund_order_count,
                sum(refund_order_amount) refund_order_amount,
                sum(refund_payment_count) refund_payment_count,
                sum(refund_payment_amount) refund_payment_amount,
                sum(cart_count) cart_count,
                sum(favor_count) favor_count,
                sum(appraise_good_count) appraise_good_count,
                sum(appraise_mid_count) appraise_mid_count,
                sum(appraise_bad_count) appraise_bad_count,
                sum(appraise_default_count) appraise_default_count,
                --最近1日的 ,取 dt='2021-06-08' 当日dws表中的数据,之后进行sum
                sum(if(dt='2021-06-08',order_num , 0 )) order_last_1d_num,
                sum(if(dt='2021-06-08',payment_num , 0 )) payment_last_1d_num,
                sum(if(dt='2021-06-08',refund_order_num , 0 )) refund_order_last_1d_num,
                sum(if(dt='2021-06-08',refund_payment_num , 0 )) refund_payment_last_1d_num,
                sum(if(dt='2021-06-08',order_count , 0 )) order_last_1d_count,
                sum(if(dt='2021-06-08',order_activity_count , 0 )) order_activity_last_1d_count,
                sum(if(dt='2021-06-08',order_coupon_count , 0 )) order_coupon_last_1d_count,
                sum(if(dt='2021-06-08',order_activity_reduce_amount , 0 )) order_activity_reduce_last_1d_amount,
                sum(if(dt='2021-06-08',order_coupon_reduce_amount , 0 )) order_coupon_reduce_last_1d_amount,
                sum(if(dt='2021-06-08',order_original_amount , 0 )) order_last_1d_original_amount,
                sum(if(dt='2021-06-08',order_final_amount , 0 )) order_last_1d_final_amount,
                sum(if(dt='2021-06-08',payment_count , 0 )) payment_last_1d_count,
                sum(if(dt='2021-06-08',payment_amount , 0 )) payment_last_1d_amount,
                sum(if(dt='2021-06-08',refund_order_count , 0 )) refund_order_last_1d_count,
                sum(if(dt='2021-06-08',refund_order_amount , 0 )) refund_order_last_1d_amount,
                sum(if(dt='2021-06-08',refund_payment_count , 0 )) refund_payment_last_1d_count,
                sum(if(dt='2021-06-08',refund_payment_amount , 0 )) refund_payment_last_1d_amount,
                sum(if(dt='2021-06-08',cart_count , 0 )) cart_last_1d_count,
                sum(if(dt='2021-06-08',favor_count , 0 )) favor_last_1d_count,
                sum(if(dt='2021-06-08',appraise_good_count , 0 )) appraise_last_1d_good_count,
                sum(if(dt='2021-06-08',appraise_mid_count , 0 )) appraise_last_1d_mid_count,
                sum(if(dt='2021-06-08',appraise_bad_count , 0 )) appraise_last_1d_bad_count,
                sum(if(dt='2021-06-08',appraise_default_count , 0 )) appraise_last_1d_default_count,
                --最近7日的 ,取 dt>date_sub('2021-06-08',7) ,将符合要求的dws表中的数据,进行sum
                sum(if(dt>date_sub('2021-06-08',7),order_num , 0 )) order_last_7d_num,
                sum(if(dt>date_sub('2021-06-08',7),payment_num , 0 )) payment_last_7d_num,
                sum(if(dt>date_sub('2021-06-08',7),refund_order_num , 0 )) refund_order_last_7d_num,
                sum(if(dt>date_sub('2021-06-08',7),refund_payment_num , 0 )) refund_payment_last_7d_num,
                sum(if(dt>date_sub('2021-06-08',7),order_count , 0 )) order_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),order_activity_count , 0 )) order_activity_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),order_coupon_count , 0 )) order_coupon_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),order_activity_reduce_amount , 0 )) order_activity_reduce_last_7d_amount,
                sum(if(dt>date_sub('2021-06-08',7),order_coupon_reduce_amount , 0 )) order_coupon_reduce_last_7d_amount,
                sum(if(dt>date_sub('2021-06-08',7),order_original_amount , 0 )) order_last_7d_original_amount,
                sum(if(dt>date_sub('2021-06-08',7),order_final_amount , 0 )) order_last_7d_final_amount,
                sum(if(dt>date_sub('2021-06-08',7),payment_count , 0 )) payment_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),payment_amount , 0 )) payment_last_7d_amount,
                sum(if(dt>date_sub('2021-06-08',7),refund_order_count , 0 )) refund_order_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),refund_order_amount , 0 )) refund_order_last_7d_amount,
                sum(if(dt>date_sub('2021-06-08',7),refund_payment_count , 0 )) refund_payment_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),refund_payment_amount , 0 )) refund_payment_last_7d_amount,
                sum(if(dt>date_sub('2021-06-08',7),cart_count , 0 )) cart_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),favor_count , 0 )) favor_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),appraise_good_count , 0 )) appraise_last_7d_good_count,
                sum(if(dt>date_sub('2021-06-08',7),appraise_mid_count , 0 )) appraise_last_7d_mid_count,
                sum(if(dt>date_sub('2021-06-08',7),appraise_bad_count , 0 )) appraise_last_7d_bad_count,
                sum(if(dt>date_sub('2021-06-08',7),appraise_default_count , 0 )) appraise_last_7d_default_count,
                --最近30日的 ,取 dt>date_sub('2021-06-08',30) ,将符合要求的dws表中的数据,进行sum
                sum(if(dt>date_sub('2021-06-08',30),order_num , 0 )) order_last_30d_num,
                sum(if(dt>date_sub('2021-06-08',30),payment_num , 0 )) payment_last_30d_num,
                sum(if(dt>date_sub('2021-06-08',30),refund_order_num , 0 )) refund_order_last_30d_num,
                sum(if(dt>date_sub('2021-06-08',30),refund_payment_num , 0 )) refund_payment_last_30d_num,
                sum(if(dt>date_sub('2021-06-08',30),order_count , 0 )) order_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),order_activity_count , 0 )) order_activity_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),order_coupon_count , 0 )) order_coupon_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),order_activity_reduce_amount , 0 )) order_activity_reduce_last_30d_amount,
                sum(if(dt>date_sub('2021-06-08',30),order_coupon_reduce_amount , 0 )) order_coupon_reduce_last_30d_amount,
                sum(if(dt>date_sub('2021-06-08',30),order_original_amount , 0 )) order_last_30d_original_amount,
                sum(if(dt>date_sub('2021-06-08',30),order_final_amount , 0 )) order_last_30d_final_amount,
                sum(if(dt>date_sub('2021-06-08',30),payment_count , 0 )) payment_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),payment_amount , 0 )) payment_last_30d_amount,
                sum(if(dt>date_sub('2021-06-08',30),refund_order_count , 0 )) refund_order_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),refund_order_amount , 0 )) refund_order_last_30d_amount,
                sum(if(dt>date_sub('2021-06-08',30),refund_payment_count , 0 )) refund_payment_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),refund_payment_amount , 0 )) refund_payment_last_30d_amount,
                sum(if(dt>date_sub('2021-06-08',30),cart_count , 0 )) cart_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),favor_count , 0 )) favor_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),appraise_good_count , 0 )) appraise_last_30d_good_count,
                sum(if(dt>date_sub('2021-06-08',30),appraise_mid_count , 0 )) appraise_last_30d_mid_count,
                sum(if(dt>date_sub('2021-06-08',30),appraise_bad_count , 0 )) appraise_last_30d_bad_count,
                sum(if(dt>date_sub('2021-06-08',30),appraise_default_count , 0 )) appraise_last_30d_default_count
        from dws_sku_action_daycount
        where dt <= '2021-06-08'
        group by sku_id
    ) t2 on t1.id=t2.sku_id;

        (2)每日装载

    insert overwrite table dwt_sku_topic partition (dt = '2021-06-09')
    select sku_id,
           order_last_1d_count,
           order_last_1d_num,
           order_activity_last_1d_count,
           order_coupon_last_1d_count,
           order_activity_reduce_last_1d_amount,
           order_coupon_reduce_last_1d_amount,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_last_7d_count,
           order_last_7d_num,
           order_activity_last_7d_count,
           order_coupon_last_7d_count,
           order_activity_reduce_last_7d_amount,
           order_coupon_reduce_last_7d_amount,
           order_last_7d_original_amount,
           order_last_7d_final_amount,
           order_last_30d_count,
           order_last_30d_num,
           order_activity_last_30d_count,
           order_coupon_last_30d_count,
           order_activity_reduce_last_30d_amount,
           order_coupon_reduce_last_30d_amount,
           order_last_30d_original_amount,
           order_last_30d_final_amount,
           order_count,
           order_num,
           order_activity_count,
           order_coupon_count,
           order_activity_reduce_amount,
           order_coupon_reduce_amount,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_num,
           payment_last_1d_amount,
           payment_last_7d_count,
           payment_last_7d_num,
           payment_last_7d_amount,
           payment_last_30d_count,
           payment_last_30d_num,
           payment_last_30d_amount,
           payment_count,
           payment_num,
           payment_amount,
           refund_order_last_1d_count,
           refund_order_last_1d_num,
           refund_order_last_1d_amount,
           refund_order_last_7d_count,
           refund_order_last_7d_num,
           refund_order_last_7d_amount,
           refund_order_last_30d_count,
           refund_order_last_30d_num,
           refund_order_last_30d_amount,
           refund_order_count,
           refund_order_num,
           refund_order_amount,
           refund_payment_last_1d_count,
           refund_payment_last_1d_num,
           refund_payment_last_1d_amount,
           refund_payment_last_7d_count,
           refund_payment_last_7d_num,
           refund_payment_last_7d_amount,
           refund_payment_last_30d_count,
           refund_payment_last_30d_num,
           refund_payment_last_30d_amount,
           refund_payment_count,
           refund_payment_num,
           refund_payment_amount,
           cart_last_1d_count,
           cart_last_7d_count,
           cart_last_30d_count,
           cart_count,
           favor_last_1d_count,
           favor_last_7d_count,
           favor_last_30d_count,
           favor_count,
           appraise_last_1d_good_count,
           appraise_last_1d_mid_count,
           appraise_last_1d_bad_count,
           appraise_last_1d_default_count,
           appraise_last_7d_good_count,
           appraise_last_7d_mid_count,
           appraise_last_7d_bad_count,
           appraise_last_7d_default_count,
           appraise_last_30d_good_count,
           appraise_last_30d_mid_count,
           appraise_last_30d_bad_count,
           appraise_last_30d_default_count,
           appraise_good_count,
           appraise_mid_count,
           appraise_bad_count,
           appraise_default_count
    from
    (
    select  nvl(dwt_data.sku_id,dws_data.sku_id) sku_id,
            nvl(dwt_data.order_num,0 ) + nvl(dws_data.order_num ,0 ) order_num,
            nvl(dwt_data.payment_num,0 ) + nvl(dws_data.payment_num ,0 ) payment_num,
            nvl(dwt_data.refund_order_num,0 ) + nvl(dws_data.refund_order_num ,0 ) refund_order_num,
            nvl(dwt_data.refund_payment_num,0 ) + nvl(dws_data.refund_payment_num ,0 ) refund_payment_num,
            nvl(dwt_data.order_count,0 ) + nvl(dws_data.order_count ,0 ) order_count,
            nvl(dwt_data.order_activity_count,0 ) + nvl(dws_data.order_activity_count ,0 ) order_activity_count,
            nvl(dwt_data.order_coupon_count,0 ) + nvl(dws_data.order_coupon_count ,0 ) order_coupon_count,
            nvl(dwt_data.order_activity_reduce_amount,0 ) + nvl(dws_data.order_activity_reduce_amount ,0 ) order_activity_reduce_amount,
            nvl(dwt_data.order_coupon_reduce_amount,0 ) + nvl(dws_data.order_coupon_reduce_amount ,0 ) order_coupon_reduce_amount,
            nvl(dwt_data.order_original_amount,0 ) + nvl(dws_data.order_original_amount ,0 ) order_original_amount,
            nvl(dwt_data.order_final_amount,0 ) + nvl(dws_data.order_final_amount ,0 ) order_final_amount,
            nvl(dwt_data.payment_count,0 ) + nvl(dws_data.payment_count ,0 ) payment_count,
            nvl(dwt_data.payment_amount,0 ) + nvl(dws_data.payment_amount ,0 ) payment_amount,
            nvl(dwt_data.refund_order_count,0 ) + nvl(dws_data.refund_order_count ,0 ) refund_order_count,
            nvl(dwt_data.refund_order_amount,0 ) + nvl(dws_data.refund_order_amount ,0 ) refund_order_amount,
            nvl(dwt_data.refund_payment_count,0 ) + nvl(dws_data.refund_payment_count ,0 ) refund_payment_count,
            nvl(dwt_data.refund_payment_amount,0 ) + nvl(dws_data.refund_payment_amount ,0 ) refund_payment_amount,
            nvl(dwt_data.cart_count,0 ) + nvl(dws_data.cart_count ,0 ) cart_count,
            nvl(dwt_data.favor_count,0 ) + nvl(dws_data.favor_count ,0 ) favor_count,
            nvl(dwt_data.appraise_good_count,0 ) + nvl(dws_data.appraise_good_count ,0 ) appraise_good_count,
            nvl(dwt_data.appraise_mid_count,0 ) + nvl(dws_data.appraise_mid_count ,0 ) appraise_mid_count,
            nvl(dwt_data.appraise_bad_count,0 ) + nvl(dws_data.appraise_bad_count ,0 ) appraise_bad_count,
            nvl(dwt_data.appraise_default_count,0 ) + nvl(dws_data.appraise_default_count ,0 ) appraise_default_count,
            --最近1d 的,根据dws_data.x 在当日的值进行判断
            nvl(dws_data.order_num , 0 ) order_last_1d_num,
            nvl(dws_data.payment_num , 0 ) payment_last_1d_num,
            nvl(dws_data.refund_order_num , 0 ) refund_order_last_1d_num,
            nvl(dws_data.refund_payment_num , 0 ) refund_payment_last_1d_num,
            nvl(dws_data.order_count , 0 ) order_last_1d_count,
            nvl(dws_data.order_activity_count , 0 ) order_activity_last_1d_count,
            nvl(dws_data.order_coupon_count , 0 ) order_coupon_last_1d_count,
            nvl(dws_data.order_activity_reduce_amount , 0 ) order_activity_reduce_last_1d_amount,
            nvl(dws_data.order_coupon_reduce_amount , 0 ) order_coupon_reduce_last_1d_amount,
            nvl(dws_data.order_original_amount , 0 ) order_last_1d_original_amount,
            nvl(dws_data.order_final_amount , 0 ) order_last_1d_final_amount,
            nvl(dws_data.payment_count , 0 ) payment_last_1d_count,
            nvl(dws_data.payment_amount , 0 ) payment_last_1d_amount,
            nvl(dws_data.refund_order_count , 0 ) refund_order_last_1d_count,
            nvl(dws_data.refund_order_amount , 0 ) refund_order_last_1d_amount,
            nvl(dws_data.refund_payment_count , 0 ) refund_payment_last_1d_count,
            nvl(dws_data.refund_payment_amount , 0 ) refund_payment_last_1d_amount,
            nvl(dws_data.cart_count , 0 ) cart_last_1d_count,
            nvl(dws_data.favor_count , 0 ) favor_last_1d_count,
            nvl(dws_data.appraise_good_count , 0 ) appraise_last_1d_good_count,
            nvl(dws_data.appraise_mid_count , 0 ) appraise_last_1d_mid_count,
            nvl(dws_data.appraise_bad_count , 0 ) appraise_last_1d_bad_count,
            nvl(dws_data.appraise_default_count , 0 ) appraise_last_1d_default_count,
            --最近7d ,采取滑动方式处理
            nvl(dwt_data.order_last_7d_num,0) + nvl(dws_data.order_num,0) -nvl(dws_data_7daysago.order_num,0) order_last_7d_num,
            nvl(dwt_data.payment_last_7d_num,0) + nvl(dws_data.payment_num,0) -nvl(dws_data_7daysago.payment_num,0) payment_last_7d_num,
            nvl(dwt_data.refund_order_last_7d_num,0) + nvl(dws_data.refund_order_num,0) -nvl(dws_data_7daysago.refund_order_num,0) refund_order_last_7d_num,
            nvl(dwt_data.refund_payment_last_7d_num,0) + nvl(dws_data.refund_payment_num,0) -nvl(dws_data_7daysago.refund_payment_num,0) refund_payment_last_7d_num,
            nvl(dwt_data.order_last_7d_count,0) + nvl(dws_data.order_count,0) -nvl(dws_data_7daysago.order_count,0) order_last_7d_count,
            nvl(dwt_data.order_activity_last_7d_count,0) + nvl(dws_data.order_activity_count,0) -nvl(dws_data_7daysago.order_activity_count,0) order_activity_last_7d_count,
            nvl(dwt_data.order_coupon_last_7d_count,0) + nvl(dws_data.order_coupon_count,0) -nvl(dws_data_7daysago.order_coupon_count,0) order_coupon_last_7d_count,
            nvl(dwt_data.order_activity_reduce_last_7d_amount,0) + nvl(dws_data.order_activity_reduce_amount,0) -nvl(dws_data_7daysago.order_activity_reduce_amount,0) order_activity_reduce_last_7d_amount,
            nvl(dwt_data.order_coupon_reduce_last_7d_amount,0) + nvl(dws_data.order_coupon_reduce_amount,0) -nvl(dws_data_7daysago.order_coupon_reduce_amount,0) order_coupon_reduce_last_7d_amount,
            nvl(dwt_data.order_last_7d_original_amount,0) + nvl(dws_data.order_original_amount,0) -nvl(dws_data_7daysago.order_original_amount,0) order_last_7d_original_amount,
            nvl(dwt_data.order_last_7d_final_amount,0) + nvl(dws_data.order_final_amount,0) -nvl(dws_data_7daysago.order_final_amount,0) order_last_7d_final_amount,
            nvl(dwt_data.payment_last_7d_count,0) + nvl(dws_data.payment_count,0) -nvl(dws_data_7daysago.payment_count,0) payment_last_7d_count,
            nvl(dwt_data.payment_last_7d_amount,0) + nvl(dws_data.payment_amount,0) -nvl(dws_data_7daysago.payment_amount,0) payment_last_7d_amount,
            nvl(dwt_data.refund_order_last_7d_count,0) + nvl(dws_data.refund_order_count,0) -nvl(dws_data_7daysago.refund_order_count,0) refund_order_last_7d_count,
            nvl(dwt_data.refund_order_last_7d_amount,0) + nvl(dws_data.refund_order_amount,0) -nvl(dws_data_7daysago.refund_order_amount,0) refund_order_last_7d_amount,
            nvl(dwt_data.refund_payment_last_7d_count,0) + nvl(dws_data.refund_payment_count,0) -nvl(dws_data_7daysago.refund_payment_count,0) refund_payment_last_7d_count,
            nvl(dwt_data.refund_payment_last_7d_amount,0) + nvl(dws_data.refund_payment_amount,0) -nvl(dws_data_7daysago.refund_payment_amount,0) refund_payment_last_7d_amount,
            nvl(dwt_data.cart_last_7d_count,0) + nvl(dws_data.cart_count,0) -nvl(dws_data_7daysago.cart_count,0) cart_last_7d_count,
            nvl(dwt_data.favor_last_7d_count,0) + nvl(dws_data.favor_count,0) -nvl(dws_data_7daysago.favor_count,0) favor_last_7d_count,
            nvl(dwt_data.appraise_last_7d_good_count,0) + nvl(dws_data.appraise_good_count,0) -nvl(dws_data_7daysago.appraise_good_count,0) appraise_last_7d_good_count,
            nvl(dwt_data.appraise_last_7d_mid_count,0) + nvl(dws_data.appraise_mid_count,0) -nvl(dws_data_7daysago.appraise_mid_count,0) appraise_last_7d_mid_count,
            nvl(dwt_data.appraise_last_7d_bad_count,0) + nvl(dws_data.appraise_bad_count,0) -nvl(dws_data_7daysago.appraise_bad_count,0) appraise_last_7d_bad_count,
            nvl(dwt_data.appraise_last_7d_default_count,0) + nvl(dws_data.appraise_default_count,0) -nvl(dws_data_7daysago.appraise_default_count,0) appraise_last_7d_default_count,
            nvl(dwt_data.order_last_30d_num,0) + nvl(dws_data.order_num,0) -nvl(dws_data_30daysago.order_num,0) order_last_30d_num,
            nvl(dwt_data.payment_last_30d_num,0) + nvl(dws_data.payment_num,0) -nvl(dws_data_30daysago.payment_num,0) payment_last_30d_num,
            nvl(dwt_data.refund_order_last_30d_num,0) + nvl(dws_data.refund_order_num,0) -nvl(dws_data_30daysago.refund_order_num,0) refund_order_last_30d_num,
            nvl(dwt_data.refund_payment_last_30d_num,0) + nvl(dws_data.refund_payment_num,0) -nvl(dws_data_30daysago.refund_payment_num,0) refund_payment_last_30d_num,
            nvl(dwt_data.order_last_30d_count,0) + nvl(dws_data.order_count,0) -nvl(dws_data_30daysago.order_count,0) order_last_30d_count,
            nvl(dwt_data.order_activity_last_30d_count,0) + nvl(dws_data.order_activity_count,0) -nvl(dws_data_30daysago.order_activity_count,0) order_activity_last_30d_count,
            nvl(dwt_data.order_coupon_last_30d_count,0) + nvl(dws_data.order_coupon_count,0) -nvl(dws_data_30daysago.order_coupon_count,0) order_coupon_last_30d_count,
            nvl(dwt_data.order_activity_reduce_last_30d_amount,0) + nvl(dws_data.order_activity_reduce_amount,0) -nvl(dws_data_30daysago.order_activity_reduce_amount,0) order_activity_reduce_last_30d_amount,
            nvl(dwt_data.order_coupon_reduce_last_30d_amount,0) + nvl(dws_data.order_coupon_reduce_amount,0) -nvl(dws_data_30daysago.order_coupon_reduce_amount,0) order_coupon_reduce_last_30d_amount,
            nvl(dwt_data.order_last_30d_original_amount,0) + nvl(dws_data.order_original_amount,0) -nvl(dws_data_30daysago.order_original_amount,0) order_last_30d_original_amount,
            nvl(dwt_data.order_last_30d_final_amount,0) + nvl(dws_data.order_final_amount,0) -nvl(dws_data_30daysago.order_final_amount,0) order_last_30d_final_amount,
            nvl(dwt_data.payment_last_30d_count,0) + nvl(dws_data.payment_count,0) -nvl(dws_data_30daysago.payment_count,0) payment_last_30d_count,
            nvl(dwt_data.payment_last_30d_amount,0) + nvl(dws_data.payment_amount,0) -nvl(dws_data_30daysago.payment_amount,0) payment_last_30d_amount,
            nvl(dwt_data.refund_order_last_30d_count,0) + nvl(dws_data.refund_order_count,0) -nvl(dws_data_30daysago.refund_order_count,0) refund_order_last_30d_count,
            nvl(dwt_data.refund_order_last_30d_amount,0) + nvl(dws_data.refund_order_amount,0) -nvl(dws_data_30daysago.refund_order_amount,0) refund_order_last_30d_amount,
            nvl(dwt_data.refund_payment_last_30d_count,0) + nvl(dws_data.refund_payment_count,0) -nvl(dws_data_30daysago.refund_payment_count,0) refund_payment_last_30d_count,
            nvl(dwt_data.refund_payment_last_30d_amount,0) + nvl(dws_data.refund_payment_amount,0) -nvl(dws_data_30daysago.refund_payment_amount,0) refund_payment_last_30d_amount,
            nvl(dwt_data.cart_last_30d_count,0) + nvl(dws_data.cart_count,0) -nvl(dws_data_30daysago.cart_count,0) cart_last_30d_count,
            nvl(dwt_data.favor_last_30d_count,0) + nvl(dws_data.favor_count,0) -nvl(dws_data_30daysago.favor_count,0) favor_last_30d_count,
            nvl(dwt_data.appraise_last_30d_good_count,0) + nvl(dws_data.appraise_good_count,0) -nvl(dws_data_30daysago.appraise_good_count,0) appraise_last_30d_good_count,
            nvl(dwt_data.appraise_last_30d_mid_count,0) + nvl(dws_data.appraise_mid_count,0) -nvl(dws_data_30daysago.appraise_mid_count,0) appraise_last_30d_mid_count,
            nvl(dwt_data.appraise_last_30d_bad_count,0) + nvl(dws_data.appraise_bad_count,0) -nvl(dws_data_30daysago.appraise_bad_count,0) appraise_last_30d_bad_count,
            nvl(dwt_data.appraise_last_30d_default_count,0) + nvl(dws_data.appraise_default_count,0) -nvl(dws_data_30daysago.appraise_default_count,0) appraise_last_30d_default_count
    from
    (
        --求截止至6月9号前一天的累计数据
        select *
        from dwt_sku_topic
        where dt = date_sub('2021-06-09', 1)
    ) dwt_data
    full join
    (
        -- 求6月9日当天,所有的sku产生的行为指标 =  产生行为的sku的指标 dws  +  新增的没有产生行为的sku
        select nvl(t1.id,t2.sku_id) sku_id,
             nvl(order_num,0) order_num,
             nvl(payment_num,0) payment_num,
             nvl(refund_order_num,0) refund_order_num,
             nvl(refund_payment_num,0) refund_payment_num,
             nvl(order_count,0) order_count,
             nvl(order_activity_count,0) order_activity_count,
             nvl(order_coupon_count,0) order_coupon_count,
             nvl(order_activity_reduce_amount,0) order_activity_reduce_amount,
             nvl(order_coupon_reduce_amount,0) order_coupon_reduce_amount,
             nvl(order_original_amount,0) order_original_amount,
             nvl(order_final_amount,0) order_final_amount,
             nvl(payment_count,0) payment_count,
             nvl(payment_amount,0) payment_amount,
             nvl(refund_order_count,0) refund_order_count,
             nvl(refund_order_amount,0) refund_order_amount,
             nvl(refund_payment_count,0) refund_payment_count,
             nvl(refund_payment_amount,0) refund_payment_amount,
             nvl(cart_count,0) cart_count,
             nvl(favor_count,0) favor_count,
             nvl(appraise_good_count,0) appraise_good_count,
             nvl(appraise_mid_count,0) appraise_mid_count,
             nvl(appraise_bad_count,0) appraise_bad_count,
             nvl(appraise_default_count,0) appraise_default_count
        from
        (
            --取当日新增的商品
            select id
            from dim_sku_info
            where dt = '2021-06-09'
            and date_format(create_time,'yyyy-MM-dd') = '2021-06-09'
        ) t1
        full join
        (
            select *
            from dws_sku_action_daycount
            where dt = '2021-06-09'
        ) t2 on t1.id = t2.sku_id
    ) dws_data on dwt_data.sku_id = dws_data.sku_id
    left join
    (
        select *
        from dws_sku_action_daycount
        where dt = date_sub('2021-06-09',7)
    ) dws_data_7daysago on dwt_data.sku_id = dws_data_7daysago.sku_id
    left join
    (
        select *
        from dws_sku_action_daycount
        where dt = date_sub('2021-06-09',30)
    ) dws_data_30daysago on dwt_data.sku_id = dws_data_30daysago.sku_id
    ) tmp;

      3)查询加载结果

    8.4 优惠券主题

      1)建表语句

    drop table if exists dwt_coupon_topic;
    create external table dwt_coupon_topic(
        `coupon_id` string comment '优惠券ID',
        `get_last_1d_count` string comment '最近1日领取次数',
        `get_last_7d_count` string comment '最近7日领取次数',
        `get_last_30d_count` string comment '最近30日领取次数',
        `get_count` bigint comment '累积领取次数',
        `order_last_1d_count` bigint comment '最近1日使用某券下单次数',
        `order_last_1d_reduce_amount` decimal(16,2) comment '最近1日使用某券下单优惠金额',
        `order_last_1d_original_amount` decimal(16,2) comment '最近1日使用某券下单原始金额',
        `order_last_1d_final_amount` decimal(16,2) comment '最近1日使用某券下单最终金额',
        `order_last_7d_count` bigint comment '最近7日使用某券下单次数',
        `order_last_7d_reduce_amount` decimal(16,2) comment '最近7日使用某券下单优惠金额',
        `order_last_7d_original_amount` decimal(16,2) comment '最近7日使用某券下单原始金额',
        `order_last_7d_final_amount` decimal(16,2) comment '最近7日使用某券下单最终金额',
        `order_last_30d_count` bigint comment '最近30日使用某券下单次数',
        `order_last_30d_reduce_amount` decimal(16,2) comment '最近30日使用某券下单优惠金额',
        `order_last_30d_original_amount` decimal(16,2) comment '最近30日使用某券下单原始金额',
        `order_last_30d_final_amount` decimal(16,2) comment '最近30日使用某券下单最终金额',
        `order_count` bigint comment '累积使用(下单)次数',
        `order_reduce_amount` decimal(16,2) comment '使用某券累积下单优惠金额',
        `order_original_amount` decimal(16,2) comment '使用某券累积下单原始金额',
        `order_final_amount` decimal(16,2) comment '使用某券累积下单最终金额',
        `payment_last_1d_count` bigint comment '最近1日使用某券支付次数',
        `payment_last_1d_reduce_amount` decimal(16,2) comment '最近1日使用某券优惠金额',
        `payment_last_1d_amount` decimal(16,2) comment '最近1日使用某券支付金额',
        `payment_last_7d_count` bigint comment '最近7日使用某券支付次数',
        `payment_last_7d_reduce_amount` decimal(16,2) comment '最近7日使用某券优惠金额',
        `payment_last_7d_amount` decimal(16,2) comment '最近7日使用某券支付金额',
        `payment_last_30d_count` bigint comment '最近30日使用某券支付次数',
        `payment_last_30d_reduce_amount` decimal(16,2) comment '最近30日使用某券优惠金额',
        `payment_last_30d_amount` decimal(16,2) comment '最近30日使用某券支付金额',
        `payment_count` bigint comment '累积使用(支付)次数',
        `payment_reduce_amount` decimal(16,2) comment '使用某券累积优惠金额',
        `payment_amount` decimal(16,2) comment '使用某券累积支付金额',
        `expire_last_1d_count` bigint comment '最近1日过期次数',
        `expire_last_7d_count` bigint comment '最近7日过期次数',
        `expire_last_30d_count` bigint comment '最近30日过期次数',
        `expire_count` bigint comment '累积过期次数'
    ) comment '优惠券主题表'
    partitioned by (`dt` string)
    stored as parquet
    location '/warehouse/gmall/dwt/dwt_coupon_topic/'
    tblproperties ("parquet.compression"="lzo");

      2)数据装载

        (1首日装载

    insert overwrite table dwt_coupon_topic partition (dt = '2021-06-08')
    select coupon_id,
           get_last_1d_count,
           get_last_7d_count,
           get_last_30d_count,
           get_count,
           order_last_1d_count,
           order_last_1d_reduce_amount,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_last_7d_count,
           order_last_7d_reduce_amount,
           order_last_7d_original_amount,
           order_last_7d_final_amount,
           order_last_30d_count,
           order_last_30d_reduce_amount,
           order_last_30d_original_amount,
           order_last_30d_final_amount,
           order_count,
           order_reduce_amount,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_reduce_amount,
           payment_last_1d_amount,
           payment_last_7d_count,
           payment_last_7d_reduce_amount,
           payment_last_7d_amount,
           payment_last_30d_count,
           payment_last_30d_reduce_amount,
           payment_last_30d_amount,
           payment_count,
           payment_reduce_amount,
           payment_amount,
           expire_last_1d_count,
           expire_last_7d_count,
           expire_last_30d_count,
           expire_count
    from
    (
        select  coupon_id,                                              --优惠券ID
                sum(get_count) get_count,                               --领取次数
                sum(order_count) order_count,                           --使用优惠券下单次数
                sum(order_reduce_amount) order_reduce_amount,           --使用优惠券下单金额
                sum(order_original_amount) order_original_amount,       --使用优惠券下单原始金额
                sum(order_final_amount) order_final_amount,             --使用优惠券最终金额
                sum(payment_count) payment_count,                       --使用优惠券支付次数
                sum(payment_reduce_amount) payment_reduce_amount,       --使用优惠券支付优惠金额
                sum(payment_amount) payment_amount,                     --使用优惠券支付总金额
                sum(expire_count) expire_count,                         --过期次数
                sum(if(dt='2021-06-08',get_count,0 )) get_last_1d_count,
                sum(if(dt='2021-06-08',order_count,0 )) order_last_1d_count,
                sum(if(dt='2021-06-08',order_reduce_amount,0 )) order_last_1d_reduce_amount,
                sum(if(dt='2021-06-08',order_original_amount,0 )) order_last_1d_original_amount,
                sum(if(dt='2021-06-08',order_final_amount,0 )) order_last_1d_final_amount,
                sum(if(dt='2021-06-08',payment_count,0 )) payment_last_1d_count,
                sum(if(dt='2021-06-08',payment_reduce_amount,0 )) payment_last_1d_reduce_amount,
                sum(if(dt='2021-06-08',payment_amount,0 )) payment_last_1d_amount,
                sum(if(dt='2021-06-08',expire_count,0 )) expire_last_1d_count,
                sum(if(dt>date_sub('2021-06-08',7),get_count,0 )) get_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),order_count,0 )) order_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),order_reduce_amount,0 )) order_last_7d_reduce_amount,
                sum(if(dt>date_sub('2021-06-08',7),order_original_amount,0 )) order_last_7d_original_amount,
                sum(if(dt>date_sub('2021-06-08',7),order_final_amount,0 )) order_last_7d_final_amount,
                sum(if(dt>date_sub('2021-06-08',7),payment_count,0 )) payment_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),payment_reduce_amount,0 )) payment_last_7d_reduce_amount,
                sum(if(dt>date_sub('2021-06-08',7),payment_amount,0 )) payment_last_7d_amount,
                sum(if(dt>date_sub('2021-06-08',7),expire_count,0 )) expire_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',30),get_count,0 )) get_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),order_count,0 )) order_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),order_reduce_amount,0 )) order_last_30d_reduce_amount,
                sum(if(dt>date_sub('2021-06-08',30),order_original_amount,0 )) order_last_30d_original_amount,
                sum(if(dt>date_sub('2021-06-08',30),order_final_amount,0 )) order_last_30d_final_amount,
                sum(if(dt>date_sub('2021-06-08',30),payment_count,0 )) payment_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),payment_reduce_amount,0 )) payment_last_30d_reduce_amount,
                sum(if(dt>date_sub('2021-06-08',30),payment_amount,0 )) payment_last_30d_amount,
                sum(if(dt>date_sub('2021-06-08',30),expire_count,0 )) expire_last_30d_count
        from dws_coupon_info_daycount
        where dt <= '2021-06-08'
        group by coupon_id
    ) tmp;

        (2)每日装载

    insert overwrite table dwt_coupon_topic partition (dt = '2021-06-09')
    select coupon_id,
           get_last_1d_count,
           get_last_7d_count,
           get_last_30d_count,
           get_count,
           order_last_1d_count,
           order_last_1d_reduce_amount,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_last_7d_count,
           order_last_7d_reduce_amount,
           order_last_7d_original_amount,
           order_last_7d_final_amount,
           order_last_30d_count,
           order_last_30d_reduce_amount,
           order_last_30d_original_amount,
           order_last_30d_final_amount,
           order_count,
           order_reduce_amount,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_reduce_amount,
           payment_last_1d_amount,
           payment_last_7d_count,
           payment_last_7d_reduce_amount,
           payment_last_7d_amount,
           payment_last_30d_count,
           payment_last_30d_reduce_amount,
           payment_last_30d_amount,
           payment_count,
           payment_reduce_amount,
           payment_amount,
           expire_last_1d_count,
           expire_last_7d_count,
           expire_last_30d_count,
           expire_count
    from
    (
        select  nvl(dwt_data.coupon_id,dws_data.coupon_id) coupon_id,
                nvl(dwt_data.get_count , 0 ) + nvl(dws_data.get_count , 0 ) get_count,
                nvl(dwt_data.order_count , 0 ) + nvl(dws_data.order_count , 0 ) order_count,
                nvl(dwt_data.order_reduce_amount , 0 ) + nvl(dws_data.order_reduce_amount , 0 ) order_reduce_amount,
                nvl(dwt_data.order_original_amount , 0 ) + nvl(dws_data.order_original_amount , 0 ) order_original_amount,
                nvl(dwt_data.order_final_amount , 0 ) + nvl(dws_data.order_final_amount , 0 ) order_final_amount,
                nvl(dwt_data.payment_count , 0 ) + nvl(dws_data.payment_count , 0 ) payment_count,
                nvl(dwt_data.payment_reduce_amount , 0 ) + nvl(dws_data.payment_reduce_amount , 0 ) payment_reduce_amount,
                nvl(dwt_data.payment_amount , 0 ) + nvl(dws_data.payment_amount , 0 ) payment_amount,
                nvl(dwt_data.expire_count , 0 ) + nvl(dws_data.expire_count , 0 ) expire_count,
                nvl(dws_data.get_count,0) get_last_1d_count,
                nvl(dws_data.order_count,0) order_last_1d_count,
                nvl(dws_data.order_reduce_amount,0) order_last_1d_reduce_amount,
                nvl(dws_data.order_original_amount,0) order_last_1d_original_amount,
                nvl(dws_data.order_final_amount,0) order_last_1d_final_amount,
                nvl(dws_data.payment_count,0) payment_last_1d_count,
                nvl(dws_data.payment_reduce_amount,0) payment_last_1d_reduce_amount,
                nvl(dws_data.payment_amount,0) payment_last_1d_amount,
                nvl(dws_data.expire_count,0) expire_last_1d_count,
                nvl(dwt_data.get_last_7d_count , 0 ) + nvl(dws_data.get_count,0) - nvl(dws_data_7daysago.get_count,0) get_last_7d_count,
                nvl(dwt_data.order_last_7d_count , 0 ) + nvl(dws_data.order_count,0) - nvl(dws_data_7daysago.order_count,0) order_last_7d_count,
                nvl(dwt_data.order_last_7d_reduce_amount , 0 ) + nvl(dws_data.order_reduce_amount,0) - nvl(dws_data_7daysago.order_reduce_amount,0) order_last_7d_reduce_amount,
                nvl(dwt_data.order_last_7d_original_amount , 0 ) + nvl(dws_data.order_original_amount,0) - nvl(dws_data_7daysago.order_original_amount,0) order_last_7d_original_amount,
                nvl(dwt_data.order_last_7d_final_amount , 0 ) + nvl(dws_data.order_final_amount,0) - nvl(dws_data_7daysago.order_final_amount,0) order_last_7d_final_amount,
                nvl(dwt_data.payment_last_7d_count , 0 ) + nvl(dws_data.payment_count,0) - nvl(dws_data_7daysago.payment_count,0) payment_last_7d_count,
                nvl(dwt_data.payment_last_7d_reduce_amount , 0 ) + nvl(dws_data.payment_reduce_amount,0) - nvl(dws_data_7daysago.payment_reduce_amount,0) payment_last_7d_reduce_amount,
                nvl(dwt_data.payment_last_7d_amount , 0 ) + nvl(dws_data.payment_amount,0) - nvl(dws_data_7daysago.payment_amount,0) payment_last_7d_amount,
                nvl(dwt_data.expire_last_7d_count , 0 ) + nvl(dws_data.expire_count,0) - nvl(dws_data_7daysago.expire_count,0) expire_last_7d_count,
                nvl(dwt_data.get_last_30d_count , 0 ) + nvl(dws_data.get_count,0) - nvl(dws_data_30daysago.get_count,0) get_last_30d_count,
                nvl(dwt_data.order_last_30d_count , 0 ) + nvl(dws_data.order_count,0) - nvl(dws_data_30daysago.order_count,0) order_last_30d_count,
                nvl(dwt_data.order_last_30d_reduce_amount , 0 ) + nvl(dws_data.order_reduce_amount,0) - nvl(dws_data_30daysago.order_reduce_amount,0) order_last_30d_reduce_amount,
                nvl(dwt_data.order_last_30d_original_amount , 0 ) + nvl(dws_data.order_original_amount,0) - nvl(dws_data_30daysago.order_original_amount,0) order_last_30d_original_amount,
                nvl(dwt_data.order_last_30d_final_amount , 0 ) + nvl(dws_data.order_final_amount,0) - nvl(dws_data_30daysago.order_final_amount,0) order_last_30d_final_amount,
                nvl(dwt_data.payment_last_30d_count , 0 ) + nvl(dws_data.payment_count,0) - nvl(dws_data_30daysago.payment_count,0) payment_last_30d_count,
                nvl(dwt_data.payment_last_30d_reduce_amount , 0 ) + nvl(dws_data.payment_reduce_amount,0) - nvl(dws_data_30daysago.payment_reduce_amount,0) payment_last_30d_reduce_amount,
                nvl(dwt_data.payment_last_30d_amount , 0 ) + nvl(dws_data.payment_amount,0) - nvl(dws_data_30daysago.payment_amount,0) payment_last_30d_amount,
                nvl(dwt_data.expire_last_30d_count , 0 ) + nvl(dws_data.expire_count,0) - nvl(dws_data_30daysago.expire_count,0) expire_last_30d_count
        from
        (
            --求6月9号的前一天的累计数据
            select *
            from dwt_coupon_topic
            where dt = date_sub('2021-06-09',1)
        ) dwt_data
        full join
        (
            select *
            from dws_coupon_info_daycount
            where dt = 2021-06-09
        ) dws_data on dwt_data.coupon_id = dws_data.coupon_id
        left join
        (
            select *
            from dws_coupon_info_daycount
            where dt = date_sub('2021-06-09',7)
        ) dws_data_7daysago on dwt_data.coupon_id = dws_data_7daysago.coupon_id
        left join
        (
            select *
            from dws_coupon_info_daycount
            where dt = date_sub('2021-06-09',30)
        ) dws_data_30daysago on dwt_data.coupon_id = dws_data_30daysago.coupon_id
    ) tmp;

      3)查询加载结果

    8.5 活动主题

      1)建表语句

    drop table if exists dwt_activity_topic;
    create external table dwt_activity_topic(
        `activity_rule_id` string comment '活动规则ID',
        `activity_id` string comment '活动ID',
        `order_last_1d_count` bigint comment '最近1日参与某活动某规则下单次数',
        `order_last_1d_reduce_amount` decimal(16,2) comment '最近1日参与某活动某规则下单优惠金额',
        `order_last_1d_original_amount` decimal(16,2) comment '最近1日参与某活动某规则下单原始金额',
        `order_last_1d_final_amount`  decimal(16,2) comment '最近1日参与某活动某规则下单最终金额',
        `order_count` bigint comment '参与某活动某规则累积下单次数',
        `order_reduce_amount` decimal(16,2) comment '参与某活动某规则累积下单优惠金额',
        `order_original_amount` decimal(16,2) comment '参与某活动某规则累积下单原始金额',
        `order_final_amount` decimal(16,2) comment '参与某活动某规则累积下单最终金额',
        `payment_last_1d_count` bigint comment '最近1日参与某活动某规则支付次数',
        `payment_last_1d_reduce_amount` decimal(16,2) comment '最近1日参与某活动某规则支付优惠金额',
        `payment_last_1d_amount` decimal(16,2) comment '最近1日参与某活动某规则支付金额',
        `payment_count` bigint comment '参与某活动某规则累积支付次数',
        `payment_reduce_amount` decimal(16,2) comment '参与某活动某规则累积支付优惠金额',
        `payment_amount` decimal(16,2) comment '参与某活动某规则累积支付金额'
    ) comment '活动主题宽表'
    partitioned by (`dt` string)
    stored as parquet
    location '/warehouse/gmall/dwt/dwt_activity_topic/'
    tblproperties ("parquet.compression"="lzo");

      2)数据装载

        (1首日装载

    insert overwrite table dwt_activity_topic partition (dt = '2021-06-08')
    select activity_rule_id,
           activity_id,
           order_last_1d_count,
           order_last_1d_reduce_amount,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_count,
           order_reduce_amount,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_reduce_amount,
           payment_last_1d_amount,
           payment_count,
           payment_reduce_amount,
           payment_amount
    from
    (
        select  activity_rule_id,
                activity_id,
                --累积
                sum(order_count) order_count,
                sum(order_reduce_amount) order_reduce_amount,
                sum(order_original_amount) order_original_amount,
                sum(order_final_amount) order_final_amount,
                sum(payment_count) payment_count,
                sum(payment_reduce_amount) payment_reduce_amount,
                sum(payment_amount) payment_amount,
                --最近1天
                sum(if(dt = '2021-06-08' , order_count, 0 ) ) order_last_1d_count,
                sum(if(dt = '2021-06-08' , order_reduce_amount, 0 ) ) order_last_1d_reduce_amount,
                sum(if(dt = '2021-06-08' , order_original_amount, 0 ) ) order_last_1d_original_amount,
                sum(if(dt = '2021-06-08' , order_final_amount, 0 ) ) order_last_1d_final_amount,
                sum(if(dt = '2021-06-08' , payment_count, 0 ) ) payment_last_1d_count,
                sum(if(dt = '2021-06-08' , payment_reduce_amount, 0 ) ) payment_last_1d_reduce_amount,
                sum(if(dt = '2021-06-08' , payment_amount, 0 ) ) payment_last_1d_amount
        from dws_activity_info_daycount
        where dt <= '2021-06-08'
        group by activity_rule_id,activity_id
    ) tmp;

        (2)每日装载

    insert overwrite table dwt_activity_topic partition (dt = '2021-06-09')
    select activity_rule_id,
           activity_id,
           order_last_1d_count,
           order_last_1d_reduce_amount,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_count,
           order_reduce_amount,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_reduce_amount,
           payment_last_1d_amount,
           payment_count,
           payment_reduce_amount,
           payment_amount
    from
    (
        select  nvl(dwt_data.activity_rule_id,dws_data.activity_rule_id) activity_rule_id,
                nvl(dwt_data.activity_id,dws_data.activity_id) activity_id,
                -- 累积  dwt_data.x + dws_data.x
                nvl(dwt_data.order_count ,0 ) + nvl(dws_data.order_count ,0 ) order_count,
                nvl(dwt_data.order_reduce_amount ,0 ) + nvl(dws_data.order_reduce_amount ,0 ) order_reduce_amount,
                nvl(dwt_data.order_original_amount ,0 ) + nvl(dws_data.order_original_amount ,0 ) order_original_amount,
                nvl(dwt_data.order_final_amount ,0 ) + nvl(dws_data.order_final_amount ,0 ) order_final_amount,
                nvl(dwt_data.payment_count ,0 ) + nvl(dws_data.payment_count ,0 ) payment_count,
                nvl(dwt_data.payment_reduce_amount ,0 ) + nvl(dws_data.payment_reduce_amount ,0 ) payment_reduce_amount,
                nvl(dwt_data.payment_amount ,0 ) + nvl(dws_data.payment_amount ,0 ) payment_amount,
                -- 最近1天 ,判断dws_data.x 是否为NULL,为NULL补0,否则取
                nvl(dws_data.order_count , 0 ) order_last_1d_count,
                nvl(dws_data.order_reduce_amount , 0.0 ) order_last_1d_reduce_amount,
                nvl(dws_data.order_original_amount , 0.0 ) order_last_1d_original_amount,
                nvl(dws_data.order_final_amount , 0.0 ) order_last_1d_final_amount,
                nvl(dws_data.payment_count , 0 ) payment_last_1d_count,
                nvl(dws_data.payment_reduce_amount , 0.0 ) payment_last_1d_reduce_amount,
                nvl(dws_data.payment_amount , 0.0 ) payment_last_1d_amount
        from
        (
            --求出6月9号前一天的累计数据
            select *
            from dwt_activity_topic
            where dt = date_sub('2021-06-09',1)
        ) dwt_data
        full join
        (
            select *
            from dws_activity_info_daycount
            where dt = '2021-06-09'
        ) dws_data on dwt_data.activity_rule_id = dws_data.activity_rule_id
    ) tmp;

      3)查询加载结果

    8.6 地区主题

      1)建表语句

    drop table if exists dwt_area_topic;
    create external table dwt_area_topic(
        `province_id` string comment '省份编号',
        `visit_last_1d_count` bigint comment '最近1日访客访问次数',
        `login_last_1d_count` bigint comment '最近1日用户访问次数',
        `visit_last_7d_count` bigint comment '最近7日访客访问次数',
        `login_last_7d_count` bigint comment '最近7日用户访问次数',
        `visit_last_30d_count` bigint comment '最近30日访客访问次数',
        `login_last_30d_count` bigint comment '最近30日用户访问次数',
        `visit_count` bigint comment '累积访客访问次数',
        `login_count` bigint comment '累积用户访问次数',
        `order_last_1d_count` bigint comment '最近1天下单次数',
        `order_last_1d_original_amount` decimal(16,2) comment '最近1天下单原始金额',
        `order_last_1d_final_amount` decimal(16,2) comment '最近1天下单最终金额',
        `order_last_7d_count` bigint comment '最近7天下单次数',
        `order_last_7d_original_amount` decimal(16,2) comment '最近7天下单原始金额',
        `order_last_7d_final_amount` decimal(16,2) comment '最近7天下单最终金额',
        `order_last_30d_count` bigint comment '最近30天下单次数',
        `order_last_30d_original_amount` decimal(16,2) comment '最近30天下单原始金额',
        `order_last_30d_final_amount` decimal(16,2) comment '最近30天下单最终金额',
        `order_count` bigint comment '累积下单次数',
        `order_original_amount` decimal(16,2) comment '累积下单原始金额',
        `order_final_amount` decimal(16,2) comment '累积下单最终金额',
        `payment_last_1d_count` bigint comment '最近1天支付次数',
        `payment_last_1d_amount` decimal(16,2) comment '最近1天支付金额',
        `payment_last_7d_count` bigint comment '最近7天支付次数',
        `payment_last_7d_amount` decimal(16,2) comment '最近7天支付金额',
        `payment_last_30d_count` bigint comment '最近30天支付次数',
        `payment_last_30d_amount` decimal(16,2) comment '最近30天支付金额',
        `payment_count` bigint comment '累积支付次数',
        `payment_amount` decimal(16,2) comment '累积支付金额',
        `refund_order_last_1d_count` bigint comment '最近1天退单次数',
        `refund_order_last_1d_amount` decimal(16,2) comment '最近1天退单金额',
        `refund_order_last_7d_count` bigint comment '最近7天退单次数',
        `refund_order_last_7d_amount` decimal(16,2) comment '最近7天退单金额',
        `refund_order_last_30d_count` bigint comment '最近30天退单次数',
        `refund_order_last_30d_amount` decimal(16,2) comment '最近30天退单金额',
        `refund_order_count` bigint comment '累积退单次数',
        `refund_order_amount` decimal(16,2) comment '累积退单金额',
        `refund_payment_last_1d_count` bigint comment '最近1天退款次数',
        `refund_payment_last_1d_amount` decimal(16,2) comment '最近1天退款金额',
        `refund_payment_last_7d_count` bigint comment '最近7天退款次数',
        `refund_payment_last_7d_amount` decimal(16,2) comment '最近7天退款金额',
        `refund_payment_last_30d_count` bigint comment '最近30天退款次数',
        `refund_payment_last_30d_amount` decimal(16,2) comment '最近30天退款金额',
        `refund_payment_count` bigint comment '累积退款次数',
        `refund_payment_amount` decimal(16,2) comment '累积退款金额'
    ) comment '地区主题宽表'
    partitioned by (`dt` string)
    stored as parquet
    location '/warehouse/gmall/dwt/dwt_area_topic/'
    tblproperties ("parquet.compression"="lzo");

      2)数据装载

        (1首日装载

    insert overwrite table dwt_area_topic partition (dt = '2021-06-08')
    select province_id,
           visit_last_1d_count,
           login_last_1d_count,
           visit_last_7d_count,
           login_last_7d_count,
           visit_last_30d_count,
           login_last_30d_count,
           visit_count,
           login_count,
           order_last_1d_count,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_last_7d_count,
           order_last_7d_original_amount,
           order_last_7d_final_amount,
           order_last_30d_count,
           order_last_30d_original_amount,
           order_last_30d_final_amount,
           order_count,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_amount,
           payment_last_7d_count,
           payment_last_7d_amount,
           payment_last_30d_count,
           payment_last_30d_amount,
           payment_count,
           payment_amount,
           refund_order_last_1d_count,
           refund_order_last_1d_amount,
           refund_order_last_7d_count,
           refund_order_last_7d_amount,
           refund_order_last_30d_count,
           refund_order_last_30d_amount,
           refund_order_count,
           refund_order_amount,
           refund_payment_last_1d_count,
           refund_payment_last_1d_amount,
           refund_payment_last_7d_count,
           refund_payment_last_7d_amount,
           refund_payment_last_30d_count,
           refund_payment_last_30d_amount,
           refund_payment_count,
           refund_payment_amount
    from
    (
        select  province_id,
                sum(visit_count) visit_count,
                sum(login_count) login_count,
                sum(order_count) order_count,
                sum(order_original_amount) order_original_amount,
                sum(order_final_amount) order_final_amount,
                sum(payment_count) payment_count,
                sum(payment_amount) payment_amount,
                sum(refund_order_count) refund_order_count,
                sum(refund_order_amount) refund_order_amount,
                sum(refund_payment_count) refund_payment_count,
                sum(refund_payment_amount) refund_payment_amount,
                sum(if(dt='2021-06-08',visit_count,0)) visit_last_1d_count,
                sum(if(dt='2021-06-08',login_count,0)) login_last_1d_count,
                sum(if(dt='2021-06-08',order_count,0)) order_last_1d_count,
                sum(if(dt='2021-06-08',order_original_amount,0)) order_last_1d_original_amount,
                sum(if(dt='2021-06-08',order_final_amount,0)) order_last_1d_final_amount,
                sum(if(dt='2021-06-08',payment_count,0)) payment_last_1d_count,
                sum(if(dt='2021-06-08',payment_amount,0)) payment_last_1d_amount,
                sum(if(dt='2021-06-08',refund_order_count,0)) refund_order_last_1d_count,
                sum(if(dt='2021-06-08',refund_order_amount,0)) refund_order_last_1d_amount,
                sum(if(dt='2021-06-08',refund_payment_count,0)) refund_payment_last_1d_count,
                sum(if(dt='2021-06-08',refund_payment_amount,0)) refund_payment_last_1d_amount,
                sum(if(dt>date_sub('2021-06-08',7),visit_count,0)) visit_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),login_count,0)) login_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),order_count,0)) order_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),order_original_amount,0)) order_last_7d_original_amount,
                sum(if(dt>date_sub('2021-06-08',7),order_final_amount,0)) order_last_7d_final_amount,
                sum(if(dt>date_sub('2021-06-08',7),payment_count,0)) payment_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),payment_amount,0)) payment_last_7d_amount,
                sum(if(dt>date_sub('2021-06-08',7),refund_order_count,0)) refund_order_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),refund_order_amount,0)) refund_order_last_7d_amount,
                sum(if(dt>date_sub('2021-06-08',7),refund_payment_count,0)) refund_payment_last_7d_count,
                sum(if(dt>date_sub('2021-06-08',7),refund_payment_amount,0)) refund_payment_last_7d_amount,
                sum(if(dt>date_sub('2021-06-08',30),visit_count,0)) visit_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),login_count,0)) login_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),order_count,0)) order_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),order_original_amount,0)) order_last_30d_original_amount,
                sum(if(dt>date_sub('2021-06-08',30),order_final_amount,0)) order_last_30d_final_amount,
                sum(if(dt>date_sub('2021-06-08',30),payment_count,0)) payment_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),payment_amount,0)) payment_last_30d_amount,
                sum(if(dt>date_sub('2021-06-08',30),refund_order_count,0)) refund_order_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),refund_order_amount,0)) refund_order_last_30d_amount,
                sum(if(dt>date_sub('2021-06-08',30),refund_payment_count,0)) refund_payment_last_30d_count,
                sum(if(dt>date_sub('2021-06-08',30),refund_payment_amount,0)) refund_payment_last_30d_amount
        from dws_area_stats_daycount
        where dt <= '2021-06-08'
        group by province_id
    ) tmp;

        (2)每日装载

    insert overwrite table dwt_area_topic partition (dt = '2021-06-09')
    select province_id,
           visit_last_1d_count,
           login_last_1d_count,
           visit_last_7d_count,
           login_last_7d_count,
           visit_last_30d_count,
           login_last_30d_count,
           visit_count,
           login_count,
           order_last_1d_count,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_last_7d_count,
           order_last_7d_original_amount,
           order_last_7d_final_amount,
           order_last_30d_count,
           order_last_30d_original_amount,
           order_last_30d_final_amount,
           order_count,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_amount,
           payment_last_7d_count,
           payment_last_7d_amount,
           payment_last_30d_count,
           payment_last_30d_amount,
           payment_count,
           payment_amount,
           refund_order_last_1d_count,
           refund_order_last_1d_amount,
           refund_order_last_7d_count,
           refund_order_last_7d_amount,
           refund_order_last_30d_count,
           refund_order_last_30d_amount,
           refund_order_count,
           refund_order_amount,
           refund_payment_last_1d_count,
           refund_payment_last_1d_amount,
           refund_payment_last_7d_count,
           refund_payment_last_7d_amount,
           refund_payment_last_30d_count,
           refund_payment_last_30d_amount,
           refund_payment_count,
           refund_payment_amount
    from
    (
        select  dwt_data.province_id province_id,
                --最近1天
                dws_data.visit_count visit_last_1d_count,
                dws_data.login_count login_last_1d_count,
                dws_data.order_count order_last_1d_count,
                dws_data.order_original_amount order_last_1d_original_amount,
                dws_data.order_final_amount order_last_1d_final_amount,
                dws_data.payment_count payment_last_1d_count,
                dws_data.payment_amount payment_last_1d_amount,
                dws_data.refund_order_count refund_order_last_1d_count,
                dws_data.refund_order_amount refund_order_last_1d_amount,
                dws_data.refund_payment_count refund_payment_last_1d_count,
                dws_data.refund_payment_amount refund_payment_last_1d_amount,
                dwt_data.visit_count+ dws_data.visit_count visit_count,
                dwt_data.login_count+ dws_data.login_count login_count,
                dwt_data.order_count+ dws_data.order_count order_count,
                dwt_data.order_original_amount+ dws_data.order_original_amount order_original_amount,
                dwt_data.order_final_amount+ dws_data.order_final_amount order_final_amount,
                dwt_data.payment_count+ dws_data.payment_count payment_count,
                dwt_data.payment_amount+ dws_data.payment_amount payment_amount,
                dwt_data.refund_order_count+ dws_data.refund_order_count refund_order_count,
                dwt_data.refund_order_amount+ dws_data.refund_order_amount refund_order_amount,
                dwt_data.refund_payment_count+ dws_data.refund_payment_count refund_payment_count,
                dwt_data.refund_payment_amount+ dws_data.refund_payment_amount refund_payment_amount,
                --最近7天
                dwt_data.visit_last_7d_count+ dws_data.visit_count - dws_data_7daysago.visit_count visit_last_7d_count,
                dwt_data.login_last_7d_count+ dws_data.login_count - dws_data_7daysago.login_count login_last_7d_count,
                dwt_data.order_last_7d_count+ dws_data.order_count - dws_data_7daysago.order_count order_last_7d_count,
                dwt_data.order_last_7d_original_amount+ dws_data.order_original_amount - dws_data_7daysago.order_original_amount order_last_7d_original_amount,
                dwt_data.order_last_7d_final_amount+ dws_data.order_final_amount - dws_data_7daysago.order_final_amount order_last_7d_final_amount,
                dwt_data.payment_last_7d_count+ dws_data.payment_count - dws_data_7daysago.payment_count payment_last_7d_count,
                dwt_data.payment_last_7d_amount+ dws_data.payment_amount - dws_data_7daysago.payment_amount payment_last_7d_amount,
                dwt_data.refund_order_last_7d_count+ dws_data.refund_order_count - dws_data_7daysago.refund_order_count refund_order_last_7d_count,
                dwt_data.refund_order_last_7d_amount+ dws_data.refund_order_amount - dws_data_7daysago.refund_order_amount refund_order_last_7d_amount,
                dwt_data.refund_payment_last_7d_count+ dws_data.refund_payment_count - dws_data_7daysago.refund_payment_count refund_payment_last_7d_count,
                dwt_data.refund_payment_last_7d_amount+ dws_data.refund_payment_amount - dws_data_7daysago.refund_payment_amount refund_payment_last_7d_amount,
                --最近30天
                dwt_data.visit_last_30d_count+ dws_data.visit_count - dws_data_30daysago.visit_count visit_last_30d_count,
                dwt_data.login_last_30d_count+ dws_data.login_count - dws_data_30daysago.login_count login_last_30d_count,
                dwt_data.order_last_30d_count+ dws_data.order_count - dws_data_30daysago.order_count order_last_30d_count,
                dwt_data.order_last_30d_original_amount+ dws_data.order_original_amount - dws_data_30daysago.order_original_amount order_last_30d_original_amount,
                dwt_data.order_last_30d_final_amount+ dws_data.order_final_amount - dws_data_30daysago.order_final_amount order_last_30d_final_amount,
                dwt_data.payment_last_30d_count+ dws_data.payment_count - dws_data_30daysago.payment_count payment_last_30d_count,
                dwt_data.payment_last_30d_amount+ dws_data.payment_amount - dws_data_30daysago.payment_amount payment_last_30d_amount,
                dwt_data.refund_order_last_30d_count+ dws_data.refund_order_count - dws_data_30daysago.refund_order_count refund_order_last_30d_count,
                dwt_data.refund_order_last_30d_amount+ dws_data.refund_order_amount - dws_data_30daysago.refund_order_amount refund_order_last_30d_amount,
                dwt_data.refund_payment_last_30d_count+ dws_data.refund_payment_count - dws_data_30daysago.refund_payment_count refund_payment_last_30d_count,
                dwt_data.refund_payment_last_30d_amount+ dws_data.refund_payment_amount - dws_data_30daysago.refund_payment_amount refund_payment_last_30d_amount
        from
        (
            --求出当前日期的前一天的累计数据
            select *
            from dwt_area_topic
            where dt = date_sub('2021-06-09',1)
        ) dwt_data
        full join
        (
            --求出当前日期产生的数据
            select *
            from dws_area_stats_daycount
            where dt = '2021-06-09'
        ) dws_data on dwt_data.province_id = dws_data.province_id
        left join
        (
            select *
            from dws_area_stats_daycount
            where dt = date_sub('2021-06-09',7)
        ) dws_data_7daysago on dwt_data.province_id = dws_data_7daysago.province_id
        left join
        (
            select *
            from dws_area_stats_daycount
            where dt = date_sub('2021-06-09',30)
        ) dws_data_30daysago on dwt_data.province_id = dws_data_30daysago.province_id
    ) tmp;

      3)查询加载结果

    8.7 DWT首日数据导入脚本

      1)编写脚本

        (1)在/home/atguigu/bin目录下创建脚本dws_to_dwt_init.sh

    vim dws_to_dwt_init.sh
    #!/bin/bash
    
    APP=gmall
    
    if [ -n "$2" ] ;then
       do_date=$2
    else 
       echo "请传入日期参数"
       exit
    fi
    
    dwt_area_topic="
    insert overwrite table ${APP}.dwt_area_topic partition (dt = '$do_date')
    select province_id,
           visit_last_1d_count,
           login_last_1d_count,
           visit_last_7d_count,
           login_last_7d_count,
           visit_last_30d_count,
           login_last_30d_count,
           visit_count,
           login_count,
           order_last_1d_count,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_last_7d_count,
           order_last_7d_original_amount,
           order_last_7d_final_amount,
           order_last_30d_count,
           order_last_30d_original_amount,
           order_last_30d_final_amount,
           order_count,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_amount,
           payment_last_7d_count,
           payment_last_7d_amount,
           payment_last_30d_count,
           payment_last_30d_amount,
           payment_count,
           payment_amount,
           refund_order_last_1d_count,
           refund_order_last_1d_amount,
           refund_order_last_7d_count,
           refund_order_last_7d_amount,
           refund_order_last_30d_count,
           refund_order_last_30d_amount,
           refund_order_count,
           refund_order_amount,
           refund_payment_last_1d_count,
           refund_payment_last_1d_amount,
           refund_payment_last_7d_count,
           refund_payment_last_7d_amount,
           refund_payment_last_30d_count,
           refund_payment_last_30d_amount,
           refund_payment_count,
           refund_payment_amount
    from
    (
        select  province_id,
                sum(visit_count) visit_count,
                sum(login_count) login_count,
                sum(order_count) order_count,
                sum(order_original_amount) order_original_amount,
                sum(order_final_amount) order_final_amount,
                sum(payment_count) payment_count,
                sum(payment_amount) payment_amount,
                sum(refund_order_count) refund_order_count,
                sum(refund_order_amount) refund_order_amount,
                sum(refund_payment_count) refund_payment_count,
                sum(refund_payment_amount) refund_payment_amount,
                sum(if(dt='$do_date',visit_count,0)) visit_last_1d_count,
                sum(if(dt='$do_date',login_count,0)) login_last_1d_count,
                sum(if(dt='$do_date',order_count,0)) order_last_1d_count,
                sum(if(dt='$do_date',order_original_amount,0)) order_last_1d_original_amount,
                sum(if(dt='$do_date',order_final_amount,0)) order_last_1d_final_amount,
                sum(if(dt='$do_date',payment_count,0)) payment_last_1d_count,
                sum(if(dt='$do_date',payment_amount,0)) payment_last_1d_amount,
                sum(if(dt='$do_date',refund_order_count,0)) refund_order_last_1d_count,
                sum(if(dt='$do_date',refund_order_amount,0)) refund_order_last_1d_amount,
                sum(if(dt='$do_date',refund_payment_count,0)) refund_payment_last_1d_count,
                sum(if(dt='$do_date',refund_payment_amount,0)) refund_payment_last_1d_amount,
                sum(if(dt>date_sub('$do_date',7),visit_count,0)) visit_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),login_count,0)) login_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),order_count,0)) order_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),order_original_amount,0)) order_last_7d_original_amount,
                sum(if(dt>date_sub('$do_date',7),order_final_amount,0)) order_last_7d_final_amount,
                sum(if(dt>date_sub('$do_date',7),payment_count,0)) payment_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),payment_amount,0)) payment_last_7d_amount,
                sum(if(dt>date_sub('$do_date',7),refund_order_count,0)) refund_order_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),refund_order_amount,0)) refund_order_last_7d_amount,
                sum(if(dt>date_sub('$do_date',7),refund_payment_count,0)) refund_payment_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),refund_payment_amount,0)) refund_payment_last_7d_amount,
                sum(if(dt>date_sub('$do_date',30),visit_count,0)) visit_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),login_count,0)) login_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),order_count,0)) order_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),order_original_amount,0)) order_last_30d_original_amount,
                sum(if(dt>date_sub('$do_date',30),order_final_amount,0)) order_last_30d_final_amount,
                sum(if(dt>date_sub('$do_date',30),payment_count,0)) payment_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),payment_amount,0)) payment_last_30d_amount,
                sum(if(dt>date_sub('$do_date',30),refund_order_count,0)) refund_order_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),refund_order_amount,0)) refund_order_last_30d_amount,
                sum(if(dt>date_sub('$do_date',30),refund_payment_count,0)) refund_payment_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),refund_payment_amount,0)) refund_payment_last_30d_amount
        from ${APP}.dws_area_stats_daycount
        where dt <= '$do_date'
        group by province_id
    ) tmp;
    "
    
    dwt_activity_topic="
    insert overwrite table ${APP}.dwt_activity_topic partition (dt = '$do_date')
    select activity_rule_id,
           activity_id,
           order_last_1d_count,
           order_last_1d_reduce_amount,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_count,
           order_reduce_amount,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_reduce_amount,
           payment_last_1d_amount,
           payment_count,
           payment_reduce_amount,
           payment_amount
    from
    (
        select  activity_rule_id,
                activity_id,
                --累积
                sum(order_count) order_count,
                sum(order_reduce_amount) order_reduce_amount,
                sum(order_original_amount) order_original_amount,
                sum(order_final_amount) order_final_amount,
                sum(payment_count) payment_count,
                sum(payment_reduce_amount) payment_reduce_amount,
                sum(payment_amount) payment_amount,
                --最近1天
                sum(if(dt = '$do_date' , order_count, 0 ) ) order_last_1d_count,
                sum(if(dt = '$do_date' , order_reduce_amount, 0 ) ) order_last_1d_reduce_amount,
                sum(if(dt = '$do_date' , order_original_amount, 0 ) ) order_last_1d_original_amount,
                sum(if(dt = '$do_date' , order_final_amount, 0 ) ) order_last_1d_final_amount,
                sum(if(dt = '$do_date' , payment_count, 0 ) ) payment_last_1d_count,
                sum(if(dt = '$do_date' , payment_reduce_amount, 0 ) ) payment_last_1d_reduce_amount,
                sum(if(dt = '$do_date' , payment_amount, 0 ) ) payment_last_1d_amount
        from ${APP}.dws_activity_info_daycount
        where dt <= '$do_date'
        group by activity_rule_id,activity_id
    ) tmp;
    "
    
    dwt_coupon_topic="
    insert overwrite table ${APP}.dwt_coupon_topic partition (dt = '$do_date')
    select coupon_id,
           get_last_1d_count,
           get_last_7d_count,
           get_last_30d_count,
           get_count,
           order_last_1d_count,
           order_last_1d_reduce_amount,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_last_7d_count,
           order_last_7d_reduce_amount,
           order_last_7d_original_amount,
           order_last_7d_final_amount,
           order_last_30d_count,
           order_last_30d_reduce_amount,
           order_last_30d_original_amount,
           order_last_30d_final_amount,
           order_count,
           order_reduce_amount,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_reduce_amount,
           payment_last_1d_amount,
           payment_last_7d_count,
           payment_last_7d_reduce_amount,
           payment_last_7d_amount,
           payment_last_30d_count,
           payment_last_30d_reduce_amount,
           payment_last_30d_amount,
           payment_count,
           payment_reduce_amount,
           payment_amount,
           expire_last_1d_count,
           expire_last_7d_count,
           expire_last_30d_count,
           expire_count
    from
    (
        select  coupon_id,                                              --优惠券ID
                sum(get_count) get_count,                               --领取次数
                sum(order_count) order_count,                           --使用优惠券下单次数
                sum(order_reduce_amount) order_reduce_amount,           --使用优惠券下单金额
                sum(order_original_amount) order_original_amount,       --使用优惠券下单原始金额
                sum(order_final_amount) order_final_amount,             --使用优惠券最终金额
                sum(payment_count) payment_count,                       --使用优惠券支付次数
                sum(payment_reduce_amount) payment_reduce_amount,       --使用优惠券支付优惠金额
                sum(payment_amount) payment_amount,                     --使用优惠券支付总金额
                sum(expire_count) expire_count,                         --过期次数
                sum(if(dt='$do_date',get_count,0 )) get_last_1d_count,
                sum(if(dt='$do_date',order_count,0 )) order_last_1d_count,
                sum(if(dt='$do_date',order_reduce_amount,0 )) order_last_1d_reduce_amount,
                sum(if(dt='$do_date',order_original_amount,0 )) order_last_1d_original_amount,
                sum(if(dt='$do_date',order_final_amount,0 )) order_last_1d_final_amount,
                sum(if(dt='$do_date',payment_count,0 )) payment_last_1d_count,
                sum(if(dt='$do_date',payment_reduce_amount,0 )) payment_last_1d_reduce_amount,
                sum(if(dt='$do_date',payment_amount,0 )) payment_last_1d_amount,
                sum(if(dt='$do_date',expire_count,0 )) expire_last_1d_count,
                sum(if(dt>date_sub('$do_date',7),get_count,0 )) get_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),order_count,0 )) order_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),order_reduce_amount,0 )) order_last_7d_reduce_amount,
                sum(if(dt>date_sub('$do_date',7),order_original_amount,0 )) order_last_7d_original_amount,
                sum(if(dt>date_sub('$do_date',7),order_final_amount,0 )) order_last_7d_final_amount,
                sum(if(dt>date_sub('$do_date',7),payment_count,0 )) payment_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),payment_reduce_amount,0 )) payment_last_7d_reduce_amount,
                sum(if(dt>date_sub('$do_date',7),payment_amount,0 )) payment_last_7d_amount,
                sum(if(dt>date_sub('$do_date',7),expire_count,0 )) expire_last_7d_count,
                sum(if(dt>date_sub('$do_date',30),get_count,0 )) get_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),order_count,0 )) order_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),order_reduce_amount,0 )) order_last_30d_reduce_amount,
                sum(if(dt>date_sub('$do_date',30),order_original_amount,0 )) order_last_30d_original_amount,
                sum(if(dt>date_sub('$do_date',30),order_final_amount,0 )) order_last_30d_final_amount,
                sum(if(dt>date_sub('$do_date',30),payment_count,0 )) payment_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),payment_reduce_amount,0 )) payment_last_30d_reduce_amount,
                sum(if(dt>date_sub('$do_date',30),payment_amount,0 )) payment_last_30d_amount,
                sum(if(dt>date_sub('$do_date',30),expire_count,0 )) expire_last_30d_count
        from ${APP}.dws_coupon_info_daycount
        where dt <= '$do_date'
        group by coupon_id
    ) tmp;
    "
    
    dwt_sku_topic="
    insert overwrite table ${APP}.dwt_sku_topic partition (dt = '$do_date')
    select  t1.id,
            nvl(order_last_1d_count,0 )  order_last_1d_count,
            nvl(order_last_1d_num,0 )  order_last_1d_num,
            nvl(order_activity_last_1d_count,0 )  order_activity_last_1d_count,
            nvl(order_coupon_last_1d_count,0 )  order_coupon_last_1d_count,
            nvl(order_activity_reduce_last_1d_amount,0.0 )  order_activity_reduce_last_1d_amount,
            nvl(order_coupon_reduce_last_1d_amount,0.0 )  order_coupon_reduce_last_1d_amount,
            nvl(order_last_1d_original_amount,0.0 )  order_last_1d_original_amount,
            nvl(order_last_1d_final_amount,0.0 )  order_last_1d_final_amount,
            nvl(order_last_7d_count,0 )  order_last_7d_count,
            nvl(order_last_7d_num,0 )  order_last_7d_num,
            nvl(order_activity_last_7d_count,0 )  order_activity_last_7d_count,
            nvl(order_coupon_last_7d_count,0 )  order_coupon_last_7d_count,
            nvl(order_activity_reduce_last_7d_amount,0.0 )  order_activity_reduce_last_7d_amount,
            nvl(order_coupon_reduce_last_7d_amount,0.0 )  order_coupon_reduce_last_7d_amount,
            nvl(order_last_7d_original_amount,0.0 )  order_last_7d_original_amount,
            nvl(order_last_7d_final_amount,0.0 )  order_last_7d_final_amount,
            nvl(order_last_30d_count,0 )  order_last_30d_count,
            nvl(order_last_30d_num,0 )  order_last_30d_num,
            nvl(order_activity_last_30d_count,0 )  order_activity_last_30d_count,
            nvl(order_coupon_last_30d_count,0 )  order_coupon_last_30d_count,
            nvl(order_activity_reduce_last_30d_amount,0.0 )  order_activity_reduce_last_30d_amount,
            nvl(order_coupon_reduce_last_30d_amount,0.0 )  order_coupon_reduce_last_30d_amount,
            nvl(order_last_30d_original_amount,0.0 )  order_last_30d_original_amount,
            nvl(order_last_30d_final_amount,0.0 )  order_last_30d_final_amount,
            nvl(order_count,0 )  order_count,
            nvl(order_num,0 )  order_num,
            nvl(order_activity_count,0 )  order_activity_count,
            nvl(order_coupon_count,0 )  order_coupon_count,
            nvl(order_activity_reduce_amount,0.0 )  order_activity_reduce_amount,
            nvl(order_coupon_reduce_amount,0.0 )  order_coupon_reduce_amount,
            nvl(order_original_amount,0.0 )  order_original_amount,
            nvl(order_final_amount,0.0 )  order_final_amount,
            nvl(payment_last_1d_count,0 )  payment_last_1d_count,
            nvl(payment_last_1d_num,0 )  payment_last_1d_num,
            nvl(payment_last_1d_amount,0.0 )  payment_last_1d_amount,
            nvl(payment_last_7d_count,0 )  payment_last_7d_count,
            nvl(payment_last_7d_num,0 )  payment_last_7d_num,
            nvl(payment_last_7d_amount,0.0 )  payment_last_7d_amount,
            nvl(payment_last_30d_count,0 )  payment_last_30d_count,
            nvl(payment_last_30d_num,0 )  payment_last_30d_num,
            nvl(payment_last_30d_amount,0.0 )  payment_last_30d_amount,
            nvl(payment_count,0 )  payment_count,
            nvl(payment_num,0 )  payment_num,
            nvl(payment_amount,0.0 )  payment_amount,
            nvl(refund_order_last_1d_count,0 )  refund_order_last_1d_count,
            nvl(refund_order_last_1d_num,0 )  refund_order_last_1d_num,
            nvl(refund_order_last_1d_amount,0.0 )  refund_order_last_1d_amount,
            nvl(refund_order_last_7d_count,0 )  refund_order_last_7d_count,
            nvl(refund_order_last_7d_num,0 )  refund_order_last_7d_num,
            nvl(refund_order_last_7d_amount,0.0 )  refund_order_last_7d_amount,
            nvl(refund_order_last_30d_count,0 )  refund_order_last_30d_count,
            nvl(refund_order_last_30d_num,0 )  refund_order_last_30d_num,
            nvl(refund_order_last_30d_amount,0.0 )  refund_order_last_30d_amount,
            nvl(refund_order_count,0 )  refund_order_count,
            nvl(refund_order_num,0 )  refund_order_num,
            nvl(refund_order_amount,0.0 )  refund_order_amount,
            nvl(refund_payment_last_1d_count,0 )  refund_payment_last_1d_count,
            nvl(refund_payment_last_1d_num,0 )  refund_payment_last_1d_num,
            nvl(refund_payment_last_1d_amount,0.0 )  refund_payment_last_1d_amount,
            nvl(refund_payment_last_7d_count,0 )  refund_payment_last_7d_count,
            nvl(refund_payment_last_7d_num,0 )  refund_payment_last_7d_num,
            nvl(refund_payment_last_7d_amount,0.0 )  refund_payment_last_7d_amount,
            nvl(refund_payment_last_30d_count,0 )  refund_payment_last_30d_count,
            nvl(refund_payment_last_30d_num,0 )  refund_payment_last_30d_num,
            nvl(refund_payment_last_30d_amount,0.0 )  refund_payment_last_30d_amount,
            nvl(refund_payment_count,0 )  refund_payment_count,
            nvl(refund_payment_num,0 )  refund_payment_num,
            nvl(refund_payment_amount,0.0 )  refund_payment_amount,
            nvl(cart_last_1d_count,0 )  cart_last_1d_count,
            nvl(cart_last_7d_count,0 )  cart_last_7d_count,
            nvl(cart_last_30d_count,0 )  cart_last_30d_count,
            nvl(cart_count,0 )  cart_count,
            nvl(favor_last_1d_count,0 )  favor_last_1d_count,
            nvl(favor_last_7d_count,0 )  favor_last_7d_count,
            nvl(favor_last_30d_count,0 )  favor_last_30d_count,
            nvl(favor_count,0 )  favor_count,
            nvl(appraise_last_1d_good_count,0 )  appraise_last_1d_good_count,
            nvl(appraise_last_1d_mid_count,0 )  appraise_last_1d_mid_count,
            nvl(appraise_last_1d_bad_count,0 )  appraise_last_1d_bad_count,
            nvl(appraise_last_1d_default_count,0 )  appraise_last_1d_default_count,
            nvl(appraise_last_7d_good_count,0 )  appraise_last_7d_good_count,
            nvl(appraise_last_7d_mid_count,0 )  appraise_last_7d_mid_count,
            nvl(appraise_last_7d_bad_count,0 )  appraise_last_7d_bad_count,
            nvl(appraise_last_7d_default_count,0 )  appraise_last_7d_default_count,
            nvl(appraise_last_30d_good_count,0 )  appraise_last_30d_good_count,
            nvl(appraise_last_30d_mid_count,0 )  appraise_last_30d_mid_count,
            nvl(appraise_last_30d_bad_count,0 )  appraise_last_30d_bad_count,
            nvl(appraise_last_30d_default_count,0 )  appraise_last_30d_default_count,
            nvl(appraise_good_count,0 )  appraise_good_count,
            nvl(appraise_mid_count,0 )  appraise_mid_count,
            nvl(appraise_bad_count,0 )  appraise_bad_count,
            nvl(appraise_default_count,0 )  appraise_default_count
    from
    (
        --一部分sku,没有产生任何相关行为
        select id
        from ${APP}.dim_sku_info
        where dt = '$do_date'
    ) t1
    left join
    (
        -- 产生行为的sku指标
        select
                sku_id,
                --累积   sum()
                sum(order_num) order_num,
                sum(payment_num) payment_num,
                sum(refund_order_num) refund_order_num,
                sum(refund_payment_num) refund_payment_num,
                sum(order_count) order_count,
                sum(order_activity_count) order_activity_count,
                sum(order_coupon_count) order_coupon_count,
                sum(order_activity_reduce_amount) order_activity_reduce_amount,
                sum(order_coupon_reduce_amount) order_coupon_reduce_amount,
                sum(order_original_amount) order_original_amount,
                sum(order_final_amount) order_final_amount,
                sum(payment_count) payment_count,
                sum(payment_amount) payment_amount,
                sum(refund_order_count) refund_order_count,
                sum(refund_order_amount) refund_order_amount,
                sum(refund_payment_count) refund_payment_count,
                sum(refund_payment_amount) refund_payment_amount,
                sum(cart_count) cart_count,
                sum(favor_count) favor_count,
                sum(appraise_good_count) appraise_good_count,
                sum(appraise_mid_count) appraise_mid_count,
                sum(appraise_bad_count) appraise_bad_count,
                sum(appraise_default_count) appraise_default_count,
                --最近1日的 ,取 dt='$do_date' 当日dws表中的数据,之后进行sum
                sum(if(dt='$do_date',order_num , 0 )) order_last_1d_num,
                sum(if(dt='$do_date',payment_num , 0 )) payment_last_1d_num,
                sum(if(dt='$do_date',refund_order_num , 0 )) refund_order_last_1d_num,
                sum(if(dt='$do_date',refund_payment_num , 0 )) refund_payment_last_1d_num,
                sum(if(dt='$do_date',order_count , 0 )) order_last_1d_count,
                sum(if(dt='$do_date',order_activity_count , 0 )) order_activity_last_1d_count,
                sum(if(dt='$do_date',order_coupon_count , 0 )) order_coupon_last_1d_count,
                sum(if(dt='$do_date',order_activity_reduce_amount , 0 )) order_activity_reduce_last_1d_amount,
                sum(if(dt='$do_date',order_coupon_reduce_amount , 0 )) order_coupon_reduce_last_1d_amount,
                sum(if(dt='$do_date',order_original_amount , 0 )) order_last_1d_original_amount,
                sum(if(dt='$do_date',order_final_amount , 0 )) order_last_1d_final_amount,
                sum(if(dt='$do_date',payment_count , 0 )) payment_last_1d_count,
                sum(if(dt='$do_date',payment_amount , 0 )) payment_last_1d_amount,
                sum(if(dt='$do_date',refund_order_count , 0 )) refund_order_last_1d_count,
                sum(if(dt='$do_date',refund_order_amount , 0 )) refund_order_last_1d_amount,
                sum(if(dt='$do_date',refund_payment_count , 0 )) refund_payment_last_1d_count,
                sum(if(dt='$do_date',refund_payment_amount , 0 )) refund_payment_last_1d_amount,
                sum(if(dt='$do_date',cart_count , 0 )) cart_last_1d_count,
                sum(if(dt='$do_date',favor_count , 0 )) favor_last_1d_count,
                sum(if(dt='$do_date',appraise_good_count , 0 )) appraise_last_1d_good_count,
                sum(if(dt='$do_date',appraise_mid_count , 0 )) appraise_last_1d_mid_count,
                sum(if(dt='$do_date',appraise_bad_count , 0 )) appraise_last_1d_bad_count,
                sum(if(dt='$do_date',appraise_default_count , 0 )) appraise_last_1d_default_count,
                --最近7日的 ,取 dt>date_sub('$do_date',7) ,将符合要求的dws表中的数据,进行sum
                sum(if(dt>date_sub('$do_date',7),order_num , 0 )) order_last_7d_num,
                sum(if(dt>date_sub('$do_date',7),payment_num , 0 )) payment_last_7d_num,
                sum(if(dt>date_sub('$do_date',7),refund_order_num , 0 )) refund_order_last_7d_num,
                sum(if(dt>date_sub('$do_date',7),refund_payment_num , 0 )) refund_payment_last_7d_num,
                sum(if(dt>date_sub('$do_date',7),order_count , 0 )) order_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),order_activity_count , 0 )) order_activity_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),order_coupon_count , 0 )) order_coupon_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),order_activity_reduce_amount , 0 )) order_activity_reduce_last_7d_amount,
                sum(if(dt>date_sub('$do_date',7),order_coupon_reduce_amount , 0 )) order_coupon_reduce_last_7d_amount,
                sum(if(dt>date_sub('$do_date',7),order_original_amount , 0 )) order_last_7d_original_amount,
                sum(if(dt>date_sub('$do_date',7),order_final_amount , 0 )) order_last_7d_final_amount,
                sum(if(dt>date_sub('$do_date',7),payment_count , 0 )) payment_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),payment_amount , 0 )) payment_last_7d_amount,
                sum(if(dt>date_sub('$do_date',7),refund_order_count , 0 )) refund_order_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),refund_order_amount , 0 )) refund_order_last_7d_amount,
                sum(if(dt>date_sub('$do_date',7),refund_payment_count , 0 )) refund_payment_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),refund_payment_amount , 0 )) refund_payment_last_7d_amount,
                sum(if(dt>date_sub('$do_date',7),cart_count , 0 )) cart_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),favor_count , 0 )) favor_last_7d_count,
                sum(if(dt>date_sub('$do_date',7),appraise_good_count , 0 )) appraise_last_7d_good_count,
                sum(if(dt>date_sub('$do_date',7),appraise_mid_count , 0 )) appraise_last_7d_mid_count,
                sum(if(dt>date_sub('$do_date',7),appraise_bad_count , 0 )) appraise_last_7d_bad_count,
                sum(if(dt>date_sub('$do_date',7),appraise_default_count , 0 )) appraise_last_7d_default_count,
                --最近30日的 ,取 dt>date_sub('$do_date',30) ,将符合要求的dws表中的数据,进行sum
                sum(if(dt>date_sub('$do_date',30),order_num , 0 )) order_last_30d_num,
                sum(if(dt>date_sub('$do_date',30),payment_num , 0 )) payment_last_30d_num,
                sum(if(dt>date_sub('$do_date',30),refund_order_num , 0 )) refund_order_last_30d_num,
                sum(if(dt>date_sub('$do_date',30),refund_payment_num , 0 )) refund_payment_last_30d_num,
                sum(if(dt>date_sub('$do_date',30),order_count , 0 )) order_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),order_activity_count , 0 )) order_activity_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),order_coupon_count , 0 )) order_coupon_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),order_activity_reduce_amount , 0 )) order_activity_reduce_last_30d_amount,
                sum(if(dt>date_sub('$do_date',30),order_coupon_reduce_amount , 0 )) order_coupon_reduce_last_30d_amount,
                sum(if(dt>date_sub('$do_date',30),order_original_amount , 0 )) order_last_30d_original_amount,
                sum(if(dt>date_sub('$do_date',30),order_final_amount , 0 )) order_last_30d_final_amount,
                sum(if(dt>date_sub('$do_date',30),payment_count , 0 )) payment_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),payment_amount , 0 )) payment_last_30d_amount,
                sum(if(dt>date_sub('$do_date',30),refund_order_count , 0 )) refund_order_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),refund_order_amount , 0 )) refund_order_last_30d_amount,
                sum(if(dt>date_sub('$do_date',30),refund_payment_count , 0 )) refund_payment_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),refund_payment_amount , 0 )) refund_payment_last_30d_amount,
                sum(if(dt>date_sub('$do_date',30),cart_count , 0 )) cart_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),favor_count , 0 )) favor_last_30d_count,
                sum(if(dt>date_sub('$do_date',30),appraise_good_count , 0 )) appraise_last_30d_good_count,
                sum(if(dt>date_sub('$do_date',30),appraise_mid_count , 0 )) appraise_last_30d_mid_count,
                sum(if(dt>date_sub('$do_date',30),appraise_bad_count , 0 )) appraise_last_30d_bad_count,
                sum(if(dt>date_sub('$do_date',30),appraise_default_count , 0 )) appraise_last_30d_default_count
        from ${APP}.dws_sku_action_daycount
        where dt <= '$do_date'
        group by sku_id
    ) t2 on t1.id=t2.sku_id;
    "
    
    dwt_user_topic="
    insert overwrite table ${APP}.dwt_user_topic partition (dt = '$do_date')
    select  t1.id user_id,                      --用户id
            login_date_first,                   --首次活跃日期
            login_date_last,                    --末次活跃日期
            nvl(login_date_1d_count,0),         --最近1日登录次数
            nvl(login_last_1d_day_count,0),     --最近1日登录天数
            nvl(login_last_7d_count,0),         --最近7日登录次数
            nvl(login_last_7d_day_count,0),     --最近7日登录天数
            nvl(login_last_30d_count,0),        --最近30日登录次数
            nvl(login_last_30d_day_count,0),    --最近30日登录天数
            nvl(login_count,0),                 --累积登录次数
            nvl(login_day_count,0),             --累积登录天数
            order_date_first,                   --首次下单时间
            order_date_last,                    --末次下单时间
            nvl(order_last_1d_count,0),         --最近1日下单次数
            nvl(order_activity_last_1d_count,0),--最近1日订单参与活动次数
            nvl(order_activity_reduce_last_1d_amount,0.0),      --最近1日订单减免金额(活动)
            nvl(order_coupon_last_1d_count,0),                  --最近1日下单用券次数
            nvl(order_coupon_reduce_last_1d_amount,0.0),        --最近1日订单减免金额(优惠券)
            nvl(order_last_1d_original_amount,0.0),             --最近1日原始下单金额
            nvl(order_last_1d_final_amount,0.0),                --最近1日最终下单金额
            nvl(order_last_7d_count,0),                         --最近7日下单次数
            nvl(order_activity_last_7d_count,0),                --最近7日订单参与活动次数
            nvl(order_activity_reduce_last_7d_amount,0.0),      --最近7日订单减免金额(活动)
            nvl(order_coupon_last_7d_count,0),                  --最近7日下单用券次数
            nvl(order_coupon_reduce_last_7d_amount,0.0),        --最近7日订单减免金额(优惠券)
            nvl(order_last_7d_original_amount,0.0),             --最近7日原始下单金额
            nvl(order_last_7d_final_amount,0.0),                --最近7日最终下单金额
            nvl(order_last_30d_count,0),                        --最近30日下单次数
            nvl(order_activity_last_30d_count,0),               --最近30日订单参与活动次数
            nvl(order_activity_reduce_last_30d_amount,0.0),     --最近30日订单减免金额(活动)
            nvl(order_coupon_last_30d_count,0),                 --最近30日下单用券次数
            nvl(order_coupon_reduce_last_30d_amount,0.0),       --最近30日订单减免金额(优惠券)
            nvl(order_last_30d_original_amount,0.0),            --最近30日原始下单金额
            nvl(order_last_30d_final_amount,0.0),               --最近30日最终下单金额
            nvl(order_count,0),                                 --累积下单次数
            nvl(order_activity_count,0),                        --累积订单参与活动次数
            nvl(order_activity_reduce_amount,0.0),              --累积订单减免金额(活动)
            nvl(order_coupon_count,0),                          --累积下单用券次数
            nvl(order_coupon_reduce_amount,0.0),                --累积订单减免金额(优惠券)
            nvl(order_original_amount,0.0),                     --累积原始下单金额
            nvl(order_final_amount,0.0),                        --累积最终下单金额
            payment_date_first,                                 --首次支付时间
            payment_date_last,                                  --末次支付时间
            nvl(payment_last_1d_count,0),                       --最近1日支付次数
            nvl(payment_last_1d_amount,0.0),                    --最近1日支付金额
            nvl(payment_last_7d_count,0),                       --最近7日支付次数
            nvl(payment_last_7d_amount,0.0),                    --最近7日支付金额
            nvl(payment_last_30d_count,0),                      --最近30日支付次数
            nvl(payment_last_30d_amount,0.0),                   --最近30日支付金额
            nvl(payment_count,0),                               --累积支付次数
            nvl(payment_amount,0.0),                            --累积支付金额
            nvl(refund_order_last_1d_count,0),                  --最近1日退单次数
            nvl(refund_order_last_1d_num,0),                    --最近1日退单件数
            nvl(refund_order_last_1d_amount,0.0),               --最近1日退单金额
            nvl(refund_order_last_7d_count,0),                  --最近7日退单次数
            nvl(refund_order_last_7d_num,0),                    --最近7日退单件数
            nvl(refund_order_last_7d_amount,0.0),               --最近7日退单金额
            nvl(refund_order_last_30d_count,0),                 --最近30日退单次数
            nvl(refund_order_last_30d_num,0),                   --最近30日退单件数
            nvl(refund_order_last_30d_amount,0.0),              --最近30日退单金额
            nvl(refund_order_count,0),                          --累积退单次数
            nvl(refund_order_num,0),                            --累积退单件数
            nvl(refund_order_amount,0.0),                       --累积退单金额
            nvl(refund_payment_last_1d_count,0),                --最近1日退款次数
            nvl(refund_payment_last_1d_num,0),                  --最近1日退款件数
            nvl(refund_payment_last_1d_amount,0.0),             --最近1日退款金额
            nvl(refund_payment_last_7d_count,0),                --最近7日退款次数
            nvl(refund_payment_last_7d_num,0),                  --最近7日退款件数
            nvl(refund_payment_last_7d_amount,0.0),             --最近7日退款金额
            nvl(refund_payment_last_30d_count,0),               --最近30日退款次数
            nvl(refund_payment_last_30d_num,0),                 --最近30日退款件数
            nvl(refund_payment_last_30d_amount,0.0),            --最近30日退款金额
            nvl(refund_payment_count,0),                        --累积退款次数
            nvl(refund_payment_num,0),                          --累积退款件数
            nvl(refund_payment_amount,0.0),                     --累积退款金额
            nvl(cart_last_1d_count,0),                          --最近1日加入购物车次数
            nvl(cart_last_7d_count,0),                          --最近7日加入购物车次数
            nvl(cart_last_30d_count,0),                         --最近30日加入购物车次数
            nvl(cart_count,0),                                  --累积加入购物车次数
            nvl(favor_last_1d_count,0),                         --最近1日收藏次数
            nvl(favor_last_7d_count,0),                         --最近7日收藏次数
            nvl(favor_last_30d_count,0),                        --最近30日收藏次数
            nvl(favor_count,0),                                 --累积收藏次数
            nvl(coupon_last_1d_get_count,0),                    --最近1日领券次数
            nvl(coupon_last_1d_using_count,0),                  --最近1日用券(下单)次数
            nvl(coupon_last_1d_used_count,0),                   --最近1日用券(支付)次数
            nvl(coupon_last_7d_get_count,0),                    --最近7日领券次数
            nvl(coupon_last_7d_using_count,0),                  --最近7日用券(下单)次数
            nvl(coupon_last_7d_used_count,0),                   --最近7日用券(支付)次数
            nvl(coupon_last_30d_get_count,0),                   --最近30日领券次数
            nvl(coupon_last_30d_using_count,0),                 --最近30日用券(下单)次数
            nvl(coupon_last_30d_used_count,0),                  --最近30日用券(支付)次数
            nvl(coupon_get_count,0),                            --累积领券次数
            nvl(coupon_using_count,0),                          --累积用券(下单)次数
            nvl(coupon_used_count,0),                           --累积用券(支付)次数
            nvl(appraise_last_1d_good_count,0),                 --最近1日好评次数
            nvl(appraise_last_1d_mid_count,0),                  --最近1日中评次数
            nvl(appraise_last_1d_bad_count,0),                  --最近1日差评次数
            nvl(appraise_last_7d_good_count,0),                 --最近7日好评次数
            nvl(appraise_last_7d_mid_count,0),                  --最近7日中评次数
            nvl(appraise_last_7d_bad_count,0),                  --最近7日差评次数
            nvl(appraise_last_7d_default_count,0),              --最近7日默认评价次数
            nvl(appraise_last_30d_good_count,0),                --最近30日好评次数
            nvl(appraise_last_30d_mid_count,0),                 --最近30日中评次数
            nvl(appraise_last_30d_bad_count,0),                 --最近30日差评次数
            nvl(appraise_last_30d_default_count,0),             --最近30日默认评价次数
            nvl(appraise_good_count,0),                         --累积好评次数
            nvl(appraise_mid_count,0),                          --累积中评次数
            nvl(appraise_bad_count,0),                          --累积差评次数
            nvl(appraise_default_count,0)                       --累积默认评价次数
    from
    (
        --从${APP}.dim_user_info 取 全部的用户
        select id
        -- 按照用户信息的end_date分区,已经过期的,放入过期分区,9999-99-99分区存放的是最新的用户数据
        from ${APP}.dim_user_info
        where dt = '9999-99-99'
    ) t1
    left join
    (select  user_id,
            min(dt) login_date_first,
            max(dt) login_date_last,
            min(if(order_count > 0 , dt ,null)) order_date_first,
            max(if(order_count > 0 , dt ,null)) order_date_last,
            min(if(payment_count > 0 , dt ,null)) payment_date_first,
            max(if(payment_count > 0 , dt ,null))  payment_date_last,
            sum(if(dt > date_sub('$do_date',7),1,0)) login_last_7d_day_count,
            sum(if(dt > date_sub('$do_date',30),1,0)) login_last_30d_day_count,
            sum(if(dt='$do_date',1,0)) login_last_1d_day_count,
            count(*) login_day_count,
            --最近30日
            sum(if(dt > date_sub('$do_date',30),login_count,0)) login_last_30d_count,
            sum(if(dt > date_sub('$do_date',30),order_count,0)) order_last_30d_count,
            sum(if(dt > date_sub('$do_date',30),order_activity_count,0)) order_activity_last_30d_count,
            sum(if(dt > date_sub('$do_date',30),order_activity_reduce_amount,0)) order_activity_reduce_last_30d_amount,
            sum(if(dt > date_sub('$do_date',30),order_coupon_count,0)) order_coupon_last_30d_count,
            sum(if(dt > date_sub('$do_date',30),order_coupon_reduce_amount,0)) order_coupon_reduce_last_30d_amount,
            sum(if(dt > date_sub('$do_date',30),order_original_amount,0)) order_last_30d_original_amount,
            sum(if(dt > date_sub('$do_date',30),order_final_amount,0)) order_last_30d_final_amount,
            sum(if(dt > date_sub('$do_date',30),payment_count,0)) payment_last_30d_count,
            sum(if(dt > date_sub('$do_date',30),payment_amount,0)) payment_last_30d_amount,
            sum(if(dt > date_sub('$do_date',30),refund_order_count,0)) refund_order_last_30d_count,
            sum(if(dt > date_sub('$do_date',30),refund_order_num,0)) refund_order_last_30d_num,
            sum(if(dt > date_sub('$do_date',30),refund_order_amount,0)) refund_order_last_30d_amount,
            sum(if(dt > date_sub('$do_date',30),refund_payment_count,0)) refund_payment_last_30d_count,
            sum(if(dt > date_sub('$do_date',30),refund_payment_num,0)) refund_payment_last_30d_num,
            sum(if(dt > date_sub('$do_date',30),refund_payment_amount,0)) refund_payment_last_30d_amount,
            sum(if(dt > date_sub('$do_date',30),cart_count,0)) cart_last_30d_count,
            sum(if(dt > date_sub('$do_date',30),favor_count,0)) favor_last_30d_count,
            sum(if(dt > date_sub('$do_date',30),coupon_get_count,0)) coupon_last_30d_get_count,
            sum(if(dt > date_sub('$do_date',30),coupon_using_count,0)) coupon_last_30d_using_count,
            sum(if(dt > date_sub('$do_date',30),coupon_used_count,0)) coupon_last_30d_used_count,
            sum(if(dt > date_sub('$do_date',30),appraise_good_count,0)) appraise_last_30d_good_count,
            sum(if(dt > date_sub('$do_date',30),appraise_mid_count,0)) appraise_last_30d_mid_count,
            sum(if(dt > date_sub('$do_date',30),appraise_bad_count,0)) appraise_last_30d_bad_count,
            sum(if(dt > date_sub('$do_date',30),appraise_default_count,0)) appraise_last_30d_default_count,
            --最近7日
            sum(if(dt > date_sub('$do_date',7) , login_count, 0 ) ) login_last_7d_count,
            sum(if(dt > date_sub('$do_date',7) , order_count, 0 ) ) order_last_7d_count,
            sum(if(dt > date_sub('$do_date',7) , order_activity_count, 0 ) ) order_activity_last_7d_count,
            sum(if(dt > date_sub('$do_date',7) , order_activity_reduce_amount, 0 ) ) order_activity_reduce_last_7d_amount,
            sum(if(dt > date_sub('$do_date',7) , order_coupon_count, 0 ) ) order_coupon_last_7d_count,
            sum(if(dt > date_sub('$do_date',7) , order_coupon_reduce_amount, 0 ) ) order_coupon_reduce_last_7d_amount,
            sum(if(dt > date_sub('$do_date',7) , order_original_amount, 0 ) ) order_last_7d_original_amount,
            sum(if(dt > date_sub('$do_date',7) , order_final_amount, 0 ) ) order_last_7d_final_amount,
            sum(if(dt > date_sub('$do_date',7) , payment_count, 0 ) ) payment_last_7d_count,
            sum(if(dt > date_sub('$do_date',7) , payment_amount, 0 ) ) payment_last_7d_amount,
            sum(if(dt > date_sub('$do_date',7) , refund_order_count, 0 ) ) refund_order_last_7d_count,
            sum(if(dt > date_sub('$do_date',7) , refund_order_num, 0 ) ) refund_order_last_7d_num,
            sum(if(dt > date_sub('$do_date',7) , refund_order_amount, 0 ) ) refund_order_last_7d_amount,
            sum(if(dt > date_sub('$do_date',7) , refund_payment_count, 0 ) ) refund_payment_last_7d_count,
            sum(if(dt > date_sub('$do_date',7) , refund_payment_num, 0 ) ) refund_payment_last_7d_num,
            sum(if(dt > date_sub('$do_date',7) , refund_payment_amount, 0 ) ) refund_payment_last_7d_amount,
            sum(if(dt > date_sub('$do_date',7) , cart_count, 0 ) ) cart_last_7d_count,
            sum(if(dt > date_sub('$do_date',7) , favor_count, 0 ) ) favor_last_7d_count,
            sum(if(dt > date_sub('$do_date',7) , coupon_get_count, 0 ) ) coupon_last_7d_get_count,
            sum(if(dt > date_sub('$do_date',7) , coupon_using_count, 0 ) ) coupon_last_7d_using_count,
            sum(if(dt > date_sub('$do_date',7) , coupon_used_count, 0 ) ) coupon_last_7d_used_count,
            sum(if(dt > date_sub('$do_date',7) , appraise_good_count, 0 ) ) appraise_last_7d_good_count,
            sum(if(dt > date_sub('$do_date',7) , appraise_mid_count, 0 ) ) appraise_last_7d_mid_count,
            sum(if(dt > date_sub('$do_date',7) , appraise_bad_count, 0 ) ) appraise_last_7d_bad_count,
            sum(if(dt > date_sub('$do_date',7) , appraise_default_count, 0 ) ) appraise_last_7d_default_count,
            --最近1日
            sum(if(dt > date_sub('$do_date',1) , login_count  , 0 ) ) login_date_1d_count,
            sum(if(dt > date_sub('$do_date',1) , order_count  , 0 ) ) order_last_1d_count,
            sum(if(dt > date_sub('$do_date',1) , order_activity_count  , 0 ) ) order_activity_last_1d_count,
            sum(if(dt > date_sub('$do_date',1) , order_activity_reduce_amount  , 0 ) ) order_activity_reduce_last_1d_amount,
            sum(if(dt > date_sub('$do_date',1) , order_coupon_count  , 0 ) ) order_coupon_last_1d_count,
            sum(if(dt > date_sub('$do_date',1) , order_coupon_reduce_amount  , 0 ) ) order_coupon_reduce_last_1d_amount,
            sum(if(dt > date_sub('$do_date',1) , order_original_amount  , 0 ) ) order_last_1d_original_amount,
            sum(if(dt > date_sub('$do_date',1) , order_final_amount  , 0 ) ) order_last_1d_final_amount,
            sum(if(dt > date_sub('$do_date',1) , payment_count  , 0 ) ) payment_last_1d_count,
            sum(if(dt > date_sub('$do_date',1) , payment_amount  , 0 ) ) payment_last_1d_amount,
            sum(if(dt > date_sub('$do_date',1) , refund_order_count  , 0 ) ) refund_order_last_1d_count,
            sum(if(dt > date_sub('$do_date',1) , refund_order_num  , 0 ) ) refund_order_last_1d_num,
            sum(if(dt > date_sub('$do_date',1) , refund_order_amount  , 0 ) ) refund_order_last_1d_amount,
            sum(if(dt > date_sub('$do_date',1) , refund_payment_count  , 0 ) ) refund_payment_last_1d_count,
            sum(if(dt > date_sub('$do_date',1) , refund_payment_num  , 0 ) ) refund_payment_last_1d_num,
            sum(if(dt > date_sub('$do_date',1) , refund_payment_amount  , 0 ) ) refund_payment_last_1d_amount,
            sum(if(dt > date_sub('$do_date',1) , cart_count  , 0 ) ) cart_last_1d_count,
            sum(if(dt > date_sub('$do_date',1) , favor_count  , 0 ) ) favor_last_1d_count,
            sum(if(dt > date_sub('$do_date',1) , coupon_get_count  , 0 ) ) coupon_last_1d_get_count,
            sum(if(dt > date_sub('$do_date',1) , coupon_using_count  , 0 ) ) coupon_last_1d_using_count,
            sum(if(dt > date_sub('$do_date',1) , coupon_used_count  , 0 ) ) coupon_last_1d_used_count,
            sum(if(dt > date_sub('$do_date',1) , appraise_good_count  , 0 ) ) appraise_last_1d_good_count,
            sum(if(dt > date_sub('$do_date',1) , appraise_mid_count  , 0 ) ) appraise_last_1d_mid_count,
            sum(if(dt > date_sub('$do_date',1) , appraise_bad_count  , 0 ) ) appraise_last_1d_bad_count,
            sum(if(dt > date_sub('$do_date',1) , appraise_default_count  , 0 ) ) appraise_last_1d_default_count,
            --各种累计
            sum(login_count) login_count,
            sum(order_count) order_count,
            sum(order_activity_count) order_activity_count,
            sum(order_activity_reduce_amount) order_activity_reduce_amount,
            sum(order_coupon_count) order_coupon_count,
            sum(order_coupon_reduce_amount) order_coupon_reduce_amount,
            sum(order_original_amount) order_original_amount,
            sum(order_final_amount) order_final_amount,
            sum(payment_count) payment_count,
            sum(payment_amount) payment_amount,
            sum(refund_order_count) refund_order_count,
            sum(refund_order_num) refund_order_num,
            sum(refund_order_amount) refund_order_amount,
            sum(refund_payment_count) refund_payment_count,
            sum(refund_payment_num) refund_payment_num,
            sum(refund_payment_amount) refund_payment_amount,
            sum(cart_count) cart_count,
            sum(favor_count) favor_count,
            sum(coupon_get_count) coupon_get_count,
            sum(coupon_using_count) coupon_using_count,
            sum(coupon_used_count) coupon_used_count,
            sum(appraise_good_count) appraise_good_count,
            sum(appraise_mid_count) appraise_mid_count,
            sum(appraise_bad_count) appraise_bad_count,
            sum(appraise_default_count) appraise_default_count
    from ${APP}.dws_user_action_daycount
    where dt <= '$do_date'
    group by user_id) t2
    on t1.id = t2.user_id;
    "
    
    dwt_visitor_topic="
    insert overwrite table ${APP}.dwt_visitor_topic partition(dt='$do_date')
    select mid_id,
           concat_ws('|',map_keys(str_to_map( concat_ws('|',collect_list(brand)),'\\\|'))) brand,
           concat_ws('|',map_keys(str_to_map( concat_ws('|',collect_list(model)),'\\\|'))) model,
           map_keys(str_to_map(concat_ws('|',collect_list(concat_ws('|',channel) )),'\\\|')) channel,
           map_keys(str_to_map(concat_ws('|',collect_list(concat_ws('|',os) )),'\\\|')) os,
            map_keys(str_to_map(concat_ws('|',collect_list(concat_ws('|',area_code) )),'\\\|')) area_code,
           map_keys(str_to_map(concat_ws('|',collect_list(concat_ws('|',version_code) )),'\\\|'))  version_code,
           min(dt) visit_date_first,
           max(dt) visit_date_last,
           sum( if (dt='$do_date',visit_count,0)) visit_last_1d_count,
           sum( if (dt='$do_date',1,0)) visit_last_1d_day_count,
           sum( if (dt > date_sub('$do_date',7),visit_count,0)) visit_last_7d_count,
           sum( if (dt > date_sub('$do_date',7),1,0)) visit_last_7d_day_count,
           sum( if (dt > date_sub('$do_date',30),visit_count,0)) visit_last_30d_count,
           sum( if (dt > date_sub('$do_date',30),1,0)) visit_last_30d_day_count,
           sum(visit_count) visit_count,
           count(*) visit_day_count
    -- 每个设备在每天统计一行
    from ${APP}.dws_visitor_action_daycount
    where dt <= '$do_date'
    group by mid_id;
    "
    
    case $1 in
        "dwt_area_topic" )
            hive -e "$dwt_area_topic"
        ;;
        "dwt_activity_topic" )
            hive -e "$dwt_activity_topic"
        ;;
        "dwt_coupon_topic" )
            hive -e "$dwt_coupon_topic"
        ;;
        "dwt_sku_topic" )
            hive -e "$dwt_sku_topic"
        ;;
        "dwt_user_topic" )
            hive -e "$dwt_user_topic"
        ;;
        "dwt_visitor_topic" )
            hive -e "$dwt_visitor_topic"
        ;;
        "all" )
            hive -e "$dwt_area_topic$dwt_activity_topic$dwt_coupon_topic$dwt_sku_topic$dwt_user_topic$dwt_visitor_topic"
        ;;
    esac

        (2)增加执行权限

    chmod +x dws_to_dwt_init.sh

      2)脚本使用

        (1)执行脚本

    dws_to_dwt_init.sh all 2021-06-08

        (2)查看数据是否导入成功

    8.8 DWT每日数据导入脚本

      1)编写脚本

        (1)在/home/atguigu/bin目录下创建脚本dws_to_dwt.sh

    vim dws_to_dwt.sh
    #!/bin/bash
    
    APP=gmall
    # 如果是输入的日期按照取输入日期;如果没输入日期取当前时间的前一天
    if [ -n "$2" ] ;then
       do_date=$2
    else 
       do_date= date -d "-1 day" +%F
    fi
    
    dwt_visitor_topic="
    insert overwrite table ${APP}.dwt_visitor_topic partition (dt='$do_date')
    -- 取dwt和dws层所有的mid,优先取dws层,如果为NULL,再取dwt层
    select  nvl(dws_data.mid_id,dwt_data.mid_id) mid_id,
            -- 取 dwt 拼接 dws  之后去重
            -- 字符串拼接
            concat_ws('|',map_keys(str_to_map(concat_ws('|',dwt_data.brand ,dws_data.brand),'\\\|'))) brand,
            concat_ws('|',map_keys(str_to_map(concat_ws('|' ,dwt_data.model , dws_data.model),'\\\|'))) model,
            -- array('a','b')  array('c','b')  -----> a|b|c|b
            map_keys(str_to_map(concat_ws('|',dwt_data.channel  ,dws_data.channel),'\\\|')) channel,
            map_keys(str_to_map(concat_ws('|',dwt_data.os  ,dws_data.os),'\\\|')) os,
            map_keys(str_to_map(concat_ws('|',dwt_data.area_code  ,dws_data.area_code),'\\\|')) area_code,
            map_keys(str_to_map(concat_ws('|',dwt_data.version_code  ,dws_data.version_code),'\\\|')) version_code,
            -- 判断设备是否是今天的新设备,如果是 visit_date_first=今天,否则取dwt层visit_date_first
           if(dwt_data.mid_id is null,'$do_date', dwt_data.visit_date_first ) visit_date_first,
           -- 判断设备是否今天活跃,如果是 visit_date_last=今天,否则取dwt层visit_date_last
            if(dws_data.mid_id is not null,'$do_date', dwt_data.visit_date_last )  visit_date_last,
           -- 判断今天在dws层是否活跃,如果活跃,取visit_count
           if(dws_data.mid_id is not null,dws_data.visit_count, 0 ) visit_last_1d_count,
           --  判断今天在dws层是否活跃,如果活跃,记1,否则记0
           if(dws_data.mid_id is not null, 1, 0 )  visit_last_1d_day_count,
           --  求 dws层 dt= date_sub('$do_date' - 7 ) 天的数据
           --  采取滑动的方式:   $do_date日最近7天的活跃次数 =
           --  2021-06-08日最近7天的活跃次数 - dws层 dt=('$do_date' - 7 )的活跃次数 + dws层 dt=('$do_date')的活跃次数
           nvl(dwt_data.visit_last_7d_count,0) - nvl(dws_7days_ago_data.visit_count,0) + nvl(dws_data.visit_count,0) visit_last_7d_count,
           -- 2021-06-08日最近7天的活跃天数 - dws层 dt=('$do_date' - 7 )是否活跃,如果活跃记1,否则记0  + dws层 dt=('$do_date') 是否活跃,活跃记1,否则记0
           nvl(dwt_data.visit_last_7d_day_count,0) - if(dws_7days_ago_data.mid_id is null,0,1) +
           if(dws_data.mid_id is not null ,1 ,0 )  visit_last_7d_day_count,
           nvl(dwt_data.visit_last_30d_count,0) - nvl(dws_30days_ago_data.visit_count,0) + nvl(dws_data.visit_count,0) visit_last_30d_count,
           nvl(dwt_data.visit_last_30d_day_count,0) - if(dws_30days_ago_data.mid_id is null,0,1) +
           if(dws_data.mid_id is not null ,1 ,0 )  visit_last_30d_day_count,
           -- dwt 累积的visit_count + dws层 今天累积的 visit_count   full join后都可能存在null值,先判null再处理
           nvl(dwt_data.visit_count,0) + nvl(dws_data.visit_count,0) visit_count,
           nvl(dwt_data.visit_day_count,0) + if(dws_data.mid_id is not null, 1, 0 ) visit_day_count
    from
    (
        select *
        from ${APP}.dwt_visitor_topic
        where dt=date_sub('$do_date',1)
    ) dwt_data
    full join
    (
        select *
        from ${APP}.dws_visitor_action_daycount
        where dt='$do_date'
    ) dws_data on dwt_data.mid_id = dws_data.mid_id
    left join
    --求 dws层 dt=('$do_date' - 7 )的数据
    (
        select *
        from ${APP}.dws_visitor_action_daycount
        where dt=date_sub('$do_date', 7 )
    ) dws_7days_ago_data on dwt_data.mid_id = dws_7days_ago_data.mid_id
    left join
    (
        select *
        from ${APP}.dws_visitor_action_daycount
        where dt=date_sub('$do_date' , 30 )
    ) dws_30days_ago_data on dwt_data.mid_id = dws_30days_ago_data.mid_id;
    "
    
    dwt_user_topic="
    insert overwrite table ${APP}.dwt_user_topic partition(dt='$do_date')
    select user_id,
           login_date_first,
           login_date_last,
           login_date_1d_count,
           login_last_1d_day_count,
           login_last_7d_count,
           login_last_7d_day_count,
           login_last_30d_count,
           login_last_30d_day_count,
           login_count,
           login_day_count,
           order_date_first,
           order_date_last,
           order_last_1d_count,
           order_activity_last_1d_count,
           order_activity_reduce_last_1d_amount,
           order_coupon_last_1d_count,
           order_coupon_reduce_last_1d_amount,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_last_7d_count,
           order_activity_last_7d_count,
           order_activity_reduce_last_7d_amount,
           order_coupon_last_7d_count,
           order_coupon_reduce_last_7d_amount,
           order_last_7d_original_amount,
           order_last_7d_final_amount,
           order_last_30d_count,
           order_activity_last_30d_count,
           order_activity_reduce_last_30d_amount,
           order_coupon_last_30d_count,
           order_coupon_reduce_last_30d_amount,
           order_last_30d_original_amount,
           order_last_30d_final_amount,
           order_count,
           order_activity_count,
           order_activity_reduce_amount,
           order_coupon_count,
           order_coupon_reduce_amount,
           order_original_amount,
           order_final_amount,
           payment_date_first,
           payment_date_last,
           payment_last_1d_count,
           payment_last_1d_amount,
           payment_last_7d_count,
           payment_last_7d_amount,
           payment_last_30d_count,
           payment_last_30d_amount,
           payment_count,
           payment_amount,
           refund_order_last_1d_count,
           refund_order_last_1d_num,
           refund_order_last_1d_amount,
           refund_order_last_7d_count,
           refund_order_last_7d_num,
           refund_order_last_7d_amount,
           refund_order_last_30d_count,
           refund_order_last_30d_num,
           refund_order_last_30d_amount,
           refund_order_count,
           refund_order_num,
           refund_order_amount,
           refund_payment_last_1d_count,
           refund_payment_last_1d_num,
           refund_payment_last_1d_amount,
           refund_payment_last_7d_count,
           refund_payment_last_7d_num,
           refund_payment_last_7d_amount,
           refund_payment_last_30d_count,
           refund_payment_last_30d_num,
           refund_payment_last_30d_amount,
           refund_payment_count,
           refund_payment_num,
           refund_payment_amount,
           cart_last_1d_count,
           cart_last_7d_count,
           cart_last_30d_count,
           cart_count,
           favor_last_1d_count,
           favor_last_7d_count,
           favor_last_30d_count,
           favor_count,
           coupon_last_1d_get_count,
           coupon_last_1d_using_count,
           coupon_last_1d_used_count,
           coupon_last_7d_get_count,
           coupon_last_7d_using_count,
           coupon_last_7d_used_count,
           coupon_last_30d_get_count,
           coupon_last_30d_using_count,
           coupon_last_30d_used_count,
           coupon_get_count,
           coupon_using_count,
           coupon_used_count,
           appraise_last_1d_good_count,
           appraise_last_1d_mid_count,
           appraise_last_1d_bad_count,
           appraise_last_7d_good_count,
           appraise_last_7d_mid_count,
           appraise_last_7d_bad_count,
           appraise_last_7d_default_count,
           appraise_last_30d_good_count,
           appraise_last_30d_mid_count,
           appraise_last_30d_bad_count,
           appraise_last_30d_default_count,
           appraise_good_count,
           appraise_mid_count,
           appraise_bad_count,
           appraise_default_count
    from
    (
    select
            nvl(dws_data.user_id, dwt_data.user_id) user_id,
            -- dwt层,已经登录过的用户,取dwt_data.login_date_first,dws层今日新登录的用户,取今日,dws层今日注册的新用户,但是没有登录(login_count进行判断),取null
            if(dwt_data.user_id is not null,dwt_data.login_date_first, if(dws_data.login_count = 0 ,null ,'$do_date')) login_date_first,
            -- 优先判断dws_data中的数据,如果为null,取dwt_data的login_date_last,否则判断是否login_count大于0,大于0取今天,否则取null
            if(dws_data.user_id is null,dwt_data.login_date_last, if(dws_data.login_count > 0 ,'$do_date' , null) ) login_date_last,
    
            -- 先判断dws_data.user_id 是否为null,为null,取dwt_data.order_date_first, 判断dwt_data.order_count > 0, 取dwt_data.order_date_first,
                   -- 否则判断 dws_data.order_count > 0 ,取当天,否则取null
            if(dws_data.user_id is null ,dwt_data.order_date_first, if(dwt_data.order_count > 0 ,dwt_data.order_date_first , if(dws_data.order_count > 0 ,'$do_date',null) )  ) order_date_first,
    
            -- 判断dws_data的order_count 是否 >0 , >0可以取当天,否则取dwt_data.order_date_last
             if(dws_data.order_count > 0 ,'$do_date',dwt_data.order_date_last) order_date_last,
    
            if(dws_data.user_id is null ,dwt_data.payment_date_first, if(dwt_data.payment_count > 0 ,dwt_data.payment_date_first , if(dws_data.payment_count > 0 ,'$do_date',null) )  ) payment_date_first,
             if(dws_data.payment_count > 0 ,'$do_date',dwt_data.payment_date_last) payment_date_last,
            -- 最近N天登录天数
            nvl(dwt_data.login_last_7d_day_count,0 ) + if(dws_data.login_count > 0 ,1,0) - if(dws_7days_ago_data.login_count > 0 ,1,0) login_last_7d_day_count,
            nvl(dwt_data.login_last_30d_day_count,0 ) + if(dws_data.login_count > 0 ,1,0) - if(dws_30days_ago_data.login_count > 0 ,1,0) login_last_30d_day_count,
            if(dws_data.login_count > 0 ,1,0) login_last_1d_day_count,
            nvl(dwt_data.login_day_count,0 ) + if(dws_data.login_count > 0 ,1,0) login_day_count,
                   --累积
                nvl(dwt_data.login_count , 0 ) + nvl(dws_data.login_count,0)   login_count,
            nvl(dwt_data.order_count , 0 ) + nvl(dws_data.order_count,0)   order_count,
            nvl(dwt_data.order_activity_count , 0 ) + nvl(dws_data.order_activity_count,0)   order_activity_count,
            nvl(dwt_data.order_activity_reduce_amount , 0 ) + nvl(dws_data.order_activity_reduce_amount,0)   order_activity_reduce_amount,
            nvl(dwt_data.order_coupon_count , 0 ) + nvl(dws_data.order_coupon_count,0)   order_coupon_count,
            nvl(dwt_data.order_coupon_reduce_amount , 0 ) + nvl(dws_data.order_coupon_reduce_amount,0)   order_coupon_reduce_amount,
            nvl(dwt_data.order_original_amount , 0 ) + nvl(dws_data.order_original_amount,0)   order_original_amount,
            nvl(dwt_data.order_final_amount , 0 ) + nvl(dws_data.order_final_amount,0)   order_final_amount,
            nvl(dwt_data.payment_count , 0 ) + nvl(dws_data.payment_count,0)   payment_count,
            nvl(dwt_data.payment_amount , 0 ) + nvl(dws_data.payment_amount,0)   payment_amount,
            nvl(dwt_data.refund_order_count , 0 ) + nvl(dws_data.refund_order_count,0)   refund_order_count,
            nvl(dwt_data.refund_order_num , 0 ) + nvl(dws_data.refund_order_num,0)   refund_order_num,
            nvl(dwt_data.refund_order_amount , 0 ) + nvl(dws_data.refund_order_amount,0)   refund_order_amount,
            nvl(dwt_data.refund_payment_count , 0 ) + nvl(dws_data.refund_payment_count,0)   refund_payment_count,
            nvl(dwt_data.refund_payment_num , 0 ) + nvl(dws_data.refund_payment_num,0)   refund_payment_num,
            nvl(dwt_data.refund_payment_amount , 0 ) + nvl(dws_data.refund_payment_amount,0)   refund_payment_amount,
            nvl(dwt_data.cart_count , 0 ) + nvl(dws_data.cart_count,0)   cart_count,
            nvl(dwt_data.favor_count , 0 ) + nvl(dws_data.favor_count,0)   favor_count,
            nvl(dwt_data.coupon_get_count , 0 ) + nvl(dws_data.coupon_get_count,0)   coupon_get_count,
            nvl(dwt_data.coupon_using_count , 0 ) + nvl(dws_data.coupon_using_count,0)   coupon_using_count,
            nvl(dwt_data.coupon_used_count , 0 ) + nvl(dws_data.coupon_used_count,0)   coupon_used_count,
            nvl(dwt_data.appraise_good_count , 0 ) + nvl(dws_data.appraise_good_count,0)   appraise_good_count,
            nvl(dwt_data.appraise_mid_count , 0 ) + nvl(dws_data.appraise_mid_count,0)   appraise_mid_count,
            nvl(dwt_data.appraise_bad_count , 0 ) + nvl(dws_data.appraise_bad_count,0)   appraise_bad_count,
            nvl(dwt_data.appraise_default_count , 0 ) + nvl(dws_data.appraise_default_count,0)   appraise_default_count,
                -- 最近1天  判断在dws层有没有数据,如果有,就取dws层当天统计的指标
            nvl(dws_data.login_count , 0 )  login_date_1d_count,
            nvl(dws_data.order_count , 0 )  order_last_1d_count,
            nvl(dws_data.order_activity_count , 0 )  order_activity_last_1d_count,
            nvl(dws_data.order_activity_reduce_amount , 0.0 )  order_activity_reduce_last_1d_amount,
            nvl(dws_data.order_coupon_count , 0 )  order_coupon_last_1d_count,
            nvl(dws_data.order_coupon_reduce_amount , 0.0)  order_coupon_reduce_last_1d_amount,
            nvl(dws_data.order_original_amount , 0.0 )  order_last_1d_original_amount,
            nvl(dws_data.order_final_amount , 0.0 )  order_last_1d_final_amount,
            nvl(dws_data.payment_count , 0 )  payment_last_1d_count,
            nvl(dws_data.payment_amount , 0.0 )  payment_last_1d_amount,
            nvl(dws_data.refund_order_count , 0 )  refund_order_last_1d_count,
            nvl(dws_data.refund_order_num , 0 )  refund_order_last_1d_num,
            nvl(dws_data.refund_order_amount , 0.0 )  refund_order_last_1d_amount,
            nvl(dws_data.refund_payment_count , 0 )  refund_payment_last_1d_count,
            nvl(dws_data.refund_payment_num , 0 )  refund_payment_last_1d_num,
            nvl(dws_data.refund_payment_amount , 0.0 )  refund_payment_last_1d_amount,
            nvl(dws_data.cart_count , 0 )  cart_last_1d_count,
            nvl(dws_data.favor_count , 0 )  favor_last_1d_count,
            nvl(dws_data.coupon_get_count , 0 )  coupon_last_1d_get_count,
            nvl(dws_data.coupon_using_count , 0 )  coupon_last_1d_using_count,
            nvl(dws_data.coupon_used_count , 0 )  coupon_last_1d_used_count,
            nvl(dws_data.appraise_good_count , 0 )  appraise_last_1d_good_count,
            nvl(dws_data.appraise_mid_count , 0 )  appraise_last_1d_mid_count,
            nvl(dws_data.appraise_bad_count , 0 )  appraise_last_1d_bad_count,
            nvl(dws_data.appraise_default_count , 0 )  appraise_last_1d_default_count,
                   -- 最近7天
            nvl(dwt_data.login_last_7d_count , 0 ) + nvl(dws_data.login_count,0 ) -nvl(dws_7days_ago_data.login_count,0 ) login_last_7d_count,
            nvl(dwt_data.order_last_7d_count , 0 ) + nvl(dws_data.order_count,0 ) -nvl(dws_7days_ago_data.order_count,0 ) order_last_7d_count,
            nvl(dwt_data.order_activity_last_7d_count , 0 ) + nvl(dws_data.order_activity_count,0 ) -nvl(dws_7days_ago_data.order_activity_count,0 ) order_activity_last_7d_count,
            nvl(dwt_data.order_activity_reduce_last_7d_amount , 0 ) + nvl(dws_data.order_activity_reduce_amount,0 ) -nvl(dws_7days_ago_data.order_activity_reduce_amount,0 ) order_activity_reduce_last_7d_amount,
            nvl(dwt_data.order_coupon_last_7d_count , 0 ) + nvl(dws_data.order_coupon_count,0 ) -nvl(dws_7days_ago_data.order_coupon_count,0 ) order_coupon_last_7d_count,
            nvl(dwt_data.order_coupon_reduce_last_7d_amount , 0 ) + nvl(dws_data.order_coupon_reduce_amount,0 ) -nvl(dws_7days_ago_data.order_coupon_reduce_amount,0 ) order_coupon_reduce_last_7d_amount,
            nvl(dwt_data.order_last_7d_original_amount , 0 ) + nvl(dws_data.order_original_amount,0 ) -nvl(dws_7days_ago_data.order_original_amount,0 ) order_last_7d_original_amount,
            nvl(dwt_data.order_last_7d_final_amount , 0 ) + nvl(dws_data.order_final_amount,0 ) -nvl(dws_7days_ago_data.order_final_amount,0 ) order_last_7d_final_amount,
            nvl(dwt_data.payment_last_7d_count , 0 ) + nvl(dws_data.payment_count,0 ) -nvl(dws_7days_ago_data.payment_count,0 ) payment_last_7d_count,
            nvl(dwt_data.payment_last_7d_amount , 0 ) + nvl(dws_data.payment_amount,0 ) -nvl(dws_7days_ago_data.payment_amount,0 ) payment_last_7d_amount,
            nvl(dwt_data.refund_order_last_7d_count , 0 ) + nvl(dws_data.refund_order_count,0 ) -nvl(dws_7days_ago_data.refund_order_count,0 ) refund_order_last_7d_count,
            nvl(dwt_data.refund_order_last_7d_num , 0 ) + nvl(dws_data.refund_order_num,0 ) -nvl(dws_7days_ago_data.refund_order_num,0 ) refund_order_last_7d_num,
            nvl(dwt_data.refund_order_last_7d_amount , 0 ) + nvl(dws_data.refund_order_amount,0 ) -nvl(dws_7days_ago_data.refund_order_amount,0 ) refund_order_last_7d_amount,
            nvl(dwt_data.refund_payment_last_7d_count , 0 ) + nvl(dws_data.refund_payment_count,0 ) -nvl(dws_7days_ago_data.refund_payment_count,0 ) refund_payment_last_7d_count,
            nvl(dwt_data.refund_payment_last_7d_num , 0 ) + nvl(dws_data.refund_payment_num,0 ) -nvl(dws_7days_ago_data.refund_payment_num,0 ) refund_payment_last_7d_num,
            nvl(dwt_data.refund_payment_last_7d_amount , 0 ) + nvl(dws_data.refund_payment_amount,0 ) -nvl(dws_7days_ago_data.refund_payment_amount,0 ) refund_payment_last_7d_amount,
            nvl(dwt_data.cart_last_7d_count , 0 ) + nvl(dws_data.cart_count,0 ) -nvl(dws_7days_ago_data.cart_count,0 ) cart_last_7d_count,
            nvl(dwt_data.favor_last_7d_count , 0 ) + nvl(dws_data.favor_count,0 ) -nvl(dws_7days_ago_data.favor_count,0 ) favor_last_7d_count,
            nvl(dwt_data.coupon_last_7d_get_count , 0 ) + nvl(dws_data.coupon_get_count,0 ) -nvl(dws_7days_ago_data.coupon_get_count,0 ) coupon_last_7d_get_count,
            nvl(dwt_data.coupon_last_7d_using_count , 0 ) + nvl(dws_data.coupon_using_count,0 ) -nvl(dws_7days_ago_data.coupon_using_count,0 ) coupon_last_7d_using_count,
            nvl(dwt_data.coupon_last_7d_used_count , 0 ) + nvl(dws_data.coupon_used_count,0 ) -nvl(dws_7days_ago_data.coupon_used_count,0 ) coupon_last_7d_used_count,
            nvl(dwt_data.appraise_last_7d_good_count , 0 ) + nvl(dws_data.appraise_good_count,0 ) -nvl(dws_7days_ago_data.appraise_good_count,0 ) appraise_last_7d_good_count,
            nvl(dwt_data.appraise_last_7d_mid_count , 0 ) + nvl(dws_data.appraise_mid_count,0 ) -nvl(dws_7days_ago_data.appraise_mid_count,0 ) appraise_last_7d_mid_count,
            nvl(dwt_data.appraise_last_7d_bad_count , 0 ) + nvl(dws_data.appraise_bad_count,0 ) -nvl(dws_7days_ago_data.appraise_bad_count,0 ) appraise_last_7d_bad_count,
            nvl(dwt_data.appraise_last_7d_default_count , 0 ) + nvl(dws_data.appraise_default_count,0 ) -nvl(dws_7days_ago_data.appraise_default_count,0 ) appraise_last_7d_default_count,
    
                   --最近30天
            nvl(dwt_data.login_last_30d_count , 0 ) + nvl(dws_data.login_count,0 ) -nvl(dws_30days_ago_data.login_count,0 ) login_last_30d_count,
            nvl(dwt_data.order_last_30d_count , 0 ) + nvl(dws_data.order_count,0 ) -nvl(dws_30days_ago_data.order_count,0 ) order_last_30d_count,
            nvl(dwt_data.order_activity_last_30d_count , 0 ) + nvl(dws_data.order_activity_count,0 ) -nvl(dws_30days_ago_data.order_activity_count,0 ) order_activity_last_30d_count,
            nvl(dwt_data.order_activity_reduce_last_30d_amount , 0 ) + nvl(dws_data.order_activity_reduce_amount,0 ) -nvl(dws_30days_ago_data.order_activity_reduce_amount,0 ) order_activity_reduce_last_30d_amount,
            nvl(dwt_data.order_coupon_last_30d_count , 0 ) + nvl(dws_data.order_coupon_count,0 ) -nvl(dws_30days_ago_data.order_coupon_count,0 ) order_coupon_last_30d_count,
            nvl(dwt_data.order_coupon_reduce_last_30d_amount , 0 ) + nvl(dws_data.order_coupon_reduce_amount,0 ) -nvl(dws_30days_ago_data.order_coupon_reduce_amount,0 ) order_coupon_reduce_last_30d_amount,
            nvl(dwt_data.order_last_30d_original_amount , 0 ) + nvl(dws_data.order_original_amount,0 ) -nvl(dws_30days_ago_data.order_original_amount,0 ) order_last_30d_original_amount,
            nvl(dwt_data.order_last_30d_final_amount , 0 ) + nvl(dws_data.order_final_amount,0 ) -nvl(dws_30days_ago_data.order_final_amount,0 ) order_last_30d_final_amount,
            nvl(dwt_data.payment_last_30d_count , 0 ) + nvl(dws_data.payment_count,0 ) -nvl(dws_30days_ago_data.payment_count,0 ) payment_last_30d_count,
            nvl(dwt_data.payment_last_30d_amount , 0 ) + nvl(dws_data.payment_amount,0 ) -nvl(dws_30days_ago_data.payment_amount,0 ) payment_last_30d_amount,
            nvl(dwt_data.refund_order_last_30d_count , 0 ) + nvl(dws_data.refund_order_count,0 ) -nvl(dws_30days_ago_data.refund_order_count,0 ) refund_order_last_30d_count,
            nvl(dwt_data.refund_order_last_30d_num , 0 ) + nvl(dws_data.refund_order_num,0 ) -nvl(dws_30days_ago_data.refund_order_num,0 ) refund_order_last_30d_num,
            nvl(dwt_data.refund_order_last_30d_amount , 0 ) + nvl(dws_data.refund_order_amount,0 ) -nvl(dws_30days_ago_data.refund_order_amount,0 ) refund_order_last_30d_amount,
            nvl(dwt_data.refund_payment_last_30d_count , 0 ) + nvl(dws_data.refund_payment_count,0 ) -nvl(dws_30days_ago_data.refund_payment_count,0 ) refund_payment_last_30d_count,
            nvl(dwt_data.refund_payment_last_30d_num , 0 ) + nvl(dws_data.refund_payment_num,0 ) -nvl(dws_30days_ago_data.refund_payment_num,0 ) refund_payment_last_30d_num,
            nvl(dwt_data.refund_payment_last_30d_amount , 0 ) + nvl(dws_data.refund_payment_amount,0 ) -nvl(dws_30days_ago_data.refund_payment_amount,0 ) refund_payment_last_30d_amount,
            nvl(dwt_data.cart_last_30d_count , 0 ) + nvl(dws_data.cart_count,0 ) -nvl(dws_30days_ago_data.cart_count,0 ) cart_last_30d_count,
            nvl(dwt_data.favor_last_30d_count , 0 ) + nvl(dws_data.favor_count,0 ) -nvl(dws_30days_ago_data.favor_count,0 ) favor_last_30d_count,
            nvl(dwt_data.coupon_last_30d_get_count , 0 ) + nvl(dws_data.coupon_get_count,0 ) -nvl(dws_30days_ago_data.coupon_get_count,0 ) coupon_last_30d_get_count,
            nvl(dwt_data.coupon_last_30d_using_count , 0 ) + nvl(dws_data.coupon_using_count,0 ) -nvl(dws_30days_ago_data.coupon_using_count,0 ) coupon_last_30d_using_count,
            nvl(dwt_data.coupon_last_30d_used_count , 0 ) + nvl(dws_data.coupon_used_count,0 ) -nvl(dws_30days_ago_data.coupon_used_count,0 ) coupon_last_30d_used_count,
            nvl(dwt_data.appraise_last_30d_good_count , 0 ) + nvl(dws_data.appraise_good_count,0 ) -nvl(dws_30days_ago_data.appraise_good_count,0 ) appraise_last_30d_good_count,
            nvl(dwt_data.appraise_last_30d_mid_count , 0 ) + nvl(dws_data.appraise_mid_count,0 ) -nvl(dws_30days_ago_data.appraise_mid_count,0 ) appraise_last_30d_mid_count,
            nvl(dwt_data.appraise_last_30d_bad_count , 0 ) + nvl(dws_data.appraise_bad_count,0 ) -nvl(dws_30days_ago_data.appraise_bad_count,0 ) appraise_last_30d_bad_count,
            nvl(dwt_data.appraise_last_30d_default_count , 0 ) + nvl(dws_data.appraise_default_count,0 ) -nvl(dws_30days_ago_data.appraise_default_count,0 ) appraise_last_30d_default_count
    from
    (
        select *
        from ${APP}.dwt_user_topic
        where dt = date_sub('$do_date',1)
    ) dwt_data
    full join
    (
    -- dws层 今日 所有产生行为的用户的指标  + dws层 今日 只注册未产生行为的新用户的指标
    select  nvl(t1.id,t2.user_id)  user_id,         --用户id
            nvl(login_count,0) login_count,         --登录次数
            nvl(cart_count,0) cart_count,           --加入购物车次数
            nvl(favor_count,0) favor_count,         --收藏次数
            nvl(order_count,0) order_count,         --下单次数
            nvl(order_activity_count,0) order_activity_count,                   --订单参与活动次数
            nvl(order_activity_reduce_amount,0) order_activity_reduce_amount,   --订单减免活动金额
            nvl(order_coupon_count,0) order_coupon_count,                       --订单用券次数
            nvl(order_coupon_reduce_amount,0) order_coupon_reduce_amount,       --订单减免用券金额
            nvl(order_original_amount,0) order_original_amount,     --订单原始金额
            nvl(order_final_amount,0) order_final_amount,           --金丹最终金额
            nvl(payment_count,0) payment_count,                     --支付次数
            nvl(payment_amount,0) payment_amount,                   --支付金额
            nvl(refund_order_count,0) refund_order_count,           --退单次数
            nvl(refund_order_num,0) refund_order_num,               --退单件数
            nvl(refund_order_amount,0) refund_order_amount,         --退单金额
            nvl(refund_payment_count,0) refund_payment_count,       --退款次数
            nvl(refund_payment_num,0) refund_payment_num,           --退款件数
            nvl(refund_payment_amount,0) refund_payment_amount,     --退款金额
            nvl(coupon_get_count,0) coupon_get_count,               --优惠券领取次数
            nvl(coupon_using_count,0) coupon_using_count,           --优惠券下单使用次数
            nvl(coupon_used_count,0) coupon_used_count,             --优惠券支付使用次数
            nvl(appraise_good_count,0) appraise_good_count,         --好评数
            nvl(appraise_mid_count,0) appraise_mid_count,           --中评数
            nvl(appraise_bad_count,0) appraise_bad_count,           --差评数
            nvl(appraise_default_count,0) appraise_default_count    --默认评价数
    from
    (
        --今日注册的所有的新用户
         select id
         from ${APP}.dim_user_info
         where dt = '9999-99-99'
         and date_format(create_time, 'yyyy-MM-dd') = '$do_date'
    ) t1
    full join
    (
            select *
            from ${APP}.dws_user_action_daycount
            where dt = '$do_date'
    ) t2 on t1.id = t2.user_id
    ) dws_data on dwt_data.user_id = dws_data.user_id
    left join
    (
        --取dws层在7天前的指标
        select *
        from ${APP}.dws_user_action_daycount
        where dt = date_sub('$do_date',7)
    ) dws_7days_ago_data on dwt_data.user_id = dws_7days_ago_data.user_id
    left join
    (
        --取dws层在30天前的指标
        select *
        from ${APP}.dws_user_action_daycount
        where dt = date_sub('$do_date',30)
    ) dws_30days_ago_data on dwt_data.user_id = dws_30days_ago_data.user_id
    ) tmp;
    "
    
    dwt_sku_topic="
    insert overwrite table ${APP}.dwt_sku_topic partition (dt = '$do_date')
    select sku_id,
           order_last_1d_count,
           order_last_1d_num,
           order_activity_last_1d_count,
           order_coupon_last_1d_count,
           order_activity_reduce_last_1d_amount,
           order_coupon_reduce_last_1d_amount,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_last_7d_count,
           order_last_7d_num,
           order_activity_last_7d_count,
           order_coupon_last_7d_count,
           order_activity_reduce_last_7d_amount,
           order_coupon_reduce_last_7d_amount,
           order_last_7d_original_amount,
           order_last_7d_final_amount,
           order_last_30d_count,
           order_last_30d_num,
           order_activity_last_30d_count,
           order_coupon_last_30d_count,
           order_activity_reduce_last_30d_amount,
           order_coupon_reduce_last_30d_amount,
           order_last_30d_original_amount,
           order_last_30d_final_amount,
           order_count,
           order_num,
           order_activity_count,
           order_coupon_count,
           order_activity_reduce_amount,
           order_coupon_reduce_amount,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_num,
           payment_last_1d_amount,
           payment_last_7d_count,
           payment_last_7d_num,
           payment_last_7d_amount,
           payment_last_30d_count,
           payment_last_30d_num,
           payment_last_30d_amount,
           payment_count,
           payment_num,
           payment_amount,
           refund_order_last_1d_count,
           refund_order_last_1d_num,
           refund_order_last_1d_amount,
           refund_order_last_7d_count,
           refund_order_last_7d_num,
           refund_order_last_7d_amount,
           refund_order_last_30d_count,
           refund_order_last_30d_num,
           refund_order_last_30d_amount,
           refund_order_count,
           refund_order_num,
           refund_order_amount,
           refund_payment_last_1d_count,
           refund_payment_last_1d_num,
           refund_payment_last_1d_amount,
           refund_payment_last_7d_count,
           refund_payment_last_7d_num,
           refund_payment_last_7d_amount,
           refund_payment_last_30d_count,
           refund_payment_last_30d_num,
           refund_payment_last_30d_amount,
           refund_payment_count,
           refund_payment_num,
           refund_payment_amount,
           cart_last_1d_count,
           cart_last_7d_count,
           cart_last_30d_count,
           cart_count,
           favor_last_1d_count,
           favor_last_7d_count,
           favor_last_30d_count,
           favor_count,
           appraise_last_1d_good_count,
           appraise_last_1d_mid_count,
           appraise_last_1d_bad_count,
           appraise_last_1d_default_count,
           appraise_last_7d_good_count,
           appraise_last_7d_mid_count,
           appraise_last_7d_bad_count,
           appraise_last_7d_default_count,
           appraise_last_30d_good_count,
           appraise_last_30d_mid_count,
           appraise_last_30d_bad_count,
           appraise_last_30d_default_count,
           appraise_good_count,
           appraise_mid_count,
           appraise_bad_count,
           appraise_default_count
    from
    (
    select  nvl(dwt_data.sku_id,dws_data.sku_id) sku_id,
            nvl(dwt_data.order_num,0 ) + nvl(dws_data.order_num ,0 ) order_num,
            nvl(dwt_data.payment_num,0 ) + nvl(dws_data.payment_num ,0 ) payment_num,
            nvl(dwt_data.refund_order_num,0 ) + nvl(dws_data.refund_order_num ,0 ) refund_order_num,
            nvl(dwt_data.refund_payment_num,0 ) + nvl(dws_data.refund_payment_num ,0 ) refund_payment_num,
            nvl(dwt_data.order_count,0 ) + nvl(dws_data.order_count ,0 ) order_count,
            nvl(dwt_data.order_activity_count,0 ) + nvl(dws_data.order_activity_count ,0 ) order_activity_count,
            nvl(dwt_data.order_coupon_count,0 ) + nvl(dws_data.order_coupon_count ,0 ) order_coupon_count,
            nvl(dwt_data.order_activity_reduce_amount,0 ) + nvl(dws_data.order_activity_reduce_amount ,0 ) order_activity_reduce_amount,
            nvl(dwt_data.order_coupon_reduce_amount,0 ) + nvl(dws_data.order_coupon_reduce_amount ,0 ) order_coupon_reduce_amount,
            nvl(dwt_data.order_original_amount,0 ) + nvl(dws_data.order_original_amount ,0 ) order_original_amount,
            nvl(dwt_data.order_final_amount,0 ) + nvl(dws_data.order_final_amount ,0 ) order_final_amount,
            nvl(dwt_data.payment_count,0 ) + nvl(dws_data.payment_count ,0 ) payment_count,
            nvl(dwt_data.payment_amount,0 ) + nvl(dws_data.payment_amount ,0 ) payment_amount,
            nvl(dwt_data.refund_order_count,0 ) + nvl(dws_data.refund_order_count ,0 ) refund_order_count,
            nvl(dwt_data.refund_order_amount,0 ) + nvl(dws_data.refund_order_amount ,0 ) refund_order_amount,
            nvl(dwt_data.refund_payment_count,0 ) + nvl(dws_data.refund_payment_count ,0 ) refund_payment_count,
            nvl(dwt_data.refund_payment_amount,0 ) + nvl(dws_data.refund_payment_amount ,0 ) refund_payment_amount,
            nvl(dwt_data.cart_count,0 ) + nvl(dws_data.cart_count ,0 ) cart_count,
            nvl(dwt_data.favor_count,0 ) + nvl(dws_data.favor_count ,0 ) favor_count,
            nvl(dwt_data.appraise_good_count,0 ) + nvl(dws_data.appraise_good_count ,0 ) appraise_good_count,
            nvl(dwt_data.appraise_mid_count,0 ) + nvl(dws_data.appraise_mid_count ,0 ) appraise_mid_count,
            nvl(dwt_data.appraise_bad_count,0 ) + nvl(dws_data.appraise_bad_count ,0 ) appraise_bad_count,
            nvl(dwt_data.appraise_default_count,0 ) + nvl(dws_data.appraise_default_count ,0 ) appraise_default_count,
            --最近1d 的,根据dws_data.x 在当日的值进行判断
            nvl(dws_data.order_num , 0 ) order_last_1d_num,
            nvl(dws_data.payment_num , 0 ) payment_last_1d_num,
            nvl(dws_data.refund_order_num , 0 ) refund_order_last_1d_num,
            nvl(dws_data.refund_payment_num , 0 ) refund_payment_last_1d_num,
            nvl(dws_data.order_count , 0 ) order_last_1d_count,
            nvl(dws_data.order_activity_count , 0 ) order_activity_last_1d_count,
            nvl(dws_data.order_coupon_count , 0 ) order_coupon_last_1d_count,
            nvl(dws_data.order_activity_reduce_amount , 0 ) order_activity_reduce_last_1d_amount,
            nvl(dws_data.order_coupon_reduce_amount , 0 ) order_coupon_reduce_last_1d_amount,
            nvl(dws_data.order_original_amount , 0 ) order_last_1d_original_amount,
            nvl(dws_data.order_final_amount , 0 ) order_last_1d_final_amount,
            nvl(dws_data.payment_count , 0 ) payment_last_1d_count,
            nvl(dws_data.payment_amount , 0 ) payment_last_1d_amount,
            nvl(dws_data.refund_order_count , 0 ) refund_order_last_1d_count,
            nvl(dws_data.refund_order_amount , 0 ) refund_order_last_1d_amount,
            nvl(dws_data.refund_payment_count , 0 ) refund_payment_last_1d_count,
            nvl(dws_data.refund_payment_amount , 0 ) refund_payment_last_1d_amount,
            nvl(dws_data.cart_count , 0 ) cart_last_1d_count,
            nvl(dws_data.favor_count , 0 ) favor_last_1d_count,
            nvl(dws_data.appraise_good_count , 0 ) appraise_last_1d_good_count,
            nvl(dws_data.appraise_mid_count , 0 ) appraise_last_1d_mid_count,
            nvl(dws_data.appraise_bad_count , 0 ) appraise_last_1d_bad_count,
            nvl(dws_data.appraise_default_count , 0 ) appraise_last_1d_default_count,
            --最近7d ,采取滑动方式处理
            nvl(dwt_data.order_last_7d_num,0) + nvl(dws_data.order_num,0) -nvl(dws_data_7daysago.order_num,0) order_last_7d_num,
            nvl(dwt_data.payment_last_7d_num,0) + nvl(dws_data.payment_num,0) -nvl(dws_data_7daysago.payment_num,0) payment_last_7d_num,
            nvl(dwt_data.refund_order_last_7d_num,0) + nvl(dws_data.refund_order_num,0) -nvl(dws_data_7daysago.refund_order_num,0) refund_order_last_7d_num,
            nvl(dwt_data.refund_payment_last_7d_num,0) + nvl(dws_data.refund_payment_num,0) -nvl(dws_data_7daysago.refund_payment_num,0) refund_payment_last_7d_num,
            nvl(dwt_data.order_last_7d_count,0) + nvl(dws_data.order_count,0) -nvl(dws_data_7daysago.order_count,0) order_last_7d_count,
            nvl(dwt_data.order_activity_last_7d_count,0) + nvl(dws_data.order_activity_count,0) -nvl(dws_data_7daysago.order_activity_count,0) order_activity_last_7d_count,
            nvl(dwt_data.order_coupon_last_7d_count,0) + nvl(dws_data.order_coupon_count,0) -nvl(dws_data_7daysago.order_coupon_count,0) order_coupon_last_7d_count,
            nvl(dwt_data.order_activity_reduce_last_7d_amount,0) + nvl(dws_data.order_activity_reduce_amount,0) -nvl(dws_data_7daysago.order_activity_reduce_amount,0) order_activity_reduce_last_7d_amount,
            nvl(dwt_data.order_coupon_reduce_last_7d_amount,0) + nvl(dws_data.order_coupon_reduce_amount,0) -nvl(dws_data_7daysago.order_coupon_reduce_amount,0) order_coupon_reduce_last_7d_amount,
            nvl(dwt_data.order_last_7d_original_amount,0) + nvl(dws_data.order_original_amount,0) -nvl(dws_data_7daysago.order_original_amount,0) order_last_7d_original_amount,
            nvl(dwt_data.order_last_7d_final_amount,0) + nvl(dws_data.order_final_amount,0) -nvl(dws_data_7daysago.order_final_amount,0) order_last_7d_final_amount,
            nvl(dwt_data.payment_last_7d_count,0) + nvl(dws_data.payment_count,0) -nvl(dws_data_7daysago.payment_count,0) payment_last_7d_count,
            nvl(dwt_data.payment_last_7d_amount,0) + nvl(dws_data.payment_amount,0) -nvl(dws_data_7daysago.payment_amount,0) payment_last_7d_amount,
            nvl(dwt_data.refund_order_last_7d_count,0) + nvl(dws_data.refund_order_count,0) -nvl(dws_data_7daysago.refund_order_count,0) refund_order_last_7d_count,
            nvl(dwt_data.refund_order_last_7d_amount,0) + nvl(dws_data.refund_order_amount,0) -nvl(dws_data_7daysago.refund_order_amount,0) refund_order_last_7d_amount,
            nvl(dwt_data.refund_payment_last_7d_count,0) + nvl(dws_data.refund_payment_count,0) -nvl(dws_data_7daysago.refund_payment_count,0) refund_payment_last_7d_count,
            nvl(dwt_data.refund_payment_last_7d_amount,0) + nvl(dws_data.refund_payment_amount,0) -nvl(dws_data_7daysago.refund_payment_amount,0) refund_payment_last_7d_amount,
            nvl(dwt_data.cart_last_7d_count,0) + nvl(dws_data.cart_count,0) -nvl(dws_data_7daysago.cart_count,0) cart_last_7d_count,
            nvl(dwt_data.favor_last_7d_count,0) + nvl(dws_data.favor_count,0) -nvl(dws_data_7daysago.favor_count,0) favor_last_7d_count,
            nvl(dwt_data.appraise_last_7d_good_count,0) + nvl(dws_data.appraise_good_count,0) -nvl(dws_data_7daysago.appraise_good_count,0) appraise_last_7d_good_count,
            nvl(dwt_data.appraise_last_7d_mid_count,0) + nvl(dws_data.appraise_mid_count,0) -nvl(dws_data_7daysago.appraise_mid_count,0) appraise_last_7d_mid_count,
            nvl(dwt_data.appraise_last_7d_bad_count,0) + nvl(dws_data.appraise_bad_count,0) -nvl(dws_data_7daysago.appraise_bad_count,0) appraise_last_7d_bad_count,
            nvl(dwt_data.appraise_last_7d_default_count,0) + nvl(dws_data.appraise_default_count,0) -nvl(dws_data_7daysago.appraise_default_count,0) appraise_last_7d_default_count,
            nvl(dwt_data.order_last_30d_num,0) + nvl(dws_data.order_num,0) -nvl(dws_data_30daysago.order_num,0) order_last_30d_num,
            nvl(dwt_data.payment_last_30d_num,0) + nvl(dws_data.payment_num,0) -nvl(dws_data_30daysago.payment_num,0) payment_last_30d_num,
            nvl(dwt_data.refund_order_last_30d_num,0) + nvl(dws_data.refund_order_num,0) -nvl(dws_data_30daysago.refund_order_num,0) refund_order_last_30d_num,
            nvl(dwt_data.refund_payment_last_30d_num,0) + nvl(dws_data.refund_payment_num,0) -nvl(dws_data_30daysago.refund_payment_num,0) refund_payment_last_30d_num,
            nvl(dwt_data.order_last_30d_count,0) + nvl(dws_data.order_count,0) -nvl(dws_data_30daysago.order_count,0) order_last_30d_count,
            nvl(dwt_data.order_activity_last_30d_count,0) + nvl(dws_data.order_activity_count,0) -nvl(dws_data_30daysago.order_activity_count,0) order_activity_last_30d_count,
            nvl(dwt_data.order_coupon_last_30d_count,0) + nvl(dws_data.order_coupon_count,0) -nvl(dws_data_30daysago.order_coupon_count,0) order_coupon_last_30d_count,
            nvl(dwt_data.order_activity_reduce_last_30d_amount,0) + nvl(dws_data.order_activity_reduce_amount,0) -nvl(dws_data_30daysago.order_activity_reduce_amount,0) order_activity_reduce_last_30d_amount,
            nvl(dwt_data.order_coupon_reduce_last_30d_amount,0) + nvl(dws_data.order_coupon_reduce_amount,0) -nvl(dws_data_30daysago.order_coupon_reduce_amount,0) order_coupon_reduce_last_30d_amount,
            nvl(dwt_data.order_last_30d_original_amount,0) + nvl(dws_data.order_original_amount,0) -nvl(dws_data_30daysago.order_original_amount,0) order_last_30d_original_amount,
            nvl(dwt_data.order_last_30d_final_amount,0) + nvl(dws_data.order_final_amount,0) -nvl(dws_data_30daysago.order_final_amount,0) order_last_30d_final_amount,
            nvl(dwt_data.payment_last_30d_count,0) + nvl(dws_data.payment_count,0) -nvl(dws_data_30daysago.payment_count,0) payment_last_30d_count,
            nvl(dwt_data.payment_last_30d_amount,0) + nvl(dws_data.payment_amount,0) -nvl(dws_data_30daysago.payment_amount,0) payment_last_30d_amount,
            nvl(dwt_data.refund_order_last_30d_count,0) + nvl(dws_data.refund_order_count,0) -nvl(dws_data_30daysago.refund_order_count,0) refund_order_last_30d_count,
            nvl(dwt_data.refund_order_last_30d_amount,0) + nvl(dws_data.refund_order_amount,0) -nvl(dws_data_30daysago.refund_order_amount,0) refund_order_last_30d_amount,
            nvl(dwt_data.refund_payment_last_30d_count,0) + nvl(dws_data.refund_payment_count,0) -nvl(dws_data_30daysago.refund_payment_count,0) refund_payment_last_30d_count,
            nvl(dwt_data.refund_payment_last_30d_amount,0) + nvl(dws_data.refund_payment_amount,0) -nvl(dws_data_30daysago.refund_payment_amount,0) refund_payment_last_30d_amount,
            nvl(dwt_data.cart_last_30d_count,0) + nvl(dws_data.cart_count,0) -nvl(dws_data_30daysago.cart_count,0) cart_last_30d_count,
            nvl(dwt_data.favor_last_30d_count,0) + nvl(dws_data.favor_count,0) -nvl(dws_data_30daysago.favor_count,0) favor_last_30d_count,
            nvl(dwt_data.appraise_last_30d_good_count,0) + nvl(dws_data.appraise_good_count,0) -nvl(dws_data_30daysago.appraise_good_count,0) appraise_last_30d_good_count,
            nvl(dwt_data.appraise_last_30d_mid_count,0) + nvl(dws_data.appraise_mid_count,0) -nvl(dws_data_30daysago.appraise_mid_count,0) appraise_last_30d_mid_count,
            nvl(dwt_data.appraise_last_30d_bad_count,0) + nvl(dws_data.appraise_bad_count,0) -nvl(dws_data_30daysago.appraise_bad_count,0) appraise_last_30d_bad_count,
            nvl(dwt_data.appraise_last_30d_default_count,0) + nvl(dws_data.appraise_default_count,0) -nvl(dws_data_30daysago.appraise_default_count,0) appraise_last_30d_default_count
    from
    (
        --求截止至6月9号前一天的累计数据
        select *
        from ${APP}.dwt_sku_topic
        where dt = date_sub('$do_date', 1)
    ) dwt_data
    full join
    (
        -- 求6月9日当天,所有的sku产生的行为指标 =  产生行为的sku的指标 dws  +  新增的没有产生行为的sku
        select nvl(t1.id,t2.sku_id) sku_id,
             nvl(order_num,0) order_num,
             nvl(payment_num,0) payment_num,
             nvl(refund_order_num,0) refund_order_num,
             nvl(refund_payment_num,0) refund_payment_num,
             nvl(order_count,0) order_count,
             nvl(order_activity_count,0) order_activity_count,
             nvl(order_coupon_count,0) order_coupon_count,
             nvl(order_activity_reduce_amount,0) order_activity_reduce_amount,
             nvl(order_coupon_reduce_amount,0) order_coupon_reduce_amount,
             nvl(order_original_amount,0) order_original_amount,
             nvl(order_final_amount,0) order_final_amount,
             nvl(payment_count,0) payment_count,
             nvl(payment_amount,0) payment_amount,
             nvl(refund_order_count,0) refund_order_count,
             nvl(refund_order_amount,0) refund_order_amount,
             nvl(refund_payment_count,0) refund_payment_count,
             nvl(refund_payment_amount,0) refund_payment_amount,
             nvl(cart_count,0) cart_count,
             nvl(favor_count,0) favor_count,
             nvl(appraise_good_count,0) appraise_good_count,
             nvl(appraise_mid_count,0) appraise_mid_count,
             nvl(appraise_bad_count,0) appraise_bad_count,
             nvl(appraise_default_count,0) appraise_default_count
        from
        (
            --取当日新增的商品
            select id
            from ${APP}.dim_sku_info
            where dt = '$do_date'
            and date_format(create_time,'yyyy-MM-dd') = '$do_date'
        ) t1
        full join
        (
            select *
            from ${APP}.dws_sku_action_daycount
            where dt = '$do_date'
        ) t2 on t1.id = t2.sku_id
    ) dws_data on dwt_data.sku_id = dws_data.sku_id
    left join
    (
        select *
        from ${APP}.dws_sku_action_daycount
        where dt = date_sub('$do_date',7)
    ) dws_data_7daysago on dwt_data.sku_id = dws_data_7daysago.sku_id
    left join
    (
        select *
        from ${APP}.dws_sku_action_daycount
        where dt = date_sub('$do_date',30)
    ) dws_data_30daysago on dwt_data.sku_id = dws_data_30daysago.sku_id
    ) tmp;
    "
    
    dwt_coupon_topic="
    insert overwrite table ${APP}.dwt_coupon_topic partition (dt = '$do_date')
    select coupon_id,
           get_last_1d_count,
           get_last_7d_count,
           get_last_30d_count,
           get_count,
           order_last_1d_count,
           order_last_1d_reduce_amount,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_last_7d_count,
           order_last_7d_reduce_amount,
           order_last_7d_original_amount,
           order_last_7d_final_amount,
           order_last_30d_count,
           order_last_30d_reduce_amount,
           order_last_30d_original_amount,
           order_last_30d_final_amount,
           order_count,
           order_reduce_amount,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_reduce_amount,
           payment_last_1d_amount,
           payment_last_7d_count,
           payment_last_7d_reduce_amount,
           payment_last_7d_amount,
           payment_last_30d_count,
           payment_last_30d_reduce_amount,
           payment_last_30d_amount,
           payment_count,
           payment_reduce_amount,
           payment_amount,
           expire_last_1d_count,
           expire_last_7d_count,
           expire_last_30d_count,
           expire_count
    from
    (
        select  nvl(dwt_data.coupon_id,dws_data.coupon_id) coupon_id,
                nvl(dwt_data.get_count , 0 ) + nvl(dws_data.get_count , 0 ) get_count,
                nvl(dwt_data.order_count , 0 ) + nvl(dws_data.order_count , 0 ) order_count,
                nvl(dwt_data.order_reduce_amount , 0 ) + nvl(dws_data.order_reduce_amount , 0 ) order_reduce_amount,
                nvl(dwt_data.order_original_amount , 0 ) + nvl(dws_data.order_original_amount , 0 ) order_original_amount,
                nvl(dwt_data.order_final_amount , 0 ) + nvl(dws_data.order_final_amount , 0 ) order_final_amount,
                nvl(dwt_data.payment_count , 0 ) + nvl(dws_data.payment_count , 0 ) payment_count,
                nvl(dwt_data.payment_reduce_amount , 0 ) + nvl(dws_data.payment_reduce_amount , 0 ) payment_reduce_amount,
                nvl(dwt_data.payment_amount , 0 ) + nvl(dws_data.payment_amount , 0 ) payment_amount,
                nvl(dwt_data.expire_count , 0 ) + nvl(dws_data.expire_count , 0 ) expire_count,
                nvl(dws_data.get_count,0) get_last_1d_count,
                nvl(dws_data.order_count,0) order_last_1d_count,
                nvl(dws_data.order_reduce_amount,0) order_last_1d_reduce_amount,
                nvl(dws_data.order_original_amount,0) order_last_1d_original_amount,
                nvl(dws_data.order_final_amount,0) order_last_1d_final_amount,
                nvl(dws_data.payment_count,0) payment_last_1d_count,
                nvl(dws_data.payment_reduce_amount,0) payment_last_1d_reduce_amount,
                nvl(dws_data.payment_amount,0) payment_last_1d_amount,
                nvl(dws_data.expire_count,0) expire_last_1d_count,
                nvl(dwt_data.get_last_7d_count , 0 ) + nvl(dws_data.get_count,0) - nvl(dws_data_7daysago.get_count,0) get_last_7d_count,
                nvl(dwt_data.order_last_7d_count , 0 ) + nvl(dws_data.order_count,0) - nvl(dws_data_7daysago.order_count,0) order_last_7d_count,
                nvl(dwt_data.order_last_7d_reduce_amount , 0 ) + nvl(dws_data.order_reduce_amount,0) - nvl(dws_data_7daysago.order_reduce_amount,0) order_last_7d_reduce_amount,
                nvl(dwt_data.order_last_7d_original_amount , 0 ) + nvl(dws_data.order_original_amount,0) - nvl(dws_data_7daysago.order_original_amount,0) order_last_7d_original_amount,
                nvl(dwt_data.order_last_7d_final_amount , 0 ) + nvl(dws_data.order_final_amount,0) - nvl(dws_data_7daysago.order_final_amount,0) order_last_7d_final_amount,
                nvl(dwt_data.payment_last_7d_count , 0 ) + nvl(dws_data.payment_count,0) - nvl(dws_data_7daysago.payment_count,0) payment_last_7d_count,
                nvl(dwt_data.payment_last_7d_reduce_amount , 0 ) + nvl(dws_data.payment_reduce_amount,0) - nvl(dws_data_7daysago.payment_reduce_amount,0) payment_last_7d_reduce_amount,
                nvl(dwt_data.payment_last_7d_amount , 0 ) + nvl(dws_data.payment_amount,0) - nvl(dws_data_7daysago.payment_amount,0) payment_last_7d_amount,
                nvl(dwt_data.expire_last_7d_count , 0 ) + nvl(dws_data.expire_count,0) - nvl(dws_data_7daysago.expire_count,0) expire_last_7d_count,
                nvl(dwt_data.get_last_30d_count , 0 ) + nvl(dws_data.get_count,0) - nvl(dws_data_30daysago.get_count,0) get_last_30d_count,
                nvl(dwt_data.order_last_30d_count , 0 ) + nvl(dws_data.order_count,0) - nvl(dws_data_30daysago.order_count,0) order_last_30d_count,
                nvl(dwt_data.order_last_30d_reduce_amount , 0 ) + nvl(dws_data.order_reduce_amount,0) - nvl(dws_data_30daysago.order_reduce_amount,0) order_last_30d_reduce_amount,
                nvl(dwt_data.order_last_30d_original_amount , 0 ) + nvl(dws_data.order_original_amount,0) - nvl(dws_data_30daysago.order_original_amount,0) order_last_30d_original_amount,
                nvl(dwt_data.order_last_30d_final_amount , 0 ) + nvl(dws_data.order_final_amount,0) - nvl(dws_data_30daysago.order_final_amount,0) order_last_30d_final_amount,
                nvl(dwt_data.payment_last_30d_count , 0 ) + nvl(dws_data.payment_count,0) - nvl(dws_data_30daysago.payment_count,0) payment_last_30d_count,
                nvl(dwt_data.payment_last_30d_reduce_amount , 0 ) + nvl(dws_data.payment_reduce_amount,0) - nvl(dws_data_30daysago.payment_reduce_amount,0) payment_last_30d_reduce_amount,
                nvl(dwt_data.payment_last_30d_amount , 0 ) + nvl(dws_data.payment_amount,0) - nvl(dws_data_30daysago.payment_amount,0) payment_last_30d_amount,
                nvl(dwt_data.expire_last_30d_count , 0 ) + nvl(dws_data.expire_count,0) - nvl(dws_data_30daysago.expire_count,0) expire_last_30d_count
        from
        (
            --求6月9号的前一天的累计数据
            select *
            from ${APP}.dwt_coupon_topic
            where dt = date_sub('$do_date',1)
        ) dwt_data
        full join
        (
            select *
            from ${APP}.dws_coupon_info_daycount
            where dt = $do_date
        ) dws_data on dwt_data.coupon_id = dws_data.coupon_id
        left join
        (
            select *
            from ${APP}.dws_coupon_info_daycount
            where dt = date_sub('$do_date',7)
        ) dws_data_7daysago on dwt_data.coupon_id = dws_data_7daysago.coupon_id
        left join
        (
            select *
            from ${APP}.dws_coupon_info_daycount
            where dt = date_sub('$do_date',30)
        ) dws_data_30daysago on dwt_data.coupon_id = dws_data_30daysago.coupon_id
    ) tmp;
    "
    
    dwt_activity_topic="
    insert overwrite table ${APP}.dwt_activity_topic partition (dt = '$do_date')
    select activity_rule_id,
           activity_id,
           order_last_1d_count,
           order_last_1d_reduce_amount,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_count,
           order_reduce_amount,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_reduce_amount,
           payment_last_1d_amount,
           payment_count,
           payment_reduce_amount,
           payment_amount
    from
    (
        select  nvl(dwt_data.activity_rule_id,dws_data.activity_rule_id) activity_rule_id,
                nvl(dwt_data.activity_id,dws_data.activity_id) activity_id,
                -- 累积  dwt_data.x + dws_data.x
                nvl(dwt_data.order_count ,0 ) + nvl(dws_data.order_count ,0 ) order_count,
                nvl(dwt_data.order_reduce_amount ,0 ) + nvl(dws_data.order_reduce_amount ,0 ) order_reduce_amount,
                nvl(dwt_data.order_original_amount ,0 ) + nvl(dws_data.order_original_amount ,0 ) order_original_amount,
                nvl(dwt_data.order_final_amount ,0 ) + nvl(dws_data.order_final_amount ,0 ) order_final_amount,
                nvl(dwt_data.payment_count ,0 ) + nvl(dws_data.payment_count ,0 ) payment_count,
                nvl(dwt_data.payment_reduce_amount ,0 ) + nvl(dws_data.payment_reduce_amount ,0 ) payment_reduce_amount,
                nvl(dwt_data.payment_amount ,0 ) + nvl(dws_data.payment_amount ,0 ) payment_amount,
                -- 最近1天 ,判断dws_data.x 是否为NULL,为NULL补0,否则取
                nvl(dws_data.order_count , 0 ) order_last_1d_count,
                nvl(dws_data.order_reduce_amount , 0.0 ) order_last_1d_reduce_amount,
                nvl(dws_data.order_original_amount , 0.0 ) order_last_1d_original_amount,
                nvl(dws_data.order_final_amount , 0.0 ) order_last_1d_final_amount,
                nvl(dws_data.payment_count , 0 ) payment_last_1d_count,
                nvl(dws_data.payment_reduce_amount , 0.0 ) payment_last_1d_reduce_amount,
                nvl(dws_data.payment_amount , 0.0 ) payment_last_1d_amount
        from
        (
            --求出6月9号前一天的累计数据
            select *
            from ${APP}.dwt_activity_topic
            where dt = date_sub('$do_date',1)
        ) dwt_data
        full join
        (
            select *
            from ${APP}.dws_activity_info_daycount
            where dt = '$do_date'
        ) dws_data on dwt_data.activity_rule_id = dws_data.activity_rule_id
    ) tmp;
    "
    
    dwt_area_topic="
    insert overwrite table ${APP}.dwt_area_topic partition (dt = '$do_date')
    select province_id,
           visit_last_1d_count,
           login_last_1d_count,
           visit_last_7d_count,
           login_last_7d_count,
           visit_last_30d_count,
           login_last_30d_count,
           visit_count,
           login_count,
           order_last_1d_count,
           order_last_1d_original_amount,
           order_last_1d_final_amount,
           order_last_7d_count,
           order_last_7d_original_amount,
           order_last_7d_final_amount,
           order_last_30d_count,
           order_last_30d_original_amount,
           order_last_30d_final_amount,
           order_count,
           order_original_amount,
           order_final_amount,
           payment_last_1d_count,
           payment_last_1d_amount,
           payment_last_7d_count,
           payment_last_7d_amount,
           payment_last_30d_count,
           payment_last_30d_amount,
           payment_count,
           payment_amount,
           refund_order_last_1d_count,
           refund_order_last_1d_amount,
           refund_order_last_7d_count,
           refund_order_last_7d_amount,
           refund_order_last_30d_count,
           refund_order_last_30d_amount,
           refund_order_count,
           refund_order_amount,
           refund_payment_last_1d_count,
           refund_payment_last_1d_amount,
           refund_payment_last_7d_count,
           refund_payment_last_7d_amount,
           refund_payment_last_30d_count,
           refund_payment_last_30d_amount,
           refund_payment_count,
           refund_payment_amount
    from
    (
        select  dwt_data.province_id province_id,
                --最近1天
                dws_data.visit_count visit_last_1d_count,
                dws_data.login_count login_last_1d_count,
                dws_data.order_count order_last_1d_count,
                dws_data.order_original_amount order_last_1d_original_amount,
                dws_data.order_final_amount order_last_1d_final_amount,
                dws_data.payment_count payment_last_1d_count,
                dws_data.payment_amount payment_last_1d_amount,
                dws_data.refund_order_count refund_order_last_1d_count,
                dws_data.refund_order_amount refund_order_last_1d_amount,
                dws_data.refund_payment_count refund_payment_last_1d_count,
                dws_data.refund_payment_amount refund_payment_last_1d_amount,
                dwt_data.visit_count+ dws_data.visit_count visit_count,
                dwt_data.login_count+ dws_data.login_count login_count,
                dwt_data.order_count+ dws_data.order_count order_count,
                dwt_data.order_original_amount+ dws_data.order_original_amount order_original_amount,
                dwt_data.order_final_amount+ dws_data.order_final_amount order_final_amount,
                dwt_data.payment_count+ dws_data.payment_count payment_count,
                dwt_data.payment_amount+ dws_data.payment_amount payment_amount,
                dwt_data.refund_order_count+ dws_data.refund_order_count refund_order_count,
                dwt_data.refund_order_amount+ dws_data.refund_order_amount refund_order_amount,
                dwt_data.refund_payment_count+ dws_data.refund_payment_count refund_payment_count,
                dwt_data.refund_payment_amount+ dws_data.refund_payment_amount refund_payment_amount,
                --最近7天
                dwt_data.visit_last_7d_count+ dws_data.visit_count - dws_data_7daysago.visit_count visit_last_7d_count,
                dwt_data.login_last_7d_count+ dws_data.login_count - dws_data_7daysago.login_count login_last_7d_count,
                dwt_data.order_last_7d_count+ dws_data.order_count - dws_data_7daysago.order_count order_last_7d_count,
                dwt_data.order_last_7d_original_amount+ dws_data.order_original_amount - dws_data_7daysago.order_original_amount order_last_7d_original_amount,
                dwt_data.order_last_7d_final_amount+ dws_data.order_final_amount - dws_data_7daysago.order_final_amount order_last_7d_final_amount,
                dwt_data.payment_last_7d_count+ dws_data.payment_count - dws_data_7daysago.payment_count payment_last_7d_count,
                dwt_data.payment_last_7d_amount+ dws_data.payment_amount - dws_data_7daysago.payment_amount payment_last_7d_amount,
                dwt_data.refund_order_last_7d_count+ dws_data.refund_order_count - dws_data_7daysago.refund_order_count refund_order_last_7d_count,
                dwt_data.refund_order_last_7d_amount+ dws_data.refund_order_amount - dws_data_7daysago.refund_order_amount refund_order_last_7d_amount,
                dwt_data.refund_payment_last_7d_count+ dws_data.refund_payment_count - dws_data_7daysago.refund_payment_count refund_payment_last_7d_count,
                dwt_data.refund_payment_last_7d_amount+ dws_data.refund_payment_amount - dws_data_7daysago.refund_payment_amount refund_payment_last_7d_amount,
                --最近30天
                dwt_data.visit_last_30d_count+ dws_data.visit_count - dws_data_30daysago.visit_count visit_last_30d_count,
                dwt_data.login_last_30d_count+ dws_data.login_count - dws_data_30daysago.login_count login_last_30d_count,
                dwt_data.order_last_30d_count+ dws_data.order_count - dws_data_30daysago.order_count order_last_30d_count,
                dwt_data.order_last_30d_original_amount+ dws_data.order_original_amount - dws_data_30daysago.order_original_amount order_last_30d_original_amount,
                dwt_data.order_last_30d_final_amount+ dws_data.order_final_amount - dws_data_30daysago.order_final_amount order_last_30d_final_amount,
                dwt_data.payment_last_30d_count+ dws_data.payment_count - dws_data_30daysago.payment_count payment_last_30d_count,
                dwt_data.payment_last_30d_amount+ dws_data.payment_amount - dws_data_30daysago.payment_amount payment_last_30d_amount,
                dwt_data.refund_order_last_30d_count+ dws_data.refund_order_count - dws_data_30daysago.refund_order_count refund_order_last_30d_count,
                dwt_data.refund_order_last_30d_amount+ dws_data.refund_order_amount - dws_data_30daysago.refund_order_amount refund_order_last_30d_amount,
                dwt_data.refund_payment_last_30d_count+ dws_data.refund_payment_count - dws_data_30daysago.refund_payment_count refund_payment_last_30d_count,
                dwt_data.refund_payment_last_30d_amount+ dws_data.refund_payment_amount - dws_data_30daysago.refund_payment_amount refund_payment_last_30d_amount
        from
        (
            --求出当前日期的前一天的累计数据
            select *
            from ${APP}.dwt_area_topic
            where dt = date_sub('$do_date',1)
        ) dwt_data
        full join
        (
            --求出当前日期产生的数据
            select *
            from ${APP}.dws_area_stats_daycount
            where dt = '$do_date'
        ) dws_data on dwt_data.province_id = dws_data.province_id
        left join
        (
            select *
            from ${APP}.dws_area_stats_daycount
            where dt = date_sub('$do_date',7)
        ) dws_data_7daysago on dwt_data.province_id = dws_data_7daysago.province_id
        left join
        (
            select *
            from ${APP}.dws_area_stats_daycount
            where dt = date_sub('$do_date',30)
        ) dws_data_30daysago on dwt_data.province_id = dws_data_30daysago.province_id
    ) tmp;
    "
    
    case $1 in
        "dwt_area_topic" )
            hive -e "$dwt_area_topic"
        ;;
        "dwt_activity_topic" )
            hive -e "$dwt_activity_topic"
        ;;
        "dwt_coupon_topic" )
            hive -e "$dwt_coupon_topic"
        ;;
        "dwt_sku_topic" )
            hive -e "$dwt_sku_topic"
        ;;
        "dwt_user_topic" )
            hive -e "$dwt_user_topic"
        ;;
        "dwt_visitor_topic" )
            hive -e "$dwt_visitor_topic"
        ;;
        "all" )
            hive -e "$dwt_area_topic$dwt_activity_topic$dwt_coupon_topic$dwt_sku_topic$dwt_user_topic$dwt_visitor_topic"
        ;;
    esac

        (2)增加脚本执行权限

    chmod 777 dws_to_dwt.sh

      2)脚本使用

        (1)执行脚本

    dws_to_dwt.sh 2021-06-09

        (2)查看导入数据

  • 相关阅读:
    Docker 安装 Logstash
    Docker 安装 Kibana
    go命令行参数
    小程序 表单提交
    小程序picker日历
    小程序,验证码倒计时效果
    flex图片垂直居中
    小程序单选框样式
    wechat-wxparse 使用
    小程序Banner跳转
  • 原文地址:https://www.cnblogs.com/LzMingYueShanPao/p/14899538.html
Copyright © 2011-2022 走看看