(7)3.5DWS層之用戶行爲寬表7

3.5DWS層之用戶行爲寬表
3.5.1 創建用戶行爲寬表

hive (gmall)>
drop table if exists dws_user_action;
create external table dws_user_action
(
user_id string comment ‘用戶 id’,
order_count bigint comment '下單次數 ',
order_amount decimal(16,2) comment '下單金額 ',
payment_count bigint comment ‘支付次數’,
payment_amount decimal(16,2) comment '支付金額 ',
comment_count bigint comment ‘評論次數’
) COMMENT ‘每日用戶行爲寬表’
PARTITIONED BY (dt string)
stored as parquet
location ‘/warehouse/gmall/dws/dws_user_action/’
tblproperties (“parquet.compression”=“snappy”);

3.5.2向用戶行爲寬表導入數據

1)導入數據
hive (gmall)>
with
tmp_order as
(
select
user_id,
count() order_count,
sum(oi.total_amount) order_amount
from dwd_order_info oi
where date_format(oi.create_time,‘yyyy-MM-dd’)=‘2019-05-17’
group by user_id
) ,
tmp_payment as
(
select
user_id,
sum(pi.total_amount) payment_amount,
count(
) payment_count
from dwd_payment_info pi
where date_format(pi.payment_time,‘yyyy-MM-dd’)=‘2019-02-10’
group by user_id
),
tmp_comment as
(
select
user_id,
count(*) comment_count
from dwd_comment_log c
where date_format(c.dt,‘yyyy-MM-dd’)=‘2019-02-10’
group by user_id
)

insert overwrite table dws_user_action partition(dt=‘2019-02-10’)
select
user_actions.user_id,
sum(user_actions.order_count),
sum(user_actions.order_amount),
sum(user_actions.payment_count),
sum(user_actions.payment_amount),
sum(user_actions.comment_count)
from
(
select
user_id,
order_count,
order_amount,
0 payment_count,
0 payment_amount,
0 comment_count
from tmp_order

union all
select
    user_id,
    0,
    0,
    payment_count,
    payment_amount,
    0
from tmp_payment

union all
select
    user_id,
    0,
    0,
    0,
    0,
    comment_count
from tmp_comment

) user_actions
group by user_id;
2)查詢導入結果
hive (gmall)> select * from dws_user_action;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章