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,中文一般翻譯為 事務事實表 事務事實表是維度建模的資料倉儲中三種基本型別事實表中的一種,另外兩種分別是週期快照事實表和累積快照事實表。事務事實表與週期快照事實表 累積快照事實表使用相同的一致性維度,但是它們在描述業務事實方面是有...