資料倉儲 DWS層之使用者行為寬表

2022-01-26 07:33:11 字數 3098 閱讀 1464

為什麼需要使用者行為寬表?把每個使用者單日的行為聚合起來組成一張多列寬表,以便之後關聯使用者維度資訊後,進行不同角度的統計分析。

建立使用者行為寬表:

drop

table

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 問題簡單化,將乙個複雜的問題分...