== Physical Plan ==
Execute InsertIntoHadoopFsRelationCommand (97)
+- WriteFiles (96)
+- Sort (95)
+- Project (94)
+- InMemoryTableScan (1)
+- InMemoryRelation (2)
+- Project (93)
+- Exchange (92)
+- ObjectHashAggregate (91)
+- Exchange (90)
+- ObjectHashAggregate (89)
+- Project (88)
+- SortMergeJoin LeftOuter (87)
:- Sort (59)
: +- Exchange (58)
: +- Project (57)
: +- Project (56)
: +- ObjectHashAggregate (55)
: +- Exchange (54)
: +- ObjectHashAggregate (53)
: +- ObjectHashAggregate (52)
: +- Exchange (51)
: +- ObjectHashAggregate (50)
: +- Project (49)
: +- Project (48)
: +- Project (47)
: +- * Project (46)
: +- * SortMergeJoin LeftOuter (45)
: :- * Project (37)
: : +- * SortMergeJoin LeftOuter (36)
: : :- * Project (28)
: : : +- * SortMergeJoin LeftOuter (27)
: : : :- * Sort (21)
: : : : +- Exchange (20)
: : : : +- * Project (19)
: : : : +- * Filter (18)
: : : : +- * SortMergeJoin LeftOuter (17)
: : : : :- * Sort (9)
: : : : : +- Exchange (8)
: : : : : +- * Project (7)
: : : : : +- * Generate (6)
: : : : : +- * Project (5)
: : : : : +- * Filter (4)
: : : : : +- * Scan ExistingRDD (3)
: : : : +- * Sort (16)
: : : : +- * Project (15)
: : : : +- Exchange (14)
: : : : +- * Project (13)
: : : : +- * Filter (12)
: : : : +- * ColumnarToRow (11)
: : : : +- Scan parquet (10)
: : : +- * Sort (26)
: : : +- Exchange (25)
: : : +- * Project (24)
: : : +- * Filter (23)
: : : +- * Scan ExistingRDD (22)
: : +- * Sort (35)
: : +- ObjectHashAggregate (34)
: : +- Exchange (33)
: : +- ObjectHashAggregate (32)
: : +- * Project (31)
: : +- * Filter (30)
: : +- * Scan ExistingRDD (29)
: +- * Sort (44)
: +- ObjectHashAggregate (43)
: +- Exchange (42)
: +- ObjectHashAggregate (41)
: +- * Project (40)
: +- * Filter (39)
: +- * Scan ExistingRDD (38)
+- * Sort (86)
+- Exchange (85)
+- Project (84)
+- * SortMergeJoin Inner (83)
:- * Sort (64)
: +- Exchange (63)
: +- * Project (62)
: +- * Filter (61)
: +- * Scan ExistingRDD (60)
+- * Sort (82)
+- * HashAggregate (81)
+- Exchange (80)
+- * HashAggregate (79)
+- * Project (78)
+- * BroadcastHashJoin Inner BuildRight (77)
:- * Project (69)
: +- * Generate (68)
: +- * Project (67)
: +- * Filter (66)
: +- * Scan ExistingRDD (65)
+- BroadcastExchange (76)
+- * Project (75)
+- Exchange (74)
+- * Project (73)
+- * Filter (72)
+- * ColumnarToRow (71)
+- Scan parquet (70)
(1) InMemoryTableScan
Output [2]: [orderProposals#657387, shardId#643168]
Arguments: [orderProposals#657387, shardId#643168]
(2) InMemoryRelation
Arguments: [shardId#643168, orderProposals#657387], StorageLevel(disk, memory, 2 replicas)
(3) Scan ExistingRDD [codegen id : 1]
Output [7]: [shardId#643168, orderProposalId#643169L, items#643170, optimizationGroups#643171, isOptimal#643172, lastModified#643173, optimizationInsights#643174]
Arguments: [shardId#643168, orderProposalId#643169L, items#643170, optimizationGroups#643171, isOptimal#643172, lastModified#643173, optimizationInsights#643174], MapPartitionsRDD[30592] at start at FileStorageAdapterImpl.java:592, ExistingRDD, UnknownPartitioning(0)
(4) Filter [codegen id : 1]
Input [7]: [shardId#643168, orderProposalId#643169L, items#643170, optimizationGroups#643171, isOptimal#643172, lastModified#643173, optimizationInsights#643174]
Condition : ((isnotnull(shardId#643168) AND (shardId#643168 = 0_1_10000002106)) AND ((size(items#643170, true) > 0) AND isnotnull(items#643170)))
(5) Project [codegen id : 1]
Output [2]: [shardId#643168, items#643170]
Input [7]: [shardId#643168, orderProposalId#643169L, items#643170, optimizationGroups#643171, isOptimal#643172, lastModified#643173, optimizationInsights#643174]
(6) Generate [codegen id : 1]
Input [2]: [shardId#643168, items#643170]
Arguments: explode(items#643170), [shardId#643168], false, [item#643815]
(7) Project [codegen id : 1]
Output [4]: [shardId#643168, item#643815.worklistShardItemId AS worklistShardItemId#643816L, item#643815.quantityAfterProdPlantOptimization AS quantityAfterProdPlantOptimization#643817, item#643815.qty AS qty#643818]
Input [2]: [shardId#643168, item#643815]
(8) Exchange
Input [4]: [shardId#643168, worklistShardItemId#643816L, quantityAfterProdPlantOptimization#643817, qty#643818]
Arguments: hashpartitioning(worklistShardItemId#643816L, 20), ENSURE_REQUIREMENTS, [plan_id=272247]
(9) Sort [codegen id : 2]
Input [4]: [shardId#643168, worklistShardItemId#643816L, quantityAfterProdPlantOptimization#643817, qty#643818]
Arguments: [worklistShardItemId#643816L ASC NULLS FIRST], false, 0
(10) Scan parquet
Output [36]: [orderProposalId#645037L, orderProposalItemId#645038, supplierGroup#645039, supplier#645040, plant#645041, deliveryDateTime#645042, subrange#645043, supplyingPlant#645044, productGroup#645045, product#645046, orderDateTime#645047, availabilityDateTime#645048, nextAvailabilityDateTime#645049, sourceOfSupplyUuid#645051, isFallbackOrderOnly#645054, splitIndicator#645056L, previousOrderProposal#645057L, worklistShardItemId#645060L, orderProposalItemGroupId#645061, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, minimumOrderQuantity#645067, constraintLabels#645068, constraintOperators#645069, constraintValues#645070, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, measurements#645078, originalReplenishmentRunId#645079L, optimizationGroups#645080, shardId#645081, sequenceId#645059]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/internal/prod-plant-snapshot/10000002106]
PartitionFilters: [isnotnull(shardId#645081), isnotnull(sequenceId#645059), (shardId#645081 = 0_1_10000002106), (sequenceId#645059 = 2)]
PushedFilters: [IsNotNull(worklistShardItemId)]
ReadSchema: struct<orderProposalId:bigint,orderProposalItemId:string,supplierGroup:string,supplier:string,plant:string,deliveryDateTime:timestamp,subrange:string,supplyingPlant:string,productGroup:string,product:string,orderDateTime:timestamp,availabilityDateTime:timestamp,nextAvailabilityDateTime:timestamp,sourceOfSupplyUuid:string,isFallbackOrderOnly:boolean,splitIndicator:bigint,previousOrderProposal:bigint,worklistShardItemId:bigint,orderProposalItemGroupId:string,logisticUnits:array<struct<uom:string,uomUuid:string,numerator:int,denominator:int,isOrderUnit:boolean,isPreferred:boolean>>,orderQuantityBaseUom:string,orderQuantityBaseUomUuid:string,minimumOrderQuantity:double,constraintLabels:array<string>,constraintOperators:array<string>,constraintValues:array<double>,netPriceAmount:double,netPriceCurrencyCode:string,netPriceQuantity:double,netPriceQuantityUom:string,netPriceQuantityUomUuid:string,measurements:array<struct<value:double,dimensionType:int,dimensionCode:string,dimensionCodeUuid:string,isoCode:string>>,originalReplenishmentRunId:bigint,optimizationGroups:array<string>>
(11) ColumnarToRow [codegen id : 3]
Input [36]: [orderProposalId#645037L, orderProposalItemId#645038, supplierGroup#645039, supplier#645040, plant#645041, deliveryDateTime#645042, subrange#645043, supplyingPlant#645044, productGroup#645045, product#645046, orderDateTime#645047, availabilityDateTime#645048, nextAvailabilityDateTime#645049, sourceOfSupplyUuid#645051, isFallbackOrderOnly#645054, splitIndicator#645056L, previousOrderProposal#645057L, worklistShardItemId#645060L, orderProposalItemGroupId#645061, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, minimumOrderQuantity#645067, constraintLabels#645068, constraintOperators#645069, constraintValues#645070, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, measurements#645078, originalReplenishmentRunId#645079L, optimizationGroups#645080, shardId#645081, sequenceId#645059]
(12) Filter [codegen id : 3]
Input [36]: [orderProposalId#645037L, orderProposalItemId#645038, supplierGroup#645039, supplier#645040, plant#645041, deliveryDateTime#645042, subrange#645043, supplyingPlant#645044, productGroup#645045, product#645046, orderDateTime#645047, availabilityDateTime#645048, nextAvailabilityDateTime#645049, sourceOfSupplyUuid#645051, isFallbackOrderOnly#645054, splitIndicator#645056L, previousOrderProposal#645057L, worklistShardItemId#645060L, orderProposalItemGroupId#645061, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, minimumOrderQuantity#645067, constraintLabels#645068, constraintOperators#645069, constraintValues#645070, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, measurements#645078, originalReplenishmentRunId#645079L, optimizationGroups#645080, shardId#645081, sequenceId#645059]
Condition : isnotnull(worklistShardItemId#645060L)
(13) Project [codegen id : 3]
Output [34]: [orderProposalId#645037L, orderProposalItemId#645038, supplierGroup#645039, supplier#645040, plant#645041, deliveryDateTime#645042, subrange#645043, supplyingPlant#645044, productGroup#645045, product#645046, orderDateTime#645047, availabilityDateTime#645048, nextAvailabilityDateTime#645049, sourceOfSupplyUuid#645051, isFallbackOrderOnly#645054, splitIndicator#645056L, previousOrderProposal#645057L, worklistShardItemId#645060L, orderProposalItemGroupId#645061, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, minimumOrderQuantity#645067, constraintLabels#645068, constraintOperators#645069, constraintValues#645070, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, measurements#645078, originalReplenishmentRunId#645079L, optimizationGroups#645080]
Input [36]: [orderProposalId#645037L, orderProposalItemId#645038, supplierGroup#645039, supplier#645040, plant#645041, deliveryDateTime#645042, subrange#645043, supplyingPlant#645044, productGroup#645045, product#645046, orderDateTime#645047, availabilityDateTime#645048, nextAvailabilityDateTime#645049, sourceOfSupplyUuid#645051, isFallbackOrderOnly#645054, splitIndicator#645056L, previousOrderProposal#645057L, worklistShardItemId#645060L, orderProposalItemGroupId#645061, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, minimumOrderQuantity#645067, constraintLabels#645068, constraintOperators#645069, constraintValues#645070, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, measurements#645078, originalReplenishmentRunId#645079L, optimizationGroups#645080, shardId#645081, sequenceId#645059]
(14) Exchange
Input [34]: [orderProposalId#645037L, orderProposalItemId#645038, supplierGroup#645039, supplier#645040, plant#645041, deliveryDateTime#645042, subrange#645043, supplyingPlant#645044, productGroup#645045, product#645046, orderDateTime#645047, availabilityDateTime#645048, nextAvailabilityDateTime#645049, sourceOfSupplyUuid#645051, isFallbackOrderOnly#645054, splitIndicator#645056L, previousOrderProposal#645057L, worklistShardItemId#645060L, orderProposalItemGroupId#645061, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, minimumOrderQuantity#645067, constraintLabels#645068, constraintOperators#645069, constraintValues#645070, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, measurements#645078, originalReplenishmentRunId#645079L, optimizationGroups#645080]
Arguments: hashpartitioning(worklistShardItemId#645060L, 20), REPARTITION_BY_NUM, [plan_id=272257]
(15) Project [codegen id : 4]
Output [34]: [worklistShardItemId#645060L, orderProposalId#645037L, orderProposalItemId#645038, orderProposalItemGroupId#645061, originalReplenishmentRunId#645079L, splitIndicator#645056L, previousOrderProposal#645057L, sourceOfSupplyUuid#645051, supplierGroup#645039, supplier#645040, subrange#645043, product#645046, plant#645041, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, isFallbackOrderOnly#645054, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, netPriceAmount#645073, netPriceCurrencyCode#645074, measurements#645078, minimumOrderQuantity#645067, constraintLabels#645068, constraintOperators#645069, constraintValues#645070, logisticUnits#645064, optimizationGroups#645080, supplyingPlant#645044, productGroup#645045]
Input [34]: [orderProposalId#645037L, orderProposalItemId#645038, supplierGroup#645039, supplier#645040, plant#645041, deliveryDateTime#645042, subrange#645043, supplyingPlant#645044, productGroup#645045, product#645046, orderDateTime#645047, availabilityDateTime#645048, nextAvailabilityDateTime#645049, sourceOfSupplyUuid#645051, isFallbackOrderOnly#645054, splitIndicator#645056L, previousOrderProposal#645057L, worklistShardItemId#645060L, orderProposalItemGroupId#645061, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, minimumOrderQuantity#645067, constraintLabels#645068, constraintOperators#645069, constraintValues#645070, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, measurements#645078, originalReplenishmentRunId#645079L, optimizationGroups#645080]
(16) Sort [codegen id : 4]
Input [34]: [worklistShardItemId#645060L, orderProposalId#645037L, orderProposalItemId#645038, orderProposalItemGroupId#645061, originalReplenishmentRunId#645079L, splitIndicator#645056L, previousOrderProposal#645057L, sourceOfSupplyUuid#645051, supplierGroup#645039, supplier#645040, subrange#645043, product#645046, plant#645041, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, isFallbackOrderOnly#645054, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, netPriceAmount#645073, netPriceCurrencyCode#645074, measurements#645078, minimumOrderQuantity#645067, constraintLabels#645068, constraintOperators#645069, constraintValues#645070, logisticUnits#645064, optimizationGroups#645080, supplyingPlant#645044, productGroup#645045]
Arguments: [worklistShardItemId#645060L ASC NULLS FIRST], false, 0
(17) SortMergeJoin [codegen id : 5]
Left keys [1]: [worklistShardItemId#643816L]
Right keys [1]: [worklistShardItemId#645060L]
Join type: LeftOuter
Join condition: (shardId#643168 = 0_1_10000002106)
(18) Filter [codegen id : 5]
Input [38]: [shardId#643168, worklistShardItemId#643816L, quantityAfterProdPlantOptimization#643817, qty#643818, worklistShardItemId#645060L, orderProposalId#645037L, orderProposalItemId#645038, orderProposalItemGroupId#645061, originalReplenishmentRunId#645079L, splitIndicator#645056L, previousOrderProposal#645057L, sourceOfSupplyUuid#645051, supplierGroup#645039, supplier#645040, subrange#645043, product#645046, plant#645041, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, isFallbackOrderOnly#645054, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, netPriceAmount#645073, netPriceCurrencyCode#645074, measurements#645078, minimumOrderQuantity#645067, constraintLabels#645068, constraintOperators#645069, constraintValues#645070, logisticUnits#645064, optimizationGroups#645080, supplyingPlant#645044, productGroup#645045]
Condition : NOT (isFallbackOrderOnly#645054 <=> true)
(19) Project [codegen id : 5]
Output [36]: [shardId#643168, worklistShardItemId#643816L, quantityAfterProdPlantOptimization#643817, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, constraintValues#645070, constraintOperators#645069, constraintLabels#645068, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, sourceOfSupplyUuid#645051, minimumOrderQuantity#645067, orderProposalItemId#645038, orderProposalItemGroupId#645061, optimizationGroups#645080, measurements#645078, previousOrderProposal#645057L]
Input [38]: [shardId#643168, worklistShardItemId#643816L, quantityAfterProdPlantOptimization#643817, qty#643818, worklistShardItemId#645060L, orderProposalId#645037L, orderProposalItemId#645038, orderProposalItemGroupId#645061, originalReplenishmentRunId#645079L, splitIndicator#645056L, previousOrderProposal#645057L, sourceOfSupplyUuid#645051, supplierGroup#645039, supplier#645040, subrange#645043, product#645046, plant#645041, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, isFallbackOrderOnly#645054, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, netPriceAmount#645073, netPriceCurrencyCode#645074, measurements#645078, minimumOrderQuantity#645067, constraintLabels#645068, constraintOperators#645069, constraintValues#645070, logisticUnits#645064, optimizationGroups#645080, supplyingPlant#645044, productGroup#645045]
(20) Exchange
Input [36]: [shardId#643168, worklistShardItemId#643816L, quantityAfterProdPlantOptimization#643817, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, constraintValues#645070, constraintOperators#645069, constraintLabels#645068, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, sourceOfSupplyUuid#645051, minimumOrderQuantity#645067, orderProposalItemId#645038, orderProposalItemGroupId#645061, optimizationGroups#645080, measurements#645078, previousOrderProposal#645057L]
Arguments: hashpartitioning(shardId#643168, worklistShardItemId#643816L, 20), ENSURE_REQUIREMENTS, [plan_id=272267]
(21) Sort [codegen id : 6]
Input [36]: [shardId#643168, worklistShardItemId#643816L, quantityAfterProdPlantOptimization#643817, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, constraintValues#645070, constraintOperators#645069, constraintLabels#645068, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, sourceOfSupplyUuid#645051, minimumOrderQuantity#645067, orderProposalItemId#645038, orderProposalItemGroupId#645061, optimizationGroups#645080, measurements#645078, previousOrderProposal#645057L]
Arguments: [shardId#643168 ASC NULLS FIRST, worklistShardItemId#643816L ASC NULLS FIRST], false, 0
(22) Scan ExistingRDD [codegen id : 7]
Output [6]: [shardId#647194, worklistShardItemId#647195L, qty#647196, demandChannel#647197, demandStream#647198, kpis#647199]
Arguments: [shardId#647194, worklistShardItemId#647195L, qty#647196, demandChannel#647197, demandStream#647198, kpis#647199], MapPartitionsRDD[30878] at start at FileStorageAdapterImpl.java:592, ExistingRDD, UnknownPartitioning(0)
(23) Filter [codegen id : 7]
Input [6]: [shardId#647194, worklistShardItemId#647195L, qty#647196, demandChannel#647197, demandStream#647198, kpis#647199]
Condition : (((isnull(qty#647196) AND isnull(demandChannel#647197)) AND isnull(demandStream#647198)) AND (((shardId#647194 = 0_1_10000002106) AND isnotnull(shardId#647194)) AND isnotnull(worklistShardItemId#647195L)))
(24) Project [codegen id : 7]
Output [3]: [shardId#647194, worklistShardItemId#647195L, coalesce(kpis#647199, []) AS prodLocSpecificKpis#647200]
Input [6]: [shardId#647194, worklistShardItemId#647195L, qty#647196, demandChannel#647197, demandStream#647198, kpis#647199]
(25) Exchange
Input [3]: [shardId#647194, worklistShardItemId#647195L, prodLocSpecificKpis#647200]
Arguments: hashpartitioning(shardId#647194, worklistShardItemId#647195L, 20), ENSURE_REQUIREMENTS, [plan_id=272273]
(26) Sort [codegen id : 8]
Input [3]: [shardId#647194, worklistShardItemId#647195L, prodLocSpecificKpis#647200]
Arguments: [shardId#647194 ASC NULLS FIRST, worklistShardItemId#647195L ASC NULLS FIRST], false, 0
(27) SortMergeJoin [codegen id : 9]
Left keys [2]: [shardId#643168, worklistShardItemId#643816L]
Right keys [2]: [shardId#647194, worklistShardItemId#647195L]
Join type: LeftOuter
Join condition: None
(28) Project [codegen id : 9]
Output [37]: [shardId#643168, worklistShardItemId#643816L, quantityAfterProdPlantOptimization#643817, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, constraintValues#645070, constraintOperators#645069, constraintLabels#645068, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, sourceOfSupplyUuid#645051, minimumOrderQuantity#645067, orderProposalItemId#645038, orderProposalItemGroupId#645061, optimizationGroups#645080, measurements#645078, previousOrderProposal#645057L, coalesce(prodLocSpecificKpis#647200, []) AS prodLocSpecificKpis#647201]
Input [39]: [shardId#643168, worklistShardItemId#643816L, quantityAfterProdPlantOptimization#643817, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, constraintValues#645070, constraintOperators#645069, constraintLabels#645068, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, sourceOfSupplyUuid#645051, minimumOrderQuantity#645067, orderProposalItemId#645038, orderProposalItemGroupId#645061, optimizationGroups#645080, measurements#645078, previousOrderProposal#645057L, shardId#647194, worklistShardItemId#647195L, prodLocSpecificKpis#647200]
(29) Scan ExistingRDD [codegen id : 10]
Output [6]: [shardId#647210, worklistShardItemId#647211L, qty#647212, demandChannel#647213, demandStream#647214, kpis#647215]
Arguments: [shardId#647210, worklistShardItemId#647211L, qty#647212, demandChannel#647213, demandStream#647214, kpis#647215], MapPartitionsRDD[30878] at start at FileStorageAdapterImpl.java:592, ExistingRDD, UnknownPartitioning(0)
(30) Filter [codegen id : 10]
Input [6]: [shardId#647210, worklistShardItemId#647211L, qty#647212, demandChannel#647213, demandStream#647214, kpis#647215]
Condition : ((((isnull(qty#647212) AND isnotnull(demandChannel#647213)) AND isnotnull(demandStream#647214)) AND (size(kpis#647215, true) > 0)) AND (((shardId#647210 = 0_1_10000002106) AND isnotnull(shardId#647210)) AND isnotnull(worklistShardItemId#647211L)))
(31) Project [codegen id : 10]
Output [5]: [shardId#647210, worklistShardItemId#647211L, demandChannel#647213, demandStream#647214, kpis#647215]
Input [6]: [shardId#647210, worklistShardItemId#647211L, qty#647212, demandChannel#647213, demandStream#647214, kpis#647215]
(32) ObjectHashAggregate
Input [5]: [shardId#647210, worklistShardItemId#647211L, demandChannel#647213, demandStream#647214, kpis#647215]
Keys [2]: [shardId#647210, worklistShardItemId#647211L]
Functions [1]: [partial_collect_list(struct(demandChannel, demandChannel#647213, demandStream, demandStream#647214, kpis, kpis#647215), 0, 0)]
Aggregate Attributes [1]: [buf#648290]
Results [3]: [shardId#647210, worklistShardItemId#647211L, buf#648291]
(33) Exchange
Input [3]: [shardId#647210, worklistShardItemId#647211L, buf#648291]
Arguments: hashpartitioning(shardId#647210, worklistShardItemId#647211L, 20), ENSURE_REQUIREMENTS, [plan_id=272284]
(34) ObjectHashAggregate
Input [3]: [shardId#647210, worklistShardItemId#647211L, buf#648291]
Keys [2]: [shardId#647210, worklistShardItemId#647211L]
Functions [1]: [collect_list(struct(demandChannel, demandChannel#647213, demandStream, demandStream#647214, kpis, kpis#647215), 0, 0)]
Aggregate Attributes [1]: [collect_list(struct(demandChannel, demandChannel#647213, demandStream, demandStream#647214, kpis, kpis#647215), 0, 0)#647209]
Results [3]: [shardId#647210, worklistShardItemId#647211L, collect_list(struct(demandChannel, demandChannel#647213, demandStream, demandStream#647214, kpis, kpis#647215), 0, 0)#647209 AS channelStreamSpecificKpis#647202]
(35) Sort [codegen id : 11]
Input [3]: [shardId#647210, worklistShardItemId#647211L, channelStreamSpecificKpis#647202]
Arguments: [shardId#647210 ASC NULLS FIRST, worklistShardItemId#647211L ASC NULLS FIRST], false, 0
(36) SortMergeJoin [codegen id : 12]
Left keys [2]: [shardId#643168, worklistShardItemId#643816L]
Right keys [2]: [shardId#647210, worklistShardItemId#647211L]
Join type: LeftOuter
Join condition: None
(37) Project [codegen id : 12]
Output [38]: [shardId#643168, worklistShardItemId#643816L, quantityAfterProdPlantOptimization#643817, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, constraintValues#645070, constraintOperators#645069, constraintLabels#645068, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, sourceOfSupplyUuid#645051, minimumOrderQuantity#645067, orderProposalItemId#645038, orderProposalItemGroupId#645061, optimizationGroups#645080, measurements#645078, previousOrderProposal#645057L, prodLocSpecificKpis#647201, coalesce(channelStreamSpecificKpis#647202, []) AS channelStreamSpecificKpis#647216]
Input [40]: [shardId#643168, worklistShardItemId#643816L, quantityAfterProdPlantOptimization#643817, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, constraintValues#645070, constraintOperators#645069, constraintLabels#645068, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, sourceOfSupplyUuid#645051, minimumOrderQuantity#645067, orderProposalItemId#645038, orderProposalItemGroupId#645061, optimizationGroups#645080, measurements#645078, previousOrderProposal#645057L, prodLocSpecificKpis#647201, shardId#647210, worklistShardItemId#647211L, channelStreamSpecificKpis#647202]
(38) Scan ExistingRDD [codegen id : 13]
Output [6]: [shardId#647223, worklistShardItemId#647224L, qty#647225, demandChannel#647226, demandStream#647227, kpis#647228]
Arguments: [shardId#647223, worklistShardItemId#647224L, qty#647225, demandChannel#647226, demandStream#647227, kpis#647228], MapPartitionsRDD[30878] at start at FileStorageAdapterImpl.java:592, ExistingRDD, UnknownPartitioning(0)
(39) Filter [codegen id : 13]
Input [6]: [shardId#647223, worklistShardItemId#647224L, qty#647225, demandChannel#647226, demandStream#647227, kpis#647228]
Condition : ((isnotnull(qty#647225) AND isnotnull(kpis#647228)) AND (((shardId#647223 = 0_1_10000002106) AND isnotnull(shardId#647223)) AND isnotnull(worklistShardItemId#647224L)))
(40) Project [codegen id : 13]
Output [4]: [shardId#647223, worklistShardItemId#647224L, qty#647225, kpis#647228]
Input [6]: [shardId#647223, worklistShardItemId#647224L, qty#647225, demandChannel#647226, demandStream#647227, kpis#647228]
(41) ObjectHashAggregate
Input [4]: [shardId#647223, worklistShardItemId#647224L, qty#647225, kpis#647228]
Keys [2]: [shardId#647223, worklistShardItemId#647224L]
Functions [1]: [partial_collect_list(struct(qty, qty#647225, kpis, kpis#647228), 0, 0)]
Aggregate Attributes [1]: [buf#648292]
Results [3]: [shardId#647223, worklistShardItemId#647224L, buf#648293]
(42) Exchange
Input [3]: [shardId#647223, worklistShardItemId#647224L, buf#648293]
Arguments: hashpartitioning(shardId#647223, worklistShardItemId#647224L, 20), ENSURE_REQUIREMENTS, [plan_id=272296]
(43) ObjectHashAggregate
Input [3]: [shardId#647223, worklistShardItemId#647224L, buf#648293]
Keys [2]: [shardId#647223, worklistShardItemId#647224L]
Functions [1]: [collect_list(struct(qty, qty#647225, kpis, kpis#647228), 0, 0)]
Aggregate Attributes [1]: [collect_list(struct(qty, qty#647225, kpis, kpis#647228), 0, 0)#647222]
Results [3]: [shardId#647223, worklistShardItemId#647224L, map_from_entries(collect_list(struct(qty, qty#647225, kpis, kpis#647228), 0, 0)#647222) AS quantityKpis#647217]
(44) Sort [codegen id : 14]
Input [3]: [shardId#647223, worklistShardItemId#647224L, quantityKpis#647217]
Arguments: [shardId#647223 ASC NULLS FIRST, worklistShardItemId#647224L ASC NULLS FIRST], false, 0
(45) SortMergeJoin [codegen id : 15]
Left keys [2]: [shardId#643168, worklistShardItemId#643816L]
Right keys [2]: [shardId#647223, worklistShardItemId#647224L]
Join type: LeftOuter
Join condition: None
(46) Project [codegen id : 15]
Output [36]: [shardId#643168, quantityAfterProdPlantOptimization#643817, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, sourceOfSupplyUuid#645051, minimumOrderQuantity#645067, orderProposalItemId#645038, orderProposalItemGroupId#645061, optimizationGroups#645080, measurements#645078, previousOrderProposal#645057L, prodLocSpecificKpis#647201, channelStreamSpecificKpis#647216, coalesce(quantityKpis#647217, map(keys: [], values: [])) AS quantityKpis#647229, arrays_zip(constraintLabels#645068, constraintOperators#645069, constraintValues#645070, constraintLabels, constraintOperators, constraintValues) AS constraintStructArray#648543]
Input [41]: [shardId#643168, worklistShardItemId#643816L, quantityAfterProdPlantOptimization#643817, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, constraintValues#645070, constraintOperators#645069, constraintLabels#645068, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, sourceOfSupplyUuid#645051, minimumOrderQuantity#645067, orderProposalItemId#645038, orderProposalItemGroupId#645061, optimizationGroups#645080, measurements#645078, previousOrderProposal#645057L, prodLocSpecificKpis#647201, channelStreamSpecificKpis#647216, shardId#647223, worklistShardItemId#647224L, quantityKpis#647217]
(47) Project
Output [37]: [shardId#643168, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, sourceOfSupplyUuid#645051, orderProposalItemId#645038, orderProposalItemGroupId#645061, optimizationGroups#645080, measurements#645078, previousOrderProposal#645057L, prodLocSpecificKpis#647201, channelStreamSpecificKpis#647216, quantityKpis#647229, struct(minServiceLevel, array_min(filter(constraintStructArray#648543, lambdafunction((lambda x_1656#648550.constraintLabels = ServiceLevel), lambda x_1656#648550, false)).constraintValues), minServiceLevelMinStock, null, maxServiceLevelEndOfListing, array_min(filter(constraintStructArray#648543, lambdafunction((lambda x_1657#648551.constraintLabels = ServiceLevelAtStartOfDelisting), lambda x_1657#648551, false)).constraintValues), maxRoc, array_min(filter(constraintStructArray#648543, lambdafunction((lambda x_1658#648552.constraintLabels = RangeOfCoverage), lambda x_1658#648552, false)).constraintValues), minimumOrderQuantity, minimumOrderQuantity#645067, endOfListingDateTime, coalesce(filter(prodLocSpecificKpis#647201, lambdafunction((lambda x_1659#648553.label = NonListingStartTimestamp), lambda x_1659#648553, false))[0].dateTime, 1970-01-01 00:00:00)) AS constraintBenchmark#648549, CASE WHEN (qty#643818 <=> quantityAfterProdPlantOptimization#643817) THEN array(struct(isProposedCandidate, true, isProdlocOptimalCandidate, true, candidateOrderQuantity, coalesce((qty#643818 * (cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1660#648621.isOrderUnit, lambda x_1660#648621, false)), 1, None, false).denominator as double) / cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1660#648622.isOrderUnit, lambda x_1660#648622, false)), 1, None, false).numerator as double))), qty#643818), orderQuantityUom, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1660#648623.isOrderUnit, lambda x_1660#648623, false)), 1, None, false).uom, orderQuantityBaseUom#645065), orderQuantityUomUuid, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1660#648624.isOrderUnit, lambda x_1660#648624, false)), 1, None, false).uomUuid, orderQuantityBaseUomUuid#645066), candidateOrderQuantityInBaseUnit, qty#643818, orderQuantityBaseUom, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid, orderQuantityBaseUomUuid#645066, candidateOrderQuantityInPreferredUnit, coalesce(array_min(transform(filter(logisticUnits#645064, lambdafunction((lambda x_1662#648625.isPreferred AND (((qty#643818 * cast(lambda x_1662#648625.denominator as double)) % cast(lambda x_1662#648625.numerator as double)) = 0.0)), lambda x_1662#648625, false)), lambdafunction(struct(inPreferredQuantity, ((qty#643818 * cast(lambda x_1663#648663.denominator as double)) / cast(lambda x_1663#648663.numerator as double)), uom, lambda x_1663#648663.uom, uomUuid, lambda x_1663#648663.uomUuid), lambda x_1663#648663, false))).inPreferredQuantity, coalesce((qty#643818 * (cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1661#648626.isOrderUnit, lambda x_1661#648626, false)), 1, None, false).denominator as double) / cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1661#648627.isOrderUnit, lambda x_1661#648627, false)), 1, None, false).numerator as double))), qty#643818)), orderQuantityPreferredUom, coalesce(array_min(transform(filter(logisticUnits#645064, lambdafunction((lambda x_1662#648628.isPreferred AND (((qty#643818 * cast(lambda x_1662#648628.denominator as double)) % cast(lambda x_1662#648628.numerator as double)) = 0.0)), lambda x_1662#648628, false)), lambdafunction(struct(inPreferredQuantity, ((qty#643818 * cast(lambda x_1663#648664.denominator as double)) / cast(lambda x_1663#648664.numerator as double)), uom, lambda x_1663#648664.uom, uomUuid, lambda x_1663#648664.uomUuid), lambda x_1663#648664, false))).uom, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1661#648629.isOrderUnit, lambda x_1661#648629, false)), 1, None, false).uom, orderQuantityBaseUom#645065)), orderQuantityPreferredUomUuid, coalesce(array_min(transform(filter(logisticUnits#645064, lambdafunction((lambda x_1662#648630.isPreferred AND (((qty#643818 * cast(lambda x_1662#648630.denominator as double)) % cast(lambda x_1662#648630.numerator as double)) = 0.0)), lambda x_1662#648630, false)), lambdafunction(struct(inPreferredQuantity, ((qty#643818 * cast(lambda x_1663#648665.denominator as double)) / cast(lambda x_1663#648665.numerator as double)), uom, lambda x_1663#648665.uom, uomUuid, lambda x_1663#648665.uomUuid), lambda x_1663#648665, false))).uomUuid, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1661#648631.isOrderUnit, lambda x_1661#648631, false)), 1, None, false).uomUuid, orderQuantityBaseUomUuid#645066)), serviceLevel, coalesce(filter(element_at(quantityKpis#647229, qty#643818, None, false), lambdafunction((lambda x_1668#648632.label = ServiceLevel), lambda x_1668#648632, false))[0].value, 0.0), serviceLevelMinStock, ... 5 more fields)) ELSE array(struct(isProposedCandidate, true, isProdlocOptimalCandidate, false, candidateOrderQuantity, coalesce((qty#643818 * (cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1660#648635.isOrderUnit, lambda x_1660#648635, false)), 1, None, false).denominator as double) / cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1660#648636.isOrderUnit, lambda x_1660#648636, false)), 1, None, false).numerator as double))), qty#643818), orderQuantityUom, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1660#648637.isOrderUnit, lambda x_1660#648637, false)), 1, None, false).uom, orderQuantityBaseUom#645065), orderQuantityUomUuid, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1660#648638.isOrderUnit, lambda x_1660#648638, false)), 1, None, false).uomUuid, orderQuantityBaseUomUuid#645066), candidateOrderQuantityInBaseUnit, qty#643818, orderQuantityBaseUom, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid, orderQuantityBaseUomUuid#645066, candidateOrderQuantityInPreferredUnit, coalesce(array_min(transform(filter(logisticUnits#645064, lambdafunction((lambda x_1662#648639.isPreferred AND (((qty#643818 * cast(lambda x_1662#648639.denominator as double)) % cast(lambda x_1662#648639.numerator as double)) = 0.0)), lambda x_1662#648639, false)), lambdafunction(struct(inPreferredQuantity, ((qty#643818 * cast(lambda x_1663#648666.denominator as double)) / cast(lambda x_1663#648666.numerator as double)), uom, lambda x_1663#648666.uom, uomUuid, lambda x_1663#648666.uomUuid), lambda x_1663#648666, false))).inPreferredQuantity, coalesce((qty#643818 * (cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1661#648640.isOrderUnit, lambda x_1661#648640, false)), 1, None, false).denominator as double) / cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1661#648641.isOrderUnit, lambda x_1661#648641, false)), 1, None, false).numerator as double))), qty#643818)), orderQuantityPreferredUom, coalesce(array_min(transform(filter(logisticUnits#645064, lambdafunction((lambda x_1662#648642.isPreferred AND (((qty#643818 * cast(lambda x_1662#648642.denominator as double)) % cast(lambda x_1662#648642.numerator as double)) = 0.0)), lambda x_1662#648642, false)), lambdafunction(struct(inPreferredQuantity, ((qty#643818 * cast(lambda x_1663#648667.denominator as double)) / cast(lambda x_1663#648667.numerator as double)), uom, lambda x_1663#648667.uom, uomUuid, lambda x_1663#648667.uomUuid), lambda x_1663#648667, false))).uom, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1661#648643.isOrderUnit, lambda x_1661#648643, false)), 1, None, false).uom, orderQuantityBaseUom#645065)), orderQuantityPreferredUomUuid, coalesce(array_min(transform(filter(logisticUnits#645064, lambdafunction((lambda x_1662#648644.isPreferred AND (((qty#643818 * cast(lambda x_1662#648644.denominator as double)) % cast(lambda x_1662#648644.numerator as double)) = 0.0)), lambda x_1662#648644, false)), lambdafunction(struct(inPreferredQuantity, ((qty#643818 * cast(lambda x_1663#648668.denominator as double)) / cast(lambda x_1663#648668.numerator as double)), uom, lambda x_1663#648668.uom, uomUuid, lambda x_1663#648668.uomUuid), lambda x_1663#648668, false))).uomUuid, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1661#648645.isOrderUnit, lambda x_1661#648645, false)), 1, None, false).uomUuid, orderQuantityBaseUomUuid#645066)), serviceLevel, coalesce(filter(element_at(quantityKpis#647229, qty#643818, None, false), lambdafunction((lambda x_1671#648646.label = ServiceLevel), lambda x_1671#648646, false))[0].value, 0.0), serviceLevelMinStock, ... 5 more fields), struct(isProposedCandidate, false, isProdlocOptimalCandidate, true, candidateOrderQuantity, coalesce((quantityAfterProdPlantOptimization#643817 * (cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1664#648649.isOrderUnit, lambda x_1664#648649, false)), 1, None, false).denominator as double) / cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1664#648650.isOrderUnit, lambda x_1664#648650, false)), 1, None, false).numerator as double))), quantityAfterProdPlantOptimization#643817), orderQuantityUom, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1664#648651.isOrderUnit, lambda x_1664#648651, false)), 1, None, false).uom, orderQuantityBaseUom#645065), orderQuantityUomUuid, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1664#648652.isOrderUnit, lambda x_1664#648652, false)), 1, None, false).uomUuid, orderQuantityBaseUomUuid#645066), candidateOrderQuantityInBaseUnit, quantityAfterProdPlantOptimization#643817, orderQuantityBaseUom, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid, orderQuantityBaseUomUuid#645066, candidateOrderQuantityInPreferredUnit, coalesce(array_min(transform(filter(logisticUnits#645064, lambdafunction((lambda x_1666#648653.isPreferred AND (((quantityAfterProdPlantOptimization#643817 * cast(lambda x_1666#648653.denominator as double)) % cast(lambda x_1666#648653.numerator as double)) = 0.0)), lambda x_1666#648653, false)), lambdafunction(struct(inPreferredQuantity, ((quantityAfterProdPlantOptimization#643817 * cast(lambda x_1667#648669.denominator as double)) / cast(lambda x_1667#648669.numerator as double)), uom, lambda x_1667#648669.uom, uomUuid, lambda x_1667#648669.uomUuid), lambda x_1667#648669, false))).inPreferredQuantity, coalesce((quantityAfterProdPlantOptimization#643817 * (cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1665#648654.isOrderUnit, lambda x_1665#648654, false)), 1, None, false).denominator as double) / cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1665#648655.isOrderUnit, lambda x_1665#648655, false)), 1, None, false).numerator as double))), quantityAfterProdPlantOptimization#643817)), orderQuantityPreferredUom, coalesce(array_min(transform(filter(logisticUnits#645064, lambdafunction((lambda x_1666#648656.isPreferred AND (((quantityAfterProdPlantOptimization#643817 * cast(lambda x_1666#648656.denominator as double)) % cast(lambda x_1666#648656.numerator as double)) = 0.0)), lambda x_1666#648656, false)), lambdafunction(struct(inPreferredQuantity, ((quantityAfterProdPlantOptimization#643817 * cast(lambda x_1667#648670.denominator as double)) / cast(lambda x_1667#648670.numerator as double)), uom, lambda x_1667#648670.uom, uomUuid, lambda x_1667#648670.uomUuid), lambda x_1667#648670, false))).uom, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1665#648657.isOrderUnit, lambda x_1665#648657, false)), 1, None, false).uom, orderQuantityBaseUom#645065)), orderQuantityPreferredUomUuid, coalesce(array_min(transform(filter(logisticUnits#645064, lambdafunction((lambda x_1666#648658.isPreferred AND (((quantityAfterProdPlantOptimization#643817 * cast(lambda x_1666#648658.denominator as double)) % cast(lambda x_1666#648658.numerator as double)) = 0.0)), lambda x_1666#648658, false)), lambdafunction(struct(inPreferredQuantity, ((quantityAfterProdPlantOptimization#643817 * cast(lambda x_1667#648671.denominator as double)) / cast(lambda x_1667#648671.numerator as double)), uom, lambda x_1667#648671.uom, uomUuid, lambda x_1667#648671.uomUuid), lambda x_1667#648671, false))).uomUuid, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1665#648659.isOrderUnit, lambda x_1665#648659, false)), 1, None, false).uomUuid, orderQuantityBaseUomUuid#645066)), serviceLevel, coalesce(filter(element_at(quantityKpis#647229, quantityAfterProdPlantOptimization#643817, None, false), lambdafunction((lambda x_1674#648660.label = ServiceLevel), lambda x_1674#648660, false))[0].value, 0.0), serviceLevelMinStock, ... 5 more fields)) END AS calculationAnalysis#648620, coalesce(filter(prodLocSpecificKpis#647201, lambdafunction((lambda x_1677#648673.label = InitialStockQty), lambda x_1677#648673, false))[0].dateTime, 1970-01-01 00:00:00) AS inventoryDateTime#648672, coalesce(filter(prodLocSpecificKpis#647201, lambdafunction((lambda x_1678#648675.label = DemandPeriodEndTimestamp), lambda x_1678#648675, false))[0].dateTime, 1970-01-01 00:00:00) AS demandPeriodEndDateTime#648674]
Input [36]: [shardId#643168, quantityAfterProdPlantOptimization#643817, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, sourceOfSupplyUuid#645051, minimumOrderQuantity#645067, orderProposalItemId#645038, orderProposalItemGroupId#645061, optimizationGroups#645080, measurements#645078, previousOrderProposal#645057L, prodLocSpecificKpis#647201, channelStreamSpecificKpis#647216, quantityKpis#647229, constraintStructArray#648543]
(48) Project
Output [21]: [shardId#643168, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, orderProposalItemId#645038, orderProposalItemGroupId#645061, previousOrderProposal#645057L, struct(itemId, 123456, itemGroupId, 123456, supplier, supplier#645040, supplyingPlant, supplyingPlant#645044, productGroup, productGroup#645045, product, product#645046, plant, plant#645041, supplierSubRange, subrange#645043, sourceOfSupplyUuid, sourceOfSupplyUuid#645051, deliveryDateTime, deliveryDateTime#645042, unitPrice, netPriceAmount#645073, unitPriceCurrency, netPriceCurrencyCode#645074, unitPriceQuantity, ... 37 more fields) AS parentItem#648754]
Input [37]: [shardId#643168, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, availabilityDateTime#645048, nextAvailabilityDateTime#645049, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, netPriceAmount#645073, netPriceCurrencyCode#645074, netPriceQuantity#645075, netPriceQuantityUom#645076, netPriceQuantityUomUuid#645077, sourceOfSupplyUuid#645051, orderProposalItemId#645038, orderProposalItemGroupId#645061, optimizationGroups#645080, measurements#645078, previousOrderProposal#645057L, prodLocSpecificKpis#647201, channelStreamSpecificKpis#647216, quantityKpis#647229, constraintBenchmark#648549, calculationAnalysis#648620, inventoryDateTime#648672, demandPeriodEndDateTime#648674]
(49) Project
Output [12]: [shardId#643168, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, orderDateTime#645047, splitIndicator#645056L, orderProposalItemGroupId#645061, previousOrderProposal#645057L, parentItem#648754, struct(itemId, orderProposalItemId#645038, supplier, supplier#645040, supplyingPlant, supplyingPlant#645044, productGroup, productGroup#645045, product, product#645046, plant, plant#645041, supplierSubRange, subrange#645043, deliveryDateTime, deliveryDateTime#645042, orderQuantity, coalesce((qty#643818 * (cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1702#648788.isOrderUnit, lambda x_1702#648788, false)), 1, None, false).denominator as double) / cast(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1702#648789.isOrderUnit, lambda x_1702#648789, false)), 1, None, false).numerator as double))), qty#643818), orderQuantityUom, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1702#648790.isOrderUnit, lambda x_1702#648790, false)), 1, None, false).uom, orderQuantityBaseUom#645065), orderQuantityUomUuid, coalesce(element_at(filter(logisticUnits#645064, lambdafunction(lambda x_1702#648791.isOrderUnit, lambda x_1702#648791, false)), 1, None, false).uomUuid, orderQuantityBaseUomUuid#645066), orderQuantityInBaseUnit, qty#643818, orderQuantityBaseUom, ... 13 more fields) AS item#648785]
Input [21]: [shardId#643168, qty#643818, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, productGroup#645045, product#645046, plant#645041, subrange#645043, orderDateTime#645047, deliveryDateTime#645042, logisticUnits#645064, orderQuantityBaseUom#645065, orderQuantityBaseUomUuid#645066, splitIndicator#645056L, orderProposalItemId#645038, orderProposalItemGroupId#645061, previousOrderProposal#645057L, parentItem#648754]
(50) ObjectHashAggregate
Input [12]: [shardId#643168, orderProposalId#645037L, originalReplenishmentRunId#645079L, supplierGroup#645039, supplier#645040, supplyingPlant#645044, orderDateTime#645047, splitIndicator#645056L, orderProposalItemGroupId#645061, previousOrderProposal#645057L, parentItem#648754, item#648785]
Keys [4]: [shardId#643168, orderProposalId#645037L, splitIndicator#645056L, orderProposalItemGroupId#645061]
Functions [8]: [partial_max(originalReplenishmentRunId#645079L), partial_max(supplierGroup#645039), partial_max(supplier#645040), partial_max(supplyingPlant#645044), partial_max(orderDateTime#645047), partial_collect_list(parentItem#648754, 0, 0), partial_collect_set(previousOrderProposal#645057L, 0, 0), partial_collect_list(item#648785, 0, 0)]
Aggregate Attributes [8]: [max#664583L, max#664584, max#664585, max#664586, max#664587, buf#650121, buf#664588, buf#650123]
Results [12]: [shardId#643168, orderProposalId#645037L, splitIndicator#645056L, orderProposalItemGroupId#645061, max#664589L, max#664590, max#664591, max#664592, max#664593, buf#650129, buf#664594, buf#650131]
(51) Exchange
Input [12]: [shardId#643168, orderProposalId#645037L, splitIndicator#645056L, orderProposalItemGroupId#645061, max#664589L, max#664590, max#664591, max#664592, max#664593, buf#650129, buf#664594, buf#650131]
Arguments: hashpartitioning(shardId#643168, orderProposalId#645037L, splitIndicator#645056L, orderProposalItemGroupId#645061, 20), ENSURE_REQUIREMENTS, [plan_id=272309]
(52) ObjectHashAggregate
Input [12]: [shardId#643168, orderProposalId#645037L, splitIndicator#645056L, orderProposalItemGroupId#645061, max#664589L, max#664590, max#664591, max#664592, max#664593, buf#650129, buf#664594, buf#650131]
Keys [4]: [shardId#643168, orderProposalId#645037L, splitIndicator#645056L, orderProposalItemGroupId#645061]
Functions [8]: [max(originalReplenishmentRunId#645079L), max(supplierGroup#645039), max(supplier#645040), max(supplyingPlant#645044), max(orderDateTime#645047), collect_list(parentItem#648754, 0, 0), collect_set(previousOrderProposal#645057L, 0, 0), collect_list(item#648785, 0, 0)]
Aggregate Attributes [8]: [max(originalReplenishmentRunId#645079L)#648854L, max(supplierGroup#645039)#648855, max(supplier#645040)#648856, max(supplyingPlant#645044)#648857, max(orderDateTime#645047)#648858, collect_list(parentItem#648754, 0, 0)#648859, collect_set(previousOrderProposal#645057L, 0, 0)#648861, collect_list(item#648785, 0, 0)#648860]
Results [10]: [shardId#643168, orderProposalId#645037L, max(originalReplenishmentRunId#645079L)#648854L AS originalReplenishmentRunId#648802L, max(supplierGroup#645039)#648855 AS supplierGroup#648803, max(supplier#645040)#648856 AS supplier#648804, max(supplyingPlant#645044)#648857 AS supplyingPlant#648805, max(orderDateTime#645047)#648858 AS orderDateTime#648806, collect_list(parentItem#648754, 0, 0)#648859 AS parentItems#648807, collect_set(previousOrderProposal#645057L, 0, 0)#648861 AS previousOrderProposals#648809, struct(itemGroupId, coalesce(orderProposalItemGroupId#645061, cast((monotonically_increasing_id() % 9999999999) as string)), items, collect_list(item#648785, 0, 0)#648860) AS itemGroup#648863]
(53) ObjectHashAggregate
Input [10]: [shardId#643168, orderProposalId#645037L, originalReplenishmentRunId#648802L, supplierGroup#648803, supplier#648804, supplyingPlant#648805, orderDateTime#648806, parentItems#648807, previousOrderProposals#648809, itemGroup#648863]
Keys [2]: [shardId#643168, orderProposalId#645037L]
Functions [8]: [partial_max(originalReplenishmentRunId#648802L), partial_max(supplierGroup#648803), partial_max(supplier#648804), partial_max(supplyingPlant#648805), partial_max(orderDateTime#648806), partial_collect_list(itemGroup#648863, 0, 0), partial_collect_list(parentItems#648807, 0, 0), partial_collect_set(previousOrderProposals#648809, 0, 0)]
Aggregate Attributes [8]: [max#650100L, max#650101, max#650102, max#650103, max#650104, buf#650105, buf#650106, buf#650107]
Results [10]: [shardId#643168, orderProposalId#645037L, max#650108L, max#650109, max#650110, max#650111, max#650112, buf#650113, buf#650114, buf#650115]
(54) Exchange
Input [10]: [shardId#643168, orderProposalId#645037L, max#650108L, max#650109, max#650110, max#650111, max#650112, buf#650113, buf#650114, buf#650115]
Arguments: hashpartitioning(shardId#643168, orderProposalId#645037L, 20), ENSURE_REQUIREMENTS, [plan_id=272312]
(55) ObjectHashAggregate
Input [10]: [shardId#643168, orderProposalId#645037L, max#650108L, max#650109, max#650110, max#650111, max#650112, buf#650113, buf#650114, buf#650115]
Keys [2]: [shardId#643168, orderProposalId#645037L]
Functions [8]: [max(originalReplenishmentRunId#648802L), max(supplierGroup#648803), max(supplier#648804), max(supplyingPlant#648805), max(orderDateTime#648806), collect_list(itemGroup#648863, 0, 0), collect_list(parentItems#648807, 0, 0), collect_set(previousOrderProposals#648809, 0, 0)]
Aggregate Attributes [8]: [max(originalReplenishmentRunId#648802L)#648885L, max(supplierGroup#648803)#648886, max(supplier#648804)#648887, max(supplyingPlant#648805)#648888, max(orderDateTime#648806)#648889, collect_list(itemGroup#648863, 0, 0)#648890, collect_list(parentItems#648807, 0, 0)#648891, collect_set(previousOrderProposals#648809, 0, 0)#648892]
Results [10]: [shardId#643168, orderProposalId#645037L, max(originalReplenishmentRunId#648802L)#648885L AS originalReplenishmentRunId#648864L, max(supplierGroup#648803)#648886 AS supplierGroup#648865, max(supplier#648804)#648887 AS supplier#648866, max(supplyingPlant#648805)#648888 AS supplyingPlant#648867, max(orderDateTime#648806)#648889 AS orderDateTime#648868, collect_list(itemGroup#648863, 0, 0)#648890 AS itemGroups#648869, flatten(collect_list(parentItems#648807, 0, 0)#648891) AS parentItems#648870, flatten(collect_set(previousOrderProposals#648809, 0, 0)#648892) AS previousOrderProposals#648871]
(56) Project
Output [2]: [shardId#643168, struct(orderProposalId, orderProposalId#645037L, originalReplenishmentRunId, originalReplenishmentRunId#648864L, supplierGroup, supplierGroup#648865, optimizationGroups, null, supplier, CASE WHEN isnull(supplierGroup#648865) THEN supplier#648866 END, supplyingPlant, supplyingPlant#648867, orderDateTime, orderDateTime#648868, itemGroups, itemGroups#648869, previousOrderProposals, array_distinct(previousOrderProposals#648871), parentItems, parentItems#648870) AS orderProposal#648896]
Input [10]: [shardId#643168, orderProposalId#645037L, originalReplenishmentRunId#648864L, supplierGroup#648865, supplier#648866, supplyingPlant#648867, orderDateTime#648868, itemGroups#648869, parentItems#648870, previousOrderProposals#648871]
(57) Project
Output [11]: [shardId#643168, orderProposal#648896.orderProposalId AS _extract_orderProposalId#664485L, orderProposal#648896.originalReplenishmentRunId AS _extract_originalReplenishmentRunId#664486L, orderProposal#648896.supplierGroup AS _extract_supplierGroup#664487, orderProposal#648896.supplier AS _extract_supplier#664488, orderProposal#648896.supplyingPlant AS _extract_supplyingPlant#664489, orderProposal#648896.orderDateTime AS _extract_orderDateTime#664490, orderProposal#648896.itemGroups AS _extract_itemGroups#664491, orderProposal#648896.previousOrderProposals AS _extract_previousOrderProposals#664492, orderProposal#648896.parentItems AS _extract_parentItems#664493, orderProposal#648896.orderProposalId AS _extract_orderProposalId#664494L]
Input [2]: [shardId#643168, orderProposal#648896]
(58) Exchange
Input [11]: [shardId#643168, _extract_orderProposalId#664485L, _extract_originalReplenishmentRunId#664486L, _extract_supplierGroup#664487, _extract_supplier#664488, _extract_supplyingPlant#664489, _extract_orderDateTime#664490, _extract_itemGroups#664491, _extract_previousOrderProposals#664492, _extract_parentItems#664493, _extract_orderProposalId#664494L]
Arguments: hashpartitioning(coalesce(shardId#643168, ), isnull(shardId#643168), coalesce(_extract_orderProposalId#664494L, 0), isnull(_extract_orderProposalId#664494L), 20), ENSURE_REQUIREMENTS, [plan_id=272316]
(59) Sort
Input [11]: [shardId#643168, _extract_orderProposalId#664485L, _extract_originalReplenishmentRunId#664486L, _extract_supplierGroup#664487, _extract_supplier#664488, _extract_supplyingPlant#664489, _extract_orderDateTime#664490, _extract_itemGroups#664491, _extract_previousOrderProposals#664492, _extract_parentItems#664493, _extract_orderProposalId#664494L]
Arguments: [coalesce(shardId#643168, ) ASC NULLS FIRST, isnull(shardId#643168) ASC NULLS FIRST, coalesce(_extract_orderProposalId#664494L, 0) ASC NULLS FIRST, isnull(_extract_orderProposalId#664494L) ASC NULLS FIRST], false, 0
(60) Scan ExistingRDD [codegen id : 16]
Output [7]: [shardId#648919, orderProposalId#648920L, items#648921, optimizationGroups#648922, isOptimal#648923, lastModified#648924, optimizationInsights#648925]
Arguments: [shardId#648919, orderProposalId#648920L, items#648921, optimizationGroups#648922, isOptimal#648923, lastModified#648924, optimizationInsights#648925], MapPartitionsRDD[30592] at start at FileStorageAdapterImpl.java:592, ExistingRDD, UnknownPartitioning(0)
(61) Filter [codegen id : 16]
Input [7]: [shardId#648919, orderProposalId#648920L, items#648921, optimizationGroups#648922, isOptimal#648923, lastModified#648924, optimizationInsights#648925]
Condition : ((isnotnull(shardId#648919) AND (shardId#648919 = 0_1_10000002106)) AND isnotnull(orderProposalId#648920L))
(62) Project [codegen id : 16]
Output [3]: [shardId#648919, orderProposalId#648920L, optimizationGroups#648922]
Input [7]: [shardId#648919, orderProposalId#648920L, items#648921, optimizationGroups#648922, isOptimal#648923, lastModified#648924, optimizationInsights#648925]
(63) Exchange
Input [3]: [shardId#648919, orderProposalId#648920L, optimizationGroups#648922]
Arguments: hashpartitioning(orderProposalId#648920L, 20), ENSURE_REQUIREMENTS, [plan_id=272319]
(64) Sort [codegen id : 17]
Input [3]: [shardId#648919, orderProposalId#648920L, optimizationGroups#648922]
Arguments: [orderProposalId#648920L ASC NULLS FIRST], false, 0
(65) Scan ExistingRDD [codegen id : 20]
Output [7]: [shardId#648536, orderProposalId#648537L, items#648538, optimizationGroups#648539, isOptimal#648540, lastModified#648541, optimizationInsights#648542]
Arguments: [shardId#648536, orderProposalId#648537L, items#648538, optimizationGroups#648539, isOptimal#648540, lastModified#648541, optimizationInsights#648542], MapPartitionsRDD[30592] at start at FileStorageAdapterImpl.java:592, ExistingRDD, UnknownPartitioning(0)
(66) Filter [codegen id : 20]
Input [7]: [shardId#648536, orderProposalId#648537L, items#648538, optimizationGroups#648539, isOptimal#648540, lastModified#648541, optimizationInsights#648542]
Condition : ((isnotnull(shardId#648536) AND (shardId#648536 = 0_1_10000002106)) AND ((size(items#648538.worklistShardItemId, true) > 0) AND isnotnull(items#648538.worklistShardItemId)))
(67) Project [codegen id : 20]
Output [1]: [items#648538.worklistShardItemId AS _extract_worklistShardItemId#664210]
Input [7]: [shardId#648536, orderProposalId#648537L, items#648538, optimizationGroups#648539, isOptimal#648540, lastModified#648541, optimizationInsights#648542]
(68) Generate [codegen id : 20]
Input [1]: [_extract_worklistShardItemId#664210]
Arguments: explode(_extract_worklistShardItemId#664210), false, [item#648926L]
(69) Project [codegen id : 20]
Output [1]: [item#648926L AS worklistShardItemId#648927L]
Input [1]: [item#648926L]
(70) Scan parquet
Output [5]: [orderProposalId#648975L, isFallbackOrderOnly#648992, worklistShardItemId#648998L, shardId#649019, sequenceId#648997]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/internal/prod-plant-snapshot/10000002106]
PartitionFilters: [isnotnull(shardId#649019), isnotnull(sequenceId#648997), (shardId#649019 = 0_1_10000002106), (sequenceId#648997 = 2)]
PushedFilters: [IsNotNull(worklistShardItemId), Not(EqualNullSafe(isFallbackOrderOnly,true)), IsNotNull(orderProposalId)]
ReadSchema: struct<orderProposalId:bigint,isFallbackOrderOnly:boolean,worklistShardItemId:bigint>
(71) ColumnarToRow [codegen id : 18]
Input [5]: [orderProposalId#648975L, isFallbackOrderOnly#648992, worklistShardItemId#648998L, shardId#649019, sequenceId#648997]
(72) Filter [codegen id : 18]
Input [5]: [orderProposalId#648975L, isFallbackOrderOnly#648992, worklistShardItemId#648998L, shardId#649019, sequenceId#648997]
Condition : ((isnotnull(worklistShardItemId#648998L) AND NOT (isFallbackOrderOnly#648992 <=> true)) AND isnotnull(orderProposalId#648975L))
(73) Project [codegen id : 18]
Output [2]: [orderProposalId#648975L, worklistShardItemId#648998L]
Input [5]: [orderProposalId#648975L, isFallbackOrderOnly#648992, worklistShardItemId#648998L, shardId#649019, sequenceId#648997]
(74) Exchange
Input [2]: [orderProposalId#648975L, worklistShardItemId#648998L]
Arguments: hashpartitioning(worklistShardItemId#648998L, 20), REPARTITION_BY_NUM, [plan_id=272329]
(75) Project [codegen id : 19]
Output [2]: [worklistShardItemId#648998L, orderProposalId#648975L]
Input [2]: [orderProposalId#648975L, worklistShardItemId#648998L]
(76) BroadcastExchange
Input [2]: [worklistShardItemId#648998L, orderProposalId#648975L]
Arguments: HashedRelationBroadcastMode(List(input[0, bigint, true]),false), [plan_id=272333]
(77) BroadcastHashJoin [codegen id : 20]
Left keys [1]: [worklistShardItemId#648927L]
Right keys [1]: [worklistShardItemId#648998L]
Join type: Inner
Join condition: None
(78) Project [codegen id : 20]
Output [1]: [orderProposalId#648975L]
Input [3]: [worklistShardItemId#648927L, worklistShardItemId#648998L, orderProposalId#648975L]
(79) HashAggregate [codegen id : 20]
Input [1]: [orderProposalId#648975L]
Keys [1]: [orderProposalId#648975L]
Functions: []
Aggregate Attributes: []
Results [1]: [orderProposalId#648975L]
(80) Exchange
Input [1]: [orderProposalId#648975L]
Arguments: hashpartitioning(orderProposalId#648975L, 20), ENSURE_REQUIREMENTS, [plan_id=272339]
(81) HashAggregate [codegen id : 21]
Input [1]: [orderProposalId#648975L]
Keys [1]: [orderProposalId#648975L]
Functions: []
Aggregate Attributes: []
Results [1]: [orderProposalId#648975L]
(82) Sort [codegen id : 21]
Input [1]: [orderProposalId#648975L]
Arguments: [orderProposalId#648975L ASC NULLS FIRST], false, 0
(83) SortMergeJoin [codegen id : 22]
Left keys [1]: [orderProposalId#648920L]
Right keys [1]: [orderProposalId#648975L]
Join type: Inner
Join condition: None
(84) Project
Output [3]: [orderProposalId#648920L, shardId#648919, coalesce(transform(optimizationGroups#648922, lambdafunction(struct(optGroupId, lambda x_1706#648917.optGroupId, minOrderProfile, lambda x_1706#648917.minOrderProfile, assignmentDetails, lambda x_1706#648917.assignmentDetails, minOrdBenchmark, struct(dimensionType, lambda x_1706#648917.minOrderGoal.dimensionType, unit, lambda x_1706#648917.minOrderGoal.unit, unitUuid, lambda x_1706#648917.minOrderGoal.unitUuid, goalValue, lambda x_1706#648917.minOrderGoal.minOrderValue, calcValue, lambda x_1706#648917.minOrderGoal.calculatedOrderValue), transportLoadProfile, DummyTloProfile01, transportLoadGoal, [3,5000.0,false,PAL,a7f3c91d204eb8f56d12a09e3b785c4f,TON,b4e8d1f0c73a92e61d05b8f4a291c07e,40.0]), lambda x_1706#648917, false)), []) AS optimizationGroups#648916]
Input [4]: [shardId#648919, orderProposalId#648920L, optimizationGroups#648922, orderProposalId#648975L]
(85) Exchange
Input [3]: [orderProposalId#648920L, shardId#648919, optimizationGroups#648916]
Arguments: hashpartitioning(coalesce(shardId#648919, ), isnull(shardId#648919), coalesce(orderProposalId#648920L, 0), isnull(orderProposalId#648920L), 20), ENSURE_REQUIREMENTS, [plan_id=272348]
(86) Sort [codegen id : 23]
Input [3]: [orderProposalId#648920L, shardId#648919, optimizationGroups#648916]
Arguments: [coalesce(shardId#648919, ) ASC NULLS FIRST, isnull(shardId#648919) ASC NULLS FIRST, coalesce(orderProposalId#648920L, 0) ASC NULLS FIRST, isnull(orderProposalId#648920L) ASC NULLS FIRST], false, 0
(87) SortMergeJoin
Left keys [4]: [coalesce(shardId#643168, ), isnull(shardId#643168), coalesce(_extract_orderProposalId#664494L, 0), isnull(_extract_orderProposalId#664494L)]
Right keys [4]: [coalesce(shardId#648919, ), isnull(shardId#648919), coalesce(orderProposalId#648920L, 0), isnull(orderProposalId#648920L)]
Join type: LeftOuter
Join condition: None
(88) Project
Output [3]: [shardId#643168, named_struct(orderProposalId, _extract_orderProposalId#664494L, originalReplenishmentRunId, _extract_originalReplenishmentRunId#664486L, supplierGroup, _extract_supplierGroup#664487, optimizationGroups, coalesce(optimizationGroups#648916, []), supplier, _extract_supplier#664488, supplyingPlant, _extract_supplyingPlant#664489, orderDateTime, _extract_orderDateTime#664490, itemGroups, _extract_itemGroups#664491, previousOrderProposals, _extract_previousOrderProposals#664492, parentItems, _extract_parentItems#664493) AS orderProposal#649023, CASE WHEN (size(_extract_parentItems#664493, true) > 2000) THEN xxhash64(_extract_orderProposalId#664494L, 42) ELSE xxhash64(pmod(cast(_extract_orderProposalId#664494L as decimal(20,0)), 1), 42) END AS resultSeparationId#657383L]
Input [14]: [shardId#643168, _extract_orderProposalId#664485L, _extract_originalReplenishmentRunId#664486L, _extract_supplierGroup#664487, _extract_supplier#664488, _extract_supplyingPlant#664489, _extract_orderDateTime#664490, _extract_itemGroups#664491, _extract_previousOrderProposals#664492, _extract_parentItems#664493, _extract_orderProposalId#664494L, orderProposalId#648920L, shardId#648919, optimizationGroups#648916]
(89) ObjectHashAggregate
Input [3]: [shardId#643168, orderProposal#649023, resultSeparationId#657383L]
Keys [2]: [shardId#643168, resultSeparationId#657383L]
Functions [1]: [partial_collect_list(orderProposal#649023, 0, 0)]
Aggregate Attributes [1]: [buf#657422]
Results [3]: [shardId#643168, resultSeparationId#657383L, buf#657423]
(90) Exchange
Input [3]: [shardId#643168, resultSeparationId#657383L, buf#657423]
Arguments: hashpartitioning(shardId#643168, resultSeparationId#657383L, 20), ENSURE_REQUIREMENTS, [plan_id=272355]
(91) ObjectHashAggregate
Input [3]: [shardId#643168, resultSeparationId#657383L, buf#657423]
Keys [2]: [shardId#643168, resultSeparationId#657383L]
Functions [1]: [collect_list(orderProposal#649023, 0, 0)]
Aggregate Attributes [1]: [collect_list(orderProposal#649023, 0, 0)#657391]
Results [3]: [shardId#643168, resultSeparationId#657383L, collect_list(orderProposal#649023, 0, 0)#657391 AS orderProposals#657387]
(92) Exchange
Input [3]: [shardId#643168, resultSeparationId#657383L, orderProposals#657387]
Arguments: SinglePartition, REPARTITION_BY_NUM, [plan_id=272357]
(93) Project
Output [2]: [shardId#643168, orderProposals#657387]
Input [3]: [shardId#643168, resultSeparationId#657383L, orderProposals#657387]
(94) Project
Output [2]: [empty2null(shardId#643168) AS shardId#667488, orderProposals#657387]
Input [2]: [orderProposals#657387, shardId#643168]
(95) Sort
Input [2]: [shardId#667488, orderProposals#657387]
Arguments: [shardId#667488 ASC NULLS FIRST], false, 0
(96) WriteFiles
Input [2]: [shardId#667488, orderProposals#657387]
(97) Execute InsertIntoHadoopFsRelationCommand
Input: []
Arguments: hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/order-proposal-result/10000002106, false, [shardId#667488], JSON, [__partition_columns=["shardId"], path=hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/order-proposal-result/10000002106], Append, [shardId, orderProposals]