累積型快照事實表聚合操作案例

2021-10-14 07:41:58 字數 2496 閱讀 7594

insert overwrite table dwd_fact_order_info partition

(dt)

select

--新老交替,如果新表有就取新表的,否則取old

nvl(new.id,old.id) id,

nvl(new.order_status,old.order_status) order_status,

nvl(new.user_id,old.user_id) user_id,

nvl(new.out_trade_no,old.out_trade_no) out_trade_no,

nvl(new.status_map[

'1001'

],old.create_time) create_time,

nvl(new.status_map[

'1002'

],old.payment_time) payment_time,

nvl(new.status_map[

'1003'

],old.cancel_time) cancel_time,

nvl(new.status_map[

'1004'

],old.finish_time) finish_time,

nvl(new.status_map[

'1005'

],old.refund_time) refund_time,

nvl(new.status_map[

'1006'

],old.refund_finish_time) refund_finish_time,

nvl(new.province_id,old.province_id) province_id,

nvl(new.activity_id,old.activity_id) activity_id,

nvl(new.original_total_amount,old.original_total_amount) original_total_amount,

nvl(new.benefit_reduce_amount,old.benefit_reduce_amount) benefit_reduce_amount,

nvl(new.feight_fee,old.feight_fee) feight_fee,

nvl(new.final_total_amount,old.final_total_amount) final_total_amount,

date_format(nvl(new.status_map[

'1001'

],old.create_time)

,'yyyy-mm-dd'

) dt

from

(select

*from dwd_fact_order_info

where dt in(

select

date_format(create_time,

'yyyy-mm-dd'

)from ods_order_info

where dt=

'$do_date'

and date_format(create_time,

'yyyy-mm-dd'

)<

'$do_date'))

oldfull

join

(select

t1.*,activity_id,status_map

from

(select

--粒度: 一筆訂單是一條

*from ods_order_info

where dt=

'$do_date'

) t1

left

join

(select

--粒度: 一筆訂單是一條

order_id,activity_id

from ods_activity_order

where dt=

'$do_date'

) t2

on t1.id = t2.order_id

left

join

(--將ods_order_status_log的粒度提公升為一筆訂單一條

select

--粒度: 一筆訂單的乙個狀態是一條

order_id,str_to_map(concat_ws(

',',collect_set(concat(order_status,

':',operate_time)))

) status_map

from ods_order_status_log

where dt=

'$do_date'

group

by order_id

) t3

on t1.id=t3.order_id ) new

on old.id = new.id;

累積型快照事實表 訂單表

concat函式在連線字串的時候,只要其中乙個是null,那麼將返回null hive select concat a b abhive select concat a b null nullconcat ws函式在連線字串的時候,只要有乙個字串不是null,就不會返回null。concat ws函...

交易事實表 週期快照事實表和累積快照事實表

在資料倉儲領域有乙個概念叫transaction fact table,中文一般翻譯為 事務事實表 事務事實表是維度建模的資料倉儲中三種基本型別事實表中的一種,另外兩種分別是週期快照事實表和累積快照事實表。事務事實表與週期快照事實表 累積快照事實表使用相同的一致性維度,但是它們在描述業務事實方面是有...

交易事實表 週期快照事實表和累積快照事實表

在資料倉儲領域有乙個概念叫transaction fact table,中文一般翻譯為 事務事實表 事務事實表是維度建模的資料倉儲中三種基本型別事實表中的一種,另外兩種分別是週期快照事實表和累積快照事實表。事務事實表與週期快照事實表 累積快照事實表使用相同的一致性維度,但是它們在描述業務事實方面是有...