為什麼需要使用者行為寬表?把每個使用者單日的行為聚合起來組成一張多列寬表,以便之後關聯使用者維度資訊後,進行不同角度的統計分析。
建立使用者行為寬表:
droptable
ifexists
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
asparquet
location
'/warehouse/gmall/dws/dws_user_action/
'tblproperties ("parquet.compression"
資料匯入指令碼:
with as基本語法為如下,作用是定義乙個臨時表,可以在後續的語句中多次使用,提高sql可讀性。注意多個臨時表之間用逗號,而最後乙個臨時表和查詢語句之間沒有符號。
with t1 as
(
select
*from
carinfo
), t2 as(
select
*from
car_blacklist
)select
*from t1, t2
#!/bin/bash
# 定義變數方便修改
=gmall
hive
=/opt/module/hive/bin/
hive
# 如果是輸入的日期按照取輸入日期;如果沒輸入日期取當前時間的前一天if[
-n "$1"
] ;then
do_date
=$1else
do_date
=`date -d "-
1day" +%
f`
fi sql="
with
tmp_order as(
select
user_id
,
sum(oi.total_amount) order_amount,
count(*
) order_count
from
where date_format(oi.create_time,'
yyyy-mm-dd
')='
$do_date
'group
byuser_id
) ,
tmp_payment as(
select
user_id
,
sum(pi
.total_amount) payment_amount,
count(*
) payment_count
where date_format(pi.payment_time,'
yyyy-mm-dd
')='
$do_date
'group
byuser_id
),tmp_comment
as(
select
user_id
,
count(*
) comment_count
from
where date_format(c.dt,'
yyyy-mm-dd
')='
$do_date
'group
byuser_id)'
$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,
0payment_count,
0payment_amount,
0comment_count
from
tmp_order
union
allselect
user_id
, 0,
0,payment_count,
payment_amount,
0from
tmp_payment
union
allselect
user_id
, 0,
0,0,
0,comment_count
from
tmp_comment
) user_actions
group
byuser_id;"
$hive
-e "$sql"
資料倉儲 資料倉儲部署
1 首先用下面的語句查詢是否有要建立的表空間 hospdw tab 和 hospdw idx 如果沒有,則把d database zyhip改為對應的路徑,有的話直接建立使用者 select tablespace name,file name,round bytes 1024 1024 0 size...
資料倉儲,什麼是資料倉儲?
資料倉儲,英文名稱為data warehouse,可簡寫為dw或dwh。資料倉儲是為企業所有級別的決策制定過程提供支援的所有型別資料的戰略集合。它是單個資料儲存,出於分析性報告和決策支援的目的而建立。為企業提供需要業務智慧型來指導業務流程改進和監視時間 成本 質量和控制。資料倉儲是決策支援系統 ds...
資料倉儲和資料倉儲分層
資料倉儲 data warehouse 可簡寫為dw或dwh。資料倉儲,是為企業所有級別的決策制定過程,提供所有型別資料支援的戰略集合。它是單個資料儲存,出於分析性報告和決策支援目的而建立。為需要業務智慧型的企業,提供指導業務流程改進 監視時間 成本 質量以及控制。1 問題簡單化,將乙個複雜的問題分...