离线数仓(七)

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)查看导入数据

原文地址:https://www.cnblogs.com/LzMingYueShanPao/p/14899538.html