digraph G {
0 [id="node0" labelType="html" label="<br><b>AdaptiveSparkPlan</b><br><br>" tooltip="AdaptiveSparkPlan isFinalPlan=true"];
1 [id="node1" labelType="html" label="<b>Execute InsertIntoHadoopFsRelationCommand</b><br><br>task commit time: 235 ms<br>number of written files: 1<br>job commit time: 486 ms<br>number of output rows: 0<br>number of dynamic part: 0<br>written output: 1366.0 B" tooltip="Execute InsertIntoHadoopFsRelationCommand hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/prp-op-traceability-results/raw/crp-order-quantity-kpi-service/ogr/10000001651/0_1_10000001651, false, Parquet, [path=hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/prp-op-traceability-results/raw/crp-order-quantity-kpi-service/ogr/10000001651/0_1_10000001651], Append, [product, location, documents, replenishmentRunId]"];
2 [id="node2" labelType="html" label="<br><b>WriteFiles</b><br><br>" tooltip="WriteFiles"];
3 [id="node3" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519794, plant#21519793 AS location#21530388, transform(openGoodsMovements#21519894, lambdafunction(struct(documentType, PO, documentId, lambda x_1560#21530392.documentId, documentUuid, lambda x_1560#21530392.documentUuid, openQty, lambda x_1560#21530392.openQty, qtyUomUuid, lambda x_1560#21530392.qtyUomUuid, qtyUom, lambda x_1560#21530392.qtyUom, plannedDeliveryDatetime, lambda x_1560#21530392.availabilityDatetime), lambda x_1560#21530392, false)) AS documents#21530391, 10000001651 AS replenishmentRunId#21530393L]"];
4 [id="node4" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (size(transform(openGoodsMovements#21519894, lambdafunction(struct(documentType, PO, documentId, lambda x_1560#21530392.documentId, documentUuid, lambda x_1560#21530392.documentUuid, openQty, lambda x_1560#21530392.openQty, qtyUomUuid, lambda x_1560#21530392.qtyUomUuid, qtyUom, lambda x_1560#21530392.qtyUom, plannedDeliveryDatetime, lambda x_1560#21530392.availabilityDatetime), lambda x_1560#21530392, false)), false) > 0)"];
5 [id="node5" labelType="html" label="<br><b>InMemoryTableScan</b><br><br>" tooltip="InMemoryTableScan [openGoodsMovements#21519894, plant#21519793, product#21519794], [(size(transform(openGoodsMovements#21519894, lambdafunction(struct(documentType, PO, documentId, lambda x_1560#21530392.documentId, documentUuid, lambda x_1560#21530392.documentUuid, openQty, lambda x_1560#21530392.openQty, qtyUomUuid, lambda x_1560#21530392.qtyUomUuid, qtyUom, lambda x_1560#21530392.qtyUom, plannedDeliveryDatetime, lambda x_1560#21530392.availabilityDatetime), lambda x_1560#21530392, false)), false) > 0)]"];
6 [id="node6" labelType="html" label="<br><b>AdaptiveSparkPlan</b><br><br>" tooltip="AdaptiveSparkPlan isFinalPlan=true"];
7 [id="node7" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation [plan_id=21298748]"];
8 [id="node8" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (size(openGoodsMovements#21519894, false) > 0)"];
9 [id="node9" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Aggregate [product#21519794, plant#21519793], [product#21519794, plant#21519793, flatten(collect_list(openGoodsMovements#21519884, 0, 0)) AS openGoodsMovements#21519894]"];
10 [id="node10" labelType="html" label="<br><b>Aggregate</b><br><br>" tooltip="Aggregate [product#21519794, plant#21519793], [product#21519794, plant#21519793, flatten(collect_list(openGoodsMovements#21519884, 0, 0)) AS openGoodsMovements#21519894]"];
11 [id="node11" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Project [plant#21519793, product#21519794, filter(transform(CASE WHEN (_we0#21519893L > 0) THEN transform(filter(confirmations#21519801, lambdafunction(((NOT lambda x_1552#21519886.deletionIndicator AND lambda x_1552#21519886.isRelevantForConfirmation) AND isnotnull(lambda x_1552#21519886.confirmedDeliveryAt)), lambda x_1552#21519886, false)), lambdafunction(struct(openQty, greatest((lambda x_1553#21519889.confirmedQuantity - coalesce(lambda x_1553#21519889.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1553#21519889.confirmedDeliveryAt), lambda x_1553#21519889, false)) ELSE transform(scheduleLines#21519800, lambdafunction(struct(openQty, greatest((lambda x_1551#21519887.quantity - coalesce(lambda x_1551#21519887.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1551#21519887.deliveryAt), lambda x_1551#21519887, false)) END, lambdafunction(struct(documentId, id#21519778, documentUuid, internalUUID#21519777, openQty, lambda x_1554#21519890.openQty, openQtyInBaseUnit, ((lambda x_1554#21519890.openQty * quantityNumerator#21519798) / quantityDenominator#21519799), qtyUom, quantityUom#21519796, qtyUomUuid, quantityUomUuid#21519797, availabilityDatetime, lambda x_1554#21519890.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_1554#21519890, false)), lambdafunction(NOT (lambda x_1555#21519891.openQty = 0.0), lambda x_1555#21519891, false)) AS openGoodsMovements#21519884]"];
12 [id="node12" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#21519793, product#21519794, filter(transform(CASE WHEN (_we0#21519893L > 0) THEN transform(filter(confirmations#21519801, lambdafunction(((NOT lambda x_1552#21519886.deletionIndicator AND lambda x_1552#21519886.isRelevantForConfirmation) AND isnotnull(lambda x_1552#21519886.confirmedDeliveryAt)), lambda x_1552#21519886, false)), lambdafunction(struct(openQty, greatest((lambda x_1553#21519889.confirmedQuantity - coalesce(lambda x_1553#21519889.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1553#21519889.confirmedDeliveryAt), lambda x_1553#21519889, false)) ELSE transform(scheduleLines#21519800, lambdafunction(struct(openQty, greatest((lambda x_1551#21519887.quantity - coalesce(lambda x_1551#21519887.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1551#21519887.deliveryAt), lambda x_1551#21519887, false)) END, lambdafunction(struct(documentId, id#21519778, documentUuid, internalUUID#21519777, openQty, lambda x_1554#21519890.openQty, openQtyInBaseUnit, ((lambda x_1554#21519890.openQty * quantityNumerator#21519798) / quantityDenominator#21519799), qtyUom, quantityUom#21519796, qtyUomUuid, quantityUomUuid#21519797, availabilityDatetime, lambda x_1554#21519890.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_1554#21519890, false)), lambdafunction(NOT (lambda x_1555#21519891.openQty = 0.0), lambda x_1555#21519891, false)) AS openGoodsMovements#21519884]"];
13 [id="node13" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Window [sum(_w0#21519892) windowspecdefinition(internalUUID#21519777, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#21519893L], [internalUUID#21519777]"];
14 [id="node14" labelType="html" label="<br><b>Window</b><br><br>" tooltip="Window [sum(_w0#21519892) windowspecdefinition(internalUUID#21519777, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#21519893L], [internalUUID#21519777]"];
15 [id="node15" labelType="html" label="<br><b>LogicalQueryStage</b><br><br>" tooltip="LogicalQueryStage Project [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801, size(filter(confirmations#21519801, lambdafunction(((NOT lambda x_1552#21519885.deletionIndicator AND lambda x_1552#21519885.isRelevantForConfirmation) AND isnotnull(lambda x_1552#21519885.confirmedDeliveryAt)), lambda x_1552#21519885, false)), false) AS _w0#21519892], ShuffleQueryStage 93"];
16 [id="node16" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(internalUUID#21519777, 25), ENSURE_REQUIREMENTS, [plan_id=21298707]"];
17 [id="node17" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801, size(filter(confirmations#21519801, lambdafunction(((NOT lambda x_1552#21519885.deletionIndicator AND lambda x_1552#21519885.isRelevantForConfirmation) AND isnotnull(lambda x_1552#21519885.confirmedDeliveryAt)), lambda x_1552#21519885, false)), false) AS _w0#21519892]"];
subgraph cluster18 {
isCluster="true";
id="cluster18";
label="WholeStageCodegen (68)";
tooltip="WholeStageCodegen (68)";
19 [id="node19" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#21517975, plant#21517976, storageLocUuid#21519839], [product#21519794, plant#21519793, storageLocUuid#21519795], Inner, BuildRight, false"];
20 [id="node20" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#21517976, product#21517975, storageLocUuid#21519839]"];
21 [id="node21" labelType="html" label="<br><b>SortMergeJoin</b><br><br>" tooltip="SortMergeJoin [plant#21517976], [plant#21519811], Inner"];
}
subgraph cluster22 {
isCluster="true";
id="cluster22";
label="WholeStageCodegen (66)";
tooltip="WholeStageCodegen (66)";
23 [id="node23" labelType="html" label="<br><b>Sort</b><br><br>" tooltip="Sort [plant#21517976 ASC NULLS FIRST], false, 0"];
}
24 [id="node24" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
25 [id="node25" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(plant#21517976, 25), ENSURE_REQUIREMENTS, [plan_id=21298574]"];
subgraph cluster26 {
isCluster="true";
id="cluster26";
label="WholeStageCodegen (65)";
tooltip="WholeStageCodegen (65)";
27 [id="node27" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21517975, plant#21517976]"];
28 [id="node28" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#21517976, ), isnull(plant#21517976), coalesce(product#21517975, ), isnull(product#21517975)], [coalesce(plant#21519499, ), isnull(plant#21519499), coalesce(product#21519498, ), isnull(product#21519498)], LeftOuter, BuildRight, false"];
}
29 [id="node29" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
30 [id="node30" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(coalesce(plant#21517976, ), isnull(plant#21517976), coalesce(product#21517975, ), isnull(product#21517975), 25), ENSURE_REQUIREMENTS, [plan_id=21293393]"];
subgraph cluster31 {
isCluster="true";
id="cluster31";
label="WholeStageCodegen (52)";
tooltip="WholeStageCodegen (52)";
32 [id="node32" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21517975, plant#21517976]"];
33 [id="node33" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#21519910), [product#21517975, plant#21517976], true, [quantityDenominator#21518058]"];
34 [id="node34" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21517975, plant#21517976, filteredUnitOfMeasureConversions#21518047.quantityDenominator AS _extract_quantityDenominator#21519910]"];
35 [id="node35" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#21518047.quantityNumerator), [product#21517975, plant#21517976, filteredUnitOfMeasureConversions#21518047], true, [quantityNumerator#21518055]"];
}
36 [id="node36" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21517975, plant#21517976, filter(unitOfMeasureConversions#21518041, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520072) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520073)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21518039.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21518039.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21518047]"];
subgraph cluster37 {
isCluster="true";
id="cluster37";
label="WholeStageCodegen (51)";
tooltip="WholeStageCodegen (51)";
38 [id="node38" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#21517975], [internalUUID#21518035], LeftOuter, BuildRight, false"];
39 [id="node39" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21517975, plant#21517976, _extract_code#21520072, _extract_internalRefUUID#21520073]"];
40 [id="node40" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#21517975, ), isnull(product#21517975), coalesce(plant#21517976, ), isnull(plant#21517976)], [coalesce(_extract_internalRefUUID#21520074, ), isnull(_extract_internalRefUUID#21520074), coalesce(_extract_internalRefUUID#21520075, ), isnull(_extract_internalRefUUID#21520075)], LeftOuter, BuildRight, false"];
}
41 [id="node41" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#21517975, plant#21517976, 25), REPARTITION_BY_NUM, [plan_id=21273308]"];
subgraph cluster42 {
isCluster="true";
id="cluster42";
label="WholeStageCodegen (1)";
tooltip="WholeStageCodegen (1)";
43 [id="node43" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (isnotnull(plant#21517976) AND isnotnull(product#21517975))"];
44 [id="node44" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
45 [id="node45" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [product#21517975,plant#21517976] Batched: true, DataFilters: [isnotnull(plant#21517976), isnotnull(product#21517975)], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [IsNotNull(plant), IsNotNull(product)], ReadSchema: struct<product:string,plant:string>"];
46 [id="node46" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=21276137]"];
subgraph cluster47 {
isCluster="true";
id="cluster47";
label="WholeStageCodegen (30)";
tooltip="WholeStageCodegen (30)";
48 [id="node48" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_code#21520072, _extract_internalRefUUID#21520073, _extract_internalRefUUID#21520074, _extract_internalRefUUID#21520075]"];
}
49 [id="node49" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21273324]"];
subgraph cluster50 {
isCluster="true";
id="cluster50";
label="WholeStageCodegen (2)";
tooltip="WholeStageCodegen (2)";
51 [id="node51" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#21517982.internalRefUUID AS _extract_internalRefUUID#21520075, product#21517983.internalRefUUID AS _extract_internalRefUUID#21520074, productionAspect#21517985.productMovementPlants.unitOfIssue.code AS _extract_code#21520072, productionAspect#21517985.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21520073]"];
52 [id="node52" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
53 [id="node53" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [plant#21517982,product#21517983,productionAspect#21517985,systemId#21517980] Batched: true, DataFilters: [], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspe..."];
54 [id="node54" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21274492]"];
55 [id="node55" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21273345]"];
subgraph cluster56 {
isCluster="true";
id="cluster56";
label="WholeStageCodegen (3)";
tooltip="WholeStageCodegen (3)";
57 [id="node57" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]"];
58 [id="node58" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter isnotnull(internalUUID#21518035)"];
59 [id="node59" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
60 [id="node60" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#21518035,baseUnitOfMeasure#21518039,unitOfMeasureConversions#21518041,systemId#21518034] Batched: true, DataFilters: [isnotnull(internalUUID#21518035)], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [IsNotNull(internalUUID)], ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMea..."];
61 [id="node61" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange 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=21298449]"];
62 [id="node62" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
63 [id="node63" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(coalesce(plant#21519499, ), isnull(plant#21519499), coalesce(product#21519498, ), isnull(product#21519498), 25), ENSURE_REQUIREMENTS, [plan_id=21298292]"];
subgraph cluster64 {
isCluster="true";
id="cluster64";
label="WholeStageCodegen (64)";
tooltip="WholeStageCodegen (64)";
65 [id="node65" labelType="html" label="<br><b>SerializeFromObject</b><br><br>" tooltip="SerializeFromObject [if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 0, product), StringType, ObjectType(class java.lang.String)))) AS product#21519498, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 1, plant), StringType, ObjectType(class java.lang.String)))) AS plant#21519499]"];
66 [id="node66" labelType="html" label="<br><b>MapElements</b><br><br>" tooltip="MapElements com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008021e99e0@10fe4db7, obj#21519493: org.apache.spark.sql.Row"];
67 [id="node67" labelType="html" label="<br><b>DeserializeToObject</b><br><br>" tooltip="DeserializeToObject createexternalrow(invoke(product#21519502.toString()), invoke(plant#21519503.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#21519504)), if (isnull(productPlant#21519514)) null else createexternalrow(invoke(productPlant#21519514.systemId.toString()), invoke(productPlant#21519514.internalUUID.toString()), if (isnull(productPlant#21519514.plant)) null else createexternalrow(invoke(productPlant#21519514.plant.internalRefUUID.toString()), invoke(productPlant#21519514.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#21519514.product)) null else createexternalrow(invoke(productPlant#21519514.product.internalRefUUID.toString()), invoke(productPlant#21519514.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#21519514.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#21519514.productionAspect)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#21519514.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#21519514.salesPlant)) null else createexternalrow(if (isnull(productPlant#21519514.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#21519514.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#21519514.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#21519514.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#21519531)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#21519754)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#21519755, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#21519756, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)), rawDemands#21518410, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#21519467.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#21519488: org.apache.spark.sql.Row"];
68 [id="node68" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#21519756, rawDemands#21518410, CASE WHEN isnotnull(timezonecode#21519465) THEN timezonecode#21519465 ELSE UTC END AS timezonecode#21519467]"];
69 [id="node69" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#21519503, ), isnull(plant#21519503)], [coalesce(internalUUID#21519453, ), isnull(internalUUID#21519453)], LeftOuter, BuildRight, false"];
}
70 [id="node70" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000]#21527952], functions=[collect_list(rawDemands#21518409, 0, 0)])"];
71 [id="node71" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[product#21519502, plant#21519503, orderDateTime#21519504, knownfloatingpointnormalized(if (isnull(productPlant#21519514)) null else named_struct(systemId, productPlant#21519514.systemId, internalUUID, productPlant#21519514.internalUUID, plant, productPlant#21519514.plant, product, productPlant#21519514.product, blockedForReplenishmentStartingFrom, productPlant#21519514.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#21519514.productionAspect)) null else named_struct(productMovementPlants, productPlant#21519514.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#21519514.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#21519514.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#21519514.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#21519514.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#21519514.salesPlant, listing, productPlant#21519514.listing)) AS productPlant#21519514, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#21519531)) AS outboundUnit#21519531, stockDatetime#21519754, knownfloatingpointnormalized(transform(stockBatchQuantities#21519755, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#21527953)), lambda arg#21527953, false))) AS stockBatchQuantities#21519755, [7226582400000000] AS [7226582400000000]#21527952], functions=[partial_collect_list(rawDemands#21518409, 0, 0)])"];
subgraph cluster72 {
isCluster="true";
id="cluster72";
label="WholeStageCodegen (63)";
tooltip="WholeStageCodegen (63)";
73 [id="node73" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, CASE WHEN isnotnull(product#21518399) THEN struct(demandChannel, demandChannel#21518401, demandStream, demandStream#21518402, considerVariance, considerVariance#21518403, demandTimeBuckets, demandTimeBuckets#21518404, demandPointInTimeStart, demandPointInTimeStart#21518405, demandPointInTimeEnd, demandPointInTimeEnd#21518406, demandPointInTime, demandPointInTime#21518407) END AS rawDemands#21518409]"];
74 [id="node74" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#21519503, ), isnull(plant#21519503), coalesce(product#21519502, ), isnull(product#21519502)], [coalesce(plant#21518400, ), isnull(plant#21518400), coalesce(product#21518399, ), isnull(product#21518399)], LeftOuter, BuildRight, false"];
75 [id="node75" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, CASE WHEN isnotnull(minCalculationDateTime#21519752) THEN minCalculationDateTime#21519752 ELSE orderDateTime#21519504 END AS stockDatetime#21519754, CASE WHEN isnotnull(roundedQuantitySum#21519753) THEN array(roundedQuantitySum#21519753) ELSE [0.0] END AS stockBatchQuantities#21519755]"];
76 [id="node76" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plant#21519503, product#21519502], [plant#21519639, product#21519640], LeftOuter, BuildRight, false"];
}
77 [id="node77" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
78 [id="node78" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#21519502, plant#21519503, 25), ENSURE_REQUIREMENTS, [plan_id=21290571]"];
subgraph cluster79 {
isCluster="true";
id="cluster79";
label="WholeStageCodegen (44)";
tooltip="WholeStageCodegen (44)";
80 [id="node80" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, CASE WHEN (isnull(outboundUnit#21519530) OR (outboundUnit#21519530 <= 0.0)) THEN 1.0 ELSE outboundUnit#21519530 END AS outboundUnit#21519531]"];
81 [id="node81" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, (cast(quantityNumerator#21519528 as double) / cast(quantityDenominator#21519529 as double)) AS outboundUnit#21519530]"];
82 [id="node82" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#21520076), [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, quantityNumerator#21519528], true, [quantityDenominator#21519529]"];
83 [id="node83" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityNumerator#21520077), [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, _extract_quantityDenominator#21520076], true, [quantityNumerator#21519528]"];
84 [id="node84" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filteredUnitOfMeasureConversions#21519527.quantityDenominator AS _extract_quantityDenominator#21520076, filteredUnitOfMeasureConversions#21519527.quantityNumerator AS _extract_quantityNumerator#21520077]"];
}
85 [id="node85" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filter(unitOfMeasureConversions#21519522, lambdafunction((((lambda u#21518048.measurementUnit1.code = productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#21518048.measurementUnit1.internalRefUUID = productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519520.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519520.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519527]"];
subgraph cluster86 {
isCluster="true";
id="cluster86";
label="WholeStageCodegen (43)";
tooltip="WholeStageCodegen (43)";
87 [id="node87" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#21519502], [internalUUID#21519516], LeftOuter, BuildRight, false"];
88 [id="node88" labelType="html" label="<br><b>SortMergeJoin</b><br><br>" tooltip="SortMergeJoin [coalesce(product#21519502, ), isnull(product#21519502), coalesce(plant#21519503, ), isnull(plant#21519503)], [coalesce(productPlant#21519514.product.internalRefUUID, ), isnull(productPlant#21519514.product.internalRefUUID), coalesce(productPlant#21519514.plant.internalRefUUID, ), isnull(productPlant#21519514.plant.internalRefUUID)], LeftOuter"];
}
subgraph cluster89 {
isCluster="true";
id="cluster89";
label="WholeStageCodegen (41)";
tooltip="WholeStageCodegen (41)";
90 [id="node90" labelType="html" label="<br><b>Sort</b><br><br>" tooltip="Sort [coalesce(product#21519502, ) ASC NULLS FIRST, isnull(product#21519502) ASC NULLS FIRST, coalesce(plant#21519503, ) ASC NULLS FIRST, isnull(plant#21519503) ASC NULLS FIRST], false, 0"];
}
91 [id="node91" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(coalesce(product#21519502, ), isnull(product#21519502), coalesce(plant#21519503, ), isnull(plant#21519503), 25), ENSURE_REQUIREMENTS, [plan_id=21289320]"];
92 [id="node92" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#21519502, plant#21519503, 25), REPARTITION_BY_NUM, [plan_id=21273369]"];
subgraph cluster93 {
isCluster="true";
id="cluster93";
label="WholeStageCodegen (4)";
tooltip="WholeStageCodegen (4)";
94 [id="node94" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
95 [id="node95" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [product#21519502,plant#21519503,orderDateTime#21519504] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>"];
subgraph cluster96 {
isCluster="true";
id="cluster96";
label="WholeStageCodegen (42)";
tooltip="WholeStageCodegen (42)";
97 [id="node97" labelType="html" label="<br><b>Sort</b><br><br>" tooltip="Sort [coalesce(productPlant#21519514.product.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21519514.product.internalRefUUID) ASC NULLS FIRST, coalesce(productPlant#21519514.plant.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21519514.plant.internalRefUUID) ASC NULLS FIRST], false, 0"];
}
98 [id="node98" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(coalesce(productPlant#21519514.product.internalRefUUID, ), isnull(productPlant#21519514.product.internalRefUUID), coalesce(productPlant#21519514.plant.internalRefUUID, ), isnull(productPlant#21519514.plant.internalRefUUID), 25), ENSURE_REQUIREMENTS, [plan_id=21281720]"];
subgraph cluster99 {
isCluster="true";
id="cluster99";
label="WholeStageCodegen (40)";
tooltip="WholeStageCodegen (40)";
100 [id="node100" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [struct(systemId, systemId#21519506, internalUUID, internalUUID#21519507, plant, plant#21519508, product, product#21519509, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#21519510, productionAspect, productionAspect#21519511, salesPlant, salesPlant#21519512, listing, listing#21519513) AS productPlant#21519514]"];
}
101 [id="node101" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21273385]"];
subgraph cluster102 {
isCluster="true";
id="cluster102";
label="WholeStageCodegen (5)";
tooltip="WholeStageCodegen (5)";
103 [id="node103" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]"];
104 [id="node104" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
105 [id="node105" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#21519507,plant#21519508,product#21519509,blockedForReplenishmentStartingFrom#21519510,productionAspect#21519511,salesPlant#21519512,listing#21519513,systemId#21519506] Batched: true, DataFilters: [], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internal..."];
106 [id="node106" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=21298040]"];
subgraph cluster107 {
isCluster="true";
id="cluster107";
label="WholeStageCodegen (62)";
tooltip="WholeStageCodegen (62)";
108 [id="node108" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[product#21519640, plant#21519639], functions=[min(calculationDateTime#21519597), sum(quantity#21519606)])"];
}
109 [id="node109" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
110 [id="node110" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#21519640, plant#21519639, 25), ENSURE_REQUIREMENTS, [plan_id=21297801]"];
subgraph cluster111 {
isCluster="true";
id="cluster111";
label="WholeStageCodegen (61)";
tooltip="WholeStageCodegen (61)";
112 [id="node112" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[product#21519640, plant#21519639], functions=[partial_min(calculationDateTime#21519597), partial_sum(quantity#21519606)])"];
113 [id="node113" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#21519639, product#21519640, calculationDateTime#21519597, quantity#21519606]"];
114 [id="node114" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#21519639, ), isnull(plant#21519639), coalesce(product#21519640, ), isnull(product#21519640), coalesce(storageLocId#21519604, ), isnull(storageLocId#21519604), coalesce(calculationDateTime#21519597, 1970-01-01 00:00:00), isnull(calculationDateTime#21519597)], [coalesce(plant#21519748, ), isnull(plant#21519748), coalesce(product#21519749, ), isnull(product#21519749), coalesce(storageLocId#21519713, ), isnull(storageLocId#21519713), coalesce(max_calc_datetime#21519750, 1970-01-01 00:00:00), isnull(max_calc_datetime#21519750)], Inner, BuildLeft, false"];
}
115 [id="node115" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true]), coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, timestamp, true], 1970-01-01 00:00:00), isnull(input[3, timestamp, true])),false), [plan_id=21297313]"];
116 [id="node116" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
117 [id="node117" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(coalesce(plant#21519639, ), isnull(plant#21519639), coalesce(product#21519640, ), isnull(product#21519640), coalesce(storageLocId#21519604, ), isnull(storageLocId#21519604), coalesce(calculationDateTime#21519597, 1970-01-01 00:00:00), isnull(calculationDateTime#21519597), 25), ENSURE_REQUIREMENTS, [plan_id=21297021]"];
subgraph cluster118 {
isCluster="true";
id="cluster118";
label="WholeStageCodegen (60)";
tooltip="WholeStageCodegen (60)";
119 [id="node119" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#21519601 AS plant#21519639, productUuid#21519603 AS product#21519640, storageLocId#21519604, calculationDateTime#21519597, quantity#21519606]"];
120 [id="node120" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#21519601, productUuid#21519603], [plant#21519610, product#21519609], Inner, BuildLeft, (calculationDateTime#21519597 <= orderDateTime#21519611), false"];
175 [id="node175" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519609, plant#21519610, orderDateTime#21519611]"];
176 [id="node176" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#21519959), [product#21519609, plant#21519610, orderDateTime#21519611], true, [quantityDenominator#21519636]"];
177 [id="node177" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634.quantityDenominator AS _extract_quantityDenominator#21519959]"];
178 [id="node178" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#21519634.quantityNumerator), [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634], true, [quantityNumerator#21519635]"];
}
121 [id="node121" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=21296229]"];
122 [id="node122" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
123 [id="node123" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(productUuid#21519603, plantUuid#21519601, 25), ENSURE_REQUIREMENTS, [plan_id=21294930]"];
subgraph cluster124 {
isCluster="true";
id="cluster124";
label="WholeStageCodegen (54)";
tooltip="WholeStageCodegen (54)";
125 [id="node125" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#21519535.internalRefUUID AS plantUuid#21519601, product#21519534.internalRefUUID AS productUuid#21519603, calculationDateTime#21519597, stockQuantity#21519599.storagelocation.id AS storageLocId#21519604, stockQuantity#21519599.quantity.measure AS quantity#21519606]"];
126 [id="node126" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((isnotnull(stockQuantity#21519599.specialStockIndicator.code) AND isnotnull(stockQuantity#21519599.stockType.code)) AND (stockQuantity#21519599.specialStockIndicator.code = )) AND (stockQuantity#21519599.stockType.code = 01))"];
127 [id="node127" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(stockQuantities#21519598), [product#21519534, plant#21519535, calculationDateTime#21519597], false, [stockQuantity#21519599]"];
128 [id="node128" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((size(stockQuantities#21519598, true) > 0) AND isnotnull(calculationDateTime#21519597))"];
}
129 [id="node129" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532], functions=[first(calculationDateTime#21519536, false), collect_list(stockQuantity#21519596, 0, 0)])"];
130 [id="node130" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532], functions=[partial_first(calculationDateTime#21519536, false), partial_collect_list(stockQuantity#21519596, 0, 0)])"];
131 [id="node131" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filter(stockQuantities#21519537, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21519565) AND (lambda x#21518157.storageLocation.Id = storageLocId#21519564)), lambda x#21518157, false))), [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, plantUuid#21519563], false, [stockQuantity#21519596]"];
subgraph cluster132 {
isCluster="true";
id="cluster132";
label="WholeStageCodegen (53)";
tooltip="WholeStageCodegen (53)";
133 [id="node133" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#21519535.internalRefUUID, ), isnull(plant#21519535.internalRefUUID)], [coalesce(plantUuid#21519563, ), isnull(plantUuid#21519563)], Inner, BuildLeft, false"];
141 [id="node141" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#21519563, storageLocId#21519564, storageLocUuid#21519565]"];
142 [id="node142" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#21519563], [plant#21519567], Inner, BuildLeft, false"];
156 [id="node156" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#21519567], functions=[])"];
}
134 [id="node134" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=21279598]"];
135 [id="node135" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21273437]"];
subgraph cluster136 {
isCluster="true";
id="cluster136";
label="WholeStageCodegen (7)";
tooltip="WholeStageCodegen (7)";
137 [id="node137" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537]"];
138 [id="node138" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (isnotnull(plant#21519535.internalRefUUID) AND isnotnull(product#21519534.internalRefUUID))"];
139 [id="node139" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
140 [id="node140" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#21519533,product#21519534,plant#21519535,calculationDateTime#21519536,stockQuantities#21519537,systemId#21519532] Batched: true, DataFilters: [isnotnull(plant#21519535.internalRefUUID), isnotnull(product#21519534.internalRefUUID)], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)], ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internal..."];
143 [id="node143" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21278182]"];
subgraph cluster144 {
isCluster="true";
id="cluster144";
label="WholeStageCodegen (36)";
tooltip="WholeStageCodegen (36)";
145 [id="node145" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_internalRefUUID#21519950 AS plantUuid#21519563, storageLocations#21519561.id AS storageLocId#21519564, storageLocations#21519561.internalRefUUID AS storageLocUuid#21519565]"];
146 [id="node146" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_storageLocations#21519951), [_extract_internalRefUUID#21519950], false, [storageLocations#21519561]"];
147 [id="node147" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#21519560.internalRefUUID AS _extract_internalRefUUID#21519950, distributionCenters#21519560.storageLocations AS _extract_storageLocations#21519951]"];
148 [id="node148" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((size(distributionCenters#21519560.storageLocations, true) > 0) AND isnotnull(distributionCenters#21519560.storageLocations)) AND isnotnull(distributionCenters#21519560.internalRefUUID))"];
149 [id="node149" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(distributionCenters#21519544), false, [distributionCenters#21519560]"];
}
150 [id="node150" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21273457]"];
subgraph cluster151 {
isCluster="true";
id="cluster151";
label="WholeStageCodegen (8)";
tooltip="WholeStageCodegen (8)";
152 [id="node152" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#21519544]"];
153 [id="node153" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((marketUnit#21519538 <=> SS_Test_1) AND (size(distributionCenters#21519544, true) > 0)) AND isnotnull(distributionCenters#21519544))"];
154 [id="node154" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
155 [id="node155" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [marketUnit#21519538,distributionCenters#21519544] Batched: true, DataFilters: [(marketUnit#21519538 <=> SS_Test_1), (size(distributionCenters#21519544, true) > 0), isnotnull(d..., Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)], ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storag..."];
157 [id="node157" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
158 [id="node158" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(plant#21519567, 25), ENSURE_REQUIREMENTS, [plan_id=21292110]"];
subgraph cluster159 {
isCluster="true";
id="cluster159";
label="WholeStageCodegen (46)";
tooltip="WholeStageCodegen (46)";
160 [id="node160" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#21519567], functions=[])"];
161 [id="node161" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#21519567]"];
162 [id="node162" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#21519952), [plant#21519567], true, [quantityDenominator#21519593]"];
163 [id="node163" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#21519567, filteredUnitOfMeasureConversions#21519591.quantityDenominator AS _extract_quantityDenominator#21519952]"];
164 [id="node164" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#21519591.quantityNumerator), [plant#21519567, filteredUnitOfMeasureConversions#21519591], true, [quantityNumerator#21519592]"];
}
165 [id="node165" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#21519567, filter(unitOfMeasureConversions#21519586, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520079) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520080)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519584.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519584.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519591]"];
subgraph cluster166 {
isCluster="true";
id="cluster166";
label="WholeStageCodegen (45)";
tooltip="WholeStageCodegen (45)";
167 [id="node167" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#21519566], [internalUUID#21519580], LeftOuter, BuildRight, false"];
168 [id="node168" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519566, plant#21519567, _extract_code#21520079, _extract_internalRefUUID#21520080]"];
169 [id="node169" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#21519566, ), isnull(product#21519566), coalesce(plant#21519567, ), isnull(plant#21519567)], [coalesce(_extract_internalRefUUID#21520078, ), isnull(_extract_internalRefUUID#21520078), coalesce(_extract_internalRefUUID#21520081, ), isnull(_extract_internalRefUUID#21520081)], LeftOuter, BuildRight, false"];
}
170 [id="node170" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#21519566, plant#21519567, 25), REPARTITION_BY_NUM, [plan_id=21273480]"];
subgraph cluster171 {
isCluster="true";
id="cluster171";
label="WholeStageCodegen (9)";
tooltip="WholeStageCodegen (9)";
172 [id="node172" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter isnotnull(plant#21519567)"];
173 [id="node173" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
174 [id="node174" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [product#21519566,plant#21519567] Batched: true, DataFilters: [isnotnull(plant#21519567)], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [IsNotNull(plant)], ReadSchema: struct<product:string,plant:string>"];
179 [id="node179" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519609, plant#21519610, orderDateTime#21519611, filter(unitOfMeasureConversions#21519629, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520082) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520083)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519627.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519627.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519634]"];
subgraph cluster180 {
isCluster="true";
id="cluster180";
label="WholeStageCodegen (59)";
tooltip="WholeStageCodegen (59)";
181 [id="node181" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#21519609], [internalUUID#21519623], LeftOuter, BuildRight, false"];
182 [id="node182" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519609, plant#21519610, orderDateTime#21519611, _extract_code#21520082, _extract_internalRefUUID#21520083]"];
183 [id="node183" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#21519609, ), isnull(product#21519609), coalesce(plant#21519610, ), isnull(plant#21519610)], [coalesce(_extract_internalRefUUID#21520084, ), isnull(_extract_internalRefUUID#21520084), coalesce(_extract_internalRefUUID#21520085, ), isnull(_extract_internalRefUUID#21520085)], LeftOuter, BuildRight, false"];
}
184 [id="node184" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#21519609, plant#21519610, 25), REPARTITION_BY_NUM, [plan_id=21273560]"];
subgraph cluster185 {
isCluster="true";
id="cluster185";
label="WholeStageCodegen (12)";
tooltip="WholeStageCodegen (12)";
186 [id="node186" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((isnotnull(orderDateTime#21519611) AND isnotnull(plant#21519610)) AND isnotnull(product#21519609))"];
187 [id="node187" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
188 [id="node188" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [product#21519609,plant#21519610,orderDateTime#21519611] Batched: true, DataFilters: [isnotnull(orderDateTime#21519611), isnotnull(plant#21519610), isnotnull(product#21519609)], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)], ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>"];
189 [id="node189" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
190 [id="node190" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(coalesce(plant#21519748, ), isnull(plant#21519748), coalesce(product#21519749, ), isnull(product#21519749), coalesce(storageLocId#21519713, ), isnull(storageLocId#21519713), coalesce(max_calc_datetime#21519750, 1970-01-01 00:00:00), isnull(max_calc_datetime#21519750), 25), ENSURE_REQUIREMENTS, [plan_id=21296646]"];
subgraph cluster191 {
isCluster="true";
id="cluster191";
label="WholeStageCodegen (58)";
tooltip="WholeStageCodegen (58)";
192 [id="node192" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#21519748, product#21519749, storageLocId#21519713], functions=[max(calculationDateTime#21519706)])"];
193 [id="node193" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#21519748, product#21519749, storageLocId#21519713], functions=[partial_max(calculationDateTime#21519706)])"];
194 [id="node194" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#21519710 AS plant#21519748, productUuid#21519712 AS product#21519749, storageLocId#21519713, calculationDateTime#21519706]"];
195 [id="node195" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#21519710, productUuid#21519712], [plant#21519719, product#21519718], Inner, BuildLeft, (calculationDateTime#21519706 <= orderDateTime#21519720), false"];
213 [id="node213" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519718, plant#21519719, orderDateTime#21519720]"];
214 [id="node214" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#21519975), [product#21519718, plant#21519719, orderDateTime#21519720], true, [quantityDenominator#21519745]"];
215 [id="node215" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743.quantityDenominator AS _extract_quantityDenominator#21519975]"];
216 [id="node216" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#21519743.quantityNumerator), [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743], true, [quantityNumerator#21519744]"];
}
196 [id="node196" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=21295822]"];
197 [id="node197" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
198 [id="node198" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(productUuid#21519712, plantUuid#21519710, 25), ENSURE_REQUIREMENTS, [plan_id=21294998]"];
subgraph cluster199 {
isCluster="true";
id="cluster199";
label="WholeStageCodegen (56)";
tooltip="WholeStageCodegen (56)";
200 [id="node200" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#21519644.internalRefUUID AS plantUuid#21519710, product#21519643.internalRefUUID AS productUuid#21519712, calculationDateTime#21519706, stockQuantity#21519708.storagelocation.id AS storageLocId#21519713]"];
201 [id="node201" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((isnotnull(stockQuantity#21519708.specialStockIndicator.code) AND isnotnull(stockQuantity#21519708.stockType.code)) AND (stockQuantity#21519708.specialStockIndicator.code = )) AND (stockQuantity#21519708.stockType.code = 01))"];
202 [id="node202" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(stockQuantities#21519707), [product#21519643, plant#21519644, calculationDateTime#21519706], false, [stockQuantity#21519708]"];
203 [id="node203" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((size(stockQuantities#21519707, true) > 0) AND isnotnull(calculationDateTime#21519706))"];
}
204 [id="node204" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641], functions=[first(calculationDateTime#21519645, false), collect_list(stockQuantity#21519705, 0, 0)])"];
205 [id="node205" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641], functions=[partial_first(calculationDateTime#21519645, false), partial_collect_list(stockQuantity#21519705, 0, 0)])"];
206 [id="node206" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filter(stockQuantities#21519646, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21519674) AND (lambda x#21518157.storageLocation.Id = storageLocId#21519673)), lambda x#21518157, false))), [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, plantUuid#21519672], false, [stockQuantity#21519705]"];
subgraph cluster207 {
isCluster="true";
id="cluster207";
label="WholeStageCodegen (55)";
tooltip="WholeStageCodegen (55)";
208 [id="node208" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#21519644.internalRefUUID, ), isnull(plant#21519644.internalRefUUID)], [coalesce(plantUuid#21519672, ), isnull(plantUuid#21519672)], Inner, BuildLeft, false"];
209 [id="node209" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#21519672, storageLocId#21519673, storageLocUuid#21519674]"];
210 [id="node210" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#21519672], [plant#21519676], Inner, BuildLeft, false"];
211 [id="node211" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#21519676], functions=[])"];
}
212 [id="node212" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
217 [id="node217" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519718, plant#21519719, orderDateTime#21519720, filter(unitOfMeasureConversions#21519738, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520091) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520092)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519736.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519736.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519743]"];
subgraph cluster218 {
isCluster="true";
id="cluster218";
label="WholeStageCodegen (57)";
tooltip="WholeStageCodegen (57)";
219 [id="node219" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#21519718], [internalUUID#21519732], LeftOuter, BuildRight, false"];
220 [id="node220" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#21519718, plant#21519719, orderDateTime#21519720, _extract_code#21520091, _extract_internalRefUUID#21520092]"];
221 [id="node221" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#21519718, ), isnull(product#21519718), coalesce(plant#21519719, ), isnull(plant#21519719)], [coalesce(_extract_internalRefUUID#21520090, ), isnull(_extract_internalRefUUID#21520090), coalesce(_extract_internalRefUUID#21520093, ), isnull(_extract_internalRefUUID#21520093)], LeftOuter, BuildRight, false"];
}
222 [id="node222" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange 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=21273841]"];
subgraph cluster223 {
isCluster="true";
id="cluster223";
label="WholeStageCodegen (23)";
tooltip="WholeStageCodegen (23)";
224 [id="node224" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
225 [id="node225" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [product#21518399,plant#21518400,demandChannel#21518401,demandStream#21518402,considerVariance#21518403,demandTimeBuckets#21518404,demandPointInTimeStart#21518405,demandPointInTimeEnd#21518406,demandPointInTime#21518407] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<product:string,plant:string,demandChannel:string,demandStream:string,considerVariance:bool..."];
226 [id="node226" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=21278807]"];
227 [id="node227" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21273858]"];
subgraph cluster228 {
isCluster="true";
id="cluster228";
label="WholeStageCodegen (24)";
tooltip="WholeStageCodegen (24)";
229 [id="node229" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [internalUUID#21519453, address#21519459.timeZone.code AS timezonecode#21519465]"];
230 [id="node230" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
231 [id="node231" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#21519453,address#21519459,systemId#21519452] Batched: true, DataFilters: [], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>"];
subgraph cluster232 {
isCluster="true";
id="cluster232";
label="WholeStageCodegen (67)";
tooltip="WholeStageCodegen (67)";
233 [id="node233" labelType="html" label="<br><b>Sort</b><br><br>" tooltip="Sort [plant#21519811 ASC NULLS FIRST], false, 0"];
234 [id="node234" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#21519837 AS plant#21519811, storageLocUuid#21519839]"];
235 [id="node235" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#21519837], [plant#21519841], Inner, BuildLeft, false"];
244 [id="node244" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#21519841], functions=[])"];
}
236 [id="node236" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21278286]"];
subgraph cluster237 {
isCluster="true";
id="cluster237";
label="WholeStageCodegen (38)";
tooltip="WholeStageCodegen (38)";
238 [id="node238" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_internalRefUUID#21519983 AS plantUuid#21519837, storageLocations#21519835 AS storageLocUuid#21519839]"];
239 [id="node239" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter isnotnull(storageLocations#21519835)"];
240 [id="node240" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_internalRefUUID#21520099), [_extract_internalRefUUID#21519983], false, [storageLocations#21519835]"];
241 [id="node241" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#21519834.internalRefUUID AS _extract_internalRefUUID#21519983, distributionCenters#21519834.storageLocations.internalRefUUID AS _extract_internalRefUUID#21520099]"];
242 [id="node242" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((size(distributionCenters#21519834.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#21519834.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#21519834.internalRefUUID))"];
243 [id="node243" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(distributionCenters#21519818), false, [distributionCenters#21519834]"];
}
245 [id="node245" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
246 [id="node246" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=21280893]"];
subgraph cluster247 {
isCluster="true";
id="cluster247";
label="WholeStageCodegen (39)";
tooltip="WholeStageCodegen (39)";
248 [id="node248" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [id#21519778, internalUUID#21519777, item#21519788.plant.internalRefUUID AS plant#21519793, item#21519788.product.internalRefUUID AS product#21519794, item#21519788.storageLocation.internalRefUUID AS storageLocUuid#21519795, item#21519788.quantityUnit.code AS quantityUom#21519796, item#21519788.quantityUnit.internalRefUUID AS quantityUomUuid#21519797, item#21519788.quantityNumerator AS quantityNumerator#21519798, item#21519788.quantityDenominator AS quantityDenominator#21519799, item#21519788.scheduleLines AS scheduleLines#21519800, item#21519788.confirmations AS confirmations#21519801]"];
249 [id="node249" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((((isnotnull(item#21519788.deletionIndicator) AND isnotnull(item#21519788.completeIndicator)) AND isnotnull(item#21519788.returnIndicator)) AND ((NOT item#21519788.deletionIndicator AND NOT item#21519788.completeIndicator) AND NOT item#21519788.returnIndicator)) AND ((isnotnull(item#21519788.product.internalRefUUID) AND isnotnull(item#21519788.plant.internalRefUUID)) AND isnotnull(item#21519788.storageLocation.internalRefUUID)))"];
250 [id="node250" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(items#21519784), [internalUUID#21519777, id#21519778], false, [item#21519788]"];
}
251 [id="node251" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21273990]"];
subgraph cluster252 {
isCluster="true";
id="cluster252";
label="WholeStageCodegen (29)";
tooltip="WholeStageCodegen (29)";
253 [id="node253" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [internalUUID#21519777, id#21519778, items#21519784]"];
254 [id="node254" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((isnotnull(isMarkedForDeletion#21519783) AND NOT isMarkedForDeletion#21519783) AND (size(items#21519784, true) > 0)) AND isnotnull(items#21519784))"];
255 [id="node255" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
256 [id="node256" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#21519777,id#21519778,isMarkedForDeletion#21519783,items#21519784,systemId#21519776] Batched: true, DataFilters: [isnotnull(isMarkedForDeletion#21519783), NOT isMarkedForDeletion#21519783, (size(items#21519784,..., Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [IsNotNull(isMarkedForDeletion), Not(EqualTo(isMarkedForDeletion,true)), IsNotNull(items)], ReadSchema: struct<internalUUID:string,id:string,isMarkedForDeletion:boolean,items:array<struct<number:string..."];
1->0;
2->1;
3->2;
4->3;
5->4;
6->5;
7->6;
8->7;
9->8;
10->9;
11->10;
12->11;
13->12;
14->13;
15->14;
16->15;
17->16;
19->17;
20->19;
21->20;
23->21;
24->23;
25->24;
27->25;
28->27;
29->28;
30->29;
32->30;
33->32;
34->33;
35->34;
36->35;
38->36;
39->38;
40->39;
41->40;
43->41;
44->43;
45->44;
46->40;
48->46;
49->48;
51->49;
52->51;
53->52;
54->38;
55->54;
57->55;
58->57;
59->58;
60->59;
61->28;
62->61;
63->62;
65->63;
66->65;
67->66;
68->67;
69->68;
70->69;
71->70;
73->71;
74->73;
75->74;
76->75;
77->76;
78->77;
80->78;
81->80;
82->81;
83->82;
84->83;
85->84;
87->85;
88->87;
90->88;
91->90;
92->91;
94->92;
95->94;
97->88;
98->97;
100->98;
101->100;
103->101;
104->103;
105->104;
54->87;
106->76;
108->106;
109->108;
110->109;
112->110;
113->112;
114->113;
115->114;
116->115;
117->116;
119->117;
120->119;
121->120;
122->121;
123->122;
125->123;
126->125;
127->126;
128->127;
129->128;
130->129;
131->130;
133->131;
134->133;
135->134;
137->135;
138->137;
139->138;
140->139;
141->133;
142->141;
143->142;
145->143;
146->145;
147->146;
148->147;
149->148;
150->149;
152->150;
153->152;
154->153;
155->154;
156->142;
157->156;
158->157;
160->158;
161->160;
162->161;
163->162;
164->163;
165->164;
167->165;
168->167;
169->168;
170->169;
172->170;
173->172;
174->173;
46->169;
54->167;
175->120;
176->175;
177->176;
178->177;
179->178;
181->179;
182->181;
183->182;
184->183;
186->184;
187->186;
188->187;
46->183;
54->181;
189->114;
190->189;
192->190;
193->192;
194->193;
195->194;
196->195;
197->196;
198->197;
200->198;
201->200;
202->201;
203->202;
204->203;
205->204;
206->205;
208->206;
134->208;
209->208;
210->209;
143->210;
211->210;
212->211;
158->212;
213->195;
214->213;
215->214;
216->215;
217->216;
219->217;
220->219;
221->220;
184->221;
46->221;
54->219;
222->74;
224->222;
225->224;
226->69;
227->226;
229->227;
230->229;
231->230;
233->21;
234->233;
235->234;
236->235;
238->236;
239->238;
240->239;
241->240;
242->241;
243->242;
150->243;
244->235;
245->244;
158->245;
246->19;
248->246;
249->248;
250->249;
251->250;
253->251;
254->253;
255->254;
256->255;
}
== Physical Plan ==
AdaptiveSparkPlan (307)
+- == Final Plan ==
ResultQueryStage (302), Statistics(sizeInBytes=8.0 EiB)
+- Execute InsertIntoHadoopFsRelationCommand (301)
+- WriteFiles (300)
+- Project (299)
+- Filter (298)
+- TableCacheQueryStage (297), Statistics(sizeInBytes=0.0 B, rowCount=0)
+- InMemoryTableScan (1)
+- InMemoryRelation (2)
+- AdaptiveSparkPlan (296)
+- == Final Plan ==
ResultQueryStage (4)
+- EmptyRelation (3)
+- Filter (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
Filter (295)
+- ObjectHashAggregate (294)
+- Exchange (293)
+- ObjectHashAggregate (292)
+- Project (291)
+- Window (290)
+- Sort (289)
+- Exchange (288)
+- Project (287)
+- BroadcastHashJoin Inner BuildRight (286)
:- Project (277)
: +- SortMergeJoin Inner (276)
: :- Sort (237)
: : +- Exchange (236)
: : +- Project (235)
: : +- SortMergeJoin LeftOuter (234)
: : :- Sort (27)
: : : +- Exchange (26)
: : : +- Project (25)
: : : +- Generate (24)
: : : +- Project (23)
: : : +- Generate (22)
: : : +- Project (21)
: : : +- BroadcastHashJoin LeftOuter BuildRight (20)
: : : :- Project (14)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (13)
: : : : :- Exchange (7)
: : : : : +- Filter (6)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastExchange (12)
: : : : +- Project (11)
: : : : +- Exchange (10)
: : : : +- Project (9)
: : : : +- Scan parquet (8)
: : : +- BroadcastExchange (19)
: : : +- Exchange (18)
: : : +- Project (17)
: : : +- Filter (16)
: : : +- Scan parquet (15)
: : +- Sort (233)
: : +- Exchange (232)
: : +- SerializeFromObject (231)
: : +- MapElements (230)
: : +- DeserializeToObject (229)
: : +- Project (228)
: : +- BroadcastHashJoin LeftOuter BuildRight (227)
: : :- ObjectHashAggregate (222)
: : : +- ObjectHashAggregate (221)
: : : +- Project (220)
: : : +- BroadcastHashJoin LeftOuter BuildRight (219)
: : : :- Project (216)
: : : : +- SortMergeJoin LeftOuter (215)
: : : : :- Sort (52)
: : : : : +- Exchange (51)
: : : : : +- Project (50)
: : : : : +- Project (49)
: : : : : +- Generate (48)
: : : : : +- Generate (47)
: : : : : +- Project (46)
: : : : : +- Project (45)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (44)
: : : : : :- SortMergeJoin LeftOuter (38)
: : : : : : :- Sort (31)
: : : : : : : +- Exchange (30)
: : : : : : : +- Exchange (29)
: : : : : : : +- Scan parquet (28)
: : : : : : +- Sort (37)
: : : : : : +- Exchange (36)
: : : : : : +- Project (35)
: : : : : : +- Exchange (34)
: : : : : : +- Project (33)
: : : : : : +- Scan parquet (32)
: : : : : +- BroadcastExchange (43)
: : : : : +- Exchange (42)
: : : : : +- Project (41)
: : : : : +- Filter (40)
: : : : : +- Scan parquet (39)
: : : : +- Sort (214)
: : : : +- HashAggregate (213)
: : : : +- Exchange (212)
: : : : +- HashAggregate (211)
: : : : +- Project (210)
: : : : +- SortMergeJoin Inner (209)
: : : : :- Sort (129)
: : : : : +- Exchange (128)
: : : : : +- Project (127)
: : : : : +- SortMergeJoin Inner (126)
: : : : : :- Sort (103)
: : : : : : +- Exchange (102)
: : : : : : +- Project (101)
: : : : : : +- Filter (100)
: : : : : : +- Generate (99)
: : : : : : +- Filter (98)
: : : : : : +- ObjectHashAggregate (97)
: : : : : : +- ObjectHashAggregate (96)
: : : : : : +- Generate (95)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (94)
: : : : : : :- BroadcastExchange (57)
: : : : : : : +- Exchange (56)
: : : : : : : +- Project (55)
: : : : : : : +- Filter (54)
: : : : : : : +- Scan parquet (53)
: : : : : : +- Project (93)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (92)
: : : : : : :- BroadcastExchange (67)
: : : : : : : +- Project (66)
: : : : : : : +- Generate (65)
: : : : : : : +- Project (64)
: : : : : : : +- Filter (63)
: : : : : : : +- Generate (62)
: : : : : : : +- Exchange (61)
: : : : : : : +- Project (60)
: : : : : : : +- Filter (59)
: : : : : : : +- Scan parquet (58)
: : : : : : +- HashAggregate (91)
: : : : : : +- Exchange (90)
: : : : : : +- HashAggregate (89)
: : : : : : +- Project (88)
: : : : : : +- Generate (87)
: : : : : : +- Project (86)
: : : : : : +- Generate (85)
: : : : : : +- Project (84)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (83)
: : : : : : :- Project (77)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (76)
: : : : : : : :- Exchange (70)
: : : : : : : : +- Filter (69)
: : : : : : : : +- Scan parquet (68)
: : : : : : : +- BroadcastExchange (75)
: : : : : : : +- Project (74)
: : : : : : : +- Exchange (73)
: : : : : : : +- Project (72)
: : : : : : : +- Scan parquet (71)
: : : : : : +- BroadcastExchange (82)
: : : : : : +- Exchange (81)
: : : : : : +- Project (80)
: : : : : : +- Filter (79)
: : : : : : +- Scan parquet (78)
: : : : : +- Sort (125)
: : : : : +- Project (124)
: : : : : +- Generate (123)
: : : : : +- Project (122)
: : : : : +- Generate (121)
: : : : : +- Project (120)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (119)
: : : : : :- Project (113)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (112)
: : : : : : :- Exchange (106)
: : : : : : : +- Filter (105)
: : : : : : : +- Scan parquet (104)
: : : : : : +- BroadcastExchange (111)
: : : : : : +- Project (110)
: : : : : : +- Exchange (109)
: : : : : : +- Project (108)
: : : : : : +- Scan parquet (107)
: : : : : +- BroadcastExchange (118)
: : : : : +- Exchange (117)
: : : : : +- Project (116)
: : : : : +- Filter (115)
: : : : : +- Scan parquet (114)
: : : : +- Sort (208)
: : : : +- Exchange (207)
: : : : +- HashAggregate (206)
: : : : +- HashAggregate (205)
: : : : +- Project (204)
: : : : +- SortMergeJoin Inner (203)
: : : : :- Sort (180)
: : : : : +- Exchange (179)
: : : : : +- Project (178)
: : : : : +- Filter (177)
: : : : : +- Generate (176)
: : : : : +- Filter (175)
: : : : : +- ObjectHashAggregate (174)
: : : : : +- ObjectHashAggregate (173)
: : : : : +- Generate (172)
: : : : : +- BroadcastHashJoin Inner BuildLeft (171)
: : : : : :- BroadcastExchange (134)
: : : : : : +- Exchange (133)
: : : : : : +- Project (132)
: : : : : : +- Filter (131)
: : : : : : +- Scan parquet (130)
: : : : : +- Project (170)
: : : : : +- BroadcastHashJoin Inner BuildLeft (169)
: : : : : :- BroadcastExchange (144)
: : : : : : +- Project (143)
: : : : : : +- Generate (142)
: : : : : : +- Project (141)
: : : : : : +- Filter (140)
: : : : : : +- Generate (139)
: : : : : : +- Exchange (138)
: : : : : : +- Project (137)
: : : : : : +- Filter (136)
: : : : : : +- Scan parquet (135)
: : : : : +- HashAggregate (168)
: : : : : +- Exchange (167)
: : : : : +- HashAggregate (166)
: : : : : +- Project (165)
: : : : : +- Generate (164)
: : : : : +- Project (163)
: : : : : +- Generate (162)
: : : : : +- Project (161)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (160)
: : : : : :- Project (154)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (153)
: : : : : : :- Exchange (147)
: : : : : : : +- Filter (146)
: : : : : : : +- Scan parquet (145)
: : : : : : +- BroadcastExchange (152)
: : : : : : +- Project (151)
: : : : : : +- Exchange (150)
: : : : : : +- Project (149)
: : : : : : +- Scan parquet (148)
: : : : : +- BroadcastExchange (159)
: : : : : +- Exchange (158)
: : : : : +- Project (157)
: : : : : +- Filter (156)
: : : : : +- Scan parquet (155)
: : : : +- Sort (202)
: : : : +- Project (201)
: : : : +- Generate (200)
: : : : +- Project (199)
: : : : +- Generate (198)
: : : : +- Project (197)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (196)
: : : : :- Project (190)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (189)
: : : : : :- Exchange (183)
: : : : : : +- Filter (182)
: : : : : : +- Scan parquet (181)
: : : : : +- BroadcastExchange (188)
: : : : : +- Project (187)
: : : : : +- Exchange (186)
: : : : : +- Project (185)
: : : : : +- Scan parquet (184)
: : : : +- BroadcastExchange (195)
: : : : +- Exchange (194)
: : : : +- Project (193)
: : : : +- Filter (192)
: : : : +- Scan parquet (191)
: : : +- BroadcastExchange (218)
: : : +- Scan parquet (217)
: : +- BroadcastExchange (226)
: : +- Exchange (225)
: : +- Project (224)
: : +- Scan parquet (223)
: +- Sort (275)
: +- Project (274)
: +- BroadcastHashJoin Inner BuildLeft (273)
: :- BroadcastExchange (248)
: : +- Project (247)
: : +- Filter (246)
: : +- Generate (245)
: : +- Project (244)
: : +- Filter (243)
: : +- Generate (242)
: : +- Exchange (241)
: : +- Project (240)
: : +- Filter (239)
: : +- Scan parquet (238)
: +- HashAggregate (272)
: +- Exchange (271)
: +- HashAggregate (270)
: +- Project (269)
: +- Generate (268)
: +- Project (267)
: +- Generate (266)
: +- Project (265)
: +- BroadcastHashJoin LeftOuter BuildRight (264)
: :- Project (258)
: : +- BroadcastHashJoin LeftOuter BuildRight (257)
: : :- Exchange (251)
: : : +- Filter (250)
: : : +- Scan parquet (249)
: : +- BroadcastExchange (256)
: : +- Project (255)
: : +- Exchange (254)
: : +- Project (253)
: : +- Scan parquet (252)
: +- BroadcastExchange (263)
: +- Exchange (262)
: +- Project (261)
: +- Filter (260)
: +- Scan parquet (259)
+- BroadcastExchange (285)
+- Project (284)
+- Filter (283)
+- Generate (282)
+- Exchange (281)
+- Project (280)
+- Filter (279)
+- Scan parquet (278)
+- == Initial Plan ==
Execute InsertIntoHadoopFsRelationCommand (306)
+- WriteFiles (305)
+- Project (304)
+- Filter (303)
+- InMemoryTableScan (1)
+- InMemoryRelation (2)
+- AdaptiveSparkPlan (296)
+- == Final Plan ==
ResultQueryStage (4)
+- EmptyRelation (3)
+- Filter (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
Filter (295)
+- ObjectHashAggregate (294)
+- Exchange (293)
+- ObjectHashAggregate (292)
+- Project (291)
+- Window (290)
+- Sort (289)
+- Exchange (288)
+- Project (287)
+- BroadcastHashJoin Inner BuildRight (286)
:- Project (277)
: +- SortMergeJoin Inner (276)
: :- Sort (237)
: : +- Exchange (236)
: : +- Project (235)
: : +- SortMergeJoin LeftOuter (234)
: : :- Sort (27)
: : : +- Exchange (26)
: : : +- Project (25)
: : : +- Generate (24)
: : : +- Project (23)
: : : +- Generate (22)
: : : +- Project (21)
: : : +- BroadcastHashJoin LeftOuter BuildRight (20)
: : : :- Project (14)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (13)
: : : : :- Exchange (7)
: : : : : +- Filter (6)
: : : : : +- Scan parquet (5)
: : : : +- BroadcastExchange (12)
: : : : +- Project (11)
: : : : +- Exchange (10)
: : : : +- Project (9)
: : : : +- Scan parquet (8)
: : : +- BroadcastExchange (19)
: : : +- Exchange (18)
: : : +- Project (17)
: : : +- Filter (16)
: : : +- Scan parquet (15)
: : +- Sort (233)
: : +- Exchange (232)
: : +- SerializeFromObject (231)
: : +- MapElements (230)
: : +- DeserializeToObject (229)
: : +- Project (228)
: : +- BroadcastHashJoin LeftOuter BuildRight (227)
: : :- ObjectHashAggregate (222)
: : : +- ObjectHashAggregate (221)
: : : +- Project (220)
: : : +- BroadcastHashJoin LeftOuter BuildRight (219)
: : : :- Project (216)
: : : : +- SortMergeJoin LeftOuter (215)
: : : : :- Sort (52)
: : : : : +- Exchange (51)
: : : : : +- Project (50)
: : : : : +- Project (49)
: : : : : +- Generate (48)
: : : : : +- Generate (47)
: : : : : +- Project (46)
: : : : : +- Project (45)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (44)
: : : : : :- SortMergeJoin LeftOuter (38)
: : : : : : :- Sort (31)
: : : : : : : +- Exchange (30)
: : : : : : : +- Exchange (29)
: : : : : : : +- Scan parquet (28)
: : : : : : +- Sort (37)
: : : : : : +- Exchange (36)
: : : : : : +- Project (35)
: : : : : : +- Exchange (34)
: : : : : : +- Project (33)
: : : : : : +- Scan parquet (32)
: : : : : +- BroadcastExchange (43)
: : : : : +- Exchange (42)
: : : : : +- Project (41)
: : : : : +- Filter (40)
: : : : : +- Scan parquet (39)
: : : : +- Sort (214)
: : : : +- HashAggregate (213)
: : : : +- Exchange (212)
: : : : +- HashAggregate (211)
: : : : +- Project (210)
: : : : +- SortMergeJoin Inner (209)
: : : : :- Sort (129)
: : : : : +- Exchange (128)
: : : : : +- Project (127)
: : : : : +- SortMergeJoin Inner (126)
: : : : : :- Sort (103)
: : : : : : +- Exchange (102)
: : : : : : +- Project (101)
: : : : : : +- Filter (100)
: : : : : : +- Generate (99)
: : : : : : +- Filter (98)
: : : : : : +- ObjectHashAggregate (97)
: : : : : : +- ObjectHashAggregate (96)
: : : : : : +- Generate (95)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (94)
: : : : : : :- BroadcastExchange (57)
: : : : : : : +- Exchange (56)
: : : : : : : +- Project (55)
: : : : : : : +- Filter (54)
: : : : : : : +- Scan parquet (53)
: : : : : : +- Project (93)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (92)
: : : : : : :- BroadcastExchange (67)
: : : : : : : +- Project (66)
: : : : : : : +- Generate (65)
: : : : : : : +- Project (64)
: : : : : : : +- Filter (63)
: : : : : : : +- Generate (62)
: : : : : : : +- Exchange (61)
: : : : : : : +- Project (60)
: : : : : : : +- Filter (59)
: : : : : : : +- Scan parquet (58)
: : : : : : +- HashAggregate (91)
: : : : : : +- Exchange (90)
: : : : : : +- HashAggregate (89)
: : : : : : +- Project (88)
: : : : : : +- Generate (87)
: : : : : : +- Project (86)
: : : : : : +- Generate (85)
: : : : : : +- Project (84)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (83)
: : : : : : :- Project (77)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (76)
: : : : : : : :- Exchange (70)
: : : : : : : : +- Filter (69)
: : : : : : : : +- Scan parquet (68)
: : : : : : : +- BroadcastExchange (75)
: : : : : : : +- Project (74)
: : : : : : : +- Exchange (73)
: : : : : : : +- Project (72)
: : : : : : : +- Scan parquet (71)
: : : : : : +- BroadcastExchange (82)
: : : : : : +- Exchange (81)
: : : : : : +- Project (80)
: : : : : : +- Filter (79)
: : : : : : +- Scan parquet (78)
: : : : : +- Sort (125)
: : : : : +- Project (124)
: : : : : +- Generate (123)
: : : : : +- Project (122)
: : : : : +- Generate (121)
: : : : : +- Project (120)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (119)
: : : : : :- Project (113)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (112)
: : : : : : :- Exchange (106)
: : : : : : : +- Filter (105)
: : : : : : : +- Scan parquet (104)
: : : : : : +- BroadcastExchange (111)
: : : : : : +- Project (110)
: : : : : : +- Exchange (109)
: : : : : : +- Project (108)
: : : : : : +- Scan parquet (107)
: : : : : +- BroadcastExchange (118)
: : : : : +- Exchange (117)
: : : : : +- Project (116)
: : : : : +- Filter (115)
: : : : : +- Scan parquet (114)
: : : : +- Sort (208)
: : : : +- Exchange (207)
: : : : +- HashAggregate (206)
: : : : +- HashAggregate (205)
: : : : +- Project (204)
: : : : +- SortMergeJoin Inner (203)
: : : : :- Sort (180)
: : : : : +- Exchange (179)
: : : : : +- Project (178)
: : : : : +- Filter (177)
: : : : : +- Generate (176)
: : : : : +- Filter (175)
: : : : : +- ObjectHashAggregate (174)
: : : : : +- ObjectHashAggregate (173)
: : : : : +- Generate (172)
: : : : : +- BroadcastHashJoin Inner BuildLeft (171)
: : : : : :- BroadcastExchange (134)
: : : : : : +- Exchange (133)
: : : : : : +- Project (132)
: : : : : : +- Filter (131)
: : : : : : +- Scan parquet (130)
: : : : : +- Project (170)
: : : : : +- BroadcastHashJoin Inner BuildLeft (169)
: : : : : :- BroadcastExchange (144)
: : : : : : +- Project (143)
: : : : : : +- Generate (142)
: : : : : : +- Project (141)
: : : : : : +- Filter (140)
: : : : : : +- Generate (139)
: : : : : : +- Exchange (138)
: : : : : : +- Project (137)
: : : : : : +- Filter (136)
: : : : : : +- Scan parquet (135)
: : : : : +- HashAggregate (168)
: : : : : +- Exchange (167)
: : : : : +- HashAggregate (166)
: : : : : +- Project (165)
: : : : : +- Generate (164)
: : : : : +- Project (163)
: : : : : +- Generate (162)
: : : : : +- Project (161)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (160)
: : : : : :- Project (154)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (153)
: : : : : : :- Exchange (147)
: : : : : : : +- Filter (146)
: : : : : : : +- Scan parquet (145)
: : : : : : +- BroadcastExchange (152)
: : : : : : +- Project (151)
: : : : : : +- Exchange (150)
: : : : : : +- Project (149)
: : : : : : +- Scan parquet (148)
: : : : : +- BroadcastExchange (159)
: : : : : +- Exchange (158)
: : : : : +- Project (157)
: : : : : +- Filter (156)
: : : : : +- Scan parquet (155)
: : : : +- Sort (202)
: : : : +- Project (201)
: : : : +- Generate (200)
: : : : +- Project (199)
: : : : +- Generate (198)
: : : : +- Project (197)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (196)
: : : : :- Project (190)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (189)
: : : : : :- Exchange (183)
: : : : : : +- Filter (182)
: : : : : : +- Scan parquet (181)
: : : : : +- BroadcastExchange (188)
: : : : : +- Project (187)
: : : : : +- Exchange (186)
: : : : : +- Project (185)
: : : : : +- Scan parquet (184)
: : : : +- BroadcastExchange (195)
: : : : +- Exchange (194)
: : : : +- Project (193)
: : : : +- Filter (192)
: : : : +- Scan parquet (191)
: : : +- BroadcastExchange (218)
: : : +- Scan parquet (217)
: : +- BroadcastExchange (226)
: : +- Exchange (225)
: : +- Project (224)
: : +- Scan parquet (223)
: +- Sort (275)
: +- Project (274)
: +- BroadcastHashJoin Inner BuildLeft (273)
: :- BroadcastExchange (248)
: : +- Project (247)
: : +- Filter (246)
: : +- Generate (245)
: : +- Project (244)
: : +- Filter (243)
: : +- Generate (242)
: : +- Exchange (241)
: : +- Project (240)
: : +- Filter (239)
: : +- Scan parquet (238)
: +- HashAggregate (272)
: +- Exchange (271)
: +- HashAggregate (270)
: +- Project (269)
: +- Generate (268)
: +- Project (267)
: +- Generate (266)
: +- Project (265)
: +- BroadcastHashJoin LeftOuter BuildRight (264)
: :- Project (258)
: : +- BroadcastHashJoin LeftOuter BuildRight (257)
: : :- Exchange (251)
: : : +- Filter (250)
: : : +- Scan parquet (249)
: : +- BroadcastExchange (256)
: : +- Project (255)
: : +- Exchange (254)
: : +- Project (253)
: : +- Scan parquet (252)
: +- BroadcastExchange (263)
: +- Exchange (262)
: +- Project (261)
: +- Filter (260)
: +- Scan parquet (259)
+- BroadcastExchange (285)
+- Project (284)
+- Filter (283)
+- Generate (282)
+- Exchange (281)
+- Project (280)
+- Filter (279)
+- Scan parquet (278)
(1) InMemoryTableScan
Output [3]: [openGoodsMovements#21519894, plant#21519793, product#21519794]
Arguments: [openGoodsMovements#21519894, plant#21519793, product#21519794], [(size(transform(openGoodsMovements#21519894, lambdafunction(struct(documentType, PO, documentId, lambda x_1560#21530392.documentId, documentUuid, lambda x_1560#21530392.documentUuid, openQty, lambda x_1560#21530392.openQty, qtyUomUuid, lambda x_1560#21530392.qtyUomUuid, qtyUom, lambda x_1560#21530392.qtyUom, plannedDeliveryDatetime, lambda x_1560#21530392.availabilityDatetime), lambda x_1560#21530392, false)), false) > 0)]
(2) InMemoryRelation
Arguments: [product#21519794, plant#21519793, openGoodsMovements#21519894], StorageLevel(disk, memory, 2 replicas)
(3) EmptyRelation
Output [3]: [product#21519794, plant#21519793, openGoodsMovements#21519894]
Arguments: [plan_id=21298748]
(4) ResultQueryStage
Output [3]: [product#21519794, plant#21519793, openGoodsMovements#21519894]
Arguments: 94
(5) Scan parquet
Output [2]: [product#21517975, plant#21517976]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string>
(6) Filter
Input [2]: [product#21517975, plant#21517976]
Condition : (isnotnull(plant#21517976) AND isnotnull(product#21517975))
(7) Exchange
Input [2]: [product#21517975, plant#21517976]
Arguments: hashpartitioning(product#21517975, plant#21517976, 25), REPARTITION_BY_NUM, [plan_id=21258404]
(8) Scan parquet
Output [4]: [plant#21517982, product#21517983, productionAspect#21517985, systemId#21517980]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(9) Project
Output [4]: [plant#21517982.internalRefUUID AS _extract_internalRefUUID#21520075, product#21517983.internalRefUUID AS _extract_internalRefUUID#21520074, productionAspect#21517985.productMovementPlants.unitOfIssue.code AS _extract_code#21520072, productionAspect#21517985.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21520073]
Input [4]: [plant#21517982, product#21517983, productionAspect#21517985, systemId#21517980]
(10) Exchange
Input [4]: [_extract_internalRefUUID#21520075, _extract_internalRefUUID#21520074, _extract_code#21520072, _extract_internalRefUUID#21520073]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258164]
(11) Project
Output [4]: [_extract_code#21520072, _extract_internalRefUUID#21520073, _extract_internalRefUUID#21520074, _extract_internalRefUUID#21520075]
Input [4]: [_extract_internalRefUUID#21520075, _extract_internalRefUUID#21520074, _extract_code#21520072, _extract_internalRefUUID#21520073]
(12) BroadcastExchange
Input [4]: [_extract_code#21520072, _extract_internalRefUUID#21520073, _extract_internalRefUUID#21520074, _extract_internalRefUUID#21520075]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=21258518]
(13) BroadcastHashJoin
Left keys [4]: [coalesce(product#21517975, ), isnull(product#21517975), coalesce(plant#21517976, ), isnull(plant#21517976)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21520074, ), isnull(_extract_internalRefUUID#21520074), coalesce(_extract_internalRefUUID#21520075, ), isnull(_extract_internalRefUUID#21520075)]
Join type: LeftOuter
Join condition: None
(14) Project
Output [4]: [product#21517975, plant#21517976, _extract_code#21520072, _extract_internalRefUUID#21520073]
Input [6]: [product#21517975, plant#21517976, _extract_code#21520072, _extract_internalRefUUID#21520073, _extract_internalRefUUID#21520074, _extract_internalRefUUID#21520075]
(15) Scan parquet
Output [4]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041, systemId#21518034]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(16) Filter
Input [4]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041, systemId#21518034]
Condition : isnotnull(internalUUID#21518035)
(17) Project
Output [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Input [4]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041, systemId#21518034]
(18) Exchange
Input [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258171]
(19) BroadcastExchange
Input [3]: [internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258522]
(20) BroadcastHashJoin
Left keys [1]: [product#21517975]
Right keys [1]: [internalUUID#21518035]
Join type: LeftOuter
Join condition: None
(21) Project
Output [3]: [product#21517975, plant#21517976, filter(unitOfMeasureConversions#21518041, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520072) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520073)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21518039.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21518039.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21518047]
Input [7]: [product#21517975, plant#21517976, _extract_code#21520072, _extract_internalRefUUID#21520073, internalUUID#21518035, baseUnitOfMeasure#21518039, unitOfMeasureConversions#21518041]
(22) Generate
Input [3]: [product#21517975, plant#21517976, filteredUnitOfMeasureConversions#21518047]
Arguments: explode(filteredUnitOfMeasureConversions#21518047.quantityNumerator), [product#21517975, plant#21517976, filteredUnitOfMeasureConversions#21518047], true, [quantityNumerator#21518055]
(23) Project
Output [3]: [product#21517975, plant#21517976, filteredUnitOfMeasureConversions#21518047.quantityDenominator AS _extract_quantityDenominator#21519910]
Input [4]: [product#21517975, plant#21517976, filteredUnitOfMeasureConversions#21518047, quantityNumerator#21518055]
(24) Generate
Input [3]: [product#21517975, plant#21517976, _extract_quantityDenominator#21519910]
Arguments: explode(_extract_quantityDenominator#21519910), [product#21517975, plant#21517976], true, [quantityDenominator#21518058]
(25) Project
Output [2]: [product#21517975, plant#21517976]
Input [3]: [product#21517975, plant#21517976, quantityDenominator#21518058]
(26) Exchange
Input [2]: [product#21517975, plant#21517976]
Arguments: hashpartitioning(coalesce(plant#21517976, ), isnull(plant#21517976), coalesce(product#21517975, ), isnull(product#21517975), 25), ENSURE_REQUIREMENTS, [plan_id=21258674]
(27) Sort
Input [2]: [product#21517975, plant#21517976]
Arguments: [coalesce(plant#21517976, ) ASC NULLS FIRST, isnull(plant#21517976) ASC NULLS FIRST, coalesce(product#21517975, ) ASC NULLS FIRST, isnull(product#21517975) ASC NULLS FIRST], false, 0
(28) Scan parquet
Output [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(29) Exchange
Input [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Arguments: hashpartitioning(product#21519502, plant#21519503, 25), REPARTITION_BY_NUM, [plan_id=21258179]
(30) Exchange
Input [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Arguments: hashpartitioning(coalesce(product#21519502, ), isnull(product#21519502), coalesce(plant#21519503, ), isnull(plant#21519503), 25), ENSURE_REQUIREMENTS, [plan_id=21258530]
(31) Sort
Input [3]: [product#21519502, plant#21519503, orderDateTime#21519504]
Arguments: [coalesce(product#21519502, ) ASC NULLS FIRST, isnull(product#21519502) ASC NULLS FIRST, coalesce(plant#21519503, ) ASC NULLS FIRST, isnull(plant#21519503) ASC NULLS FIRST], false, 0
(32) Scan parquet
Output [8]: [internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513, systemId#21519506]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internalRefUUID:string,id:string>,blockedForReplenishmentStartingFrom:date,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>,productPlanningPlants:struct<mrpType:struct<internalRefUUID:string,code:string>,abcIndicator:struct<internalRefUUID:string,code:string>,mrpController:struct<internalRefUUID:string,id:string>,minimumLotSize:double,logisticalRoundingProfile:struct<internalRefUUID:string,logisticalRoundingProfile:string>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>>
(33) Project
Output [8]: [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]
Input [8]: [internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513, systemId#21519506]
(34) Exchange
Input [8]: [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258182]
(35) Project
Output [1]: [struct(systemId, systemId#21519506, internalUUID, internalUUID#21519507, plant, plant#21519508, product, product#21519509, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#21519510, productionAspect, productionAspect#21519511, salesPlant, salesPlant#21519512, listing, listing#21519513) AS productPlant#21519514]
Input [8]: [systemId#21519506, internalUUID#21519507, plant#21519508, product#21519509, blockedForReplenishmentStartingFrom#21519510, productionAspect#21519511, salesPlant#21519512, listing#21519513]
(36) Exchange
Input [1]: [productPlant#21519514]
Arguments: hashpartitioning(coalesce(productPlant#21519514.product.internalRefUUID, ), isnull(productPlant#21519514.product.internalRefUUID), coalesce(productPlant#21519514.plant.internalRefUUID, ), isnull(productPlant#21519514.plant.internalRefUUID), 25), ENSURE_REQUIREMENTS, [plan_id=21258531]
(37) Sort
Input [1]: [productPlant#21519514]
Arguments: [coalesce(productPlant#21519514.product.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21519514.product.internalRefUUID) ASC NULLS FIRST, coalesce(productPlant#21519514.plant.internalRefUUID, ) ASC NULLS FIRST, isnull(productPlant#21519514.plant.internalRefUUID) ASC NULLS FIRST], false, 0
(38) SortMergeJoin
Left keys [4]: [coalesce(product#21519502, ), isnull(product#21519502), coalesce(plant#21519503, ), isnull(plant#21519503)]
Right keys [4]: [coalesce(productPlant#21519514.product.internalRefUUID, ), isnull(productPlant#21519514.product.internalRefUUID), coalesce(productPlant#21519514.plant.internalRefUUID, ), isnull(productPlant#21519514.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(39) Scan parquet
Output [4]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522, systemId#21519515]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(40) Filter
Input [4]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522, systemId#21519515]
Condition : isnotnull(internalUUID#21519516)
(41) Project
Output [3]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
Input [4]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522, systemId#21519515]
(42) Exchange
Input [3]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258188]
(43) BroadcastExchange
Input [3]: [internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258536]
(44) BroadcastHashJoin
Left keys [1]: [product#21519502]
Right keys [1]: [internalUUID#21519516]
Join type: LeftOuter
Join condition: None
(45) Project
Output [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filter(unitOfMeasureConversions#21519522, lambdafunction((((lambda u#21518048.measurementUnit1.code = productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#21518048.measurementUnit1.internalRefUUID = productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519520.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519520.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519527]
Input [7]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, internalUUID#21519516, baseUnitOfMeasure#21519520, unitOfMeasureConversions#21519522]
(46) Project
Output [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filteredUnitOfMeasureConversions#21519527.quantityDenominator AS _extract_quantityDenominator#21520076, filteredUnitOfMeasureConversions#21519527.quantityNumerator AS _extract_quantityNumerator#21520077]
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, filteredUnitOfMeasureConversions#21519527]
(47) Generate
Input [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, _extract_quantityDenominator#21520076, _extract_quantityNumerator#21520077]
Arguments: explode(_extract_quantityNumerator#21520077), [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, _extract_quantityDenominator#21520076], true, [quantityNumerator#21519528]
(48) Generate
Input [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, _extract_quantityDenominator#21520076, quantityNumerator#21519528]
Arguments: explode(_extract_quantityDenominator#21520076), [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, quantityNumerator#21519528], true, [quantityDenominator#21519529]
(49) Project
Output [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, (cast(quantityNumerator#21519528 as double) / cast(quantityDenominator#21519529 as double)) AS outboundUnit#21519530]
Input [6]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, quantityNumerator#21519528, quantityDenominator#21519529]
(50) Project
Output [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, CASE WHEN (isnull(outboundUnit#21519530) OR (outboundUnit#21519530 <= 0.0)) THEN 1.0 ELSE outboundUnit#21519530 END AS outboundUnit#21519531]
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519530]
(51) Exchange
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531]
Arguments: hashpartitioning(product#21519502, plant#21519503, 25), ENSURE_REQUIREMENTS, [plan_id=21258654]
(52) Sort
Input [5]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531]
Arguments: [product#21519502 ASC NULLS FIRST, plant#21519503 ASC NULLS FIRST], false, 0
(53) Scan parquet
Output [6]: [internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537, systemId#21519532]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(54) Filter
Input [6]: [internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537, systemId#21519532]
Condition : (isnotnull(plant#21519535.internalRefUUID) AND isnotnull(product#21519534.internalRefUUID))
(55) Project
Output [6]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537]
Input [6]: [internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537, systemId#21519532]
(56) Exchange
Input [6]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258199]
(57) BroadcastExchange
Input [6]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=21258564]
(58) Scan parquet
Output [2]: [marketUnit#21519538, distributionCenters#21519544]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(59) Filter
Input [2]: [marketUnit#21519538, distributionCenters#21519544]
Condition : (((marketUnit#21519538 <=> SS_Test_1) AND (size(distributionCenters#21519544, true) > 0)) AND isnotnull(distributionCenters#21519544))
(60) Project
Output [1]: [distributionCenters#21519544]
Input [2]: [marketUnit#21519538, distributionCenters#21519544]
(61) Exchange
Input [1]: [distributionCenters#21519544]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258203]
(62) Generate
Input [1]: [distributionCenters#21519544]
Arguments: explode(distributionCenters#21519544), false, [distributionCenters#21519560]
(63) Filter
Input [1]: [distributionCenters#21519560]
Condition : (((size(distributionCenters#21519560.storageLocations, true) > 0) AND isnotnull(distributionCenters#21519560.storageLocations)) AND isnotnull(distributionCenters#21519560.internalRefUUID))
(64) Project
Output [2]: [distributionCenters#21519560.internalRefUUID AS _extract_internalRefUUID#21519950, distributionCenters#21519560.storageLocations AS _extract_storageLocations#21519951]
Input [1]: [distributionCenters#21519560]
(65) Generate
Input [2]: [_extract_internalRefUUID#21519950, _extract_storageLocations#21519951]
Arguments: explode(_extract_storageLocations#21519951), [_extract_internalRefUUID#21519950], false, [storageLocations#21519561]
(66) Project
Output [3]: [_extract_internalRefUUID#21519950 AS plantUuid#21519563, storageLocations#21519561.id AS storageLocId#21519564, storageLocations#21519561.internalRefUUID AS storageLocUuid#21519565]
Input [2]: [_extract_internalRefUUID#21519950, storageLocations#21519561]
(67) BroadcastExchange
Input [3]: [plantUuid#21519563, storageLocId#21519564, storageLocUuid#21519565]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258560]
(68) Scan parquet
Output [2]: [product#21519566, plant#21519567]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(69) Filter
Input [2]: [product#21519566, plant#21519567]
Condition : isnotnull(plant#21519567)
(70) Exchange
Input [2]: [product#21519566, plant#21519567]
Arguments: hashpartitioning(product#21519566, plant#21519567, 25), REPARTITION_BY_NUM, [plan_id=21258413]
(71) Scan parquet
Output [4]: [plant#21519572, product#21519573, productionAspect#21519575, systemId#21519570]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(72) Project
Output [4]: [plant#21519572.internalRefUUID AS _extract_internalRefUUID#21520081, product#21519573.internalRefUUID AS _extract_internalRefUUID#21520078, productionAspect#21519575.productMovementPlants.unitOfIssue.code AS _extract_code#21520079, productionAspect#21519575.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21520080]
Input [4]: [plant#21519572, product#21519573, productionAspect#21519575, systemId#21519570]
(73) Exchange
Input [4]: [_extract_internalRefUUID#21520081, _extract_internalRefUUID#21520078, _extract_code#21520079, _extract_internalRefUUID#21520080]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258215]
(74) Project
Output [4]: [_extract_code#21520079, _extract_internalRefUUID#21520080, _extract_internalRefUUID#21520078, _extract_internalRefUUID#21520081]
Input [4]: [_extract_internalRefUUID#21520081, _extract_internalRefUUID#21520078, _extract_code#21520079, _extract_internalRefUUID#21520080]
(75) BroadcastExchange
Input [4]: [_extract_code#21520079, _extract_internalRefUUID#21520080, _extract_internalRefUUID#21520078, _extract_internalRefUUID#21520081]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=21258544]
(76) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519566, ), isnull(product#21519566), coalesce(plant#21519567, ), isnull(plant#21519567)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21520078, ), isnull(_extract_internalRefUUID#21520078), coalesce(_extract_internalRefUUID#21520081, ), isnull(_extract_internalRefUUID#21520081)]
Join type: LeftOuter
Join condition: None
(77) Project
Output [4]: [product#21519566, plant#21519567, _extract_code#21520079, _extract_internalRefUUID#21520080]
Input [6]: [product#21519566, plant#21519567, _extract_code#21520079, _extract_internalRefUUID#21520080, _extract_internalRefUUID#21520078, _extract_internalRefUUID#21520081]
(78) Scan parquet
Output [4]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586, systemId#21519579]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(79) Filter
Input [4]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586, systemId#21519579]
Condition : isnotnull(internalUUID#21519580)
(80) Project
Output [3]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586]
Input [4]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586, systemId#21519579]
(81) Exchange
Input [3]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258222]
(82) BroadcastExchange
Input [3]: [internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258548]
(83) BroadcastHashJoin
Left keys [1]: [product#21519566]
Right keys [1]: [internalUUID#21519580]
Join type: LeftOuter
Join condition: None
(84) Project
Output [2]: [plant#21519567, filter(unitOfMeasureConversions#21519586, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520079) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520080)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519584.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519584.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519591]
Input [7]: [product#21519566, plant#21519567, _extract_code#21520079, _extract_internalRefUUID#21520080, internalUUID#21519580, baseUnitOfMeasure#21519584, unitOfMeasureConversions#21519586]
(85) Generate
Input [2]: [plant#21519567, filteredUnitOfMeasureConversions#21519591]
Arguments: explode(filteredUnitOfMeasureConversions#21519591.quantityNumerator), [plant#21519567, filteredUnitOfMeasureConversions#21519591], true, [quantityNumerator#21519592]
(86) Project
Output [2]: [plant#21519567, filteredUnitOfMeasureConversions#21519591.quantityDenominator AS _extract_quantityDenominator#21519952]
Input [3]: [plant#21519567, filteredUnitOfMeasureConversions#21519591, quantityNumerator#21519592]
(87) Generate
Input [2]: [plant#21519567, _extract_quantityDenominator#21519952]
Arguments: explode(_extract_quantityDenominator#21519952), [plant#21519567], true, [quantityDenominator#21519593]
(88) Project
Output [1]: [plant#21519567]
Input [2]: [plant#21519567, quantityDenominator#21519593]
(89) HashAggregate
Input [1]: [plant#21519567]
Keys [1]: [plant#21519567]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519567]
(90) Exchange
Input [1]: [plant#21519567]
Arguments: hashpartitioning(plant#21519567, 25), ENSURE_REQUIREMENTS, [plan_id=21258557]
(91) HashAggregate
Input [1]: [plant#21519567]
Keys [1]: [plant#21519567]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519567]
(92) BroadcastHashJoin
Left keys [1]: [plantUuid#21519563]
Right keys [1]: [plant#21519567]
Join type: Inner
Join condition: None
(93) Project
Output [3]: [plantUuid#21519563, storageLocId#21519564, storageLocUuid#21519565]
Input [4]: [plantUuid#21519563, storageLocId#21519564, storageLocUuid#21519565, plant#21519567]
(94) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21519535.internalRefUUID, ), isnull(plant#21519535.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21519563, ), isnull(plantUuid#21519563)]
Join type: Inner
Join condition: None
(95) Generate
Input [9]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, stockQuantities#21519537, plantUuid#21519563, storageLocId#21519564, storageLocUuid#21519565]
Arguments: explode(filter(stockQuantities#21519537, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21519565) AND (lambda x#21518157.storageLocation.Id = storageLocId#21519564)), lambda x#21518157, false))), [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, plantUuid#21519563], false, [stockQuantity#21519596]
(96) ObjectHashAggregate
Input [7]: [systemId#21519532, internalUUID#21519533, product#21519534, plant#21519535, calculationDateTime#21519536, plantUuid#21519563, stockQuantity#21519596]
Keys [5]: [plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532]
Functions [2]: [partial_first(calculationDateTime#21519536, false), partial_collect_list(stockQuantity#21519596, 0, 0)]
Aggregate Attributes [3]: [first#21521428, valueSet#21521429, buf#21521430]
Results [8]: [plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532, first#21521431, valueSet#21521432, buf#21521433]
(97) ObjectHashAggregate
Input [8]: [plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532, first#21521431, valueSet#21521432, buf#21521433]
Keys [5]: [plantUuid#21519563, internalUUID#21519533, plant#21519535, product#21519534, systemId#21519532]
Functions [2]: [first(calculationDateTime#21519536, false), collect_list(stockQuantity#21519596, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21519536)()#21518172, collect_list(stockQuantity#21519596, 0, 0)#21518173]
Results [4]: [product#21519534, plant#21519535, first(calculationDateTime#21519536)()#21518172 AS calculationDateTime#21519597, collect_list(stockQuantity#21519596, 0, 0)#21518173 AS stockQuantities#21519598]
(98) Filter
Input [4]: [product#21519534, plant#21519535, calculationDateTime#21519597, stockQuantities#21519598]
Condition : ((size(stockQuantities#21519598, true) > 0) AND isnotnull(calculationDateTime#21519597))
(99) Generate
Input [4]: [product#21519534, plant#21519535, calculationDateTime#21519597, stockQuantities#21519598]
Arguments: explode(stockQuantities#21519598), [product#21519534, plant#21519535, calculationDateTime#21519597], false, [stockQuantity#21519599]
(100) Filter
Input [4]: [product#21519534, plant#21519535, calculationDateTime#21519597, stockQuantity#21519599]
Condition : (((isnotnull(stockQuantity#21519599.specialStockIndicator.code) AND isnotnull(stockQuantity#21519599.stockType.code)) AND (stockQuantity#21519599.specialStockIndicator.code = )) AND (stockQuantity#21519599.stockType.code = 01))
(101) Project
Output [5]: [plant#21519535.internalRefUUID AS plantUuid#21519601, product#21519534.internalRefUUID AS productUuid#21519603, calculationDateTime#21519597, stockQuantity#21519599.storagelocation.id AS storageLocId#21519604, stockQuantity#21519599.quantity.measure AS quantity#21519606]
Input [4]: [product#21519534, plant#21519535, calculationDateTime#21519597, stockQuantity#21519599]
(102) Exchange
Input [5]: [plantUuid#21519601, productUuid#21519603, calculationDateTime#21519597, storageLocId#21519604, quantity#21519606]
Arguments: hashpartitioning(productUuid#21519603, plantUuid#21519601, 25), ENSURE_REQUIREMENTS, [plan_id=21258586]
(103) Sort
Input [5]: [plantUuid#21519601, productUuid#21519603, calculationDateTime#21519597, storageLocId#21519604, quantity#21519606]
Arguments: [productUuid#21519603 ASC NULLS FIRST, plantUuid#21519601 ASC NULLS FIRST], false, 0
(104) Scan parquet
Output [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(105) Filter
Input [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Condition : ((isnotnull(orderDateTime#21519611) AND isnotnull(plant#21519610)) AND isnotnull(product#21519609))
(106) Exchange
Input [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Arguments: hashpartitioning(product#21519609, plant#21519610, 25), REPARTITION_BY_NUM, [plan_id=21258434]
(107) Scan parquet
Output [4]: [plant#21519615, product#21519616, productionAspect#21519618, systemId#21519613]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(108) Project
Output [4]: [plant#21519615.internalRefUUID AS _extract_internalRefUUID#21520085, product#21519616.internalRefUUID AS _extract_internalRefUUID#21520084, productionAspect#21519618.productMovementPlants.unitOfIssue.code AS _extract_code#21520082, productionAspect#21519618.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21520083]
Input [4]: [plant#21519615, product#21519616, productionAspect#21519618, systemId#21519613]
(109) Exchange
Input [4]: [_extract_internalRefUUID#21520085, _extract_internalRefUUID#21520084, _extract_code#21520082, _extract_internalRefUUID#21520083]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258247]
(110) Project
Output [4]: [_extract_code#21520082, _extract_internalRefUUID#21520083, _extract_internalRefUUID#21520084, _extract_internalRefUUID#21520085]
Input [4]: [_extract_internalRefUUID#21520085, _extract_internalRefUUID#21520084, _extract_code#21520082, _extract_internalRefUUID#21520083]
(111) BroadcastExchange
Input [4]: [_extract_code#21520082, _extract_internalRefUUID#21520083, _extract_internalRefUUID#21520084, _extract_internalRefUUID#21520085]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=21258573]
(112) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519609, ), isnull(product#21519609), coalesce(plant#21519610, ), isnull(plant#21519610)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21520084, ), isnull(_extract_internalRefUUID#21520084), coalesce(_extract_internalRefUUID#21520085, ), isnull(_extract_internalRefUUID#21520085)]
Join type: LeftOuter
Join condition: None
(113) Project
Output [5]: [product#21519609, plant#21519610, orderDateTime#21519611, _extract_code#21520082, _extract_internalRefUUID#21520083]
Input [7]: [product#21519609, plant#21519610, orderDateTime#21519611, _extract_code#21520082, _extract_internalRefUUID#21520083, _extract_internalRefUUID#21520084, _extract_internalRefUUID#21520085]
(114) Scan parquet
Output [4]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629, systemId#21519622]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(115) Filter
Input [4]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629, systemId#21519622]
Condition : isnotnull(internalUUID#21519623)
(116) Project
Output [3]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629]
Input [4]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629, systemId#21519622]
(117) Exchange
Input [3]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258254]
(118) BroadcastExchange
Input [3]: [internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258577]
(119) BroadcastHashJoin
Left keys [1]: [product#21519609]
Right keys [1]: [internalUUID#21519623]
Join type: LeftOuter
Join condition: None
(120) Project
Output [4]: [product#21519609, plant#21519610, orderDateTime#21519611, filter(unitOfMeasureConversions#21519629, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520082) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520083)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519627.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519627.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519634]
Input [8]: [product#21519609, plant#21519610, orderDateTime#21519611, _extract_code#21520082, _extract_internalRefUUID#21520083, internalUUID#21519623, baseUnitOfMeasure#21519627, unitOfMeasureConversions#21519629]
(121) Generate
Input [4]: [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634]
Arguments: explode(filteredUnitOfMeasureConversions#21519634.quantityNumerator), [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634], true, [quantityNumerator#21519635]
(122) Project
Output [4]: [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634.quantityDenominator AS _extract_quantityDenominator#21519959]
Input [5]: [product#21519609, plant#21519610, orderDateTime#21519611, filteredUnitOfMeasureConversions#21519634, quantityNumerator#21519635]
(123) Generate
Input [4]: [product#21519609, plant#21519610, orderDateTime#21519611, _extract_quantityDenominator#21519959]
Arguments: explode(_extract_quantityDenominator#21519959), [product#21519609, plant#21519610, orderDateTime#21519611], true, [quantityDenominator#21519636]
(124) Project
Output [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Input [4]: [product#21519609, plant#21519610, orderDateTime#21519611, quantityDenominator#21519636]
(125) Sort
Input [3]: [product#21519609, plant#21519610, orderDateTime#21519611]
Arguments: [product#21519609 ASC NULLS FIRST, plant#21519610 ASC NULLS FIRST], false, 0
(126) SortMergeJoin
Left keys [2]: [productUuid#21519603, plantUuid#21519601]
Right keys [2]: [product#21519609, plant#21519610]
Join type: Inner
Join condition: (calculationDateTime#21519597 <= orderDateTime#21519611)
(127) Project
Output [5]: [plantUuid#21519601 AS plant#21519639, productUuid#21519603 AS product#21519640, storageLocId#21519604, calculationDateTime#21519597, quantity#21519606]
Input [8]: [plantUuid#21519601, productUuid#21519603, calculationDateTime#21519597, storageLocId#21519604, quantity#21519606, product#21519609, plant#21519610, orderDateTime#21519611]
(128) Exchange
Input [5]: [plant#21519639, product#21519640, storageLocId#21519604, calculationDateTime#21519597, quantity#21519606]
Arguments: hashpartitioning(coalesce(plant#21519639, ), isnull(plant#21519639), coalesce(product#21519640, ), isnull(product#21519640), coalesce(storageLocId#21519604, ), isnull(storageLocId#21519604), coalesce(calculationDateTime#21519597, 1970-01-01 00:00:00), isnull(calculationDateTime#21519597), 25), ENSURE_REQUIREMENTS, [plan_id=21258642]
(129) Sort
Input [5]: [plant#21519639, product#21519640, storageLocId#21519604, calculationDateTime#21519597, quantity#21519606]
Arguments: [coalesce(plant#21519639, ) ASC NULLS FIRST, isnull(plant#21519639) ASC NULLS FIRST, coalesce(product#21519640, ) ASC NULLS FIRST, isnull(product#21519640) ASC NULLS FIRST, coalesce(storageLocId#21519604, ) ASC NULLS FIRST, isnull(storageLocId#21519604) ASC NULLS FIRST, coalesce(calculationDateTime#21519597, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#21519597) ASC NULLS FIRST], false, 0
(130) Scan parquet
Output [6]: [internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646, systemId#21519641]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-inventory-inventorysnapshot-v2]
PushedFilters: [IsNotNull(plant.internalRefUUID), IsNotNull(product.internalRefUUID)]
ReadSchema: struct<internalUUID:string,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,calculationDateTime:timestamp,stockQuantities:array<struct<stockType:struct<internalRefUUID:string,code:string>,specialStockIndicator:struct<internalRefUUID:string,code:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:struct<measure:double,unitCode:struct<internalRefUUID:string,code:string>>>>>
(131) Filter
Input [6]: [internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646, systemId#21519641]
Condition : (isnotnull(plant#21519644.internalRefUUID) AND isnotnull(product#21519643.internalRefUUID))
(132) Project
Output [6]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646]
Input [6]: [internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646, systemId#21519641]
(133) Exchange
Input [6]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258266]
(134) BroadcastExchange
Input [6]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID, ), isnull(input[3, struct<internalRefUUID:string,id:string>, true].internalRefUUID)),false), [plan_id=21258611]
(135) Scan parquet
Output [2]: [marketUnit#21519647, distributionCenters#21519653]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(136) Filter
Input [2]: [marketUnit#21519647, distributionCenters#21519653]
Condition : (((marketUnit#21519647 <=> SS_Test_1) AND (size(distributionCenters#21519653, true) > 0)) AND isnotnull(distributionCenters#21519653))
(137) Project
Output [1]: [distributionCenters#21519653]
Input [2]: [marketUnit#21519647, distributionCenters#21519653]
(138) Exchange
Input [1]: [distributionCenters#21519653]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258270]
(139) Generate
Input [1]: [distributionCenters#21519653]
Arguments: explode(distributionCenters#21519653), false, [distributionCenters#21519669]
(140) Filter
Input [1]: [distributionCenters#21519669]
Condition : (((size(distributionCenters#21519669.storageLocations, true) > 0) AND isnotnull(distributionCenters#21519669.storageLocations)) AND isnotnull(distributionCenters#21519669.internalRefUUID))
(141) Project
Output [2]: [distributionCenters#21519669.internalRefUUID AS _extract_internalRefUUID#21519966, distributionCenters#21519669.storageLocations AS _extract_storageLocations#21519967]
Input [1]: [distributionCenters#21519669]
(142) Generate
Input [2]: [_extract_internalRefUUID#21519966, _extract_storageLocations#21519967]
Arguments: explode(_extract_storageLocations#21519967), [_extract_internalRefUUID#21519966], false, [storageLocations#21519670]
(143) Project
Output [3]: [_extract_internalRefUUID#21519966 AS plantUuid#21519672, storageLocations#21519670.id AS storageLocId#21519673, storageLocations#21519670.internalRefUUID AS storageLocUuid#21519674]
Input [2]: [_extract_internalRefUUID#21519966, storageLocations#21519670]
(144) BroadcastExchange
Input [3]: [plantUuid#21519672, storageLocId#21519673, storageLocUuid#21519674]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258607]
(145) Scan parquet
Output [2]: [product#21519675, plant#21519676]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(146) Filter
Input [2]: [product#21519675, plant#21519676]
Condition : isnotnull(plant#21519676)
(147) Exchange
Input [2]: [product#21519675, plant#21519676]
Arguments: hashpartitioning(product#21519675, plant#21519676, 25), REPARTITION_BY_NUM, [plan_id=21258445]
(148) Scan parquet
Output [4]: [plant#21519681, product#21519682, productionAspect#21519684, systemId#21519679]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(149) Project
Output [4]: [plant#21519681.internalRefUUID AS _extract_internalRefUUID#21520086, product#21519682.internalRefUUID AS _extract_internalRefUUID#21520089, productionAspect#21519684.productMovementPlants.unitOfIssue.code AS _extract_code#21520087, productionAspect#21519684.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21520088]
Input [4]: [plant#21519681, product#21519682, productionAspect#21519684, systemId#21519679]
(150) Exchange
Input [4]: [_extract_internalRefUUID#21520086, _extract_internalRefUUID#21520089, _extract_code#21520087, _extract_internalRefUUID#21520088]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258282]
(151) Project
Output [4]: [_extract_code#21520087, _extract_internalRefUUID#21520088, _extract_internalRefUUID#21520089, _extract_internalRefUUID#21520086]
Input [4]: [_extract_internalRefUUID#21520086, _extract_internalRefUUID#21520089, _extract_code#21520087, _extract_internalRefUUID#21520088]
(152) BroadcastExchange
Input [4]: [_extract_code#21520087, _extract_internalRefUUID#21520088, _extract_internalRefUUID#21520089, _extract_internalRefUUID#21520086]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=21258591]
(153) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519675, ), isnull(product#21519675), coalesce(plant#21519676, ), isnull(plant#21519676)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21520089, ), isnull(_extract_internalRefUUID#21520089), coalesce(_extract_internalRefUUID#21520086, ), isnull(_extract_internalRefUUID#21520086)]
Join type: LeftOuter
Join condition: None
(154) Project
Output [4]: [product#21519675, plant#21519676, _extract_code#21520087, _extract_internalRefUUID#21520088]
Input [6]: [product#21519675, plant#21519676, _extract_code#21520087, _extract_internalRefUUID#21520088, _extract_internalRefUUID#21520089, _extract_internalRefUUID#21520086]
(155) Scan parquet
Output [4]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695, systemId#21519688]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(156) Filter
Input [4]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695, systemId#21519688]
Condition : isnotnull(internalUUID#21519689)
(157) Project
Output [3]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695]
Input [4]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695, systemId#21519688]
(158) Exchange
Input [3]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258289]
(159) BroadcastExchange
Input [3]: [internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258595]
(160) BroadcastHashJoin
Left keys [1]: [product#21519675]
Right keys [1]: [internalUUID#21519689]
Join type: LeftOuter
Join condition: None
(161) Project
Output [2]: [plant#21519676, filter(unitOfMeasureConversions#21519695, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520087) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520088)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519693.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519693.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519700]
Input [7]: [product#21519675, plant#21519676, _extract_code#21520087, _extract_internalRefUUID#21520088, internalUUID#21519689, baseUnitOfMeasure#21519693, unitOfMeasureConversions#21519695]
(162) Generate
Input [2]: [plant#21519676, filteredUnitOfMeasureConversions#21519700]
Arguments: explode(filteredUnitOfMeasureConversions#21519700.quantityNumerator), [plant#21519676, filteredUnitOfMeasureConversions#21519700], true, [quantityNumerator#21519701]
(163) Project
Output [2]: [plant#21519676, filteredUnitOfMeasureConversions#21519700.quantityDenominator AS _extract_quantityDenominator#21519968]
Input [3]: [plant#21519676, filteredUnitOfMeasureConversions#21519700, quantityNumerator#21519701]
(164) Generate
Input [2]: [plant#21519676, _extract_quantityDenominator#21519968]
Arguments: explode(_extract_quantityDenominator#21519968), [plant#21519676], true, [quantityDenominator#21519702]
(165) Project
Output [1]: [plant#21519676]
Input [2]: [plant#21519676, quantityDenominator#21519702]
(166) HashAggregate
Input [1]: [plant#21519676]
Keys [1]: [plant#21519676]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519676]
(167) Exchange
Input [1]: [plant#21519676]
Arguments: hashpartitioning(plant#21519676, 25), ENSURE_REQUIREMENTS, [plan_id=21258604]
(168) HashAggregate
Input [1]: [plant#21519676]
Keys [1]: [plant#21519676]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519676]
(169) BroadcastHashJoin
Left keys [1]: [plantUuid#21519672]
Right keys [1]: [plant#21519676]
Join type: Inner
Join condition: None
(170) Project
Output [3]: [plantUuid#21519672, storageLocId#21519673, storageLocUuid#21519674]
Input [4]: [plantUuid#21519672, storageLocId#21519673, storageLocUuid#21519674, plant#21519676]
(171) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21519644.internalRefUUID, ), isnull(plant#21519644.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#21519672, ), isnull(plantUuid#21519672)]
Join type: Inner
Join condition: None
(172) Generate
Input [9]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, stockQuantities#21519646, plantUuid#21519672, storageLocId#21519673, storageLocUuid#21519674]
Arguments: explode(filter(stockQuantities#21519646, lambdafunction(((lambda x#21518157.storageLocation.internalRefUuid = storageLocUuid#21519674) AND (lambda x#21518157.storageLocation.Id = storageLocId#21519673)), lambda x#21518157, false))), [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, plantUuid#21519672], false, [stockQuantity#21519705]
(173) ObjectHashAggregate
Input [7]: [systemId#21519641, internalUUID#21519642, product#21519643, plant#21519644, calculationDateTime#21519645, plantUuid#21519672, stockQuantity#21519705]
Keys [5]: [plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641]
Functions [2]: [partial_first(calculationDateTime#21519645, false), partial_collect_list(stockQuantity#21519705, 0, 0)]
Aggregate Attributes [3]: [first#21521436, valueSet#21521437, buf#21521438]
Results [8]: [plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641, first#21521439, valueSet#21521440, buf#21521441]
(174) ObjectHashAggregate
Input [8]: [plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641, first#21521439, valueSet#21521440, buf#21521441]
Keys [5]: [plantUuid#21519672, internalUUID#21519642, plant#21519644, product#21519643, systemId#21519641]
Functions [2]: [first(calculationDateTime#21519645, false), collect_list(stockQuantity#21519705, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#21519645)()#21518172, collect_list(stockQuantity#21519705, 0, 0)#21518173]
Results [4]: [product#21519643, plant#21519644, first(calculationDateTime#21519645)()#21518172 AS calculationDateTime#21519706, collect_list(stockQuantity#21519705, 0, 0)#21518173 AS stockQuantities#21519707]
(175) Filter
Input [4]: [product#21519643, plant#21519644, calculationDateTime#21519706, stockQuantities#21519707]
Condition : ((size(stockQuantities#21519707, true) > 0) AND isnotnull(calculationDateTime#21519706))
(176) Generate
Input [4]: [product#21519643, plant#21519644, calculationDateTime#21519706, stockQuantities#21519707]
Arguments: explode(stockQuantities#21519707), [product#21519643, plant#21519644, calculationDateTime#21519706], false, [stockQuantity#21519708]
(177) Filter
Input [4]: [product#21519643, plant#21519644, calculationDateTime#21519706, stockQuantity#21519708]
Condition : (((isnotnull(stockQuantity#21519708.specialStockIndicator.code) AND isnotnull(stockQuantity#21519708.stockType.code)) AND (stockQuantity#21519708.specialStockIndicator.code = )) AND (stockQuantity#21519708.stockType.code = 01))
(178) Project
Output [4]: [plant#21519644.internalRefUUID AS plantUuid#21519710, product#21519643.internalRefUUID AS productUuid#21519712, calculationDateTime#21519706, stockQuantity#21519708.storagelocation.id AS storageLocId#21519713]
Input [4]: [product#21519643, plant#21519644, calculationDateTime#21519706, stockQuantity#21519708]
(179) Exchange
Input [4]: [plantUuid#21519710, productUuid#21519712, calculationDateTime#21519706, storageLocId#21519713]
Arguments: hashpartitioning(productUuid#21519712, plantUuid#21519710, 25), ENSURE_REQUIREMENTS, [plan_id=21258633]
(180) Sort
Input [4]: [plantUuid#21519710, productUuid#21519712, calculationDateTime#21519706, storageLocId#21519713]
Arguments: [productUuid#21519712 ASC NULLS FIRST, plantUuid#21519710 ASC NULLS FIRST], false, 0
(181) Scan parquet
Output [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(182) Filter
Input [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Condition : ((isnotnull(orderDateTime#21519720) AND isnotnull(plant#21519719)) AND isnotnull(product#21519718))
(183) Exchange
Input [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Arguments: hashpartitioning(product#21519718, plant#21519719, 25), REPARTITION_BY_NUM, [plan_id=21258466]
(184) Scan parquet
Output [4]: [plant#21519724, product#21519725, productionAspect#21519727, systemId#21519722]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(185) Project
Output [4]: [plant#21519724.internalRefUUID AS _extract_internalRefUUID#21520093, product#21519725.internalRefUUID AS _extract_internalRefUUID#21520090, productionAspect#21519727.productMovementPlants.unitOfIssue.code AS _extract_code#21520091, productionAspect#21519727.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21520092]
Input [4]: [plant#21519724, product#21519725, productionAspect#21519727, systemId#21519722]
(186) Exchange
Input [4]: [_extract_internalRefUUID#21520093, _extract_internalRefUUID#21520090, _extract_code#21520091, _extract_internalRefUUID#21520092]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258314]
(187) Project
Output [4]: [_extract_code#21520091, _extract_internalRefUUID#21520092, _extract_internalRefUUID#21520090, _extract_internalRefUUID#21520093]
Input [4]: [_extract_internalRefUUID#21520093, _extract_internalRefUUID#21520090, _extract_code#21520091, _extract_internalRefUUID#21520092]
(188) BroadcastExchange
Input [4]: [_extract_code#21520091, _extract_internalRefUUID#21520092, _extract_internalRefUUID#21520090, _extract_internalRefUUID#21520093]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=21258620]
(189) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519718, ), isnull(product#21519718), coalesce(plant#21519719, ), isnull(plant#21519719)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21520090, ), isnull(_extract_internalRefUUID#21520090), coalesce(_extract_internalRefUUID#21520093, ), isnull(_extract_internalRefUUID#21520093)]
Join type: LeftOuter
Join condition: None
(190) Project
Output [5]: [product#21519718, plant#21519719, orderDateTime#21519720, _extract_code#21520091, _extract_internalRefUUID#21520092]
Input [7]: [product#21519718, plant#21519719, orderDateTime#21519720, _extract_code#21520091, _extract_internalRefUUID#21520092, _extract_internalRefUUID#21520090, _extract_internalRefUUID#21520093]
(191) Scan parquet
Output [4]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738, systemId#21519731]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(192) Filter
Input [4]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738, systemId#21519731]
Condition : isnotnull(internalUUID#21519732)
(193) Project
Output [3]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738]
Input [4]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738, systemId#21519731]
(194) Exchange
Input [3]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258321]
(195) BroadcastExchange
Input [3]: [internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258624]
(196) BroadcastHashJoin
Left keys [1]: [product#21519718]
Right keys [1]: [internalUUID#21519732]
Join type: LeftOuter
Join condition: None
(197) Project
Output [4]: [product#21519718, plant#21519719, orderDateTime#21519720, filter(unitOfMeasureConversions#21519738, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520091) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520092)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519736.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519736.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519743]
Input [8]: [product#21519718, plant#21519719, orderDateTime#21519720, _extract_code#21520091, _extract_internalRefUUID#21520092, internalUUID#21519732, baseUnitOfMeasure#21519736, unitOfMeasureConversions#21519738]
(198) Generate
Input [4]: [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743]
Arguments: explode(filteredUnitOfMeasureConversions#21519743.quantityNumerator), [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743], true, [quantityNumerator#21519744]
(199) Project
Output [4]: [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743.quantityDenominator AS _extract_quantityDenominator#21519975]
Input [5]: [product#21519718, plant#21519719, orderDateTime#21519720, filteredUnitOfMeasureConversions#21519743, quantityNumerator#21519744]
(200) Generate
Input [4]: [product#21519718, plant#21519719, orderDateTime#21519720, _extract_quantityDenominator#21519975]
Arguments: explode(_extract_quantityDenominator#21519975), [product#21519718, plant#21519719, orderDateTime#21519720], true, [quantityDenominator#21519745]
(201) Project
Output [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Input [4]: [product#21519718, plant#21519719, orderDateTime#21519720, quantityDenominator#21519745]
(202) Sort
Input [3]: [product#21519718, plant#21519719, orderDateTime#21519720]
Arguments: [product#21519718 ASC NULLS FIRST, plant#21519719 ASC NULLS FIRST], false, 0
(203) SortMergeJoin
Left keys [2]: [productUuid#21519712, plantUuid#21519710]
Right keys [2]: [product#21519718, plant#21519719]
Join type: Inner
Join condition: (calculationDateTime#21519706 <= orderDateTime#21519720)
(204) Project
Output [4]: [plantUuid#21519710 AS plant#21519748, productUuid#21519712 AS product#21519749, storageLocId#21519713, calculationDateTime#21519706]
Input [7]: [plantUuid#21519710, productUuid#21519712, calculationDateTime#21519706, storageLocId#21519713, product#21519718, plant#21519719, orderDateTime#21519720]
(205) HashAggregate
Input [4]: [plant#21519748, product#21519749, storageLocId#21519713, calculationDateTime#21519706]
Keys [3]: [plant#21519748, product#21519749, storageLocId#21519713]
Functions [1]: [partial_max(calculationDateTime#21519706)]
Aggregate Attributes [1]: [max#21521434]
Results [4]: [plant#21519748, product#21519749, storageLocId#21519713, max#21521435]
(206) HashAggregate
Input [4]: [plant#21519748, product#21519749, storageLocId#21519713, max#21521435]
Keys [3]: [plant#21519748, product#21519749, storageLocId#21519713]
Functions [1]: [max(calculationDateTime#21519706)]
Aggregate Attributes [1]: [max(calculationDateTime#21519706)#21518235]
Results [4]: [plant#21519748, product#21519749, storageLocId#21519713, max(calculationDateTime#21519706)#21518235 AS max_calc_datetime#21519750]
(207) Exchange
Input [4]: [plant#21519748, product#21519749, storageLocId#21519713, max_calc_datetime#21519750]
Arguments: hashpartitioning(coalesce(plant#21519748, ), isnull(plant#21519748), coalesce(product#21519749, ), isnull(product#21519749), coalesce(storageLocId#21519713, ), isnull(storageLocId#21519713), coalesce(max_calc_datetime#21519750, 1970-01-01 00:00:00), isnull(max_calc_datetime#21519750), 25), ENSURE_REQUIREMENTS, [plan_id=21258643]
(208) Sort
Input [4]: [plant#21519748, product#21519749, storageLocId#21519713, max_calc_datetime#21519750]
Arguments: [coalesce(plant#21519748, ) ASC NULLS FIRST, isnull(plant#21519748) ASC NULLS FIRST, coalesce(product#21519749, ) ASC NULLS FIRST, isnull(product#21519749) ASC NULLS FIRST, coalesce(storageLocId#21519713, ) ASC NULLS FIRST, isnull(storageLocId#21519713) ASC NULLS FIRST, coalesce(max_calc_datetime#21519750, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#21519750) ASC NULLS FIRST], false, 0
(209) SortMergeJoin
Left keys [8]: [coalesce(plant#21519639, ), isnull(plant#21519639), coalesce(product#21519640, ), isnull(product#21519640), coalesce(storageLocId#21519604, ), isnull(storageLocId#21519604), coalesce(calculationDateTime#21519597, 1970-01-01 00:00:00), isnull(calculationDateTime#21519597)]
Right keys [8]: [coalesce(plant#21519748, ), isnull(plant#21519748), coalesce(product#21519749, ), isnull(product#21519749), coalesce(storageLocId#21519713, ), isnull(storageLocId#21519713), coalesce(max_calc_datetime#21519750, 1970-01-01 00:00:00), isnull(max_calc_datetime#21519750)]
Join type: Inner
Join condition: None
(210) Project
Output [4]: [plant#21519639, product#21519640, calculationDateTime#21519597, quantity#21519606]
Input [9]: [plant#21519639, product#21519640, storageLocId#21519604, calculationDateTime#21519597, quantity#21519606, plant#21519748, product#21519749, storageLocId#21519713, max_calc_datetime#21519750]
(211) HashAggregate
Input [4]: [plant#21519639, product#21519640, calculationDateTime#21519597, quantity#21519606]
Keys [2]: [product#21519640, plant#21519639]
Functions [2]: [partial_min(calculationDateTime#21519597), partial_sum(quantity#21519606)]
Aggregate Attributes [2]: [min#21521424, sum#21521425]
Results [4]: [product#21519640, plant#21519639, min#21521426, sum#21521427]
(212) Exchange
Input [4]: [product#21519640, plant#21519639, min#21521426, sum#21521427]
Arguments: hashpartitioning(product#21519640, plant#21519639, 25), ENSURE_REQUIREMENTS, [plan_id=21258650]
(213) HashAggregate
Input [4]: [product#21519640, plant#21519639, min#21521426, sum#21521427]
Keys [2]: [product#21519640, plant#21519639]
Functions [2]: [min(calculationDateTime#21519597), sum(quantity#21519606)]
Aggregate Attributes [2]: [min(calculationDateTime#21519597)#21518361, sum(quantity#21519606)#21518360]
Results [4]: [product#21519640, plant#21519639, min(calculationDateTime#21519597)#21518361 AS minCalculationDateTime#21519752, round(sum(quantity#21519606)#21518360, 0) AS roundedQuantitySum#21519753]
(214) Sort
Input [4]: [product#21519640, plant#21519639, minCalculationDateTime#21519752, roundedQuantitySum#21519753]
Arguments: [product#21519640 ASC NULLS FIRST, plant#21519639 ASC NULLS FIRST], false, 0
(215) SortMergeJoin
Left keys [2]: [product#21519502, plant#21519503]
Right keys [2]: [product#21519640, plant#21519639]
Join type: LeftOuter
Join condition: None
(216) Project
Output [7]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, CASE WHEN isnotnull(minCalculationDateTime#21519752) THEN minCalculationDateTime#21519752 ELSE orderDateTime#21519504 END AS stockDatetime#21519754, CASE WHEN isnotnull(roundedQuantitySum#21519753) THEN array(roundedQuantitySum#21519753) ELSE [0.0] END AS stockBatchQuantities#21519755]
Input [9]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, product#21519640, plant#21519639, minCalculationDateTime#21519752, roundedQuantitySum#21519753]
(217) Scan parquet
Output [9]: [product#21518399, plant#21518400, demandChannel#21518401, demandStream#21518402, considerVariance#21518403, demandTimeBuckets#21518404, demandPointInTimeStart#21518405, demandPointInTimeEnd#21518406, demandPointInTime#21518407]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000001651/0_1_10000001651]
ReadSchema: struct<product:string,plant:string,demandChannel:string,demandStream:string,considerVariance:boolean,demandTimeBuckets:array<struct<demandStartDateTime:timestamp,demandQuantity:double,demandVariance:double>>,demandPointInTimeStart:timestamp,demandPointInTimeEnd:timestamp,demandPointInTime:array<struct<demandDateTime:timestamp,demandQuantity:double,demandVariance:double>>>
(218) BroadcastExchange
Input [9]: [product#21518399, plant#21518400, demandChannel#21518401, demandStream#21518402, considerVariance#21518403, demandTimeBuckets#21518404, demandPointInTimeStart#21518405, demandPointInTimeEnd#21518406, demandPointInTime#21518407]
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=21258660]
(219) BroadcastHashJoin
Left keys [4]: [coalesce(plant#21519503, ), isnull(plant#21519503), coalesce(product#21519502, ), isnull(product#21519502)]
Right keys [4]: [coalesce(plant#21518400, ), isnull(plant#21518400), coalesce(product#21518399, ), isnull(product#21518399)]
Join type: LeftOuter
Join condition: None
(220) Project
Output [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, CASE WHEN isnotnull(product#21518399) THEN struct(demandChannel, demandChannel#21518401, demandStream, demandStream#21518402, considerVariance, considerVariance#21518403, demandTimeBuckets, demandTimeBuckets#21518404, demandPointInTimeStart, demandPointInTimeStart#21518405, demandPointInTimeEnd, demandPointInTimeEnd#21518406, demandPointInTime, demandPointInTime#21518407) END AS rawDemands#21518409]
Input [16]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, product#21518399, plant#21518400, demandChannel#21518401, demandStream#21518402, considerVariance#21518403, demandTimeBuckets#21518404, demandPointInTimeStart#21518405, demandPointInTimeEnd#21518406, demandPointInTime#21518407]
(221) ObjectHashAggregate
Input [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, rawDemands#21518409]
Keys [8]: [product#21519502, plant#21519503, orderDateTime#21519504, knownfloatingpointnormalized(if (isnull(productPlant#21519514)) null else named_struct(systemId, productPlant#21519514.systemId, internalUUID, productPlant#21519514.internalUUID, plant, productPlant#21519514.plant, product, productPlant#21519514.product, blockedForReplenishmentStartingFrom, productPlant#21519514.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#21519514.productionAspect)) null else named_struct(productMovementPlants, productPlant#21519514.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#21519514.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#21519514.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#21519514.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#21519514.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#21519514.salesPlant, listing, productPlant#21519514.listing)) AS productPlant#21519514, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#21519531)) AS outboundUnit#21519531, stockDatetime#21519754, knownfloatingpointnormalized(transform(stockBatchQuantities#21519755, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#21521421)), lambda arg#21521421, false))) AS stockBatchQuantities#21519755, [7226582400000000] AS [7226582400000000]#21521420]
Functions [1]: [partial_collect_list(rawDemands#21518409, 0, 0)]
Aggregate Attributes [1]: [buf#21521422]
Results [9]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000]#21521420, buf#21521423]
(222) ObjectHashAggregate
Input [9]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000]#21521420, buf#21521423]
Keys [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000]#21521420]
Functions [1]: [collect_list(rawDemands#21518409, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#21518409, 0, 0)#21518429]
Results [8]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, collect_list(rawDemands#21518409, 0, 0)#21518429 AS rawDemands#21518410]
(223) Scan parquet
Output [3]: [internalUUID#21519453, address#21519459, systemId#21519452]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>
(224) Project
Output [2]: [internalUUID#21519453, address#21519459.timeZone.code AS timezonecode#21519465]
Input [3]: [internalUUID#21519453, address#21519459, systemId#21519452]
(225) Exchange
Input [2]: [internalUUID#21519453, timezonecode#21519465]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258345]
(226) BroadcastExchange
Input [2]: [internalUUID#21519453, timezonecode#21519465]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=21258666]
(227) BroadcastHashJoin
Left keys [2]: [coalesce(plant#21519503, ), isnull(plant#21519503)]
Right keys [2]: [coalesce(internalUUID#21519453, ), isnull(internalUUID#21519453)]
Join type: LeftOuter
Join condition: None
(228) Project
Output [10]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#21519756, rawDemands#21518410, CASE WHEN isnotnull(timezonecode#21519465) THEN timezonecode#21519465 ELSE UTC END AS timezonecode#21519467]
Input [10]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, rawDemands#21518410, internalUUID#21519453, timezonecode#21519465]
(229) DeserializeToObject
Input [10]: [product#21519502, plant#21519503, orderDateTime#21519504, productPlant#21519514, outboundUnit#21519531, stockDatetime#21519754, stockBatchQuantities#21519755, stockBatchShelfLifeEndDatetimes#21519756, rawDemands#21518410, timezonecode#21519467]
Arguments: createexternalrow(invoke(product#21519502.toString()), invoke(plant#21519503.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#21519504)), if (isnull(productPlant#21519514)) null else createexternalrow(invoke(productPlant#21519514.systemId.toString()), invoke(productPlant#21519514.internalUUID.toString()), if (isnull(productPlant#21519514.plant)) null else createexternalrow(invoke(productPlant#21519514.plant.internalRefUUID.toString()), invoke(productPlant#21519514.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#21519514.product)) null else createexternalrow(invoke(productPlant#21519514.product.internalRefUUID.toString()), invoke(productPlant#21519514.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#21519514.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#21519514.productionAspect)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productMovementPlants.unitOfIssue.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#21519514.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#21519514.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#21519514.salesPlant)) null else createexternalrow(if (isnull(productPlant#21519514.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#21519514.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#21519514.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, -1).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#21519514.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#21519531)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#21519754)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#21519755, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#21519756, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4), createexternalrow(invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandChannel.toString()), invoke(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -5).demandVariance)), StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandTimeBuckets, Some(class scala.collection.mutable.ArraySeq)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeStart)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, -6).demandVariance)), StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true)), lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, -4).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)), rawDemands#21518410, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#21519467.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#21519488: org.apache.spark.sql.Row
(230) MapElements
Input [1]: [obj#21519488]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008021e99e0@10fe4db7, obj#21519493: org.apache.spark.sql.Row
(231) SerializeFromObject
Input [1]: [obj#21519493]
Arguments: [if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 0, product), StringType, ObjectType(class java.lang.String)))) AS product#21519498, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 1, plant), StringType, ObjectType(class java.lang.String)))) AS plant#21519499]
(232) Exchange
Input [2]: [product#21519498, plant#21519499]
Arguments: hashpartitioning(coalesce(plant#21519499, ), isnull(plant#21519499), coalesce(product#21519498, ), isnull(product#21519498), 25), ENSURE_REQUIREMENTS, [plan_id=21258675]
(233) Sort
Input [2]: [product#21519498, plant#21519499]
Arguments: [coalesce(plant#21519499, ) ASC NULLS FIRST, isnull(plant#21519499) ASC NULLS FIRST, coalesce(product#21519498, ) ASC NULLS FIRST, isnull(product#21519498) ASC NULLS FIRST], false, 0
(234) SortMergeJoin
Left keys [4]: [coalesce(plant#21517976, ), isnull(plant#21517976), coalesce(product#21517975, ), isnull(product#21517975)]
Right keys [4]: [coalesce(plant#21519499, ), isnull(plant#21519499), coalesce(product#21519498, ), isnull(product#21519498)]
Join type: LeftOuter
Join condition: None
(235) Project
Output [2]: [product#21517975, plant#21517976]
Input [4]: [product#21517975, plant#21517976, product#21519498, plant#21519499]
(236) Exchange
Input [2]: [product#21517975, plant#21517976]
Arguments: hashpartitioning(plant#21517976, 25), ENSURE_REQUIREMENTS, [plan_id=21258701]
(237) Sort
Input [2]: [product#21517975, plant#21517976]
Arguments: [plant#21517976 ASC NULLS FIRST], false, 0
(238) Scan parquet
Output [2]: [marketUnit#21519812, distributionCenters#21519818]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,SS_Test_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(239) Filter
Input [2]: [marketUnit#21519812, distributionCenters#21519818]
Condition : (((marketUnit#21519812 <=> SS_Test_1) AND (size(distributionCenters#21519818, true) > 0)) AND isnotnull(distributionCenters#21519818))
(240) Project
Output [1]: [distributionCenters#21519818]
Input [2]: [marketUnit#21519812, distributionCenters#21519818]
(241) Exchange
Input [1]: [distributionCenters#21519818]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258356]
(242) Generate
Input [1]: [distributionCenters#21519818]
Arguments: explode(distributionCenters#21519818), false, [distributionCenters#21519834]
(243) Filter
Input [1]: [distributionCenters#21519834]
Condition : (((size(distributionCenters#21519834.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#21519834.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#21519834.internalRefUUID))
(244) Project
Output [2]: [distributionCenters#21519834.internalRefUUID AS _extract_internalRefUUID#21519983, distributionCenters#21519834.storageLocations.internalRefUUID AS _extract_internalRefUUID#21520099]
Input [1]: [distributionCenters#21519834]
(245) Generate
Input [2]: [_extract_internalRefUUID#21519983, _extract_internalRefUUID#21520099]
Arguments: explode(_extract_internalRefUUID#21520099), [_extract_internalRefUUID#21519983], false, [storageLocations#21519835]
(246) Filter
Input [2]: [_extract_internalRefUUID#21519983, storageLocations#21519835]
Condition : isnotnull(storageLocations#21519835)
(247) Project
Output [2]: [_extract_internalRefUUID#21519983 AS plantUuid#21519837, storageLocations#21519835 AS storageLocUuid#21519839]
Input [2]: [_extract_internalRefUUID#21519983, storageLocations#21519835]
(248) BroadcastExchange
Input [2]: [plantUuid#21519837, storageLocUuid#21519839]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258696]
(249) Scan parquet
Output [2]: [product#21519840, plant#21519841]
Batched: true
Location: InMemoryFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000001651/shardId=0_1_10000001651]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(250) Filter
Input [2]: [product#21519840, plant#21519841]
Condition : isnotnull(plant#21519841)
(251) Exchange
Input [2]: [product#21519840, plant#21519841]
Arguments: hashpartitioning(product#21519840, plant#21519841, 25), REPARTITION_BY_NUM, [plan_id=21258496]
(252) Scan parquet
Output [4]: [plant#21519846, product#21519847, productionAspect#21519849, systemId#21519844]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-productplant]
ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspect:struct<productMovementPlants:struct<unitOfIssue:struct<internalRefUUID:string,code:string>>>>
(253) Project
Output [4]: [plant#21519846.internalRefUUID AS _extract_internalRefUUID#21520097, product#21519847.internalRefUUID AS _extract_internalRefUUID#21520094, productionAspect#21519849.productMovementPlants.unitOfIssue.code AS _extract_code#21520095, productionAspect#21519849.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#21520096]
Input [4]: [plant#21519846, product#21519847, productionAspect#21519849, systemId#21519844]
(254) Exchange
Input [4]: [_extract_internalRefUUID#21520097, _extract_internalRefUUID#21520094, _extract_code#21520095, _extract_internalRefUUID#21520096]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258369]
(255) Project
Output [4]: [_extract_code#21520095, _extract_internalRefUUID#21520096, _extract_internalRefUUID#21520094, _extract_internalRefUUID#21520097]
Input [4]: [_extract_internalRefUUID#21520097, _extract_internalRefUUID#21520094, _extract_code#21520095, _extract_internalRefUUID#21520096]
(256) BroadcastExchange
Input [4]: [_extract_code#21520095, _extract_internalRefUUID#21520096, _extract_internalRefUUID#21520094, _extract_internalRefUUID#21520097]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[2, string, true], ), isnull(input[2, string, true]), coalesce(input[3, string, true], ), isnull(input[3, string, true])),false), [plan_id=21258680]
(257) BroadcastHashJoin
Left keys [4]: [coalesce(product#21519840, ), isnull(product#21519840), coalesce(plant#21519841, ), isnull(plant#21519841)]
Right keys [4]: [coalesce(_extract_internalRefUUID#21520094, ), isnull(_extract_internalRefUUID#21520094), coalesce(_extract_internalRefUUID#21520097, ), isnull(_extract_internalRefUUID#21520097)]
Join type: LeftOuter
Join condition: None
(258) Project
Output [4]: [product#21519840, plant#21519841, _extract_code#21520095, _extract_internalRefUUID#21520096]
Input [6]: [product#21519840, plant#21519841, _extract_code#21520095, _extract_internalRefUUID#21520096, _extract_internalRefUUID#21520094, _extract_internalRefUUID#21520097]
(259) Scan parquet
Output [4]: [internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860, systemId#21519853]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-product-product-v2]
PushedFilters: [IsNotNull(internalUUID)]
ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMeasureConversions:array<struct<measurementUnit1:struct<internalRefUUID:string,code:string>,measurementUnit2:struct<internalRefUUID:string,code:string>,quantityNumerator:int,quantityDenominator:int>>>
(260) Filter
Input [4]: [internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860, systemId#21519853]
Condition : isnotnull(internalUUID#21519854)
(261) Project
Output [3]: [internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860]
Input [4]: [internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860, systemId#21519853]
(262) Exchange
Input [3]: [internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258376]
(263) BroadcastExchange
Input [3]: [internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=21258684]
(264) BroadcastHashJoin
Left keys [1]: [product#21519840]
Right keys [1]: [internalUUID#21519854]
Join type: LeftOuter
Join condition: None
(265) Project
Output [2]: [plant#21519841, filter(unitOfMeasureConversions#21519860, lambdafunction((((lambda u#21518048.measurementUnit1.code = _extract_code#21520095) AND (lambda u#21518048.measurementUnit1.internalRefUUID = _extract_internalRefUUID#21520096)) AND ((lambda u#21518048.measurementUnit2.code = baseUnitOfMeasure#21519858.code) AND (lambda u#21518048.measurementUnit2.internalRefUUID = baseUnitOfMeasure#21519858.internalRefUUID))), lambda u#21518048, false)) AS filteredUnitOfMeasureConversions#21519865]
Input [7]: [product#21519840, plant#21519841, _extract_code#21520095, _extract_internalRefUUID#21520096, internalUUID#21519854, baseUnitOfMeasure#21519858, unitOfMeasureConversions#21519860]
(266) Generate
Input [2]: [plant#21519841, filteredUnitOfMeasureConversions#21519865]
Arguments: explode(filteredUnitOfMeasureConversions#21519865.quantityNumerator), [plant#21519841, filteredUnitOfMeasureConversions#21519865], true, [quantityNumerator#21519866]
(267) Project
Output [2]: [plant#21519841, filteredUnitOfMeasureConversions#21519865.quantityDenominator AS _extract_quantityDenominator#21519985]
Input [3]: [plant#21519841, filteredUnitOfMeasureConversions#21519865, quantityNumerator#21519866]
(268) Generate
Input [2]: [plant#21519841, _extract_quantityDenominator#21519985]
Arguments: explode(_extract_quantityDenominator#21519985), [plant#21519841], true, [quantityDenominator#21519867]
(269) Project
Output [1]: [plant#21519841]
Input [2]: [plant#21519841, quantityDenominator#21519867]
(270) HashAggregate
Input [1]: [plant#21519841]
Keys [1]: [plant#21519841]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519841]
(271) Exchange
Input [1]: [plant#21519841]
Arguments: hashpartitioning(plant#21519841, 25), ENSURE_REQUIREMENTS, [plan_id=21258693]
(272) HashAggregate
Input [1]: [plant#21519841]
Keys [1]: [plant#21519841]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#21519841]
(273) BroadcastHashJoin
Left keys [1]: [plantUuid#21519837]
Right keys [1]: [plant#21519841]
Join type: Inner
Join condition: None
(274) Project
Output [2]: [plantUuid#21519837 AS plant#21519811, storageLocUuid#21519839]
Input [3]: [plantUuid#21519837, storageLocUuid#21519839, plant#21519841]
(275) Sort
Input [2]: [plant#21519811, storageLocUuid#21519839]
Arguments: [plant#21519811 ASC NULLS FIRST], false, 0
(276) SortMergeJoin
Left keys [1]: [plant#21517976]
Right keys [1]: [plant#21519811]
Join type: Inner
Join condition: None
(277) Project
Output [3]: [plant#21517976, product#21517975, storageLocUuid#21519839]
Input [4]: [product#21517975, plant#21517976, plant#21519811, storageLocUuid#21519839]
(278) Scan parquet
Output [5]: [internalUUID#21519777, id#21519778, isMarkedForDeletion#21519783, items#21519784, systemId#21519776]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-procurement-purchaseorder]
PushedFilters: [IsNotNull(isMarkedForDeletion), Not(EqualTo(isMarkedForDeletion,true)), IsNotNull(items)]
ReadSchema: struct<internalUUID:string,id:string,isMarkedForDeletion:boolean,items:array<struct<number:string,completeIndicator:boolean,returnIndicator:boolean,deletionIndicator:boolean,product:struct<internalRefUUID:string,id:string>,plant:struct<internalRefUUID:string,id:string>,storageLocation:struct<internalRefUUID:string,id:string,plant:struct<internalRefUUID:string,id:string>>,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,quantityNumerator:double,quantityDenominator:double,scheduleLines:array<struct<number:string,deliveryAt:timestamp,quantity:double,quantityUnit:struct<internalRefUUID:string,code:string>,receivedQuantity:double,deliveredQuantity:double,productAvailabilityDateTime:timestamp>>,confirmations:array<struct<number:string,confirmationCategory:struct<internalRefUUID:string,code:string>,confirmationDeliveryDate:date,confirmedDeliveryAt:timestamp,confirmedQuantity:double,mrpRelevantQuantity:double,confirmationCreationCategory:string,deletionIndicator:boolean,isRelevantForConfirmation:boolean,delivery:struct<internalRefUUID:string,id:string>,deliveryItemNumber:string>>>>>
(279) Filter
Input [5]: [internalUUID#21519777, id#21519778, isMarkedForDeletion#21519783, items#21519784, systemId#21519776]
Condition : (((isnotnull(isMarkedForDeletion#21519783) AND NOT isMarkedForDeletion#21519783) AND (size(items#21519784, true) > 0)) AND isnotnull(items#21519784))
(280) Project
Output [3]: [internalUUID#21519777, id#21519778, items#21519784]
Input [5]: [internalUUID#21519777, id#21519778, isMarkedForDeletion#21519783, items#21519784, systemId#21519776]
(281) Exchange
Input [3]: [internalUUID#21519777, id#21519778, items#21519784]
Arguments: RoundRobinPartitioning(25), REPARTITION_BY_NUM, [plan_id=21258392]
(282) Generate
Input [3]: [internalUUID#21519777, id#21519778, items#21519784]
Arguments: explode(items#21519784), [internalUUID#21519777, id#21519778], false, [item#21519788]
(283) Filter
Input [3]: [internalUUID#21519777, id#21519778, item#21519788]
Condition : ((((isnotnull(item#21519788.deletionIndicator) AND isnotnull(item#21519788.completeIndicator)) AND isnotnull(item#21519788.returnIndicator)) AND ((NOT item#21519788.deletionIndicator AND NOT item#21519788.completeIndicator) AND NOT item#21519788.returnIndicator)) AND ((isnotnull(item#21519788.product.internalRefUUID) AND isnotnull(item#21519788.plant.internalRefUUID)) AND isnotnull(item#21519788.storageLocation.internalRefUUID)))
(284) Project
Output [11]: [id#21519778, internalUUID#21519777, item#21519788.plant.internalRefUUID AS plant#21519793, item#21519788.product.internalRefUUID AS product#21519794, item#21519788.storageLocation.internalRefUUID AS storageLocUuid#21519795, item#21519788.quantityUnit.code AS quantityUom#21519796, item#21519788.quantityUnit.internalRefUUID AS quantityUomUuid#21519797, item#21519788.quantityNumerator AS quantityNumerator#21519798, item#21519788.quantityDenominator AS quantityDenominator#21519799, item#21519788.scheduleLines AS scheduleLines#21519800, item#21519788.confirmations AS confirmations#21519801]
Input [3]: [internalUUID#21519777, id#21519778, item#21519788]
(285) BroadcastExchange
Input [11]: [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, storageLocUuid#21519795, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=21258707]
(286) BroadcastHashJoin
Left keys [3]: [product#21517975, plant#21517976, storageLocUuid#21519839]
Right keys [3]: [product#21519794, plant#21519793, storageLocUuid#21519795]
Join type: Inner
Join condition: None
(287) Project
Output [11]: [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801, size(filter(confirmations#21519801, lambdafunction(((NOT lambda x_1552#21519885.deletionIndicator AND lambda x_1552#21519885.isRelevantForConfirmation) AND isnotnull(lambda x_1552#21519885.confirmedDeliveryAt)), lambda x_1552#21519885, false)), false) AS _w0#21519892]
Input [14]: [plant#21517976, product#21517975, storageLocUuid#21519839, id#21519778, internalUUID#21519777, plant#21519793, product#21519794, storageLocUuid#21519795, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801]
(288) Exchange
Input [11]: [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801, _w0#21519892]
Arguments: hashpartitioning(internalUUID#21519777, 25), ENSURE_REQUIREMENTS, [plan_id=21258711]
(289) Sort
Input [11]: [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801, _w0#21519892]
Arguments: [internalUUID#21519777 ASC NULLS FIRST], false, 0
(290) Window
Input [11]: [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801, _w0#21519892]
Arguments: [sum(_w0#21519892) windowspecdefinition(internalUUID#21519777, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#21519893L], [internalUUID#21519777]
(291) Project
Output [3]: [plant#21519793, product#21519794, filter(transform(CASE WHEN (_we0#21519893L > 0) THEN transform(filter(confirmations#21519801, lambdafunction(((NOT lambda x_1552#21519886.deletionIndicator AND lambda x_1552#21519886.isRelevantForConfirmation) AND isnotnull(lambda x_1552#21519886.confirmedDeliveryAt)), lambda x_1552#21519886, false)), lambdafunction(struct(openQty, greatest((lambda x_1553#21519889.confirmedQuantity - coalesce(lambda x_1553#21519889.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1553#21519889.confirmedDeliveryAt), lambda x_1553#21519889, false)) ELSE transform(scheduleLines#21519800, lambdafunction(struct(openQty, greatest((lambda x_1551#21519887.quantity - coalesce(lambda x_1551#21519887.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1551#21519887.deliveryAt), lambda x_1551#21519887, false)) END, lambdafunction(struct(documentId, id#21519778, documentUuid, internalUUID#21519777, openQty, lambda x_1554#21519890.openQty, openQtyInBaseUnit, ((lambda x_1554#21519890.openQty * quantityNumerator#21519798) / quantityDenominator#21519799), qtyUom, quantityUom#21519796, qtyUomUuid, quantityUomUuid#21519797, availabilityDatetime, lambda x_1554#21519890.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_1554#21519890, false)), lambdafunction(NOT (lambda x_1555#21519891.openQty = 0.0), lambda x_1555#21519891, false)) AS openGoodsMovements#21519884]
Input [12]: [id#21519778, internalUUID#21519777, plant#21519793, product#21519794, quantityUom#21519796, quantityUomUuid#21519797, quantityNumerator#21519798, quantityDenominator#21519799, scheduleLines#21519800, confirmations#21519801, _w0#21519892, _we0#21519893L]
(292) ObjectHashAggregate
Input [3]: [plant#21519793, product#21519794, openGoodsMovements#21519884]
Keys [2]: [product#21519794, plant#21519793]
Functions [1]: [partial_collect_list(openGoodsMovements#21519884, 0, 0)]
Aggregate Attributes [1]: [buf#21521418]
Results [3]: [product#21519794, plant#21519793, buf#21521419]
(293) Exchange
Input [3]: [product#21519794, plant#21519793, buf#21521419]
Arguments: hashpartitioning(product#21519794, plant#21519793, 25), ENSURE_REQUIREMENTS, [plan_id=21258717]
(294) ObjectHashAggregate
Input [3]: [product#21519794, plant#21519793, buf#21521419]
Keys [2]: [product#21519794, plant#21519793]
Functions [1]: [collect_list(openGoodsMovements#21519884, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#21519884, 0, 0)#21519909]
Results [3]: [product#21519794, plant#21519793, flatten(collect_list(openGoodsMovements#21519884, 0, 0)#21519909) AS openGoodsMovements#21519894]
(295) Filter
Input [3]: [product#21519794, plant#21519793, openGoodsMovements#21519894]
Condition : (size(openGoodsMovements#21519894, false) > 0)
(296) AdaptiveSparkPlan
Output [3]: [product#21519794, plant#21519793, openGoodsMovements#21519894]
Arguments: isFinalPlan=true
(297) TableCacheQueryStage
Output [3]: [openGoodsMovements#21519894, plant#21519793, product#21519794]
Arguments: 0
(298) Filter
Input [3]: [openGoodsMovements#21519894, plant#21519793, product#21519794]
Condition : (size(transform(openGoodsMovements#21519894, lambdafunction(struct(documentType, PO, documentId, lambda x_1560#21530392.documentId, documentUuid, lambda x_1560#21530392.documentUuid, openQty, lambda x_1560#21530392.openQty, qtyUomUuid, lambda x_1560#21530392.qtyUomUuid, qtyUom, lambda x_1560#21530392.qtyUom, plannedDeliveryDatetime, lambda x_1560#21530392.availabilityDatetime), lambda x_1560#21530392, false)), false) > 0)
(299) Project
Output [4]: [product#21519794, plant#21519793 AS location#21530388, transform(openGoodsMovements#21519894, lambdafunction(struct(documentType, PO, documentId, lambda x_1560#21530392.documentId, documentUuid, lambda x_1560#21530392.documentUuid, openQty, lambda x_1560#21530392.openQty, qtyUomUuid, lambda x_1560#21530392.qtyUomUuid, qtyUom, lambda x_1560#21530392.qtyUom, plannedDeliveryDatetime, lambda x_1560#21530392.availabilityDatetime), lambda x_1560#21530392, false)) AS documents#21530391, 10000001651 AS replenishmentRunId#21530393L]
Input [3]: [openGoodsMovements#21519894, plant#21519793, product#21519794]
(300) WriteFiles
Input [4]: [product#21519794, location#21530388, documents#21530391, replenishmentRunId#21530393L]
(301) Execute InsertIntoHadoopFsRelationCommand
Input: []
Arguments: hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/prp-op-traceability-results/raw/crp-order-quantity-kpi-service/ogr/10000001651/0_1_10000001651, false, Parquet, [path=hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/prp-op-traceability-results/raw/crp-order-quantity-kpi-service/ogr/10000001651/0_1_10000001651], Append, [product, location, documents, replenishmentRunId]
(302) ResultQueryStage
Output: []
Arguments: 1
(303) Filter
Input [3]: [openGoodsMovements#21519894, plant#21519793, product#21519794]
Condition : (size(transform(openGoodsMovements#21519894, lambdafunction(struct(documentType, PO, documentId, lambda x_1560#21530392.documentId, documentUuid, lambda x_1560#21530392.documentUuid, openQty, lambda x_1560#21530392.openQty, qtyUomUuid, lambda x_1560#21530392.qtyUomUuid, qtyUom, lambda x_1560#21530392.qtyUom, plannedDeliveryDatetime, lambda x_1560#21530392.availabilityDatetime), lambda x_1560#21530392, false)), false) > 0)
(304) Project
Output [4]: [product#21519794, plant#21519793 AS location#21530388, transform(openGoodsMovements#21519894, lambdafunction(struct(documentType, PO, documentId, lambda x_1560#21530392.documentId, documentUuid, lambda x_1560#21530392.documentUuid, openQty, lambda x_1560#21530392.openQty, qtyUomUuid, lambda x_1560#21530392.qtyUomUuid, qtyUom, lambda x_1560#21530392.qtyUom, plannedDeliveryDatetime, lambda x_1560#21530392.availabilityDatetime), lambda x_1560#21530392, false)) AS documents#21530391, 10000001651 AS replenishmentRunId#21530393L]
Input [3]: [openGoodsMovements#21519894, plant#21519793, product#21519794]
(305) WriteFiles
Input [4]: [product#21519794, location#21530388, documents#21530391, replenishmentRunId#21530393L]
(306) Execute InsertIntoHadoopFsRelationCommand
Input: []
Arguments: hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/prp-op-traceability-results/raw/crp-order-quantity-kpi-service/ogr/10000001651/0_1_10000001651, false, Parquet, [path=hdlfs://f1cc4c74-cdd4-440e-abc7-4e0157628b42.files.hdl.prod-eu20.hanacloud.ondemand.com:443/prp-op-traceability-results/raw/crp-order-quantity-kpi-service/ogr/10000001651/0_1_10000001651], Append, [product, location, documents, replenishmentRunId]
(307) AdaptiveSparkPlan
Output: []
Arguments: isFinalPlan=true