3.5.3用户行为数据宽表导入脚本
1)在/home/atguigu/bin目录下创建脚本dws_db_wide.sh
[atguigu@hadoop102 bin]$ vim dws_db_wide.sh
在脚本中填写如下内容
#!/bin/bash
定义变量方便修改
APP=gmall
hive=/opt/module/hive/bin/hive
如果是输入的日期按照取输入日期;如果没输入日期取当前时间的前一天
if [ -n “$1” ] ;then
do_date=$1
else
do_date=date -d "-1 day" +%F
fi
sql="
with
tmp_order as
(
select
user_id,
sum(oi.total_amount) order_amount,
count() order_count
from "
A
P
P
"
.
d
w
d
o
r
d
e
r
i
n
f
o
o
i
w
h
e
r
e
d
a
t
e
f
o
r
m
a
t
(
o
i
.
c
r
e
a
t
e
t
i
m
e
,
′
y
y
y
y
−
M
M
−
d
d
′
)
=
′
APP".dwd_order_info oi where date_format(oi.create_time,'yyyy-MM-dd')='
APP".dwdorderinfooiwheredateformat(oi.createtime,′yyyy−MM−dd′)=′do_date’
group by user_id
) ,
tmp_payment as
(
select
user_id,
sum(pi.total_amount) payment_amount,
count() payment_count
from "
A
P
P
"
.
d
w
d
p
a
y
m
e
n
t
i
n
f
o
p
i
w
h
e
r
e
d
a
t
e
f
o
r
m
a
t
(
p
i
.
p
a
y
m
e
n
t
t
i
m
e
,
′
y
y
y
y
−
M
M
−
d
d
′
)
=
′
APP".dwd_payment_info pi where date_format(pi.payment_time,'yyyy-MM-dd')='
APP".dwdpaymentinfopiwheredateformat(pi.paymenttime,′yyyy−MM−dd′)=′do_date’
group by user_id
),
tmp_comment as
(
select
user_id,
count(*) comment_count
from "
A
P
P
"
.
d
w
d
c
o
m
m
e
n
t
l
o
g
c
w
h
e
r
e
d
a
t
e
f
o
r
m
a
t
(
c
.
d
t
,
′
y
y
y
y
−
M
M
−
d
d
′
)
=
′
APP".dwd_comment_log c where date_format(c.dt,'yyyy-MM-dd')='
APP".dwdcommentlogcwheredateformat(c.dt,′yyyy−MM−dd′)=′do_date’
group by user_id
)
Insert overwrite table "
A
P
P
"
.
d
w
s
u
s
e
r
a
c
t
i
o
n
p
a
r
t
i
t
i
o
n
(
d
t
=
′
APP".dws_user_action partition(dt='
APP".dwsuseractionpartition(dt=′do_date’)
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 order_count,
0 order_amount,
payment_count,
payment_amount,
0
from tmp_payment
union all
select
user_id,
0 order_count,
0 order_amount,
0 payment_count,
0 payment_amount,
comment_count
from tmp_comment
) user_actions
group by user_id;
"
h
i
v
e
−
e
"
hive -e "
hive−e"sql"
2)增加脚本执行权限
[atguigu@hadoop102 bin]$ chmod 777 dws_db_wide.sh
3)执行脚本导入数据
[atguigu@hadoop102 bin]$dws_db_wide.sh 2019-02-11
4)查看导入数据
hive (gmall)>
select * from dws_user_action where dt=‘2019-02-11’ limit 2;