== Physical Plan ==
AdaptiveSparkPlan (31)
+- == Final Plan ==
LocalTableScan (1)
+- == Initial Plan ==
HashAggregate (30)
+- HashAggregate (29)
+- Project (28)
+- SortMergeJoin Inner (27)
:- Sort (5)
: +- Exchange (4)
: +- Filter (3)
: +- Scan ExistingRDD (2)
+- Sort (26)
+- Exchange (25)
+- Project (24)
+- Filter (23)
+- Generate (22)
+- Project (21)
+- SortMergeJoin Inner (20)
:- Sort (9)
: +- Exchange (8)
: +- Filter (7)
: +- Scan ExistingRDD (6)
+- Sort (19)
+- HashAggregate (18)
+- Exchange (17)
+- HashAggregate (16)
+- Project (15)
+- BroadcastHashJoin Inner BuildRight (14)
:- Scan parquet (10)
+- BroadcastExchange (13)
+- Filter (12)
+- Scan parquet (11)
(1) LocalTableScan
Output: []
Arguments: <empty>
(2) Scan ExistingRDD [codegen id : 1]
Output [6]: [name#1384, demandStream#1385, forecastCode#1386, distributionChains#1387, customerOrderTypes#1388, customerOrderItemTypeCodes#1389]
Arguments: [name#1384, demandStream#1385, forecastCode#1386, distributionChains#1387, customerOrderTypes#1388, customerOrderItemTypeCodes#1389], MapPartitionsRDD[93] at createDataFrame at DemandChannelDataReaderImpl.java:75, ExistingRDD, UnknownPartitioning(0)
(3) Filter [codegen id : 1]
Input [6]: [name#1384, demandStream#1385, forecastCode#1386, distributionChains#1387, customerOrderTypes#1388, customerOrderItemTypeCodes#1389]
Condition : isnotnull(name#1384)
(4) Exchange
Input [6]: [name#1384, demandStream#1385, forecastCode#1386, distributionChains#1387, customerOrderTypes#1388, customerOrderItemTypeCodes#1389]
Arguments: hashpartitioning(name#1384, 10), ENSURE_REQUIREMENTS, [plan_id=629]
(5) Sort
Input [6]: [name#1384, demandStream#1385, forecastCode#1386, distributionChains#1387, customerOrderTypes#1388, customerOrderItemTypeCodes#1389]
Arguments: [name#1384 ASC NULLS FIRST], false, 0
(6) Scan ExistingRDD [codegen id : 2]
Output [2]: [demandProfile#824, demandChannels#825]
Arguments: [demandProfile#824, demandChannels#825], MapPartitionsRDD[62] at createDataFrame at DemandProfileDataReaderImpl.java:60, ExistingRDD, UnknownPartitioning(0)
(7) Filter [codegen id : 2]
Input [2]: [demandProfile#824, demandChannels#825]
Condition : (isnotnull(demandProfile#824) AND ((size(demandChannels#825, true) > 0) AND isnotnull(demandChannels#825)))
(8) Exchange
Input [2]: [demandProfile#824, demandChannels#825]
Arguments: hashpartitioning(demandProfile#824, 10), ENSURE_REQUIREMENTS, [plan_id=619]
(9) Sort
Input [2]: [demandProfile#824, demandChannels#825]
Arguments: [demandProfile#824 ASC NULLS FIRST], false, 0
(10) Scan parquet
Output [2]: [product#142, plant#143]
Batched: true
Location: InMemoryFileIndex [hdlfs://7646b954-15f6-4bdc-91a5-2644c1a43a19.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000003977/shardId=0_1_10000003977]
ReadSchema: struct<product:string,plant:string>
(11) Scan parquet
Output [3]: [product#150, plant#151, demandprofile#153]
Batched: true
Location: InMemoryFileIndex [hdlfs://7646b954-15f6-4bdc-91a5-2644c1a43a19.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-param-determination-service/out/10000003977/0_1_10000003977/demandprofile]
PushedFilters: [IsNotNull(demandprofile)]
ReadSchema: struct<product:string,plant:string,demandprofile:string>
(12) Filter
Input [3]: [product#150, plant#151, demandprofile#153]
Condition : isnotnull(demandProfile#153)
(13) BroadcastExchange
Input [3]: [product#150, plant#151, demandprofile#153]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=610]
(14) BroadcastHashJoin
Left keys [4]: [coalesce(plant#143, ), isnull(plant#143), coalesce(product#142, ), isnull(product#142)]
Right keys [4]: [coalesce(plant#151, ), isnull(plant#151), coalesce(product#150, ), isnull(product#150)]
Join type: Inner
Join condition: None
(15) Project
Output [1]: [demandProfile#153]
Input [5]: [product#142, plant#143, product#150, plant#151, demandprofile#153]
(16) HashAggregate
Input [1]: [demandProfile#153]
Keys [1]: [demandProfile#153]
Functions: []
Aggregate Attributes: []
Results [1]: [demandProfile#153]
(17) Exchange
Input [1]: [demandProfile#153]
Arguments: hashpartitioning(demandProfile#153, 10), ENSURE_REQUIREMENTS, [plan_id=615]
(18) HashAggregate
Input [1]: [demandProfile#153]
Keys [1]: [demandProfile#153]
Functions: []
Aggregate Attributes: []
Results [1]: [demandProfile#153]
(19) Sort
Input [1]: [demandProfile#153]
Arguments: [demandProfile#153 ASC NULLS FIRST], false, 0
(20) SortMergeJoin
Left keys [1]: [demandProfile#824]
Right keys [1]: [demandProfile#153]
Join type: Inner
Join condition: None
(21) Project
Output [1]: [demandChannels#825]
Input [3]: [demandProfile#824, demandChannels#825, demandProfile#153]
(22) Generate
Input [1]: [demandChannels#825]
Arguments: explode(demandChannels#825), false, [explodedDemandChannels#837]
(23) Filter
Input [1]: [explodedDemandChannels#837]
Condition : isnotnull(explodedDemandChannels#837.name)
(24) Project
Output [1]: [explodedDemandChannels#837.name AS name#843]
Input [1]: [explodedDemandChannels#837]
(25) Exchange
Input [1]: [name#843]
Arguments: hashpartitioning(name#843, 10), ENSURE_REQUIREMENTS, [plan_id=630]
(26) Sort
Input [1]: [name#843]
Arguments: [name#843 ASC NULLS FIRST], false, 0
(27) SortMergeJoin
Left keys [1]: [name#1384]
Right keys [1]: [name#843]
Join type: Inner
Join condition: None
(28) Project
Output [6]: [name#1384, demandStream#1385, forecastCode#1386, distributionChains#1387, customerOrderTypes#1388, customerOrderItemTypeCodes#1389]
Input [7]: [name#1384, demandStream#1385, forecastCode#1386, distributionChains#1387, customerOrderTypes#1388, customerOrderItemTypeCodes#1389, name#843]
(29) HashAggregate
Input [6]: [name#1384, demandStream#1385, forecastCode#1386, distributionChains#1387, customerOrderTypes#1388, customerOrderItemTypeCodes#1389]
Keys [6]: [name#1384, customerOrderItemTypeCodes#1389, customerOrderTypes#1388, distributionChains#1387, forecastCode#1386, demandStream#1385]
Functions: []
Aggregate Attributes: []
Results [6]: [name#1384, customerOrderItemTypeCodes#1389, customerOrderTypes#1388, distributionChains#1387, forecastCode#1386, demandStream#1385]
(30) HashAggregate
Input [6]: [name#1384, customerOrderItemTypeCodes#1389, customerOrderTypes#1388, distributionChains#1387, forecastCode#1386, demandStream#1385]
Keys [6]: [name#1384, customerOrderItemTypeCodes#1389, customerOrderTypes#1388, distributionChains#1387, forecastCode#1386, demandStream#1385]
Functions: []
Aggregate Attributes: []
Results: []
(31) AdaptiveSparkPlan
Output: []
Arguments: isFinalPlan=true