digraph G {
0 [id="node0" labelType="html" label="<br><b>AdaptiveSparkPlan</b><br><br>" tooltip="AdaptiveSparkPlan isFinalPlan=true"];
subgraph cluster1 {
isCluster="true";
id="cluster1";
label="WholeStageCodegen (1)";
tooltip="WholeStageCodegen (1)";
2 [id="node2" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project"];
}
3 [id="node3" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (size(transform(openGoodsMovements#27136, lambdafunction(struct(documentId, lambda x_20#39201.documentId, documentUuid, lambda x_20#39201.documentUuid, openQty, lambda x_20#39201.openQty, qtyUomUuid, lambda x_20#39201.qtyUomUuid, qtyUom, lambda x_20#39201.qtyUom, plannedDeliveryDatetime, lambda x_20#39201.availabilityDatetime), lambda x_20#39201, false)), false) > 0)"];
4 [id="node4" labelType="html" label="<br><b>InMemoryTableScan</b><br><br>" tooltip="InMemoryTableScan [openGoodsMovements#27136], [(size(transform(openGoodsMovements#27136, lambdafunction(struct(documentId, lambda x_20#39201.documentId, documentUuid, lambda x_20#39201.documentUuid, openQty, lambda x_20#39201.openQty, qtyUomUuid, lambda x_20#39201.qtyUomUuid, qtyUom, lambda x_20#39201.qtyUom, plannedDeliveryDatetime, lambda x_20#39201.availabilityDatetime), lambda x_20#39201, false)), false) > 0)]"];
5 [id="node5" labelType="html" label="<br><b>AdaptiveSparkPlan</b><br><br>" tooltip="AdaptiveSparkPlan isFinalPlan=true"];
6 [id="node6" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation [plan_id=159334]"];
7 [id="node7" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (size(openGoodsMovements#27136, false) > 0)"];
8 [id="node8" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Aggregate [product#26759, plant#26758], [product#26759, plant#26758, flatten(collect_list(openGoodsMovements#27126, 0, 0)) AS openGoodsMovements#27136]"];
9 [id="node9" labelType="html" label="<br><b>Aggregate</b><br><br>" tooltip="Aggregate [product#26759, plant#26758], [product#26759, plant#26758, flatten(collect_list(openGoodsMovements#27126, 0, 0)) AS openGoodsMovements#27136]"];
10 [id="node10" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Project [plant#26758, product#26759, filter(transform(CASE WHEN (_we0#27135L > 0) THEN transform(filter(confirmations#26766, lambdafunction(((NOT lambda x_12#27128.deletionIndicator AND lambda x_12#27128.isRelevantForConfirmation) AND isnotnull(lambda x_12#27128.confirmedDeliveryAt)), lambda x_12#27128, false)), lambdafunction(struct(openQty, greatest((lambda x_13#27131.confirmedQuantity - coalesce(lambda x_13#27131.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_13#27131.confirmedDeliveryAt), lambda x_13#27131, false)) ELSE transform(scheduleLines#26765, lambdafunction(struct(openQty, greatest((lambda x_11#27129.quantity - coalesce(lambda x_11#27129.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_11#27129.deliveryAt), lambda x_11#27129, false)) END, lambdafunction(struct(documentId, id#26743, documentUuid, internalUUID#26742, openQty, lambda x_14#27132.openQty, openQtyInBaseUnit, ((lambda x_14#27132.openQty * quantityNumerator#26763) / quantityDenominator#26764), qtyUom, quantityUom#26761, qtyUomUuid, quantityUomUuid#26762, availabilityDatetime, lambda x_14#27132.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_14#27132, false)), lambdafunction(NOT (lambda x_15#27133.openQty = 0.0), lambda x_15#27133, false)) AS openGoodsMovements#27126]"];
11 [id="node11" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#26758, product#26759, filter(transform(CASE WHEN (_we0#27135L > 0) THEN transform(filter(confirmations#26766, lambdafunction(((NOT lambda x_12#27128.deletionIndicator AND lambda x_12#27128.isRelevantForConfirmation) AND isnotnull(lambda x_12#27128.confirmedDeliveryAt)), lambda x_12#27128, false)), lambdafunction(struct(openQty, greatest((lambda x_13#27131.confirmedQuantity - coalesce(lambda x_13#27131.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_13#27131.confirmedDeliveryAt), lambda x_13#27131, false)) ELSE transform(scheduleLines#26765, lambdafunction(struct(openQty, greatest((lambda x_11#27129.quantity - coalesce(lambda x_11#27129.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_11#27129.deliveryAt), lambda x_11#27129, false)) END, lambdafunction(struct(documentId, id#26743, documentUuid, internalUUID#26742, openQty, lambda x_14#27132.openQty, openQtyInBaseUnit, ((lambda x_14#27132.openQty * quantityNumerator#26763) / quantityDenominator#26764), qtyUom, quantityUom#26761, qtyUomUuid, quantityUomUuid#26762, availabilityDatetime, lambda x_14#27132.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_14#27132, false)), lambdafunction(NOT (lambda x_15#27133.openQty = 0.0), lambda x_15#27133, false)) AS openGoodsMovements#27126]"];
12 [id="node12" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Window [sum(_w0#27134) windowspecdefinition(internalUUID#26742, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#27135L], [internalUUID#26742]"];
13 [id="node13" labelType="html" label="<br><b>Window</b><br><br>" tooltip="Window [sum(_w0#27134) windowspecdefinition(internalUUID#26742, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#27135L], [internalUUID#26742]"];
14 [id="node14" labelType="html" label="<br><b>LogicalQueryStage</b><br><br>" tooltip="LogicalQueryStage Project [id#26743, internalUUID#26742, plant#26758, product#26759, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, size(filter(confirmations#26766, lambdafunction(((NOT lambda x_12#27127.deletionIndicator AND lambda x_12#27127.isRelevantForConfirmation) AND isnotnull(lambda x_12#27127.confirmedDeliveryAt)), lambda x_12#27127, false)), false) AS _w0#27134], ShuffleQueryStage 109"];
15 [id="node15" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(internalUUID#26742, 10), ENSURE_REQUIREMENTS, [plan_id=159302]"];
16 [id="node16" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [id#26743, internalUUID#26742, plant#26758, product#26759, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, size(filter(confirmations#26766, lambdafunction(((NOT lambda x_12#27127.deletionIndicator AND lambda x_12#27127.isRelevantForConfirmation) AND isnotnull(lambda x_12#27127.confirmedDeliveryAt)), lambda x_12#27127, false)), false) AS _w0#27134]"];
subgraph cluster17 {
isCluster="true";
id="cluster17";
label="WholeStageCodegen (69)";
tooltip="WholeStageCodegen (69)";
18 [id="node18" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#25911, plant#25912, storageLocUuid#26804], [product#26759, plant#26758, storageLocUuid#26760], Inner, BuildRight, false"];
19 [id="node19" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#25912, product#25911, storageLocUuid#26804]"];
20 [id="node20" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plant#25912], [plant#26776], Inner, BuildLeft, false"];
237 [id="node237" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#26802 AS plant#26776, storageLocUuid#26804]"];
238 [id="node238" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#26802], [plant#26806], Inner, BuildLeft, false"];
247 [id="node247" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#26806], functions=[])"];
}
21 [id="node21" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[1, string, true]),false), [plan_id=159197]"];
22 [id="node22" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
23 [id="node23" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(plant#25912, 10), ENSURE_REQUIREMENTS, [plan_id=159091]"];
subgraph cluster24 {
isCluster="true";
id="cluster24";
label="WholeStageCodegen (68)";
tooltip="WholeStageCodegen (68)";
25 [id="node25" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#25911, plant#25912]"];
26 [id="node26" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#25912, ), isnull(plant#25912), coalesce(product#25911, ), isnull(product#25911)], [coalesce(plant#26389, ), isnull(plant#26389), coalesce(product#26388, ), isnull(product#26388)], LeftOuter, BuildRight, false"];
}
27 [id="node27" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
28 [id="node28" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(coalesce(plant#25912, ), isnull(plant#25912), coalesce(product#25911, ), isnull(product#25911), 10), ENSURE_REQUIREMENTS, [plan_id=153171]"];
subgraph cluster29 {
isCluster="true";
id="cluster29";
label="WholeStageCodegen (54)";
tooltip="WholeStageCodegen (54)";
30 [id="node30" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#25911, plant#25912]"];
31 [id="node31" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#27153), [product#25911, plant#25912], true, [quantityDenominator#25968]"];
32 [id="node32" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#25911, plant#25912, filteredUnitOfMeasureConversions#25957.quantityDenominator AS _extract_quantityDenominator#27153]"];
33 [id="node33" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#25957.quantityNumerator), [product#25911, plant#25912, filteredUnitOfMeasureConversions#25957], true, [quantityNumerator#25965]"];
}
34 [id="node34" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#25911, plant#25912, filter(unitOfMeasureConversions#25951, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27292) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27293)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#25949.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#25949.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#25957]"];
subgraph cluster35 {
isCluster="true";
id="cluster35";
label="WholeStageCodegen (53)";
tooltip="WholeStageCodegen (53)";
36 [id="node36" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#25911], [internalUUID#25945], LeftOuter, BuildRight, false"];
37 [id="node37" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#25911, plant#25912, _extract_code#27292, _extract_internalRefUUID#27293]"];
38 [id="node38" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#25912, ), isnull(plant#25912)], [coalesce(internalUUID#25929, ), isnull(internalUUID#25929)], LeftOuter, BuildRight, false"];
39 [id="node39" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#25911, plant#25912, _extract_code#27292, _extract_internalRefUUID#27293]"];
40 [id="node40" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#25911, ), isnull(product#25911), coalesce(plant#25912, ), isnull(plant#25912)], [coalesce(_extract_internalRefUUID#27291, ), isnull(_extract_internalRefUUID#27291), coalesce(_extract_internalRefUUID#27294, ), isnull(_extract_internalRefUUID#27294)], LeftOuter, BuildRight, false"];
}
41 [id="node41" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#25911, plant#25912, 10), REPARTITION_BY_NUM, [plan_id=131503]"];
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#25912) AND isnotnull(product#25911))"];
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#25911,plant#25912] Batched: true, DataFilters: [isnotnull(plant#25912), isnotnull(product#25911)], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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=134702]"];
subgraph cluster47 {
isCluster="true";
id="cluster47";
label="WholeStageCodegen (36)";
tooltip="WholeStageCodegen (36)";
48 [id="node48" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_code#27292, _extract_internalRefUUID#27293, _extract_internalRefUUID#27291, _extract_internalRefUUID#27294]"];
}
49 [id="node49" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=131519]"];
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#25918.internalRefUUID AS _extract_internalRefUUID#27294, product#25919.internalRefUUID AS _extract_internalRefUUID#27291, productionAspect#25921.productMovementPlants.unitOfIssue.code AS _extract_code#27292, productionAspect#25921.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#27293]"];
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#25918,product#25919,productionAspect#25921,systemId#25916] Batched: true, DataFilters: [], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=132853]"];
55 [id="node55" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=131538]"];
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#25929]"];
58 [id="node58" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
59 [id="node59" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#25929,systemId#25928] Batched: true, DataFilters: [], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<internalUUID:string>"];
60 [id="node60" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=135416]"];
61 [id="node61" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=131558]"];
subgraph cluster62 {
isCluster="true";
id="cluster62";
label="WholeStageCodegen (4)";
tooltip="WholeStageCodegen (4)";
63 [id="node63" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]"];
64 [id="node64" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter isnotnull(internalUUID#25945)"];
65 [id="node65" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
66 [id="node66" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#25945,baseUnitOfMeasure#25949,unitOfMeasureConversions#25951,systemId#25944] Batched: true, DataFilters: [isnotnull(internalUUID#25945)], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [IsNotNull(internalUUID)], ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMea..."];
67 [id="node67" 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=158966]"];
68 [id="node68" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
69 [id="node69" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(coalesce(plant#26389, ), isnull(plant#26389), coalesce(product#26388, ), isnull(product#26388), 10), ENSURE_REQUIREMENTS, [plan_id=158790]"];
subgraph cluster70 {
isCluster="true";
id="cluster70";
label="WholeStageCodegen (67)";
tooltip="WholeStageCodegen (67)";
71 [id="node71" 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#26388, 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#26389]"];
72 [id="node72" labelType="html" label="<br><b>MapElements</b><br><br>" tooltip="MapElements com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, obj#26383: org.apache.spark.sql.Row"];
73 [id="node73" labelType="html" label="<br><b>DeserializeToObject</b><br><br>" tooltip="DeserializeToObject createexternalrow(invoke(product#26392.toString()), invoke(plant#26393.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#26394)), if (isnull(productPlant#26404)) null else createexternalrow(invoke(productPlant#26404.systemId.toString()), invoke(productPlant#26404.internalUUID.toString()), if (isnull(productPlant#26404.plant)) null else createexternalrow(invoke(productPlant#26404.plant.internalRefUUID.toString()), invoke(productPlant#26404.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#26404.product)) null else createexternalrow(invoke(productPlant#26404.product.internalRefUUID.toString()), invoke(productPlant#26404.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#26404.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#26404.productionAspect)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#26404.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#26404.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#26404.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#26404.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#26404.salesPlant)) null else createexternalrow(if (isnull(productPlant#26404.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#26404.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#26404.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#26404.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)), invoke(timezonecode#26418.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#26435)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#26714)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#26715, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#26716, 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#26339, Some(class scala.collection.mutable.ArraySeq)), 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(timezonecode,StringType,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)), obj#26378: org.apache.spark.sql.Row"];
}
74 [id="node74" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000]#36499], functions=[collect_list(rawDemands#26338, 0, 0)])"];
75 [id="node75" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[product#26392, plant#26393, orderDateTime#26394, knownfloatingpointnormalized(if (isnull(productPlant#26404)) null else named_struct(systemId, productPlant#26404.systemId, internalUUID, productPlant#26404.internalUUID, plant, productPlant#26404.plant, product, productPlant#26404.product, blockedForReplenishmentStartingFrom, productPlant#26404.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#26404.productionAspect)) null else named_struct(productMovementPlants, productPlant#26404.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#26404.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#26404.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#26404.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#26404.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#26404.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#26404.salesPlant, listing, productPlant#26404.listing)) AS productPlant#26404, timezonecode#26418, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#26435)) AS outboundUnit#26435, stockDatetime#26714, knownfloatingpointnormalized(transform(stockBatchQuantities#26715, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#36500)), lambda arg#36500, false))) AS stockBatchQuantities#26715, [7226582400000000] AS [7226582400000000]#36499], functions=[partial_collect_list(rawDemands#26338, 0, 0)])"];
subgraph cluster76 {
isCluster="true";
id="cluster76";
label="WholeStageCodegen (66)";
tooltip="WholeStageCodegen (66)";
77 [id="node77" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, CASE WHEN isnotnull(product#26318) THEN struct(demandChannel, demandChannel#26320, demandStream, demandStream#26321, considerVariance, considerVariance#26322, demandTimeBuckets, demandTimeBuckets#26323, demandPointInTimeStart, demandPointInTimeStart#26324, demandPointInTimeEnd, demandPointInTimeEnd#26325, demandPointInTime, demandPointInTime#26326) END AS rawDemands#26338]"];
78 [id="node78" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#26392, plant#26393], [product#26318, plant#26319], LeftOuter, BuildRight, false"];
79 [id="node79" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, CASE WHEN isnotnull(minCalculationDateTime#26712) THEN minCalculationDateTime#26712 ELSE orderDateTime#26394 END AS stockDatetime#26714, CASE WHEN isnotnull(roundedQuantitySum#26713) THEN array(roundedQuantitySum#26713) ELSE [0.0] END AS stockBatchQuantities#26715]"];
80 [id="node80" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plant#26393, product#26392], [plant#26571, product#26572], LeftOuter, BuildRight, false"];
81 [id="node81" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, CASE WHEN (isnull(outboundUnit#26434) OR (outboundUnit#26434 <= 0.0)) THEN 1.0 ELSE outboundUnit#26434 END AS outboundUnit#26435]"];
82 [id="node82" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, (cast(quantityNumerator#26432 as double) / cast(quantityDenominator#26433 as double)) AS outboundUnit#26434]"];
83 [id="node83" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#27211), [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, quantityNumerator#26432], true, [quantityDenominator#26433]"];
84 [id="node84" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityNumerator#27212), [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, _extract_quantityDenominator#27211], true, [quantityNumerator#26432]"];
85 [id="node85" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filteredUnitOfMeasureConversions#26431.quantityDenominator AS _extract_quantityDenominator#27211, filteredUnitOfMeasureConversions#26431.quantityNumerator AS _extract_quantityNumerator#27212]"];
}
86 [id="node86" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filter(unitOfMeasureConversions#26426, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26424.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26424.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26431]"];
subgraph cluster87 {
isCluster="true";
id="cluster87";
label="WholeStageCodegen (65)";
tooltip="WholeStageCodegen (65)";
88 [id="node88" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#26392], [internalUUID#26420], LeftOuter, BuildRight, false"];
89 [id="node89" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, CASE WHEN isnotnull(timezonecode#26417) THEN timezonecode#26417 ELSE UTC END AS timezonecode#26418]"];
90 [id="node90" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#26393, ), isnull(plant#26393)], [coalesce(internalUUID#26406, ), isnull(internalUUID#26406)], LeftOuter, BuildRight, false"];
91 [id="node91" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#26392, ), isnull(product#26392), coalesce(plant#26393, ), isnull(plant#26393)], [coalesce(productPlant#26404.product.internalRefUUID, ), isnull(productPlant#26404.product.internalRefUUID), coalesce(productPlant#26404.plant.internalRefUUID, ), isnull(productPlant#26404.plant.internalRefUUID)], LeftOuter, BuildRight, false"];
}
92 [id="node92" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#26392, plant#26393, 10), REPARTITION_BY_NUM, [plan_id=131582]"];
subgraph cluster93 {
isCluster="true";
id="cluster93";
label="WholeStageCodegen (5)";
tooltip="WholeStageCodegen (5)";
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#26392,plant#26393,orderDateTime#26394] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>"];
96 [id="node96" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,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>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,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>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,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>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,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>>>, false].plant.internalRefUUID)),false), [plan_id=144975]"];
subgraph cluster97 {
isCluster="true";
id="cluster97";
label="WholeStageCodegen (46)";
tooltip="WholeStageCodegen (46)";
98 [id="node98" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [struct(systemId, systemId#26396, internalUUID, internalUUID#26397, plant, plant#26398, product, product#26399, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26400, productionAspect, productionAspect#26401, salesPlant, salesPlant#26402, listing, listing#26403) AS productPlant#26404]"];
}
99 [id="node99" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=131596]"];
subgraph cluster100 {
isCluster="true";
id="cluster100";
label="WholeStageCodegen (6)";
tooltip="WholeStageCodegen (6)";
101 [id="node101" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]"];
102 [id="node102" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
103 [id="node103" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#26397,plant#26398,product#26399,blockedForReplenishmentStartingFrom#26400,productionAspect#26401,salesPlant#26402,listing#26403,systemId#26396] Batched: true, DataFilters: [], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internal..."];
104 [id="node104" 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=142239]"];
105 [id="node105" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=131614]"];
subgraph cluster106 {
isCluster="true";
id="cluster106";
label="WholeStageCodegen (7)";
tooltip="WholeStageCodegen (7)";
107 [id="node107" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [internalUUID#26406, address#26412.timeZone.code AS timezonecode#26417]"];
108 [id="node108" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
109 [id="node109" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#26406,address#26412,systemId#26405] Batched: true, DataFilters: [], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>"];
110 [id="node110" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=158509]"];
subgraph cluster111 {
isCluster="true";
id="cluster111";
label="WholeStageCodegen (64)";
tooltip="WholeStageCodegen (64)";
112 [id="node112" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[product#26572, plant#26571], functions=[min(calculationDateTime#26515), sum(quantity#26524)])"];
}
113 [id="node113" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
114 [id="node114" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#26572, plant#26571, 10), ENSURE_REQUIREMENTS, [plan_id=158230]"];
subgraph cluster115 {
isCluster="true";
id="cluster115";
label="WholeStageCodegen (63)";
tooltip="WholeStageCodegen (63)";
116 [id="node116" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[product#26572, plant#26571], functions=[partial_min(calculationDateTime#26515), partial_sum(quantity#26524)])"];
117 [id="node117" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#26571, product#26572, calculationDateTime#26515, quantity#26524]"];
118 [id="node118" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#26571, ), isnull(plant#26571), coalesce(product#26572, ), isnull(product#26572), coalesce(storageLocId#26522, ), isnull(storageLocId#26522), coalesce(calculationDateTime#26515, 1970-01-01 00:00:00), isnull(calculationDateTime#26515)], [coalesce(plant#26708, ), isnull(plant#26708), coalesce(product#26709, ), isnull(product#26709), coalesce(storageLocId#26659, ), isnull(storageLocId#26659), coalesce(max_calc_datetime#26710, 1970-01-01 00:00:00), isnull(max_calc_datetime#26710)], Inner, BuildLeft, false"];
}
119 [id="node119" 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=157660]"];
120 [id="node120" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
121 [id="node121" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(coalesce(plant#26571, ), isnull(plant#26571), coalesce(product#26572, ), isnull(product#26572), coalesce(storageLocId#26522, ), isnull(storageLocId#26522), coalesce(calculationDateTime#26515, 1970-01-01 00:00:00), isnull(calculationDateTime#26515), 10), ENSURE_REQUIREMENTS, [plan_id=157323]"];
subgraph cluster122 {
isCluster="true";
id="cluster122";
label="WholeStageCodegen (62)";
tooltip="WholeStageCodegen (62)";
123 [id="node123" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#26519 AS plant#26571, productUuid#26521 AS product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524]"];
124 [id="node124" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#26519, productUuid#26521], [plant#26528, product#26527], Inner, BuildLeft, (calculationDateTime#26515 <= orderDateTime#26529), false"];
181 [id="node181" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26527, plant#26528, orderDateTime#26529]"];
182 [id="node182" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#27185), [product#26527, plant#26528, orderDateTime#26529], true, [quantityDenominator#26568]"];
183 [id="node183" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566.quantityDenominator AS _extract_quantityDenominator#27185]"];
184 [id="node184" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#26566.quantityNumerator), [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566], true, [quantityNumerator#26567]"];
}
125 [id="node125" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=156404]"];
126 [id="node126" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
127 [id="node127" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(productUuid#26521, plantUuid#26519, 10), ENSURE_REQUIREMENTS, [plan_id=154911]"];
subgraph cluster128 {
isCluster="true";
id="cluster128";
label="WholeStageCodegen (56)";
tooltip="WholeStageCodegen (56)";
129 [id="node129" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#26439.internalRefUUID AS plantUuid#26519, product#26438.internalRefUUID AS productUuid#26521, calculationDateTime#26515, stockQuantity#26517.storagelocation.id AS storageLocId#26522, stockQuantity#26517.quantity.measure AS quantity#26524]"];
130 [id="node130" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((isnotnull(stockQuantity#26517.specialStockIndicator.code) AND isnotnull(stockQuantity#26517.stockType.code)) AND (stockQuantity#26517.specialStockIndicator.code = )) AND (stockQuantity#26517.stockType.code = 01))"];
131 [id="node131" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(stockQuantities#26516), [product#26438, plant#26439, calculationDateTime#26515], false, [stockQuantity#26517]"];
132 [id="node132" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((size(stockQuantities#26516, true) > 0) AND isnotnull(calculationDateTime#26515))"];
}
133 [id="node133" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436], functions=[first(calculationDateTime#26440, false), collect_list(stockQuantity#26514, 0, 0)])"];
134 [id="node134" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436], functions=[partial_first(calculationDateTime#26440, false), partial_collect_list(stockQuantity#26514, 0, 0)])"];
135 [id="node135" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filter(stockQuantities#26441, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26469) AND (lambda x#26016.storageLocation.Id = storageLocId#26468)), lambda x#26016, false))), [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, plantUuid#26467], false, [stockQuantity#26514]"];
subgraph cluster136 {
isCluster="true";
id="cluster136";
label="WholeStageCodegen (55)";
tooltip="WholeStageCodegen (55)";
137 [id="node137" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#26439.internalRefUUID, ), isnull(plant#26439.internalRefUUID)], [coalesce(plantUuid#26467, ), isnull(plantUuid#26467)], Inner, BuildLeft, false"];
145 [id="node145" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#26467, storageLocId#26468, storageLocUuid#26469]"];
146 [id="node146" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#26467], [plant#26471], Inner, BuildLeft, false"];
160 [id="node160" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#26471], functions=[])"];
}
138 [id="node138" 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=138655]"];
139 [id="node139" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=131664]"];
subgraph cluster140 {
isCluster="true";
id="cluster140";
label="WholeStageCodegen (9)";
tooltip="WholeStageCodegen (9)";
141 [id="node141" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441]"];
142 [id="node142" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (isnotnull(plant#26439.internalRefUUID) AND isnotnull(product#26438.internalRefUUID))"];
143 [id="node143" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
144 [id="node144" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#26437,product#26438,plant#26439,calculationDateTime#26440,stockQuantities#26441,systemId#26436] Batched: true, DataFilters: [isnotnull(plant#26439.internalRefUUID), isnotnull(product#26438.internalRefUUID)], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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..."];
147 [id="node147" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=138047]"];
subgraph cluster148 {
isCluster="true";
id="cluster148";
label="WholeStageCodegen (42)";
tooltip="WholeStageCodegen (42)";
149 [id="node149" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_internalRefUUID#27179 AS plantUuid#26467, storageLocations#26465.id AS storageLocId#26468, storageLocations#26465.internalRefUUID AS storageLocUuid#26469]"];
150 [id="node150" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_storageLocations#27180), [_extract_internalRefUUID#27179], false, [storageLocations#26465]"];
151 [id="node151" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#26464.internalRefUUID AS _extract_internalRefUUID#27179, distributionCenters#26464.storageLocations AS _extract_storageLocations#27180]"];
152 [id="node152" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((size(distributionCenters#26464.storageLocations, true) > 0) AND isnotnull(distributionCenters#26464.storageLocations)) AND isnotnull(distributionCenters#26464.internalRefUUID))"];
153 [id="node153" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(distributionCenters#26448), false, [distributionCenters#26464]"];
}
154 [id="node154" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=131684]"];
subgraph cluster155 {
isCluster="true";
id="cluster155";
label="WholeStageCodegen (10)";
tooltip="WholeStageCodegen (10)";
156 [id="node156" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#26448]"];
157 [id="node157" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((marketUnit#26442 <=> DIP_1691) AND (size(distributionCenters#26448, true) > 0)) AND isnotnull(distributionCenters#26448))"];
158 [id="node158" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
159 [id="node159" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [marketUnit#26442,distributionCenters#26448] Batched: true, DataFilters: [(marketUnit#26442 <=> DIP_1691), (size(distributionCenters#26448, true) > 0), isnotnull(distribu..., Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)], ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storag..."];
161 [id="node161" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
162 [id="node162" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(plant#26471, 10), ENSURE_REQUIREMENTS, [plan_id=149258]"];
subgraph cluster163 {
isCluster="true";
id="cluster163";
label="WholeStageCodegen (48)";
tooltip="WholeStageCodegen (48)";
164 [id="node164" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#26471], functions=[])"];
165 [id="node165" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#26471]"];
166 [id="node166" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#27181), [plant#26471], true, [quantityDenominator#26511]"];
167 [id="node167" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#26471, filteredUnitOfMeasureConversions#26509.quantityDenominator AS _extract_quantityDenominator#27181]"];
168 [id="node168" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#26509.quantityNumerator), [plant#26471, filteredUnitOfMeasureConversions#26509], true, [quantityNumerator#26510]"];
}
169 [id="node169" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#26471, filter(unitOfMeasureConversions#26504, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27295) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27296)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26502.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26502.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26509]"];
subgraph cluster170 {
isCluster="true";
id="cluster170";
label="WholeStageCodegen (47)";
tooltip="WholeStageCodegen (47)";
171 [id="node171" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#26470], [internalUUID#26498], LeftOuter, BuildRight, false"];
172 [id="node172" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26470, plant#26471, _extract_code#27295, _extract_internalRefUUID#27296]"];
173 [id="node173" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#26471, ), isnull(plant#26471)], [coalesce(internalUUID#26484, ), isnull(internalUUID#26484)], LeftOuter, BuildRight, false"];
174 [id="node174" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26470, plant#26471, _extract_code#27295, _extract_internalRefUUID#27296]"];
175 [id="node175" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#26470, ), isnull(product#26470), coalesce(plant#26471, ), isnull(plant#26471)], [coalesce(_extract_internalRefUUID#27298, ), isnull(_extract_internalRefUUID#27298), coalesce(_extract_internalRefUUID#27297, ), isnull(_extract_internalRefUUID#27297)], LeftOuter, BuildRight, false"];
}
176 [id="node176" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#26470, plant#26471, 10), REPARTITION_BY_NUM, [plan_id=131707]"];
subgraph cluster177 {
isCluster="true";
id="cluster177";
label="WholeStageCodegen (11)";
tooltip="WholeStageCodegen (11)";
178 [id="node178" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter isnotnull(plant#26471)"];
179 [id="node179" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
180 [id="node180" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [product#26470,plant#26471] Batched: true, DataFilters: [isnotnull(plant#26471)], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [IsNotNull(plant)], ReadSchema: struct<product:string,plant:string>"];
185 [id="node185" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26527, plant#26528, orderDateTime#26529, filter(unitOfMeasureConversions#26561, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27301) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27302)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26559.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26559.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26566]"];
subgraph cluster186 {
isCluster="true";
id="cluster186";
label="WholeStageCodegen (61)";
tooltip="WholeStageCodegen (61)";
187 [id="node187" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#26527], [internalUUID#26555], LeftOuter, BuildRight, false"];
188 [id="node188" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26527, plant#26528, orderDateTime#26529, _extract_code#27301, _extract_internalRefUUID#27302]"];
189 [id="node189" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#26528, ), isnull(plant#26528)], [coalesce(internalUUID#26541, ), isnull(internalUUID#26541)], LeftOuter, BuildRight, false"];
190 [id="node190" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26527, plant#26528, orderDateTime#26529, _extract_code#27301, _extract_internalRefUUID#27302]"];
191 [id="node191" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#26527, ), isnull(product#26527), coalesce(plant#26528, ), isnull(plant#26528)], [coalesce(_extract_internalRefUUID#27300, ), isnull(_extract_internalRefUUID#27300), coalesce(_extract_internalRefUUID#27299, ), isnull(_extract_internalRefUUID#27299)], LeftOuter, BuildRight, false"];
}
192 [id="node192" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#26527, plant#26528, 10), REPARTITION_BY_NUM, [plan_id=131807]"];
subgraph cluster193 {
isCluster="true";
id="cluster193";
label="WholeStageCodegen (15)";
tooltip="WholeStageCodegen (15)";
194 [id="node194" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((isnotnull(orderDateTime#26529) AND isnotnull(plant#26528)) AND isnotnull(product#26527))"];
195 [id="node195" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
196 [id="node196" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [product#26527,plant#26528,orderDateTime#26529] Batched: true, DataFilters: [isnotnull(orderDateTime#26529), isnotnull(plant#26528), isnotnull(product#26527)], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)], ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>"];
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(coalesce(plant#26708, ), isnull(plant#26708), coalesce(product#26709, ), isnull(product#26709), coalesce(storageLocId#26659, ), isnull(storageLocId#26659), coalesce(max_calc_datetime#26710, 1970-01-01 00:00:00), isnull(max_calc_datetime#26710), 10), ENSURE_REQUIREMENTS, [plan_id=156888]"];
subgraph cluster199 {
isCluster="true";
id="cluster199";
label="WholeStageCodegen (60)";
tooltip="WholeStageCodegen (60)";
200 [id="node200" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#26708, product#26709, storageLocId#26659], functions=[max(calculationDateTime#26652)])"];
201 [id="node201" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#26708, product#26709, storageLocId#26659], functions=[partial_max(calculationDateTime#26652)])"];
202 [id="node202" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#26656 AS plant#26708, productUuid#26658 AS product#26709, storageLocId#26659, calculationDateTime#26652]"];
203 [id="node203" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#26656, productUuid#26658], [plant#26665, product#26664], Inner, BuildLeft, (calculationDateTime#26652 <= orderDateTime#26666), false"];
221 [id="node221" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26664, plant#26665, orderDateTime#26666]"];
222 [id="node222" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#27195), [product#26664, plant#26665, orderDateTime#26666], true, [quantityDenominator#26705]"];
223 [id="node223" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703.quantityDenominator AS _extract_quantityDenominator#27195]"];
224 [id="node224" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#26703.quantityNumerator), [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703], true, [quantityNumerator#26704]"];
}
204 [id="node204" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=155933]"];
205 [id="node205" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
206 [id="node206" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(productUuid#26658, plantUuid#26656, 10), ENSURE_REQUIREMENTS, [plan_id=154979]"];
subgraph cluster207 {
isCluster="true";
id="cluster207";
label="WholeStageCodegen (58)";
tooltip="WholeStageCodegen (58)";
208 [id="node208" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#26576.internalRefUUID AS plantUuid#26656, product#26575.internalRefUUID AS productUuid#26658, calculationDateTime#26652, stockQuantity#26654.storagelocation.id AS storageLocId#26659]"];
209 [id="node209" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((isnotnull(stockQuantity#26654.specialStockIndicator.code) AND isnotnull(stockQuantity#26654.stockType.code)) AND (stockQuantity#26654.specialStockIndicator.code = )) AND (stockQuantity#26654.stockType.code = 01))"];
210 [id="node210" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(stockQuantities#26653), [product#26575, plant#26576, calculationDateTime#26652], false, [stockQuantity#26654]"];
211 [id="node211" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((size(stockQuantities#26653, true) > 0) AND isnotnull(calculationDateTime#26652))"];
}
212 [id="node212" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573], functions=[first(calculationDateTime#26577, false), collect_list(stockQuantity#26651, 0, 0)])"];
213 [id="node213" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573], functions=[partial_first(calculationDateTime#26577, false), partial_collect_list(stockQuantity#26651, 0, 0)])"];
214 [id="node214" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filter(stockQuantities#26578, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26606) AND (lambda x#26016.storageLocation.Id = storageLocId#26605)), lambda x#26016, false))), [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, plantUuid#26604], false, [stockQuantity#26651]"];
subgraph cluster215 {
isCluster="true";
id="cluster215";
label="WholeStageCodegen (57)";
tooltip="WholeStageCodegen (57)";
216 [id="node216" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#26576.internalRefUUID, ), isnull(plant#26576.internalRefUUID)], [coalesce(plantUuid#26604, ), isnull(plantUuid#26604)], Inner, BuildLeft, false"];
217 [id="node217" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#26604, storageLocId#26605, storageLocUuid#26606]"];
218 [id="node218" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#26604], [plant#26608], Inner, BuildLeft, false"];
219 [id="node219" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#26608], functions=[])"];
}
220 [id="node220" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
225 [id="node225" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26664, plant#26665, orderDateTime#26666, filter(unitOfMeasureConversions#26698, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27307) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27308)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26696.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26696.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26703]"];
subgraph cluster226 {
isCluster="true";
id="cluster226";
label="WholeStageCodegen (59)";
tooltip="WholeStageCodegen (59)";
227 [id="node227" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#26664], [internalUUID#26692], LeftOuter, BuildRight, false"];
228 [id="node228" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26664, plant#26665, orderDateTime#26666, _extract_code#27307, _extract_internalRefUUID#27308]"];
229 [id="node229" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#26665, ), isnull(plant#26665)], [coalesce(internalUUID#26678, ), isnull(internalUUID#26678)], LeftOuter, BuildRight, false"];
230 [id="node230" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#26664, plant#26665, orderDateTime#26666, _extract_code#27307, _extract_internalRefUUID#27308]"];
231 [id="node231" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#26664, ), isnull(product#26664), coalesce(plant#26665, ), isnull(plant#26665)], [coalesce(_extract_internalRefUUID#27310, ), isnull(_extract_internalRefUUID#27310), coalesce(_extract_internalRefUUID#27309, ), isnull(_extract_internalRefUUID#27309)], LeftOuter, BuildRight, false"];
}
232 [id="node232" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=132150]"];
subgraph cluster233 {
isCluster="true";
id="cluster233";
label="WholeStageCodegen (29)";
tooltip="WholeStageCodegen (29)";
234 [id="node234" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (isnotnull(product#26318) AND isnotnull(plant#26319))"];
235 [id="node235" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
236 [id="node236" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [product#26318,plant#26319,demandChannel#26320,demandStream#26321,considerVariance#26322,demandTimeBuckets#26323,demandPointInTimeStart#26324,demandPointInTimeEnd#26325,demandPointInTime#26326] Batched: true, DataFilters: [isnotnull(product#26318), isnotnull(plant#26319)], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [IsNotNull(product), IsNotNull(plant)], ReadSchema: struct<product:string,plant:string,demandChannel:string,demandStream:string,considerVariance:bool..."];
239 [id="node239" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=138149]"];
subgraph cluster240 {
isCluster="true";
id="cluster240";
label="WholeStageCodegen (44)";
tooltip="WholeStageCodegen (44)";
241 [id="node241" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_internalRefUUID#27199 AS plantUuid#26802, storageLocations#26800 AS storageLocUuid#26804]"];
242 [id="node242" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter isnotnull(storageLocations#26800)"];
243 [id="node243" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_internalRefUUID#27312), [_extract_internalRefUUID#27199], false, [storageLocations#26800]"];
244 [id="node244" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#26799.internalRefUUID AS _extract_internalRefUUID#27199, distributionCenters#26799.storageLocations.internalRefUUID AS _extract_internalRefUUID#27312]"];
245 [id="node245" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((size(distributionCenters#26799.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#26799.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#26799.internalRefUUID))"];
246 [id="node246" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(distributionCenters#26783), false, [distributionCenters#26799]"];
}
248 [id="node248" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
249 [id="node249" 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=140904]"];
subgraph cluster250 {
isCluster="true";
id="cluster250";
label="WholeStageCodegen (45)";
tooltip="WholeStageCodegen (45)";
251 [id="node251" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [id#26743, internalUUID#26742, item#26753.plant.internalRefUUID AS plant#26758, item#26753.product.internalRefUUID AS product#26759, item#26753.storageLocation.internalRefUUID AS storageLocUuid#26760, item#26753.quantityUnit.code AS quantityUom#26761, item#26753.quantityUnit.internalRefUUID AS quantityUomUuid#26762, item#26753.quantityNumerator AS quantityNumerator#26763, item#26753.quantityDenominator AS quantityDenominator#26764, item#26753.scheduleLines AS scheduleLines#26765, item#26753.confirmations AS confirmations#26766]"];
252 [id="node252" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((((isnotnull(item#26753.deletionIndicator) AND isnotnull(item#26753.completeIndicator)) AND isnotnull(item#26753.returnIndicator)) AND ((NOT item#26753.deletionIndicator AND NOT item#26753.completeIndicator) AND NOT item#26753.returnIndicator)) AND ((isnotnull(item#26753.product.internalRefUUID) AND isnotnull(item#26753.plant.internalRefUUID)) AND isnotnull(item#26753.storageLocation.internalRefUUID)))"];
253 [id="node253" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(items#26749), [internalUUID#26742, id#26743], false, [item#26753]"];
}
254 [id="node254" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=132303]"];
subgraph cluster255 {
isCluster="true";
id="cluster255";
label="WholeStageCodegen (35)";
tooltip="WholeStageCodegen (35)";
256 [id="node256" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [internalUUID#26742, id#26743, items#26749]"];
257 [id="node257" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((isnotnull(isMarkedForDeletion#26748) AND NOT isMarkedForDeletion#26748) AND (size(items#26749, true) > 0)) AND isnotnull(items#26749))"];
258 [id="node258" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
259 [id="node259" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#26742,id#26743,isMarkedForDeletion#26748,items#26749,systemId#26741] Batched: true, DataFilters: [isnotnull(isMarkedForDeletion#26748), NOT isMarkedForDeletion#26748, (size(items#26749, true) > ..., Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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..."];
2->0;
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;
18->16;
19->18;
20->19;
21->20;
22->21;
23->22;
25->23;
26->25;
27->26;
28->27;
30->28;
31->30;
32->31;
33->32;
34->33;
36->34;
37->36;
38->37;
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->36;
61->60;
63->61;
64->63;
65->64;
66->65;
67->26;
68->67;
69->68;
71->69;
72->71;
73->72;
74->73;
75->74;
77->75;
78->77;
79->78;
80->79;
81->80;
82->81;
83->82;
84->83;
85->84;
86->85;
88->86;
89->88;
90->89;
91->90;
92->91;
94->92;
95->94;
96->91;
98->96;
99->98;
101->99;
102->101;
103->102;
104->90;
105->104;
107->105;
108->107;
109->108;
60->88;
110->80;
112->110;
113->112;
114->113;
116->114;
117->116;
118->117;
119->118;
120->119;
121->120;
123->121;
124->123;
125->124;
126->125;
127->126;
129->127;
130->129;
131->130;
132->131;
133->132;
134->133;
135->134;
137->135;
138->137;
139->138;
141->139;
142->141;
143->142;
144->143;
145->137;
146->145;
147->146;
149->147;
150->149;
151->150;
152->151;
153->152;
154->153;
156->154;
157->156;
158->157;
159->158;
160->146;
161->160;
162->161;
164->162;
165->164;
166->165;
167->166;
168->167;
169->168;
171->169;
172->171;
173->172;
174->173;
175->174;
176->175;
178->176;
179->178;
180->179;
46->175;
54->173;
60->171;
181->124;
182->181;
183->182;
184->183;
185->184;
187->185;
188->187;
189->188;
190->189;
191->190;
192->191;
194->192;
195->194;
196->195;
46->191;
54->189;
60->187;
197->118;
198->197;
200->198;
201->200;
202->201;
203->202;
204->203;
205->204;
206->205;
208->206;
209->208;
210->209;
211->210;
212->211;
213->212;
214->213;
216->214;
138->216;
217->216;
218->217;
147->218;
219->218;
220->219;
162->220;
221->203;
222->221;
223->222;
224->223;
225->224;
227->225;
228->227;
229->228;
230->229;
231->230;
192->231;
46->231;
54->229;
60->227;
232->78;
234->232;
235->234;
236->235;
237->20;
238->237;
239->238;
241->239;
242->241;
243->242;
244->243;
245->244;
246->245;
154->246;
247->238;
248->247;
162->248;
249->18;
251->249;
252->251;
253->252;
254->253;
256->254;
257->256;
258->257;
259->258;
}
== Physical Plan ==
AdaptiveSparkPlan (337)
+- == Final Plan ==
ResultQueryStage (333), Statistics(sizeInBytes=8.0 EiB)
+- * Project (332)
+- Filter (331)
+- TableCacheQueryStage (330), Statistics(sizeInBytes=0.0 B, rowCount=0)
+- InMemoryTableScan (1)
+- InMemoryRelation (2)
+- AdaptiveSparkPlan (329)
+- == Final Plan ==
ResultQueryStage (4)
+- EmptyRelation (3)
+- Filter (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
Filter (328)
+- ObjectHashAggregate (327)
+- Exchange (326)
+- ObjectHashAggregate (325)
+- Project (324)
+- Window (323)
+- Sort (322)
+- Exchange (321)
+- Project (320)
+- BroadcastHashJoin Inner BuildRight (319)
:- Project (310)
: +- SortMergeJoin Inner (309)
: :- Sort (264)
: : +- Exchange (263)
: : +- Project (262)
: : +- SortMergeJoin LeftOuter (261)
: : :- Sort (33)
: : : +- Exchange (32)
: : : +- Project (31)
: : : +- Generate (30)
: : : +- Project (29)
: : : +- Generate (28)
: : : +- Project (27)
: : : +- BroadcastHashJoin LeftOuter BuildRight (26)
: : : :- Project (20)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (19)
: : : : :- 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 (18)
: : : : +- Exchange (17)
: : : : +- Project (16)
: : : : +- Scan parquet (15)
: : : +- BroadcastExchange (25)
: : : +- Exchange (24)
: : : +- Project (23)
: : : +- Filter (22)
: : : +- Scan parquet (21)
: : +- Sort (260)
: : +- Exchange (259)
: : +- SerializeFromObject (258)
: : +- MapElements (257)
: : +- DeserializeToObject (256)
: : +- ObjectHashAggregate (255)
: : +- ObjectHashAggregate (254)
: : +- Project (253)
: : +- BroadcastHashJoin LeftOuter BuildRight (252)
: : :- Project (248)
: : : +- SortMergeJoin LeftOuter (247)
: : : :- Sort (60)
: : : : +- Project (59)
: : : : +- Project (58)
: : : : +- Generate (57)
: : : : +- Generate (56)
: : : : +- Project (55)
: : : : +- Project (54)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (53)
: : : : :- Project (47)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (46)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (41)
: : : : : : :- Exchange (35)
: : : : : : : +- Scan parquet (34)
: : : : : : +- BroadcastExchange (40)
: : : : : : +- Project (39)
: : : : : : +- Exchange (38)
: : : : : : +- Project (37)
: : : : : : +- Scan parquet (36)
: : : : : +- BroadcastExchange (45)
: : : : : +- Exchange (44)
: : : : : +- Project (43)
: : : : : +- Scan parquet (42)
: : : : +- BroadcastExchange (52)
: : : : +- Exchange (51)
: : : : +- Project (50)
: : : : +- Filter (49)
: : : : +- Scan parquet (48)
: : : +- Sort (246)
: : : +- HashAggregate (245)
: : : +- Exchange (244)
: : : +- HashAggregate (243)
: : : +- Project (242)
: : : +- SortMergeJoin Inner (241)
: : : :- Sort (149)
: : : : +- Exchange (148)
: : : : +- Project (147)
: : : : +- SortMergeJoin Inner (146)
: : : : :- Sort (117)
: : : : : +- Exchange (116)
: : : : : +- Project (115)
: : : : : +- Filter (114)
: : : : : +- Generate (113)
: : : : : +- Filter (112)
: : : : : +- ObjectHashAggregate (111)
: : : : : +- ObjectHashAggregate (110)
: : : : : +- Generate (109)
: : : : : +- BroadcastHashJoin Inner BuildLeft (108)
: : : : : :- BroadcastExchange (65)
: : : : : : +- Exchange (64)
: : : : : : +- Project (63)
: : : : : : +- Filter (62)
: : : : : : +- Scan parquet (61)
: : : : : +- Project (107)
: : : : : +- BroadcastHashJoin Inner BuildLeft (106)
: : : : : :- BroadcastExchange (75)
: : : : : : +- Project (74)
: : : : : : +- Generate (73)
: : : : : : +- Project (72)
: : : : : : +- Filter (71)
: : : : : : +- Generate (70)
: : : : : : +- Exchange (69)
: : : : : : +- Project (68)
: : : : : : +- Filter (67)
: : : : : : +- Scan parquet (66)
: : : : : +- HashAggregate (105)
: : : : : +- Exchange (104)
: : : : : +- HashAggregate (103)
: : : : : +- Project (102)
: : : : : +- Generate (101)
: : : : : +- Project (100)
: : : : : +- Generate (99)
: : : : : +- Project (98)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (97)
: : : : : :- Project (91)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (90)
: : : : : : :- Project (85)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (84)
: : : : : : : :- Exchange (78)
: : : : : : : : +- Filter (77)
: : : : : : : : +- Scan parquet (76)
: : : : : : : +- BroadcastExchange (83)
: : : : : : : +- Project (82)
: : : : : : : +- Exchange (81)
: : : : : : : +- Project (80)
: : : : : : : +- Scan parquet (79)
: : : : : : +- BroadcastExchange (89)
: : : : : : +- Exchange (88)
: : : : : : +- Project (87)
: : : : : : +- Scan parquet (86)
: : : : : +- BroadcastExchange (96)
: : : : : +- Exchange (95)
: : : : : +- Project (94)
: : : : : +- Filter (93)
: : : : : +- Scan parquet (92)
: : : : +- Sort (145)
: : : : +- Project (144)
: : : : +- Generate (143)
: : : : +- Project (142)
: : : : +- Generate (141)
: : : : +- Project (140)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (139)
: : : : :- Project (133)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (132)
: : : : : :- Project (127)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (126)
: : : : : : :- Exchange (120)
: : : : : : : +- Filter (119)
: : : : : : : +- Scan parquet (118)
: : : : : : +- BroadcastExchange (125)
: : : : : : +- Project (124)
: : : : : : +- Exchange (123)
: : : : : : +- Project (122)
: : : : : : +- Scan parquet (121)
: : : : : +- BroadcastExchange (131)
: : : : : +- Exchange (130)
: : : : : +- Project (129)
: : : : : +- Scan parquet (128)
: : : : +- BroadcastExchange (138)
: : : : +- Exchange (137)
: : : : +- Project (136)
: : : : +- Filter (135)
: : : : +- Scan parquet (134)
: : : +- Sort (240)
: : : +- Exchange (239)
: : : +- HashAggregate (238)
: : : +- HashAggregate (237)
: : : +- Project (236)
: : : +- SortMergeJoin Inner (235)
: : : :- Sort (206)
: : : : +- Exchange (205)
: : : : +- Project (204)
: : : : +- Filter (203)
: : : : +- Generate (202)
: : : : +- Filter (201)
: : : : +- ObjectHashAggregate (200)
: : : : +- ObjectHashAggregate (199)
: : : : +- Generate (198)
: : : : +- BroadcastHashJoin Inner BuildLeft (197)
: : : : :- BroadcastExchange (154)
: : : : : +- Exchange (153)
: : : : : +- Project (152)
: : : : : +- Filter (151)
: : : : : +- Scan parquet (150)
: : : : +- Project (196)
: : : : +- BroadcastHashJoin Inner BuildLeft (195)
: : : : :- BroadcastExchange (164)
: : : : : +- Project (163)
: : : : : +- Generate (162)
: : : : : +- Project (161)
: : : : : +- Filter (160)
: : : : : +- Generate (159)
: : : : : +- Exchange (158)
: : : : : +- Project (157)
: : : : : +- Filter (156)
: : : : : +- Scan parquet (155)
: : : : +- HashAggregate (194)
: : : : +- Exchange (193)
: : : : +- HashAggregate (192)
: : : : +- Project (191)
: : : : +- Generate (190)
: : : : +- Project (189)
: : : : +- Generate (188)
: : : : +- Project (187)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (186)
: : : : :- Project (180)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (179)
: : : : : :- Project (174)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (173)
: : : : : : :- Exchange (167)
: : : : : : : +- Filter (166)
: : : : : : : +- Scan parquet (165)
: : : : : : +- BroadcastExchange (172)
: : : : : : +- Project (171)
: : : : : : +- Exchange (170)
: : : : : : +- Project (169)
: : : : : : +- Scan parquet (168)
: : : : : +- BroadcastExchange (178)
: : : : : +- Exchange (177)
: : : : : +- Project (176)
: : : : : +- Scan parquet (175)
: : : : +- BroadcastExchange (185)
: : : : +- Exchange (184)
: : : : +- Project (183)
: : : : +- Filter (182)
: : : : +- Scan parquet (181)
: : : +- Sort (234)
: : : +- Project (233)
: : : +- Generate (232)
: : : +- Project (231)
: : : +- Generate (230)
: : : +- Project (229)
: : : +- BroadcastHashJoin LeftOuter BuildRight (228)
: : : :- Project (222)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (221)
: : : : :- Project (216)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (215)
: : : : : :- Exchange (209)
: : : : : : +- Filter (208)
: : : : : : +- Scan parquet (207)
: : : : : +- BroadcastExchange (214)
: : : : : +- Project (213)
: : : : : +- Exchange (212)
: : : : : +- Project (211)
: : : : : +- Scan parquet (210)
: : : : +- BroadcastExchange (220)
: : : : +- Exchange (219)
: : : : +- Project (218)
: : : : +- Scan parquet (217)
: : : +- BroadcastExchange (227)
: : : +- Exchange (226)
: : : +- Project (225)
: : : +- Filter (224)
: : : +- Scan parquet (223)
: : +- BroadcastExchange (251)
: : +- Filter (250)
: : +- Scan parquet (249)
: +- Sort (308)
: +- Project (307)
: +- BroadcastHashJoin Inner BuildLeft (306)
: :- BroadcastExchange (275)
: : +- Project (274)
: : +- Filter (273)
: : +- Generate (272)
: : +- Project (271)
: : +- Filter (270)
: : +- Generate (269)
: : +- Exchange (268)
: : +- Project (267)
: : +- Filter (266)
: : +- Scan parquet (265)
: +- HashAggregate (305)
: +- Exchange (304)
: +- HashAggregate (303)
: +- Project (302)
: +- Generate (301)
: +- Project (300)
: +- Generate (299)
: +- Project (298)
: +- BroadcastHashJoin LeftOuter BuildRight (297)
: :- Project (291)
: : +- BroadcastHashJoin LeftOuter BuildRight (290)
: : :- Project (285)
: : : +- BroadcastHashJoin LeftOuter BuildRight (284)
: : : :- Exchange (278)
: : : : +- Filter (277)
: : : : +- Scan parquet (276)
: : : +- BroadcastExchange (283)
: : : +- Project (282)
: : : +- Exchange (281)
: : : +- Project (280)
: : : +- Scan parquet (279)
: : +- BroadcastExchange (289)
: : +- Exchange (288)
: : +- Project (287)
: : +- Scan parquet (286)
: +- BroadcastExchange (296)
: +- Exchange (295)
: +- Project (294)
: +- Filter (293)
: +- Scan parquet (292)
+- BroadcastExchange (318)
+- Project (317)
+- Filter (316)
+- Generate (315)
+- Exchange (314)
+- Project (313)
+- Filter (312)
+- Scan parquet (311)
+- == Initial Plan ==
CollectLimit (336)
+- Project (335)
+- Filter (334)
+- InMemoryTableScan (1)
+- InMemoryRelation (2)
+- AdaptiveSparkPlan (329)
+- == Final Plan ==
ResultQueryStage (4)
+- EmptyRelation (3)
+- Filter (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
Filter (328)
+- ObjectHashAggregate (327)
+- Exchange (326)
+- ObjectHashAggregate (325)
+- Project (324)
+- Window (323)
+- Sort (322)
+- Exchange (321)
+- Project (320)
+- BroadcastHashJoin Inner BuildRight (319)
:- Project (310)
: +- SortMergeJoin Inner (309)
: :- Sort (264)
: : +- Exchange (263)
: : +- Project (262)
: : +- SortMergeJoin LeftOuter (261)
: : :- Sort (33)
: : : +- Exchange (32)
: : : +- Project (31)
: : : +- Generate (30)
: : : +- Project (29)
: : : +- Generate (28)
: : : +- Project (27)
: : : +- BroadcastHashJoin LeftOuter BuildRight (26)
: : : :- Project (20)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (19)
: : : : :- 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 (18)
: : : : +- Exchange (17)
: : : : +- Project (16)
: : : : +- Scan parquet (15)
: : : +- BroadcastExchange (25)
: : : +- Exchange (24)
: : : +- Project (23)
: : : +- Filter (22)
: : : +- Scan parquet (21)
: : +- Sort (260)
: : +- Exchange (259)
: : +- SerializeFromObject (258)
: : +- MapElements (257)
: : +- DeserializeToObject (256)
: : +- ObjectHashAggregate (255)
: : +- ObjectHashAggregate (254)
: : +- Project (253)
: : +- BroadcastHashJoin LeftOuter BuildRight (252)
: : :- Project (248)
: : : +- SortMergeJoin LeftOuter (247)
: : : :- Sort (60)
: : : : +- Project (59)
: : : : +- Project (58)
: : : : +- Generate (57)
: : : : +- Generate (56)
: : : : +- Project (55)
: : : : +- Project (54)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (53)
: : : : :- Project (47)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (46)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (41)
: : : : : : :- Exchange (35)
: : : : : : : +- Scan parquet (34)
: : : : : : +- BroadcastExchange (40)
: : : : : : +- Project (39)
: : : : : : +- Exchange (38)
: : : : : : +- Project (37)
: : : : : : +- Scan parquet (36)
: : : : : +- BroadcastExchange (45)
: : : : : +- Exchange (44)
: : : : : +- Project (43)
: : : : : +- Scan parquet (42)
: : : : +- BroadcastExchange (52)
: : : : +- Exchange (51)
: : : : +- Project (50)
: : : : +- Filter (49)
: : : : +- Scan parquet (48)
: : : +- Sort (246)
: : : +- HashAggregate (245)
: : : +- Exchange (244)
: : : +- HashAggregate (243)
: : : +- Project (242)
: : : +- SortMergeJoin Inner (241)
: : : :- Sort (149)
: : : : +- Exchange (148)
: : : : +- Project (147)
: : : : +- SortMergeJoin Inner (146)
: : : : :- Sort (117)
: : : : : +- Exchange (116)
: : : : : +- Project (115)
: : : : : +- Filter (114)
: : : : : +- Generate (113)
: : : : : +- Filter (112)
: : : : : +- ObjectHashAggregate (111)
: : : : : +- ObjectHashAggregate (110)
: : : : : +- Generate (109)
: : : : : +- BroadcastHashJoin Inner BuildLeft (108)
: : : : : :- BroadcastExchange (65)
: : : : : : +- Exchange (64)
: : : : : : +- Project (63)
: : : : : : +- Filter (62)
: : : : : : +- Scan parquet (61)
: : : : : +- Project (107)
: : : : : +- BroadcastHashJoin Inner BuildLeft (106)
: : : : : :- BroadcastExchange (75)
: : : : : : +- Project (74)
: : : : : : +- Generate (73)
: : : : : : +- Project (72)
: : : : : : +- Filter (71)
: : : : : : +- Generate (70)
: : : : : : +- Exchange (69)
: : : : : : +- Project (68)
: : : : : : +- Filter (67)
: : : : : : +- Scan parquet (66)
: : : : : +- HashAggregate (105)
: : : : : +- Exchange (104)
: : : : : +- HashAggregate (103)
: : : : : +- Project (102)
: : : : : +- Generate (101)
: : : : : +- Project (100)
: : : : : +- Generate (99)
: : : : : +- Project (98)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (97)
: : : : : :- Project (91)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (90)
: : : : : : :- Project (85)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (84)
: : : : : : : :- Exchange (78)
: : : : : : : : +- Filter (77)
: : : : : : : : +- Scan parquet (76)
: : : : : : : +- BroadcastExchange (83)
: : : : : : : +- Project (82)
: : : : : : : +- Exchange (81)
: : : : : : : +- Project (80)
: : : : : : : +- Scan parquet (79)
: : : : : : +- BroadcastExchange (89)
: : : : : : +- Exchange (88)
: : : : : : +- Project (87)
: : : : : : +- Scan parquet (86)
: : : : : +- BroadcastExchange (96)
: : : : : +- Exchange (95)
: : : : : +- Project (94)
: : : : : +- Filter (93)
: : : : : +- Scan parquet (92)
: : : : +- Sort (145)
: : : : +- Project (144)
: : : : +- Generate (143)
: : : : +- Project (142)
: : : : +- Generate (141)
: : : : +- Project (140)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (139)
: : : : :- Project (133)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (132)
: : : : : :- Project (127)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (126)
: : : : : : :- Exchange (120)
: : : : : : : +- Filter (119)
: : : : : : : +- Scan parquet (118)
: : : : : : +- BroadcastExchange (125)
: : : : : : +- Project (124)
: : : : : : +- Exchange (123)
: : : : : : +- Project (122)
: : : : : : +- Scan parquet (121)
: : : : : +- BroadcastExchange (131)
: : : : : +- Exchange (130)
: : : : : +- Project (129)
: : : : : +- Scan parquet (128)
: : : : +- BroadcastExchange (138)
: : : : +- Exchange (137)
: : : : +- Project (136)
: : : : +- Filter (135)
: : : : +- Scan parquet (134)
: : : +- Sort (240)
: : : +- Exchange (239)
: : : +- HashAggregate (238)
: : : +- HashAggregate (237)
: : : +- Project (236)
: : : +- SortMergeJoin Inner (235)
: : : :- Sort (206)
: : : : +- Exchange (205)
: : : : +- Project (204)
: : : : +- Filter (203)
: : : : +- Generate (202)
: : : : +- Filter (201)
: : : : +- ObjectHashAggregate (200)
: : : : +- ObjectHashAggregate (199)
: : : : +- Generate (198)
: : : : +- BroadcastHashJoin Inner BuildLeft (197)
: : : : :- BroadcastExchange (154)
: : : : : +- Exchange (153)
: : : : : +- Project (152)
: : : : : +- Filter (151)
: : : : : +- Scan parquet (150)
: : : : +- Project (196)
: : : : +- BroadcastHashJoin Inner BuildLeft (195)
: : : : :- BroadcastExchange (164)
: : : : : +- Project (163)
: : : : : +- Generate (162)
: : : : : +- Project (161)
: : : : : +- Filter (160)
: : : : : +- Generate (159)
: : : : : +- Exchange (158)
: : : : : +- Project (157)
: : : : : +- Filter (156)
: : : : : +- Scan parquet (155)
: : : : +- HashAggregate (194)
: : : : +- Exchange (193)
: : : : +- HashAggregate (192)
: : : : +- Project (191)
: : : : +- Generate (190)
: : : : +- Project (189)
: : : : +- Generate (188)
: : : : +- Project (187)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (186)
: : : : :- Project (180)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (179)
: : : : : :- Project (174)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (173)
: : : : : : :- Exchange (167)
: : : : : : : +- Filter (166)
: : : : : : : +- Scan parquet (165)
: : : : : : +- BroadcastExchange (172)
: : : : : : +- Project (171)
: : : : : : +- Exchange (170)
: : : : : : +- Project (169)
: : : : : : +- Scan parquet (168)
: : : : : +- BroadcastExchange (178)
: : : : : +- Exchange (177)
: : : : : +- Project (176)
: : : : : +- Scan parquet (175)
: : : : +- BroadcastExchange (185)
: : : : +- Exchange (184)
: : : : +- Project (183)
: : : : +- Filter (182)
: : : : +- Scan parquet (181)
: : : +- Sort (234)
: : : +- Project (233)
: : : +- Generate (232)
: : : +- Project (231)
: : : +- Generate (230)
: : : +- Project (229)
: : : +- BroadcastHashJoin LeftOuter BuildRight (228)
: : : :- Project (222)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (221)
: : : : :- Project (216)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (215)
: : : : : :- Exchange (209)
: : : : : : +- Filter (208)
: : : : : : +- Scan parquet (207)
: : : : : +- BroadcastExchange (214)
: : : : : +- Project (213)
: : : : : +- Exchange (212)
: : : : : +- Project (211)
: : : : : +- Scan parquet (210)
: : : : +- BroadcastExchange (220)
: : : : +- Exchange (219)
: : : : +- Project (218)
: : : : +- Scan parquet (217)
: : : +- BroadcastExchange (227)
: : : +- Exchange (226)
: : : +- Project (225)
: : : +- Filter (224)
: : : +- Scan parquet (223)
: : +- BroadcastExchange (251)
: : +- Filter (250)
: : +- Scan parquet (249)
: +- Sort (308)
: +- Project (307)
: +- BroadcastHashJoin Inner BuildLeft (306)
: :- BroadcastExchange (275)
: : +- Project (274)
: : +- Filter (273)
: : +- Generate (272)
: : +- Project (271)
: : +- Filter (270)
: : +- Generate (269)
: : +- Exchange (268)
: : +- Project (267)
: : +- Filter (266)
: : +- Scan parquet (265)
: +- HashAggregate (305)
: +- Exchange (304)
: +- HashAggregate (303)
: +- Project (302)
: +- Generate (301)
: +- Project (300)
: +- Generate (299)
: +- Project (298)
: +- BroadcastHashJoin LeftOuter BuildRight (297)
: :- Project (291)
: : +- BroadcastHashJoin LeftOuter BuildRight (290)
: : :- Project (285)
: : : +- BroadcastHashJoin LeftOuter BuildRight (284)
: : : :- Exchange (278)
: : : : +- Filter (277)
: : : : +- Scan parquet (276)
: : : +- BroadcastExchange (283)
: : : +- Project (282)
: : : +- Exchange (281)
: : : +- Project (280)
: : : +- Scan parquet (279)
: : +- BroadcastExchange (289)
: : +- Exchange (288)
: : +- Project (287)
: : +- Scan parquet (286)
: +- BroadcastExchange (296)
: +- Exchange (295)
: +- Project (294)
: +- Filter (293)
: +- Scan parquet (292)
+- BroadcastExchange (318)
+- Project (317)
+- Filter (316)
+- Generate (315)
+- Exchange (314)
+- Project (313)
+- Filter (312)
+- Scan parquet (311)
(1) InMemoryTableScan
Output [1]: [openGoodsMovements#27136]
Arguments: [openGoodsMovements#27136], [(size(transform(openGoodsMovements#27136, lambdafunction(struct(documentId, lambda x_20#39201.documentId, documentUuid, lambda x_20#39201.documentUuid, openQty, lambda x_20#39201.openQty, qtyUomUuid, lambda x_20#39201.qtyUomUuid, qtyUom, lambda x_20#39201.qtyUom, plannedDeliveryDatetime, lambda x_20#39201.availabilityDatetime), lambda x_20#39201, false)), false) > 0)]
(2) InMemoryRelation
Arguments: [product#26759, plant#26758, openGoodsMovements#27136], StorageLevel(disk, memory, 2 replicas)
(3) EmptyRelation
Output [3]: [product#26759, plant#26758, openGoodsMovements#27136]
Arguments: [plan_id=159334]
(4) ResultQueryStage
Output [3]: [product#26759, plant#26758, openGoodsMovements#27136]
Arguments: 110
(5) Scan parquet
Output [2]: [product#25911, plant#25912]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string>
(6) Filter
Input [2]: [product#25911, plant#25912]
Condition : (isnotnull(plant#25912) AND isnotnull(product#25911))
(7) Exchange
Input [2]: [product#25911, plant#25912]
Arguments: hashpartitioning(product#25911, plant#25912, 10), REPARTITION_BY_NUM, [plan_id=114667]
(8) Scan parquet
Output [4]: [plant#25918, product#25919, productionAspect#25921, systemId#25916]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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#25918.internalRefUUID AS _extract_internalRefUUID#27294, product#25919.internalRefUUID AS _extract_internalRefUUID#27291, productionAspect#25921.productMovementPlants.unitOfIssue.code AS _extract_code#27292, productionAspect#25921.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#27293]
Input [4]: [plant#25918, product#25919, productionAspect#25921, systemId#25916]
(10) Exchange
Input [4]: [_extract_internalRefUUID#27294, _extract_internalRefUUID#27291, _extract_code#27292, _extract_internalRefUUID#27293]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114395]
(11) Project
Output [4]: [_extract_code#27292, _extract_internalRefUUID#27293, _extract_internalRefUUID#27291, _extract_internalRefUUID#27294]
Input [4]: [_extract_internalRefUUID#27294, _extract_internalRefUUID#27291, _extract_code#27292, _extract_internalRefUUID#27293]
(12) BroadcastExchange
Input [4]: [_extract_code#27292, _extract_internalRefUUID#27293, _extract_internalRefUUID#27291, _extract_internalRefUUID#27294]
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=114791]
(13) BroadcastHashJoin
Left keys [4]: [coalesce(product#25911, ), isnull(product#25911), coalesce(plant#25912, ), isnull(plant#25912)]
Right keys [4]: [coalesce(_extract_internalRefUUID#27291, ), isnull(_extract_internalRefUUID#27291), coalesce(_extract_internalRefUUID#27294, ), isnull(_extract_internalRefUUID#27294)]
Join type: LeftOuter
Join condition: None
(14) Project
Output [4]: [product#25911, plant#25912, _extract_code#27292, _extract_internalRefUUID#27293]
Input [6]: [product#25911, plant#25912, _extract_code#27292, _extract_internalRefUUID#27293, _extract_internalRefUUID#27291, _extract_internalRefUUID#27294]
(15) Scan parquet
Output [2]: [internalUUID#25929, systemId#25928]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(16) Project
Output [1]: [internalUUID#25929]
Input [2]: [internalUUID#25929, systemId#25928]
(17) Exchange
Input [1]: [internalUUID#25929]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114401]
(18) BroadcastExchange
Input [1]: [internalUUID#25929]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114795]
(19) BroadcastHashJoin
Left keys [2]: [coalesce(plant#25912, ), isnull(plant#25912)]
Right keys [2]: [coalesce(internalUUID#25929, ), isnull(internalUUID#25929)]
Join type: LeftOuter
Join condition: None
(20) Project
Output [4]: [product#25911, plant#25912, _extract_code#27292, _extract_internalRefUUID#27293]
Input [5]: [product#25911, plant#25912, _extract_code#27292, _extract_internalRefUUID#27293, internalUUID#25929]
(21) Scan parquet
Output [4]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951, systemId#25944]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(22) Filter
Input [4]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951, systemId#25944]
Condition : isnotnull(internalUUID#25945)
(23) Project
Output [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Input [4]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951, systemId#25944]
(24) Exchange
Input [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114407]
(25) BroadcastExchange
Input [3]: [internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114799]
(26) BroadcastHashJoin
Left keys [1]: [product#25911]
Right keys [1]: [internalUUID#25945]
Join type: LeftOuter
Join condition: None
(27) Project
Output [3]: [product#25911, plant#25912, filter(unitOfMeasureConversions#25951, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27292) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27293)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#25949.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#25949.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#25957]
Input [7]: [product#25911, plant#25912, _extract_code#27292, _extract_internalRefUUID#27293, internalUUID#25945, baseUnitOfMeasure#25949, unitOfMeasureConversions#25951]
(28) Generate
Input [3]: [product#25911, plant#25912, filteredUnitOfMeasureConversions#25957]
Arguments: explode(filteredUnitOfMeasureConversions#25957.quantityNumerator), [product#25911, plant#25912, filteredUnitOfMeasureConversions#25957], true, [quantityNumerator#25965]
(29) Project
Output [3]: [product#25911, plant#25912, filteredUnitOfMeasureConversions#25957.quantityDenominator AS _extract_quantityDenominator#27153]
Input [4]: [product#25911, plant#25912, filteredUnitOfMeasureConversions#25957, quantityNumerator#25965]
(30) Generate
Input [3]: [product#25911, plant#25912, _extract_quantityDenominator#27153]
Arguments: explode(_extract_quantityDenominator#27153), [product#25911, plant#25912], true, [quantityDenominator#25968]
(31) Project
Output [2]: [product#25911, plant#25912]
Input [3]: [product#25911, plant#25912, quantityDenominator#25968]
(32) Exchange
Input [2]: [product#25911, plant#25912]
Arguments: hashpartitioning(coalesce(plant#25912, ), isnull(plant#25912), coalesce(product#25911, ), isnull(product#25911), 10), ENSURE_REQUIREMENTS, [plan_id=114962]
(33) Sort
Input [2]: [product#25911, plant#25912]
Arguments: [coalesce(plant#25912, ) ASC NULLS FIRST, isnull(plant#25912) ASC NULLS FIRST, coalesce(product#25911, ) ASC NULLS FIRST, isnull(product#25911) ASC NULLS FIRST], false, 0
(34) Scan parquet
Output [3]: [product#26392, plant#26393, orderDateTime#26394]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(35) Exchange
Input [3]: [product#26392, plant#26393, orderDateTime#26394]
Arguments: hashpartitioning(product#26392, plant#26393, 10), REPARTITION_BY_NUM, [plan_id=114415]
(36) Scan parquet
Output [8]: [internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403, systemId#26396]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(37) Project
Output [8]: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]
Input [8]: [internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403, systemId#26396]
(38) Exchange
Input [8]: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114418]
(39) Project
Output [1]: [struct(systemId, systemId#26396, internalUUID, internalUUID#26397, plant, plant#26398, product, product#26399, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26400, productionAspect, productionAspect#26401, salesPlant, salesPlant#26402, listing, listing#26403) AS productPlant#26404]
Input [8]: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403]
(40) BroadcastExchange
Input [1]: [productPlant#26404]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, struct<systemId:string,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>>>, false].product.internalRefUUID, ), isnull(input[0, struct<systemId:string,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>>>, false].product.internalRefUUID), coalesce(input[0, struct<systemId:string,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>>>, false].plant.internalRefUUID, ), isnull(input[0, struct<systemId:string,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>>>, false].plant.internalRefUUID)),false), [plan_id=114806]
(41) BroadcastHashJoin
Left keys [4]: [coalesce(product#26392, ), isnull(product#26392), coalesce(plant#26393, ), isnull(plant#26393)]
Right keys [4]: [coalesce(productPlant#26404.product.internalRefUUID, ), isnull(productPlant#26404.product.internalRefUUID), coalesce(productPlant#26404.plant.internalRefUUID, ), isnull(productPlant#26404.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(42) Scan parquet
Output [3]: [internalUUID#26406, address#26412, systemId#26405]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(43) Project
Output [2]: [internalUUID#26406, address#26412.timeZone.code AS timezonecode#26417]
Input [3]: [internalUUID#26406, address#26412, systemId#26405]
(44) Exchange
Input [2]: [internalUUID#26406, timezonecode#26417]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114423]
(45) BroadcastExchange
Input [2]: [internalUUID#26406, timezonecode#26417]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114809]
(46) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26393, ), isnull(plant#26393)]
Right keys [2]: [coalesce(internalUUID#26406, ), isnull(internalUUID#26406)]
Join type: LeftOuter
Join condition: None
(47) Project
Output [5]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, CASE WHEN isnotnull(timezonecode#26417) THEN timezonecode#26417 ELSE UTC END AS timezonecode#26418]
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, internalUUID#26406, timezonecode#26417]
(48) Scan parquet
Output [4]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426, systemId#26419]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(49) Filter
Input [4]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426, systemId#26419]
Condition : isnotnull(internalUUID#26420)
(50) Project
Output [3]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
Input [4]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426, systemId#26419]
(51) Exchange
Input [3]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114429]
(52) BroadcastExchange
Input [3]: [internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114813]
(53) BroadcastHashJoin
Left keys [1]: [product#26392]
Right keys [1]: [internalUUID#26420]
Join type: LeftOuter
Join condition: None
(54) Project
Output [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filter(unitOfMeasureConversions#26426, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26424.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26424.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26431]
Input [8]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, internalUUID#26420, baseUnitOfMeasure#26424, unitOfMeasureConversions#26426]
(55) Project
Output [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filteredUnitOfMeasureConversions#26431.quantityDenominator AS _extract_quantityDenominator#27211, filteredUnitOfMeasureConversions#26431.quantityNumerator AS _extract_quantityNumerator#27212]
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, filteredUnitOfMeasureConversions#26431]
(56) Generate
Input [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, _extract_quantityDenominator#27211, _extract_quantityNumerator#27212]
Arguments: explode(_extract_quantityNumerator#27212), [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, _extract_quantityDenominator#27211], true, [quantityNumerator#26432]
(57) Generate
Input [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, _extract_quantityDenominator#27211, quantityNumerator#26432]
Arguments: explode(_extract_quantityDenominator#27211), [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, quantityNumerator#26432], true, [quantityDenominator#26433]
(58) Project
Output [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, (cast(quantityNumerator#26432 as double) / cast(quantityDenominator#26433 as double)) AS outboundUnit#26434]
Input [7]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, quantityNumerator#26432, quantityDenominator#26433]
(59) Project
Output [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, CASE WHEN (isnull(outboundUnit#26434) OR (outboundUnit#26434 <= 0.0)) THEN 1.0 ELSE outboundUnit#26434 END AS outboundUnit#26435]
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26434]
(60) Sort
Input [6]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435]
Arguments: [product#26392 ASC NULLS FIRST, plant#26393 ASC NULLS FIRST], false, 0
(61) Scan parquet
Output [6]: [internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441, systemId#26436]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(62) Filter
Input [6]: [internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441, systemId#26436]
Condition : (isnotnull(plant#26439.internalRefUUID) AND isnotnull(product#26438.internalRefUUID))
(63) Project
Output [6]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441]
Input [6]: [internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441, systemId#26436]
(64) Exchange
Input [6]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114440]
(65) BroadcastExchange
Input [6]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441]
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=114845]
(66) Scan parquet
Output [2]: [marketUnit#26442, distributionCenters#26448]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(67) Filter
Input [2]: [marketUnit#26442, distributionCenters#26448]
Condition : (((marketUnit#26442 <=> DIP_1691) AND (size(distributionCenters#26448, true) > 0)) AND isnotnull(distributionCenters#26448))
(68) Project
Output [1]: [distributionCenters#26448]
Input [2]: [marketUnit#26442, distributionCenters#26448]
(69) Exchange
Input [1]: [distributionCenters#26448]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114444]
(70) Generate
Input [1]: [distributionCenters#26448]
Arguments: explode(distributionCenters#26448), false, [distributionCenters#26464]
(71) Filter
Input [1]: [distributionCenters#26464]
Condition : (((size(distributionCenters#26464.storageLocations, true) > 0) AND isnotnull(distributionCenters#26464.storageLocations)) AND isnotnull(distributionCenters#26464.internalRefUUID))
(72) Project
Output [2]: [distributionCenters#26464.internalRefUUID AS _extract_internalRefUUID#27179, distributionCenters#26464.storageLocations AS _extract_storageLocations#27180]
Input [1]: [distributionCenters#26464]
(73) Generate
Input [2]: [_extract_internalRefUUID#27179, _extract_storageLocations#27180]
Arguments: explode(_extract_storageLocations#27180), [_extract_internalRefUUID#27179], false, [storageLocations#26465]
(74) Project
Output [3]: [_extract_internalRefUUID#27179 AS plantUuid#26467, storageLocations#26465.id AS storageLocId#26468, storageLocations#26465.internalRefUUID AS storageLocUuid#26469]
Input [2]: [_extract_internalRefUUID#27179, storageLocations#26465]
(75) BroadcastExchange
Input [3]: [plantUuid#26467, storageLocId#26468, storageLocUuid#26469]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114841]
(76) Scan parquet
Output [2]: [product#26470, plant#26471]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(77) Filter
Input [2]: [product#26470, plant#26471]
Condition : isnotnull(plant#26471)
(78) Exchange
Input [2]: [product#26470, plant#26471]
Arguments: hashpartitioning(product#26470, plant#26471, 10), REPARTITION_BY_NUM, [plan_id=114678]
(79) Scan parquet
Output [4]: [plant#26476, product#26477, productionAspect#26479, systemId#26474]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(80) Project
Output [4]: [plant#26476.internalRefUUID AS _extract_internalRefUUID#27297, product#26477.internalRefUUID AS _extract_internalRefUUID#27298, productionAspect#26479.productMovementPlants.unitOfIssue.code AS _extract_code#27295, productionAspect#26479.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#27296]
Input [4]: [plant#26476, product#26477, productionAspect#26479, systemId#26474]
(81) Exchange
Input [4]: [_extract_internalRefUUID#27297, _extract_internalRefUUID#27298, _extract_code#27295, _extract_internalRefUUID#27296]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114456]
(82) Project
Output [4]: [_extract_code#27295, _extract_internalRefUUID#27296, _extract_internalRefUUID#27298, _extract_internalRefUUID#27297]
Input [4]: [_extract_internalRefUUID#27297, _extract_internalRefUUID#27298, _extract_code#27295, _extract_internalRefUUID#27296]
(83) BroadcastExchange
Input [4]: [_extract_code#27295, _extract_internalRefUUID#27296, _extract_internalRefUUID#27298, _extract_internalRefUUID#27297]
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=114821]
(84) BroadcastHashJoin
Left keys [4]: [coalesce(product#26470, ), isnull(product#26470), coalesce(plant#26471, ), isnull(plant#26471)]
Right keys [4]: [coalesce(_extract_internalRefUUID#27298, ), isnull(_extract_internalRefUUID#27298), coalesce(_extract_internalRefUUID#27297, ), isnull(_extract_internalRefUUID#27297)]
Join type: LeftOuter
Join condition: None
(85) Project
Output [4]: [product#26470, plant#26471, _extract_code#27295, _extract_internalRefUUID#27296]
Input [6]: [product#26470, plant#26471, _extract_code#27295, _extract_internalRefUUID#27296, _extract_internalRefUUID#27298, _extract_internalRefUUID#27297]
(86) Scan parquet
Output [2]: [internalUUID#26484, systemId#26483]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(87) Project
Output [1]: [internalUUID#26484]
Input [2]: [internalUUID#26484, systemId#26483]
(88) Exchange
Input [1]: [internalUUID#26484]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114462]
(89) BroadcastExchange
Input [1]: [internalUUID#26484]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114825]
(90) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26471, ), isnull(plant#26471)]
Right keys [2]: [coalesce(internalUUID#26484, ), isnull(internalUUID#26484)]
Join type: LeftOuter
Join condition: None
(91) Project
Output [4]: [product#26470, plant#26471, _extract_code#27295, _extract_internalRefUUID#27296]
Input [5]: [product#26470, plant#26471, _extract_code#27295, _extract_internalRefUUID#27296, internalUUID#26484]
(92) Scan parquet
Output [4]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504, systemId#26497]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(93) Filter
Input [4]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504, systemId#26497]
Condition : isnotnull(internalUUID#26498)
(94) Project
Output [3]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504]
Input [4]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504, systemId#26497]
(95) Exchange
Input [3]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114468]
(96) BroadcastExchange
Input [3]: [internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114829]
(97) BroadcastHashJoin
Left keys [1]: [product#26470]
Right keys [1]: [internalUUID#26498]
Join type: LeftOuter
Join condition: None
(98) Project
Output [2]: [plant#26471, filter(unitOfMeasureConversions#26504, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27295) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27296)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26502.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26502.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26509]
Input [7]: [product#26470, plant#26471, _extract_code#27295, _extract_internalRefUUID#27296, internalUUID#26498, baseUnitOfMeasure#26502, unitOfMeasureConversions#26504]
(99) Generate
Input [2]: [plant#26471, filteredUnitOfMeasureConversions#26509]
Arguments: explode(filteredUnitOfMeasureConversions#26509.quantityNumerator), [plant#26471, filteredUnitOfMeasureConversions#26509], true, [quantityNumerator#26510]
(100) Project
Output [2]: [plant#26471, filteredUnitOfMeasureConversions#26509.quantityDenominator AS _extract_quantityDenominator#27181]
Input [3]: [plant#26471, filteredUnitOfMeasureConversions#26509, quantityNumerator#26510]
(101) Generate
Input [2]: [plant#26471, _extract_quantityDenominator#27181]
Arguments: explode(_extract_quantityDenominator#27181), [plant#26471], true, [quantityDenominator#26511]
(102) Project
Output [1]: [plant#26471]
Input [2]: [plant#26471, quantityDenominator#26511]
(103) HashAggregate
Input [1]: [plant#26471]
Keys [1]: [plant#26471]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26471]
(104) Exchange
Input [1]: [plant#26471]
Arguments: hashpartitioning(plant#26471, 10), ENSURE_REQUIREMENTS, [plan_id=114838]
(105) HashAggregate
Input [1]: [plant#26471]
Keys [1]: [plant#26471]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26471]
(106) BroadcastHashJoin
Left keys [1]: [plantUuid#26467]
Right keys [1]: [plant#26471]
Join type: Inner
Join condition: None
(107) Project
Output [3]: [plantUuid#26467, storageLocId#26468, storageLocUuid#26469]
Input [4]: [plantUuid#26467, storageLocId#26468, storageLocUuid#26469, plant#26471]
(108) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26439.internalRefUUID, ), isnull(plant#26439.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#26467, ), isnull(plantUuid#26467)]
Join type: Inner
Join condition: None
(109) Generate
Input [9]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441, plantUuid#26467, storageLocId#26468, storageLocUuid#26469]
Arguments: explode(filter(stockQuantities#26441, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26469) AND (lambda x#26016.storageLocation.Id = storageLocId#26468)), lambda x#26016, false))), [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, plantUuid#26467], false, [stockQuantity#26514]
(110) ObjectHashAggregate
Input [7]: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, plantUuid#26467, stockQuantity#26514]
Keys [5]: [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436]
Functions [2]: [partial_first(calculationDateTime#26440, false), partial_collect_list(stockQuantity#26514, 0, 0)]
Aggregate Attributes [3]: [first#29075, valueSet#29076, buf#29077]
Results [8]: [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436, first#29078, valueSet#29079, buf#29080]
(111) ObjectHashAggregate
Input [8]: [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436, first#29078, valueSet#29079, buf#29080]
Keys [5]: [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436]
Functions [2]: [first(calculationDateTime#26440, false), collect_list(stockQuantity#26514, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#26440)()#26031, collect_list(stockQuantity#26514, 0, 0)#26032]
Results [4]: [product#26438, plant#26439, first(calculationDateTime#26440)()#26031 AS calculationDateTime#26515, collect_list(stockQuantity#26514, 0, 0)#26032 AS stockQuantities#26516]
(112) Filter
Input [4]: [product#26438, plant#26439, calculationDateTime#26515, stockQuantities#26516]
Condition : ((size(stockQuantities#26516, true) > 0) AND isnotnull(calculationDateTime#26515))
(113) Generate
Input [4]: [product#26438, plant#26439, calculationDateTime#26515, stockQuantities#26516]
Arguments: explode(stockQuantities#26516), [product#26438, plant#26439, calculationDateTime#26515], false, [stockQuantity#26517]
(114) Filter
Input [4]: [product#26438, plant#26439, calculationDateTime#26515, stockQuantity#26517]
Condition : (((isnotnull(stockQuantity#26517.specialStockIndicator.code) AND isnotnull(stockQuantity#26517.stockType.code)) AND (stockQuantity#26517.specialStockIndicator.code = )) AND (stockQuantity#26517.stockType.code = 01))
(115) Project
Output [5]: [plant#26439.internalRefUUID AS plantUuid#26519, product#26438.internalRefUUID AS productUuid#26521, calculationDateTime#26515, stockQuantity#26517.storagelocation.id AS storageLocId#26522, stockQuantity#26517.quantity.measure AS quantity#26524]
Input [4]: [product#26438, plant#26439, calculationDateTime#26515, stockQuantity#26517]
(116) Exchange
Input [5]: [plantUuid#26519, productUuid#26521, calculationDateTime#26515, storageLocId#26522, quantity#26524]
Arguments: hashpartitioning(productUuid#26521, plantUuid#26519, 10), ENSURE_REQUIREMENTS, [plan_id=114871]
(117) Sort
Input [5]: [plantUuid#26519, productUuid#26521, calculationDateTime#26515, storageLocId#26522, quantity#26524]
Arguments: [productUuid#26521 ASC NULLS FIRST, plantUuid#26519 ASC NULLS FIRST], false, 0
(118) Scan parquet
Output [3]: [product#26527, plant#26528, orderDateTime#26529]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(119) Filter
Input [3]: [product#26527, plant#26528, orderDateTime#26529]
Condition : ((isnotnull(orderDateTime#26529) AND isnotnull(plant#26528)) AND isnotnull(product#26527))
(120) Exchange
Input [3]: [product#26527, plant#26528, orderDateTime#26529]
Arguments: hashpartitioning(product#26527, plant#26528, 10), REPARTITION_BY_NUM, [plan_id=114701]
(121) Scan parquet
Output [4]: [plant#26533, product#26534, productionAspect#26536, systemId#26531]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(122) Project
Output [4]: [plant#26533.internalRefUUID AS _extract_internalRefUUID#27299, product#26534.internalRefUUID AS _extract_internalRefUUID#27300, productionAspect#26536.productMovementPlants.unitOfIssue.code AS _extract_code#27301, productionAspect#26536.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#27302]
Input [4]: [plant#26533, product#26534, productionAspect#26536, systemId#26531]
(123) Exchange
Input [4]: [_extract_internalRefUUID#27299, _extract_internalRefUUID#27300, _extract_code#27301, _extract_internalRefUUID#27302]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114493]
(124) Project
Output [4]: [_extract_code#27301, _extract_internalRefUUID#27302, _extract_internalRefUUID#27300, _extract_internalRefUUID#27299]
Input [4]: [_extract_internalRefUUID#27299, _extract_internalRefUUID#27300, _extract_code#27301, _extract_internalRefUUID#27302]
(125) BroadcastExchange
Input [4]: [_extract_code#27301, _extract_internalRefUUID#27302, _extract_internalRefUUID#27300, _extract_internalRefUUID#27299]
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=114854]
(126) BroadcastHashJoin
Left keys [4]: [coalesce(product#26527, ), isnull(product#26527), coalesce(plant#26528, ), isnull(plant#26528)]
Right keys [4]: [coalesce(_extract_internalRefUUID#27300, ), isnull(_extract_internalRefUUID#27300), coalesce(_extract_internalRefUUID#27299, ), isnull(_extract_internalRefUUID#27299)]
Join type: LeftOuter
Join condition: None
(127) Project
Output [5]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#27301, _extract_internalRefUUID#27302]
Input [7]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#27301, _extract_internalRefUUID#27302, _extract_internalRefUUID#27300, _extract_internalRefUUID#27299]
(128) Scan parquet
Output [2]: [internalUUID#26541, systemId#26540]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(129) Project
Output [1]: [internalUUID#26541]
Input [2]: [internalUUID#26541, systemId#26540]
(130) Exchange
Input [1]: [internalUUID#26541]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114499]
(131) BroadcastExchange
Input [1]: [internalUUID#26541]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114858]
(132) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26528, ), isnull(plant#26528)]
Right keys [2]: [coalesce(internalUUID#26541, ), isnull(internalUUID#26541)]
Join type: LeftOuter
Join condition: None
(133) Project
Output [5]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#27301, _extract_internalRefUUID#27302]
Input [6]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#27301, _extract_internalRefUUID#27302, internalUUID#26541]
(134) Scan parquet
Output [4]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561, systemId#26554]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(135) Filter
Input [4]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561, systemId#26554]
Condition : isnotnull(internalUUID#26555)
(136) Project
Output [3]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561]
Input [4]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561, systemId#26554]
(137) Exchange
Input [3]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114505]
(138) BroadcastExchange
Input [3]: [internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114862]
(139) BroadcastHashJoin
Left keys [1]: [product#26527]
Right keys [1]: [internalUUID#26555]
Join type: LeftOuter
Join condition: None
(140) Project
Output [4]: [product#26527, plant#26528, orderDateTime#26529, filter(unitOfMeasureConversions#26561, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27301) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27302)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26559.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26559.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26566]
Input [8]: [product#26527, plant#26528, orderDateTime#26529, _extract_code#27301, _extract_internalRefUUID#27302, internalUUID#26555, baseUnitOfMeasure#26559, unitOfMeasureConversions#26561]
(141) Generate
Input [4]: [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566]
Arguments: explode(filteredUnitOfMeasureConversions#26566.quantityNumerator), [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566], true, [quantityNumerator#26567]
(142) Project
Output [4]: [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566.quantityDenominator AS _extract_quantityDenominator#27185]
Input [5]: [product#26527, plant#26528, orderDateTime#26529, filteredUnitOfMeasureConversions#26566, quantityNumerator#26567]
(143) Generate
Input [4]: [product#26527, plant#26528, orderDateTime#26529, _extract_quantityDenominator#27185]
Arguments: explode(_extract_quantityDenominator#27185), [product#26527, plant#26528, orderDateTime#26529], true, [quantityDenominator#26568]
(144) Project
Output [3]: [product#26527, plant#26528, orderDateTime#26529]
Input [4]: [product#26527, plant#26528, orderDateTime#26529, quantityDenominator#26568]
(145) Sort
Input [3]: [product#26527, plant#26528, orderDateTime#26529]
Arguments: [product#26527 ASC NULLS FIRST, plant#26528 ASC NULLS FIRST], false, 0
(146) SortMergeJoin
Left keys [2]: [productUuid#26521, plantUuid#26519]
Right keys [2]: [product#26527, plant#26528]
Join type: Inner
Join condition: (calculationDateTime#26515 <= orderDateTime#26529)
(147) Project
Output [5]: [plantUuid#26519 AS plant#26571, productUuid#26521 AS product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524]
Input [8]: [plantUuid#26519, productUuid#26521, calculationDateTime#26515, storageLocId#26522, quantity#26524, product#26527, plant#26528, orderDateTime#26529]
(148) Exchange
Input [5]: [plant#26571, product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524]
Arguments: hashpartitioning(coalesce(plant#26571, ), isnull(plant#26571), coalesce(product#26572, ), isnull(product#26572), coalesce(storageLocId#26522, ), isnull(storageLocId#26522), coalesce(calculationDateTime#26515, 1970-01-01 00:00:00), isnull(calculationDateTime#26515), 10), ENSURE_REQUIREMENTS, [plan_id=114935]
(149) Sort
Input [5]: [plant#26571, product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524]
Arguments: [coalesce(plant#26571, ) ASC NULLS FIRST, isnull(plant#26571) ASC NULLS FIRST, coalesce(product#26572, ) ASC NULLS FIRST, isnull(product#26572) ASC NULLS FIRST, coalesce(storageLocId#26522, ) ASC NULLS FIRST, isnull(storageLocId#26522) ASC NULLS FIRST, coalesce(calculationDateTime#26515, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#26515) ASC NULLS FIRST], false, 0
(150) Scan parquet
Output [6]: [internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578, systemId#26573]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(151) Filter
Input [6]: [internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578, systemId#26573]
Condition : (isnotnull(plant#26576.internalRefUUID) AND isnotnull(product#26575.internalRefUUID))
(152) Project
Output [6]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578]
Input [6]: [internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578, systemId#26573]
(153) Exchange
Input [6]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114517]
(154) BroadcastExchange
Input [6]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578]
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=114900]
(155) Scan parquet
Output [2]: [marketUnit#26579, distributionCenters#26585]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(156) Filter
Input [2]: [marketUnit#26579, distributionCenters#26585]
Condition : (((marketUnit#26579 <=> DIP_1691) AND (size(distributionCenters#26585, true) > 0)) AND isnotnull(distributionCenters#26585))
(157) Project
Output [1]: [distributionCenters#26585]
Input [2]: [marketUnit#26579, distributionCenters#26585]
(158) Exchange
Input [1]: [distributionCenters#26585]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114521]
(159) Generate
Input [1]: [distributionCenters#26585]
Arguments: explode(distributionCenters#26585), false, [distributionCenters#26601]
(160) Filter
Input [1]: [distributionCenters#26601]
Condition : (((size(distributionCenters#26601.storageLocations, true) > 0) AND isnotnull(distributionCenters#26601.storageLocations)) AND isnotnull(distributionCenters#26601.internalRefUUID))
(161) Project
Output [2]: [distributionCenters#26601.internalRefUUID AS _extract_internalRefUUID#27189, distributionCenters#26601.storageLocations AS _extract_storageLocations#27190]
Input [1]: [distributionCenters#26601]
(162) Generate
Input [2]: [_extract_internalRefUUID#27189, _extract_storageLocations#27190]
Arguments: explode(_extract_storageLocations#27190), [_extract_internalRefUUID#27189], false, [storageLocations#26602]
(163) Project
Output [3]: [_extract_internalRefUUID#27189 AS plantUuid#26604, storageLocations#26602.id AS storageLocId#26605, storageLocations#26602.internalRefUUID AS storageLocUuid#26606]
Input [2]: [_extract_internalRefUUID#27189, storageLocations#26602]
(164) BroadcastExchange
Input [3]: [plantUuid#26604, storageLocId#26605, storageLocUuid#26606]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114896]
(165) Scan parquet
Output [2]: [product#26607, plant#26608]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(166) Filter
Input [2]: [product#26607, plant#26608]
Condition : isnotnull(plant#26608)
(167) Exchange
Input [2]: [product#26607, plant#26608]
Arguments: hashpartitioning(product#26607, plant#26608, 10), REPARTITION_BY_NUM, [plan_id=114714]
(168) Scan parquet
Output [4]: [plant#26613, product#26614, productionAspect#26616, systemId#26611]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(169) Project
Output [4]: [plant#26613.internalRefUUID AS _extract_internalRefUUID#27303, product#26614.internalRefUUID AS _extract_internalRefUUID#27304, productionAspect#26616.productMovementPlants.unitOfIssue.code AS _extract_code#27305, productionAspect#26616.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#27306]
Input [4]: [plant#26613, product#26614, productionAspect#26616, systemId#26611]
(170) Exchange
Input [4]: [_extract_internalRefUUID#27303, _extract_internalRefUUID#27304, _extract_code#27305, _extract_internalRefUUID#27306]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114533]
(171) Project
Output [4]: [_extract_code#27305, _extract_internalRefUUID#27306, _extract_internalRefUUID#27304, _extract_internalRefUUID#27303]
Input [4]: [_extract_internalRefUUID#27303, _extract_internalRefUUID#27304, _extract_code#27305, _extract_internalRefUUID#27306]
(172) BroadcastExchange
Input [4]: [_extract_code#27305, _extract_internalRefUUID#27306, _extract_internalRefUUID#27304, _extract_internalRefUUID#27303]
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=114876]
(173) BroadcastHashJoin
Left keys [4]: [coalesce(product#26607, ), isnull(product#26607), coalesce(plant#26608, ), isnull(plant#26608)]
Right keys [4]: [coalesce(_extract_internalRefUUID#27304, ), isnull(_extract_internalRefUUID#27304), coalesce(_extract_internalRefUUID#27303, ), isnull(_extract_internalRefUUID#27303)]
Join type: LeftOuter
Join condition: None
(174) Project
Output [4]: [product#26607, plant#26608, _extract_code#27305, _extract_internalRefUUID#27306]
Input [6]: [product#26607, plant#26608, _extract_code#27305, _extract_internalRefUUID#27306, _extract_internalRefUUID#27304, _extract_internalRefUUID#27303]
(175) Scan parquet
Output [2]: [internalUUID#26621, systemId#26620]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(176) Project
Output [1]: [internalUUID#26621]
Input [2]: [internalUUID#26621, systemId#26620]
(177) Exchange
Input [1]: [internalUUID#26621]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114539]
(178) BroadcastExchange
Input [1]: [internalUUID#26621]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114880]
(179) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26608, ), isnull(plant#26608)]
Right keys [2]: [coalesce(internalUUID#26621, ), isnull(internalUUID#26621)]
Join type: LeftOuter
Join condition: None
(180) Project
Output [4]: [product#26607, plant#26608, _extract_code#27305, _extract_internalRefUUID#27306]
Input [5]: [product#26607, plant#26608, _extract_code#27305, _extract_internalRefUUID#27306, internalUUID#26621]
(181) Scan parquet
Output [4]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641, systemId#26634]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(182) Filter
Input [4]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641, systemId#26634]
Condition : isnotnull(internalUUID#26635)
(183) Project
Output [3]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641]
Input [4]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641, systemId#26634]
(184) Exchange
Input [3]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114545]
(185) BroadcastExchange
Input [3]: [internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114884]
(186) BroadcastHashJoin
Left keys [1]: [product#26607]
Right keys [1]: [internalUUID#26635]
Join type: LeftOuter
Join condition: None
(187) Project
Output [2]: [plant#26608, filter(unitOfMeasureConversions#26641, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27305) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27306)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26639.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26639.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26646]
Input [7]: [product#26607, plant#26608, _extract_code#27305, _extract_internalRefUUID#27306, internalUUID#26635, baseUnitOfMeasure#26639, unitOfMeasureConversions#26641]
(188) Generate
Input [2]: [plant#26608, filteredUnitOfMeasureConversions#26646]
Arguments: explode(filteredUnitOfMeasureConversions#26646.quantityNumerator), [plant#26608, filteredUnitOfMeasureConversions#26646], true, [quantityNumerator#26647]
(189) Project
Output [2]: [plant#26608, filteredUnitOfMeasureConversions#26646.quantityDenominator AS _extract_quantityDenominator#27191]
Input [3]: [plant#26608, filteredUnitOfMeasureConversions#26646, quantityNumerator#26647]
(190) Generate
Input [2]: [plant#26608, _extract_quantityDenominator#27191]
Arguments: explode(_extract_quantityDenominator#27191), [plant#26608], true, [quantityDenominator#26648]
(191) Project
Output [1]: [plant#26608]
Input [2]: [plant#26608, quantityDenominator#26648]
(192) HashAggregate
Input [1]: [plant#26608]
Keys [1]: [plant#26608]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26608]
(193) Exchange
Input [1]: [plant#26608]
Arguments: hashpartitioning(plant#26608, 10), ENSURE_REQUIREMENTS, [plan_id=114893]
(194) HashAggregate
Input [1]: [plant#26608]
Keys [1]: [plant#26608]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26608]
(195) BroadcastHashJoin
Left keys [1]: [plantUuid#26604]
Right keys [1]: [plant#26608]
Join type: Inner
Join condition: None
(196) Project
Output [3]: [plantUuid#26604, storageLocId#26605, storageLocUuid#26606]
Input [4]: [plantUuid#26604, storageLocId#26605, storageLocUuid#26606, plant#26608]
(197) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26576.internalRefUUID, ), isnull(plant#26576.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#26604, ), isnull(plantUuid#26604)]
Join type: Inner
Join condition: None
(198) Generate
Input [9]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578, plantUuid#26604, storageLocId#26605, storageLocUuid#26606]
Arguments: explode(filter(stockQuantities#26578, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26606) AND (lambda x#26016.storageLocation.Id = storageLocId#26605)), lambda x#26016, false))), [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, plantUuid#26604], false, [stockQuantity#26651]
(199) ObjectHashAggregate
Input [7]: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, plantUuid#26604, stockQuantity#26651]
Keys [5]: [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573]
Functions [2]: [partial_first(calculationDateTime#26577, false), partial_collect_list(stockQuantity#26651, 0, 0)]
Aggregate Attributes [3]: [first#29083, valueSet#29084, buf#29085]
Results [8]: [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573, first#29086, valueSet#29087, buf#29088]
(200) ObjectHashAggregate
Input [8]: [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573, first#29086, valueSet#29087, buf#29088]
Keys [5]: [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573]
Functions [2]: [first(calculationDateTime#26577, false), collect_list(stockQuantity#26651, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#26577)()#26031, collect_list(stockQuantity#26651, 0, 0)#26032]
Results [4]: [product#26575, plant#26576, first(calculationDateTime#26577)()#26031 AS calculationDateTime#26652, collect_list(stockQuantity#26651, 0, 0)#26032 AS stockQuantities#26653]
(201) Filter
Input [4]: [product#26575, plant#26576, calculationDateTime#26652, stockQuantities#26653]
Condition : ((size(stockQuantities#26653, true) > 0) AND isnotnull(calculationDateTime#26652))
(202) Generate
Input [4]: [product#26575, plant#26576, calculationDateTime#26652, stockQuantities#26653]
Arguments: explode(stockQuantities#26653), [product#26575, plant#26576, calculationDateTime#26652], false, [stockQuantity#26654]
(203) Filter
Input [4]: [product#26575, plant#26576, calculationDateTime#26652, stockQuantity#26654]
Condition : (((isnotnull(stockQuantity#26654.specialStockIndicator.code) AND isnotnull(stockQuantity#26654.stockType.code)) AND (stockQuantity#26654.specialStockIndicator.code = )) AND (stockQuantity#26654.stockType.code = 01))
(204) Project
Output [4]: [plant#26576.internalRefUUID AS plantUuid#26656, product#26575.internalRefUUID AS productUuid#26658, calculationDateTime#26652, stockQuantity#26654.storagelocation.id AS storageLocId#26659]
Input [4]: [product#26575, plant#26576, calculationDateTime#26652, stockQuantity#26654]
(205) Exchange
Input [4]: [plantUuid#26656, productUuid#26658, calculationDateTime#26652, storageLocId#26659]
Arguments: hashpartitioning(productUuid#26658, plantUuid#26656, 10), ENSURE_REQUIREMENTS, [plan_id=114926]
(206) Sort
Input [4]: [plantUuid#26656, productUuid#26658, calculationDateTime#26652, storageLocId#26659]
Arguments: [productUuid#26658 ASC NULLS FIRST, plantUuid#26656 ASC NULLS FIRST], false, 0
(207) Scan parquet
Output [3]: [product#26664, plant#26665, orderDateTime#26666]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(208) Filter
Input [3]: [product#26664, plant#26665, orderDateTime#26666]
Condition : ((isnotnull(orderDateTime#26666) AND isnotnull(plant#26665)) AND isnotnull(product#26664))
(209) Exchange
Input [3]: [product#26664, plant#26665, orderDateTime#26666]
Arguments: hashpartitioning(product#26664, plant#26665, 10), REPARTITION_BY_NUM, [plan_id=114737]
(210) Scan parquet
Output [4]: [plant#26670, product#26671, productionAspect#26673, systemId#26668]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(211) Project
Output [4]: [plant#26670.internalRefUUID AS _extract_internalRefUUID#27309, product#26671.internalRefUUID AS _extract_internalRefUUID#27310, productionAspect#26673.productMovementPlants.unitOfIssue.code AS _extract_code#27307, productionAspect#26673.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#27308]
Input [4]: [plant#26670, product#26671, productionAspect#26673, systemId#26668]
(212) Exchange
Input [4]: [_extract_internalRefUUID#27309, _extract_internalRefUUID#27310, _extract_code#27307, _extract_internalRefUUID#27308]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114570]
(213) Project
Output [4]: [_extract_code#27307, _extract_internalRefUUID#27308, _extract_internalRefUUID#27310, _extract_internalRefUUID#27309]
Input [4]: [_extract_internalRefUUID#27309, _extract_internalRefUUID#27310, _extract_code#27307, _extract_internalRefUUID#27308]
(214) BroadcastExchange
Input [4]: [_extract_code#27307, _extract_internalRefUUID#27308, _extract_internalRefUUID#27310, _extract_internalRefUUID#27309]
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=114909]
(215) BroadcastHashJoin
Left keys [4]: [coalesce(product#26664, ), isnull(product#26664), coalesce(plant#26665, ), isnull(plant#26665)]
Right keys [4]: [coalesce(_extract_internalRefUUID#27310, ), isnull(_extract_internalRefUUID#27310), coalesce(_extract_internalRefUUID#27309, ), isnull(_extract_internalRefUUID#27309)]
Join type: LeftOuter
Join condition: None
(216) Project
Output [5]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#27307, _extract_internalRefUUID#27308]
Input [7]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#27307, _extract_internalRefUUID#27308, _extract_internalRefUUID#27310, _extract_internalRefUUID#27309]
(217) Scan parquet
Output [2]: [internalUUID#26678, systemId#26677]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(218) Project
Output [1]: [internalUUID#26678]
Input [2]: [internalUUID#26678, systemId#26677]
(219) Exchange
Input [1]: [internalUUID#26678]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114576]
(220) BroadcastExchange
Input [1]: [internalUUID#26678]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114913]
(221) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26665, ), isnull(plant#26665)]
Right keys [2]: [coalesce(internalUUID#26678, ), isnull(internalUUID#26678)]
Join type: LeftOuter
Join condition: None
(222) Project
Output [5]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#27307, _extract_internalRefUUID#27308]
Input [6]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#27307, _extract_internalRefUUID#27308, internalUUID#26678]
(223) Scan parquet
Output [4]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698, systemId#26691]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(224) Filter
Input [4]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698, systemId#26691]
Condition : isnotnull(internalUUID#26692)
(225) Project
Output [3]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698]
Input [4]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698, systemId#26691]
(226) Exchange
Input [3]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114582]
(227) BroadcastExchange
Input [3]: [internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114917]
(228) BroadcastHashJoin
Left keys [1]: [product#26664]
Right keys [1]: [internalUUID#26692]
Join type: LeftOuter
Join condition: None
(229) Project
Output [4]: [product#26664, plant#26665, orderDateTime#26666, filter(unitOfMeasureConversions#26698, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27307) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27308)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26696.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26696.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26703]
Input [8]: [product#26664, plant#26665, orderDateTime#26666, _extract_code#27307, _extract_internalRefUUID#27308, internalUUID#26692, baseUnitOfMeasure#26696, unitOfMeasureConversions#26698]
(230) Generate
Input [4]: [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703]
Arguments: explode(filteredUnitOfMeasureConversions#26703.quantityNumerator), [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703], true, [quantityNumerator#26704]
(231) Project
Output [4]: [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703.quantityDenominator AS _extract_quantityDenominator#27195]
Input [5]: [product#26664, plant#26665, orderDateTime#26666, filteredUnitOfMeasureConversions#26703, quantityNumerator#26704]
(232) Generate
Input [4]: [product#26664, plant#26665, orderDateTime#26666, _extract_quantityDenominator#27195]
Arguments: explode(_extract_quantityDenominator#27195), [product#26664, plant#26665, orderDateTime#26666], true, [quantityDenominator#26705]
(233) Project
Output [3]: [product#26664, plant#26665, orderDateTime#26666]
Input [4]: [product#26664, plant#26665, orderDateTime#26666, quantityDenominator#26705]
(234) Sort
Input [3]: [product#26664, plant#26665, orderDateTime#26666]
Arguments: [product#26664 ASC NULLS FIRST, plant#26665 ASC NULLS FIRST], false, 0
(235) SortMergeJoin
Left keys [2]: [productUuid#26658, plantUuid#26656]
Right keys [2]: [product#26664, plant#26665]
Join type: Inner
Join condition: (calculationDateTime#26652 <= orderDateTime#26666)
(236) Project
Output [4]: [plantUuid#26656 AS plant#26708, productUuid#26658 AS product#26709, storageLocId#26659, calculationDateTime#26652]
Input [7]: [plantUuid#26656, productUuid#26658, calculationDateTime#26652, storageLocId#26659, product#26664, plant#26665, orderDateTime#26666]
(237) HashAggregate
Input [4]: [plant#26708, product#26709, storageLocId#26659, calculationDateTime#26652]
Keys [3]: [plant#26708, product#26709, storageLocId#26659]
Functions [1]: [partial_max(calculationDateTime#26652)]
Aggregate Attributes [1]: [max#29081]
Results [4]: [plant#26708, product#26709, storageLocId#26659, max#29082]
(238) HashAggregate
Input [4]: [plant#26708, product#26709, storageLocId#26659, max#29082]
Keys [3]: [plant#26708, product#26709, storageLocId#26659]
Functions [1]: [max(calculationDateTime#26652)]
Aggregate Attributes [1]: [max(calculationDateTime#26652)#26109]
Results [4]: [plant#26708, product#26709, storageLocId#26659, max(calculationDateTime#26652)#26109 AS max_calc_datetime#26710]
(239) Exchange
Input [4]: [plant#26708, product#26709, storageLocId#26659, max_calc_datetime#26710]
Arguments: hashpartitioning(coalesce(plant#26708, ), isnull(plant#26708), coalesce(product#26709, ), isnull(product#26709), coalesce(storageLocId#26659, ), isnull(storageLocId#26659), coalesce(max_calc_datetime#26710, 1970-01-01 00:00:00), isnull(max_calc_datetime#26710), 10), ENSURE_REQUIREMENTS, [plan_id=114936]
(240) Sort
Input [4]: [plant#26708, product#26709, storageLocId#26659, max_calc_datetime#26710]
Arguments: [coalesce(plant#26708, ) ASC NULLS FIRST, isnull(plant#26708) ASC NULLS FIRST, coalesce(product#26709, ) ASC NULLS FIRST, isnull(product#26709) ASC NULLS FIRST, coalesce(storageLocId#26659, ) ASC NULLS FIRST, isnull(storageLocId#26659) ASC NULLS FIRST, coalesce(max_calc_datetime#26710, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#26710) ASC NULLS FIRST], false, 0
(241) SortMergeJoin
Left keys [8]: [coalesce(plant#26571, ), isnull(plant#26571), coalesce(product#26572, ), isnull(product#26572), coalesce(storageLocId#26522, ), isnull(storageLocId#26522), coalesce(calculationDateTime#26515, 1970-01-01 00:00:00), isnull(calculationDateTime#26515)]
Right keys [8]: [coalesce(plant#26708, ), isnull(plant#26708), coalesce(product#26709, ), isnull(product#26709), coalesce(storageLocId#26659, ), isnull(storageLocId#26659), coalesce(max_calc_datetime#26710, 1970-01-01 00:00:00), isnull(max_calc_datetime#26710)]
Join type: Inner
Join condition: None
(242) Project
Output [4]: [plant#26571, product#26572, calculationDateTime#26515, quantity#26524]
Input [9]: [plant#26571, product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524, plant#26708, product#26709, storageLocId#26659, max_calc_datetime#26710]
(243) HashAggregate
Input [4]: [plant#26571, product#26572, calculationDateTime#26515, quantity#26524]
Keys [2]: [product#26572, plant#26571]
Functions [2]: [partial_min(calculationDateTime#26515), partial_sum(quantity#26524)]
Aggregate Attributes [2]: [min#29071, sum#29072]
Results [4]: [product#26572, plant#26571, min#29073, sum#29074]
(244) Exchange
Input [4]: [product#26572, plant#26571, min#29073, sum#29074]
Arguments: hashpartitioning(product#26572, plant#26571, 10), ENSURE_REQUIREMENTS, [plan_id=114943]
(245) HashAggregate
Input [4]: [product#26572, plant#26571, min#29073, sum#29074]
Keys [2]: [product#26572, plant#26571]
Functions [2]: [min(calculationDateTime#26515), sum(quantity#26524)]
Aggregate Attributes [2]: [min(calculationDateTime#26515)#26265, sum(quantity#26524)#26264]
Results [4]: [product#26572, plant#26571, min(calculationDateTime#26515)#26265 AS minCalculationDateTime#26712, round(sum(quantity#26524)#26264, 0) AS roundedQuantitySum#26713]
(246) Sort
Input [4]: [product#26572, plant#26571, minCalculationDateTime#26712, roundedQuantitySum#26713]
Arguments: [product#26572 ASC NULLS FIRST, plant#26571 ASC NULLS FIRST], false, 0
(247) SortMergeJoin
Left keys [2]: [product#26392, plant#26393]
Right keys [2]: [product#26572, plant#26571]
Join type: LeftOuter
Join condition: None
(248) Project
Output [8]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, CASE WHEN isnotnull(minCalculationDateTime#26712) THEN minCalculationDateTime#26712 ELSE orderDateTime#26394 END AS stockDatetime#26714, CASE WHEN isnotnull(roundedQuantitySum#26713) THEN array(roundedQuantitySum#26713) ELSE [0.0] END AS stockBatchQuantities#26715]
Input [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, product#26572, plant#26571, minCalculationDateTime#26712, roundedQuantitySum#26713]
(249) Scan parquet
Output [9]: [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000005/0_1_10000000005]
PushedFilters: [IsNotNull(product), IsNotNull(plant)]
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>>>
(250) Filter
Input [9]: [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
Condition : (isnotnull(product#26318) AND isnotnull(plant#26319))
(251) BroadcastExchange
Input [9]: [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=114952]
(252) BroadcastHashJoin
Left keys [2]: [product#26392, plant#26393]
Right keys [2]: [product#26318, plant#26319]
Join type: LeftOuter
Join condition: None
(253) Project
Output [9]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, CASE WHEN isnotnull(product#26318) THEN struct(demandChannel, demandChannel#26320, demandStream, demandStream#26321, considerVariance, considerVariance#26322, demandTimeBuckets, demandTimeBuckets#26323, demandPointInTimeStart, demandPointInTimeStart#26324, demandPointInTimeEnd, demandPointInTimeEnd#26325, demandPointInTime, demandPointInTime#26326) END AS rawDemands#26338]
Input [17]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326]
(254) ObjectHashAggregate
Input [9]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, rawDemands#26338]
Keys [9]: [product#26392, plant#26393, orderDateTime#26394, knownfloatingpointnormalized(if (isnull(productPlant#26404)) null else named_struct(systemId, productPlant#26404.systemId, internalUUID, productPlant#26404.internalUUID, plant, productPlant#26404.plant, product, productPlant#26404.product, blockedForReplenishmentStartingFrom, productPlant#26404.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#26404.productionAspect)) null else named_struct(productMovementPlants, productPlant#26404.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#26404.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#26404.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#26404.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#26404.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#26404.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#26404.salesPlant, listing, productPlant#26404.listing)) AS productPlant#26404, timezonecode#26418, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#26435)) AS outboundUnit#26435, stockDatetime#26714, knownfloatingpointnormalized(transform(stockBatchQuantities#26715, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#29068)), lambda arg#29068, false))) AS stockBatchQuantities#26715, [7226582400000000] AS [7226582400000000]#29067]
Functions [1]: [partial_collect_list(rawDemands#26338, 0, 0)]
Aggregate Attributes [1]: [buf#29069]
Results [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000]#29067, buf#29070]
(255) ObjectHashAggregate
Input [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000]#29067, buf#29070]
Keys [9]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000]#29067]
Functions [1]: [collect_list(rawDemands#26338, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#26338, 0, 0)#26357]
Results [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#26716, collect_list(rawDemands#26338, 0, 0)#26357 AS rawDemands#26339]
(256) DeserializeToObject
Input [10]: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, stockBatchShelfLifeEndDatetimes#26716, rawDemands#26339]
Arguments: createexternalrow(invoke(product#26392.toString()), invoke(plant#26393.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#26394)), if (isnull(productPlant#26404)) null else createexternalrow(invoke(productPlant#26404.systemId.toString()), invoke(productPlant#26404.internalUUID.toString()), if (isnull(productPlant#26404.plant)) null else createexternalrow(invoke(productPlant#26404.plant.internalRefUUID.toString()), invoke(productPlant#26404.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#26404.product)) null else createexternalrow(invoke(productPlant#26404.product.internalRefUUID.toString()), invoke(productPlant#26404.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#26404.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#26404.productionAspect)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#26404.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#26404.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#26404.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#26404.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#26404.salesPlant)) null else createexternalrow(if (isnull(productPlant#26404.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#26404.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#26404.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#26404.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)), invoke(timezonecode#26418.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#26435)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#26714)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#26715, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#26716, 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#26339, Some(class scala.collection.mutable.ArraySeq)), 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(timezonecode,StringType,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)), obj#26378: org.apache.spark.sql.Row
(257) MapElements
Input [1]: [obj#26378]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, obj#26383: org.apache.spark.sql.Row
(258) SerializeFromObject
Input [1]: [obj#26383]
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#26388, 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#26389]
(259) Exchange
Input [2]: [product#26388, plant#26389]
Arguments: hashpartitioning(coalesce(plant#26389, ), isnull(plant#26389), coalesce(product#26388, ), isnull(product#26388), 10), ENSURE_REQUIREMENTS, [plan_id=114963]
(260) Sort
Input [2]: [product#26388, plant#26389]
Arguments: [coalesce(plant#26389, ) ASC NULLS FIRST, isnull(plant#26389) ASC NULLS FIRST, coalesce(product#26388, ) ASC NULLS FIRST, isnull(product#26388) ASC NULLS FIRST], false, 0
(261) SortMergeJoin
Left keys [4]: [coalesce(plant#25912, ), isnull(plant#25912), coalesce(product#25911, ), isnull(product#25911)]
Right keys [4]: [coalesce(plant#26389, ), isnull(plant#26389), coalesce(product#26388, ), isnull(product#26388)]
Join type: LeftOuter
Join condition: None
(262) Project
Output [2]: [product#25911, plant#25912]
Input [4]: [product#25911, plant#25912, product#26388, plant#26389]
(263) Exchange
Input [2]: [product#25911, plant#25912]
Arguments: hashpartitioning(plant#25912, 10), ENSURE_REQUIREMENTS, [plan_id=114993]
(264) Sort
Input [2]: [product#25911, plant#25912]
Arguments: [plant#25912 ASC NULLS FIRST], false, 0
(265) Scan parquet
Output [2]: [marketUnit#26777, distributionCenters#26783]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,DIP_1691), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(266) Filter
Input [2]: [marketUnit#26777, distributionCenters#26783]
Condition : (((marketUnit#26777 <=> DIP_1691) AND (size(distributionCenters#26783, true) > 0)) AND isnotnull(distributionCenters#26783))
(267) Project
Output [1]: [distributionCenters#26783]
Input [2]: [marketUnit#26777, distributionCenters#26783]
(268) Exchange
Input [1]: [distributionCenters#26783]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114614]
(269) Generate
Input [1]: [distributionCenters#26783]
Arguments: explode(distributionCenters#26783), false, [distributionCenters#26799]
(270) Filter
Input [1]: [distributionCenters#26799]
Condition : (((size(distributionCenters#26799.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#26799.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#26799.internalRefUUID))
(271) Project
Output [2]: [distributionCenters#26799.internalRefUUID AS _extract_internalRefUUID#27199, distributionCenters#26799.storageLocations.internalRefUUID AS _extract_internalRefUUID#27312]
Input [1]: [distributionCenters#26799]
(272) Generate
Input [2]: [_extract_internalRefUUID#27199, _extract_internalRefUUID#27312]
Arguments: explode(_extract_internalRefUUID#27312), [_extract_internalRefUUID#27199], false, [storageLocations#26800]
(273) Filter
Input [2]: [_extract_internalRefUUID#27199, storageLocations#26800]
Condition : isnotnull(storageLocations#26800)
(274) Project
Output [2]: [_extract_internalRefUUID#27199 AS plantUuid#26802, storageLocations#26800 AS storageLocUuid#26804]
Input [2]: [_extract_internalRefUUID#27199, storageLocations#26800]
(275) BroadcastExchange
Input [2]: [plantUuid#26802, storageLocUuid#26804]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114988]
(276) Scan parquet
Output [2]: [product#26805, plant#26806]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000005/shardId=0_1_10000000005]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(277) Filter
Input [2]: [product#26805, plant#26806]
Condition : isnotnull(plant#26806)
(278) Exchange
Input [2]: [product#26805, plant#26806]
Arguments: hashpartitioning(product#26805, plant#26806, 10), REPARTITION_BY_NUM, [plan_id=114767]
(279) Scan parquet
Output [4]: [plant#26811, product#26812, productionAspect#26814, systemId#26809]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>
(280) Project
Output [4]: [plant#26811.internalRefUUID AS _extract_internalRefUUID#27313, product#26812.internalRefUUID AS _extract_internalRefUUID#27316, productionAspect#26814.productMovementPlants.unitOfIssue.code AS _extract_code#27314, productionAspect#26814.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#27315]
Input [4]: [plant#26811, product#26812, productionAspect#26814, systemId#26809]
(281) Exchange
Input [4]: [_extract_internalRefUUID#27313, _extract_internalRefUUID#27316, _extract_code#27314, _extract_internalRefUUID#27315]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114627]
(282) Project
Output [4]: [_extract_code#27314, _extract_internalRefUUID#27315, _extract_internalRefUUID#27316, _extract_internalRefUUID#27313]
Input [4]: [_extract_internalRefUUID#27313, _extract_internalRefUUID#27316, _extract_code#27314, _extract_internalRefUUID#27315]
(283) BroadcastExchange
Input [4]: [_extract_code#27314, _extract_internalRefUUID#27315, _extract_internalRefUUID#27316, _extract_internalRefUUID#27313]
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=114968]
(284) BroadcastHashJoin
Left keys [4]: [coalesce(product#26805, ), isnull(product#26805), coalesce(plant#26806, ), isnull(plant#26806)]
Right keys [4]: [coalesce(_extract_internalRefUUID#27316, ), isnull(_extract_internalRefUUID#27316), coalesce(_extract_internalRefUUID#27313, ), isnull(_extract_internalRefUUID#27313)]
Join type: LeftOuter
Join condition: None
(285) Project
Output [4]: [product#26805, plant#26806, _extract_code#27314, _extract_internalRefUUID#27315]
Input [6]: [product#26805, plant#26806, _extract_code#27314, _extract_internalRefUUID#27315, _extract_internalRefUUID#27316, _extract_internalRefUUID#27313]
(286) Scan parquet
Output [2]: [internalUUID#26819, systemId#26818]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/cornerstone/sap-cic-plant-plant]
ReadSchema: struct<internalUUID:string>
(287) Project
Output [1]: [internalUUID#26819]
Input [2]: [internalUUID#26819, systemId#26818]
(288) Exchange
Input [1]: [internalUUID#26819]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114633]
(289) BroadcastExchange
Input [1]: [internalUUID#26819]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=114972]
(290) BroadcastHashJoin
Left keys [2]: [coalesce(plant#26806, ), isnull(plant#26806)]
Right keys [2]: [coalesce(internalUUID#26819, ), isnull(internalUUID#26819)]
Join type: LeftOuter
Join condition: None
(291) Project
Output [4]: [product#26805, plant#26806, _extract_code#27314, _extract_internalRefUUID#27315]
Input [5]: [product#26805, plant#26806, _extract_code#27314, _extract_internalRefUUID#27315, internalUUID#26819]
(292) Scan parquet
Output [4]: [internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839, systemId#26832]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>
(293) Filter
Input [4]: [internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839, systemId#26832]
Condition : isnotnull(internalUUID#26833)
(294) Project
Output [3]: [internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839]
Input [4]: [internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839, systemId#26832]
(295) Exchange
Input [3]: [internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114639]
(296) BroadcastExchange
Input [3]: [internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=114976]
(297) BroadcastHashJoin
Left keys [1]: [product#26805]
Right keys [1]: [internalUUID#26833]
Join type: LeftOuter
Join condition: None
(298) Project
Output [2]: [plant#26806, filter(unitOfMeasureConversions#26839, lambdafunction((((lambda u#25958.measurementUnit1.code = _extract_code#27314) AND (lambda u#25958.measurementUnit1.internalRefUUID = _extract_internalRefUUID#27315)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26837.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26837.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26844]
Input [7]: [product#26805, plant#26806, _extract_code#27314, _extract_internalRefUUID#27315, internalUUID#26833, baseUnitOfMeasure#26837, unitOfMeasureConversions#26839]
(299) Generate
Input [2]: [plant#26806, filteredUnitOfMeasureConversions#26844]
Arguments: explode(filteredUnitOfMeasureConversions#26844.quantityNumerator), [plant#26806, filteredUnitOfMeasureConversions#26844], true, [quantityNumerator#26845]
(300) Project
Output [2]: [plant#26806, filteredUnitOfMeasureConversions#26844.quantityDenominator AS _extract_quantityDenominator#27201]
Input [3]: [plant#26806, filteredUnitOfMeasureConversions#26844, quantityNumerator#26845]
(301) Generate
Input [2]: [plant#26806, _extract_quantityDenominator#27201]
Arguments: explode(_extract_quantityDenominator#27201), [plant#26806], true, [quantityDenominator#26846]
(302) Project
Output [1]: [plant#26806]
Input [2]: [plant#26806, quantityDenominator#26846]
(303) HashAggregate
Input [1]: [plant#26806]
Keys [1]: [plant#26806]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26806]
(304) Exchange
Input [1]: [plant#26806]
Arguments: hashpartitioning(plant#26806, 10), ENSURE_REQUIREMENTS, [plan_id=114985]
(305) HashAggregate
Input [1]: [plant#26806]
Keys [1]: [plant#26806]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#26806]
(306) BroadcastHashJoin
Left keys [1]: [plantUuid#26802]
Right keys [1]: [plant#26806]
Join type: Inner
Join condition: None
(307) Project
Output [2]: [plantUuid#26802 AS plant#26776, storageLocUuid#26804]
Input [3]: [plantUuid#26802, storageLocUuid#26804, plant#26806]
(308) Sort
Input [2]: [plant#26776, storageLocUuid#26804]
Arguments: [plant#26776 ASC NULLS FIRST], false, 0
(309) SortMergeJoin
Left keys [1]: [plant#25912]
Right keys [1]: [plant#26776]
Join type: Inner
Join condition: None
(310) Project
Output [3]: [plant#25912, product#25911, storageLocUuid#26804]
Input [4]: [product#25911, plant#25912, plant#26776, storageLocUuid#26804]
(311) Scan parquet
Output [5]: [internalUUID#26742, id#26743, isMarkedForDeletion#26748, items#26749, systemId#26741]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.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>>>>>
(312) Filter
Input [5]: [internalUUID#26742, id#26743, isMarkedForDeletion#26748, items#26749, systemId#26741]
Condition : (((isnotnull(isMarkedForDeletion#26748) AND NOT isMarkedForDeletion#26748) AND (size(items#26749, true) > 0)) AND isnotnull(items#26749))
(313) Project
Output [3]: [internalUUID#26742, id#26743, items#26749]
Input [5]: [internalUUID#26742, id#26743, isMarkedForDeletion#26748, items#26749, systemId#26741]
(314) Exchange
Input [3]: [internalUUID#26742, id#26743, items#26749]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=114655]
(315) Generate
Input [3]: [internalUUID#26742, id#26743, items#26749]
Arguments: explode(items#26749), [internalUUID#26742, id#26743], false, [item#26753]
(316) Filter
Input [3]: [internalUUID#26742, id#26743, item#26753]
Condition : ((((isnotnull(item#26753.deletionIndicator) AND isnotnull(item#26753.completeIndicator)) AND isnotnull(item#26753.returnIndicator)) AND ((NOT item#26753.deletionIndicator AND NOT item#26753.completeIndicator) AND NOT item#26753.returnIndicator)) AND ((isnotnull(item#26753.product.internalRefUUID) AND isnotnull(item#26753.plant.internalRefUUID)) AND isnotnull(item#26753.storageLocation.internalRefUUID)))
(317) Project
Output [11]: [id#26743, internalUUID#26742, item#26753.plant.internalRefUUID AS plant#26758, item#26753.product.internalRefUUID AS product#26759, item#26753.storageLocation.internalRefUUID AS storageLocUuid#26760, item#26753.quantityUnit.code AS quantityUom#26761, item#26753.quantityUnit.internalRefUUID AS quantityUomUuid#26762, item#26753.quantityNumerator AS quantityNumerator#26763, item#26753.quantityDenominator AS quantityDenominator#26764, item#26753.scheduleLines AS scheduleLines#26765, item#26753.confirmations AS confirmations#26766]
Input [3]: [internalUUID#26742, id#26743, item#26753]
(318) BroadcastExchange
Input [11]: [id#26743, internalUUID#26742, plant#26758, product#26759, storageLocUuid#26760, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=114999]
(319) BroadcastHashJoin
Left keys [3]: [product#25911, plant#25912, storageLocUuid#26804]
Right keys [3]: [product#26759, plant#26758, storageLocUuid#26760]
Join type: Inner
Join condition: None
(320) Project
Output [11]: [id#26743, internalUUID#26742, plant#26758, product#26759, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, size(filter(confirmations#26766, lambdafunction(((NOT lambda x_12#27127.deletionIndicator AND lambda x_12#27127.isRelevantForConfirmation) AND isnotnull(lambda x_12#27127.confirmedDeliveryAt)), lambda x_12#27127, false)), false) AS _w0#27134]
Input [14]: [plant#25912, product#25911, storageLocUuid#26804, id#26743, internalUUID#26742, plant#26758, product#26759, storageLocUuid#26760, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766]
(321) Exchange
Input [11]: [id#26743, internalUUID#26742, plant#26758, product#26759, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, _w0#27134]
Arguments: hashpartitioning(internalUUID#26742, 10), ENSURE_REQUIREMENTS, [plan_id=115003]
(322) Sort
Input [11]: [id#26743, internalUUID#26742, plant#26758, product#26759, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, _w0#27134]
Arguments: [internalUUID#26742 ASC NULLS FIRST], false, 0
(323) Window
Input [11]: [id#26743, internalUUID#26742, plant#26758, product#26759, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, _w0#27134]
Arguments: [sum(_w0#27134) windowspecdefinition(internalUUID#26742, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#27135L], [internalUUID#26742]
(324) Project
Output [3]: [plant#26758, product#26759, filter(transform(CASE WHEN (_we0#27135L > 0) THEN transform(filter(confirmations#26766, lambdafunction(((NOT lambda x_12#27128.deletionIndicator AND lambda x_12#27128.isRelevantForConfirmation) AND isnotnull(lambda x_12#27128.confirmedDeliveryAt)), lambda x_12#27128, false)), lambdafunction(struct(openQty, greatest((lambda x_13#27131.confirmedQuantity - coalesce(lambda x_13#27131.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_13#27131.confirmedDeliveryAt), lambda x_13#27131, false)) ELSE transform(scheduleLines#26765, lambdafunction(struct(openQty, greatest((lambda x_11#27129.quantity - coalesce(lambda x_11#27129.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_11#27129.deliveryAt), lambda x_11#27129, false)) END, lambdafunction(struct(documentId, id#26743, documentUuid, internalUUID#26742, openQty, lambda x_14#27132.openQty, openQtyInBaseUnit, ((lambda x_14#27132.openQty * quantityNumerator#26763) / quantityDenominator#26764), qtyUom, quantityUom#26761, qtyUomUuid, quantityUomUuid#26762, availabilityDatetime, lambda x_14#27132.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_14#27132, false)), lambdafunction(NOT (lambda x_15#27133.openQty = 0.0), lambda x_15#27133, false)) AS openGoodsMovements#27126]
Input [12]: [id#26743, internalUUID#26742, plant#26758, product#26759, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, _w0#27134, _we0#27135L]
(325) ObjectHashAggregate
Input [3]: [plant#26758, product#26759, openGoodsMovements#27126]
Keys [2]: [product#26759, plant#26758]
Functions [1]: [partial_collect_list(openGoodsMovements#27126, 0, 0)]
Aggregate Attributes [1]: [buf#29065]
Results [3]: [product#26759, plant#26758, buf#29066]
(326) Exchange
Input [3]: [product#26759, plant#26758, buf#29066]
Arguments: hashpartitioning(product#26759, plant#26758, 10), ENSURE_REQUIREMENTS, [plan_id=115009]
(327) ObjectHashAggregate
Input [3]: [product#26759, plant#26758, buf#29066]
Keys [2]: [product#26759, plant#26758]
Functions [1]: [collect_list(openGoodsMovements#27126, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#27126, 0, 0)#27152]
Results [3]: [product#26759, plant#26758, flatten(collect_list(openGoodsMovements#27126, 0, 0)#27152) AS openGoodsMovements#27136]
(328) Filter
Input [3]: [product#26759, plant#26758, openGoodsMovements#27136]
Condition : (size(openGoodsMovements#27136, false) > 0)
(329) AdaptiveSparkPlan
Output [3]: [product#26759, plant#26758, openGoodsMovements#27136]
Arguments: isFinalPlan=true
(330) TableCacheQueryStage
Output [1]: [openGoodsMovements#27136]
Arguments: 0
(331) Filter
Input [1]: [openGoodsMovements#27136]
Condition : (size(transform(openGoodsMovements#27136, lambdafunction(struct(documentId, lambda x_20#39201.documentId, documentUuid, lambda x_20#39201.documentUuid, openQty, lambda x_20#39201.openQty, qtyUomUuid, lambda x_20#39201.qtyUomUuid, qtyUom, lambda x_20#39201.qtyUom, plannedDeliveryDatetime, lambda x_20#39201.availabilityDatetime), lambda x_20#39201, false)), false) > 0)
(332) Project [codegen id : 1]
Output: []
Input [1]: [openGoodsMovements#27136]
(333) ResultQueryStage
Output: []
Arguments: 1
(334) Filter
Input [1]: [openGoodsMovements#27136]
Condition : (size(transform(openGoodsMovements#27136, lambdafunction(struct(documentId, lambda x_20#39201.documentId, documentUuid, lambda x_20#39201.documentUuid, openQty, lambda x_20#39201.openQty, qtyUomUuid, lambda x_20#39201.qtyUomUuid, qtyUom, lambda x_20#39201.qtyUom, plannedDeliveryDatetime, lambda x_20#39201.availabilityDatetime), lambda x_20#39201, false)), false) > 0)
(335) Project
Output: []
Input [1]: [openGoodsMovements#27136]
(336) CollectLimit
Input: []
Arguments: 1
(337) AdaptiveSparkPlan
Output: []
Arguments: isFinalPlan=true