sparksql broadcast join opt

select /*+ BROADCAST(t2) */
t2.trans_date
, t1.store_nbr
, t1.item_nbr
, sum(nvl(t1.warehouse_allowance,0.0)) as warehouse_allowance
, sum(nvl(t1.cts_transportation,0.0)) as cts_transportation
, sum(nvl(t1.cts_warehouse_management,0.0)) as cts_warehouse_management
, sum(nvl(t1.merch_sales,0.0)) as merch_sales
, to_utc_timestamp(current_timestamp,‘GMT-8’) as etl_load_time --数据入湖时间
, t2.trans_date as ts
from (
select
date_dt as trans_date
from dim.dim_common_calendar_f
where date_dt between ‘ l a s t 3 0 d a y s s t r ′ a n d ′ {last_30_days_str}' and ' last30daysstrand{yestoday_str}’
) t2
left join (
select
statis_dt – 统计日期
, item_nbr – 商品号
, store_nbr – 门店编号
, case when channel_id=‘82_1’ then ‘82’
when channel_id=‘15_1’ then ‘15’
else channel_id end as channel_id
, warehouse_allowance as warehouse_allowance
, cts_transportation as cts_transportation
, cts_warehouse_management as cts_warehouse_management – wa_cts
, merch_sales as merch_sales
from dm_secure.dm_fin_pnl_sams_item_pnl_di – sams商品日销售损益宽表
where channel_id in (‘82’,‘66’,‘67’,‘68’,‘15’,‘82_1’,‘15_1’)
and ts between date_sub(‘ l a s t 3 0 d a y s s t r ′ , 30 ) a n d ′ {last_30_days_str}', 30) and ' last30daysstr,30)and{yestoday_str}’
) t1
on t1.statis_dt between date_sub(t2.trans_date, 30) and t2.trans_date
group by t2.trans_date, t1.item_nbr, t1.store_nbr
;

优化前
± == Current Plan ==
CollectLimit (17)
± HashAggregate (16)
± ShuffleQueryStage (15)
± Exchange (14)
± * HashAggregate (13)
± * Project (12)
± * BroadcastNestedLoopJoin LeftOuter BuildRight (11)
:- * Project (4)
: ± * Filter (3)
: ± * ColumnarToRow (2)
: ± Scan orc dim.dim_common_calendar_f (1)
± BroadcastQueryStage (10)
± BroadcastExchange (9)
± * Project (8)
± * Filter (7)
± * ColumnarToRow (6)
± Scan orc dm_secure.dm_fin_pnl_sams_item_pnl_di (5)

优化后 添加 /*+ BROADCAST(t2) */
== Physical Plan ==
CommandResult (1)
± Execute InsertIntoHadoopFsRelationCommand (30)
± AdaptiveSparkPlan (29)
± == Final Plan ==
* HashAggregate (18)
± AQEShuffleRead (17)
± ShuffleQueryStage (16)
± Exchange (15)
± * HashAggregate (14)
± * Project (13)
± BroadcastNestedLoopJoin LeftOuter BuildLeft (12)
:- BroadcastQueryStage (7)
: ± BroadcastExchange (6)
: ± * Project (5)
: ± * Filter (4)
: ± * ColumnarToRow (3)
: ± Scan orc dim.dim_common_calendar_f (2)
± * Project (11)
± * Filter (10)
± * ColumnarToRow (9)
± Scan orc dm_secure.dm_fin_pnl_sams_item_pnl_di (8)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值