digraph G {
0 [id="node0" labelType="html" label="<br><b>AdaptiveSparkPlan</b><br><br>" tooltip="AdaptiveSparkPlan isFinalPlan=true"];
1 [id="node1" labelType="html" label="<b>Execute InsertIntoHadoopFsRelationCommand</b><br><br>task commit time: 206 ms<br>number of written files: 1<br>job commit time: 234 ms<br>number of output rows: 0<br>number of dynamic part: 0<br>written output: 1267.0 B" tooltip="Execute InsertIntoHadoopFsRelationCommand hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/prp-op-traceability-results/raw/crp-order-quantity-kpi-service/ogr/10000000006/0_1_10000000006, false, Parquet, [path=hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/prp-op-traceability-results/raw/crp-order-quantity-kpi-service/ogr/10000000006/0_1_10000000006], Append, [product, location, documents, replenishmentRunId]"];
2 [id="node2" labelType="html" label="<br><b>WriteFiles</b><br><br>" tooltip="WriteFiles"];
3 [id="node3" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51393, plant#51392 AS location#64151, transform(openGoodsMovements#51770, lambdafunction(struct(documentId, lambda x_30#64154.documentId, documentUuid, lambda x_30#64154.documentUuid, openQty, lambda x_30#64154.openQty, qtyUomUuid, lambda x_30#64154.qtyUomUuid, qtyUom, lambda x_30#64154.qtyUom, plannedDeliveryDatetime, lambda x_30#64154.availabilityDatetime), lambda x_30#64154, false)) AS documents#64153, 10000000006 AS replenishmentRunId#64155L]"];
4 [id="node4" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (size(transform(openGoodsMovements#51770, lambdafunction(struct(documentId, lambda x_30#64154.documentId, documentUuid, lambda x_30#64154.documentUuid, openQty, lambda x_30#64154.openQty, qtyUomUuid, lambda x_30#64154.qtyUomUuid, qtyUom, lambda x_30#64154.qtyUom, plannedDeliveryDatetime, lambda x_30#64154.availabilityDatetime), lambda x_30#64154, false)), false) > 0)"];
5 [id="node5" labelType="html" label="<br><b>InMemoryTableScan</b><br><br>" tooltip="InMemoryTableScan [openGoodsMovements#51770, plant#51392, product#51393], [(size(transform(openGoodsMovements#51770, lambdafunction(struct(documentId, lambda x_30#64154.documentId, documentUuid, lambda x_30#64154.documentUuid, openQty, lambda x_30#64154.openQty, qtyUomUuid, lambda x_30#64154.qtyUomUuid, qtyUom, lambda x_30#64154.qtyUom, plannedDeliveryDatetime, lambda x_30#64154.availabilityDatetime), lambda x_30#64154, false)), false) > 0)]"];
6 [id="node6" labelType="html" label="<br><b>AdaptiveSparkPlan</b><br><br>" tooltip="AdaptiveSparkPlan isFinalPlan=true"];
7 [id="node7" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation [plan_id=269704]"];
8 [id="node8" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (size(openGoodsMovements#51770, false) > 0)"];
9 [id="node9" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Aggregate [product#51393, plant#51392], [product#51393, plant#51392, flatten(collect_list(openGoodsMovements#51760, 0, 0)) AS openGoodsMovements#51770]"];
10 [id="node10" labelType="html" label="<br><b>Aggregate</b><br><br>" tooltip="Aggregate [product#51393, plant#51392], [product#51393, plant#51392, flatten(collect_list(openGoodsMovements#51760, 0, 0)) AS openGoodsMovements#51770]"];
11 [id="node11" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Project [plant#51392, product#51393, filter(transform(CASE WHEN (_we0#51769L > 0) THEN transform(filter(confirmations#51400, lambdafunction(((NOT lambda x_22#51762.deletionIndicator AND lambda x_22#51762.isRelevantForConfirmation) AND isnotnull(lambda x_22#51762.confirmedDeliveryAt)), lambda x_22#51762, false)), lambdafunction(struct(openQty, greatest((lambda x_23#51765.confirmedQuantity - coalesce(lambda x_23#51765.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_23#51765.confirmedDeliveryAt), lambda x_23#51765, false)) ELSE transform(scheduleLines#51399, lambdafunction(struct(openQty, greatest((lambda x_21#51763.quantity - coalesce(lambda x_21#51763.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_21#51763.deliveryAt), lambda x_21#51763, false)) END, lambdafunction(struct(documentId, id#51377, documentUuid, internalUUID#51376, openQty, lambda x_24#51766.openQty, openQtyInBaseUnit, ((lambda x_24#51766.openQty * quantityNumerator#51397) / quantityDenominator#51398), qtyUom, quantityUom#51395, qtyUomUuid, quantityUomUuid#51396, availabilityDatetime, lambda x_24#51766.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_24#51766, false)), lambdafunction(NOT (lambda x_25#51767.openQty = 0.0), lambda x_25#51767, false)) AS openGoodsMovements#51760]"];
12 [id="node12" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#51392, product#51393, filter(transform(CASE WHEN (_we0#51769L > 0) THEN transform(filter(confirmations#51400, lambdafunction(((NOT lambda x_22#51762.deletionIndicator AND lambda x_22#51762.isRelevantForConfirmation) AND isnotnull(lambda x_22#51762.confirmedDeliveryAt)), lambda x_22#51762, false)), lambdafunction(struct(openQty, greatest((lambda x_23#51765.confirmedQuantity - coalesce(lambda x_23#51765.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_23#51765.confirmedDeliveryAt), lambda x_23#51765, false)) ELSE transform(scheduleLines#51399, lambdafunction(struct(openQty, greatest((lambda x_21#51763.quantity - coalesce(lambda x_21#51763.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_21#51763.deliveryAt), lambda x_21#51763, false)) END, lambdafunction(struct(documentId, id#51377, documentUuid, internalUUID#51376, openQty, lambda x_24#51766.openQty, openQtyInBaseUnit, ((lambda x_24#51766.openQty * quantityNumerator#51397) / quantityDenominator#51398), qtyUom, quantityUom#51395, qtyUomUuid, quantityUomUuid#51396, availabilityDatetime, lambda x_24#51766.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_24#51766, false)), lambdafunction(NOT (lambda x_25#51767.openQty = 0.0), lambda x_25#51767, false)) AS openGoodsMovements#51760]"];
13 [id="node13" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Window [sum(_w0#51768) windowspecdefinition(internalUUID#51376, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#51769L], [internalUUID#51376]"];
14 [id="node14" labelType="html" label="<br><b>Window</b><br><br>" tooltip="Window [sum(_w0#51768) windowspecdefinition(internalUUID#51376, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#51769L], [internalUUID#51376]"];
15 [id="node15" labelType="html" label="<br><b>LogicalQueryStage</b><br><br>" tooltip="LogicalQueryStage Project [id#51377, internalUUID#51376, plant#51392, product#51393, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, size(filter(confirmations#51400, lambdafunction(((NOT lambda x_22#51761.deletionIndicator AND lambda x_22#51761.isRelevantForConfirmation) AND isnotnull(lambda x_22#51761.confirmedDeliveryAt)), lambda x_22#51761, false)), false) AS _w0#51768], ShuffleQueryStage 109"];
16 [id="node16" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(internalUUID#51376, 10), ENSURE_REQUIREMENTS, [plan_id=269672]"];
17 [id="node17" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [id#51377, internalUUID#51376, plant#51392, product#51393, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, size(filter(confirmations#51400, lambdafunction(((NOT lambda x_22#51761.deletionIndicator AND lambda x_22#51761.isRelevantForConfirmation) AND isnotnull(lambda x_22#51761.confirmedDeliveryAt)), lambda x_22#51761, false)), false) AS _w0#51768]"];
subgraph cluster18 {
isCluster="true";
id="cluster18";
label="WholeStageCodegen (69)";
tooltip="WholeStageCodegen (69)";
19 [id="node19" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#50545, plant#50546, storageLocUuid#51438], [product#51393, plant#51392, storageLocUuid#51394], Inner, BuildRight, false"];
20 [id="node20" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#50546, product#50545, storageLocUuid#51438]"];
21 [id="node21" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plant#50546], [plant#51410], Inner, BuildLeft, false"];
238 [id="node238" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#51436 AS plant#51410, storageLocUuid#51438]"];
239 [id="node239" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#51436], [plant#51440], Inner, BuildLeft, false"];
248 [id="node248" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#51440], functions=[])"];
}
22 [id="node22" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[1, string, true]),false), [plan_id=269567]"];
23 [id="node23" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
24 [id="node24" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(plant#50546, 10), ENSURE_REQUIREMENTS, [plan_id=269461]"];
subgraph cluster25 {
isCluster="true";
id="cluster25";
label="WholeStageCodegen (68)";
tooltip="WholeStageCodegen (68)";
26 [id="node26" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#50545, plant#50546]"];
27 [id="node27" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#50546, ), isnull(plant#50546), coalesce(product#50545, ), isnull(product#50545)], [coalesce(plant#51023, ), isnull(plant#51023), coalesce(product#51022, ), isnull(product#51022)], LeftOuter, BuildRight, false"];
}
28 [id="node28" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
29 [id="node29" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(coalesce(plant#50546, ), isnull(plant#50546), coalesce(product#50545, ), isnull(product#50545), 10), ENSURE_REQUIREMENTS, [plan_id=258503]"];
subgraph cluster30 {
isCluster="true";
id="cluster30";
label="WholeStageCodegen (48)";
tooltip="WholeStageCodegen (48)";
31 [id="node31" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#50545, plant#50546]"];
32 [id="node32" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#51787), [product#50545, plant#50546], true, [quantityDenominator#50602]"];
33 [id="node33" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#50545, plant#50546, filteredUnitOfMeasureConversions#50591.quantityDenominator AS _extract_quantityDenominator#51787]"];
34 [id="node34" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#50591.quantityNumerator), [product#50545, plant#50546, filteredUnitOfMeasureConversions#50591], true, [quantityNumerator#50599]"];
}
35 [id="node35" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#50545, plant#50546, filter(unitOfMeasureConversions#50585, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51927) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51928)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50583.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50583.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50591]"];
subgraph cluster36 {
isCluster="true";
id="cluster36";
label="WholeStageCodegen (47)";
tooltip="WholeStageCodegen (47)";
37 [id="node37" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#50545], [internalUUID#50579], LeftOuter, BuildRight, false"];
38 [id="node38" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#50545, plant#50546, _extract_code#51927, _extract_internalRefUUID#51928]"];
39 [id="node39" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#50546, ), isnull(plant#50546)], [coalesce(internalUUID#50563, ), isnull(internalUUID#50563)], LeftOuter, BuildRight, false"];
40 [id="node40" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#50545, plant#50546, _extract_code#51927, _extract_internalRefUUID#51928]"];
41 [id="node41" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#50545, ), isnull(product#50545), coalesce(plant#50546, ), isnull(plant#50546)], [coalesce(_extract_internalRefUUID#51925, ), isnull(_extract_internalRefUUID#51925), coalesce(_extract_internalRefUUID#51926, ), isnull(_extract_internalRefUUID#51926)], LeftOuter, BuildRight, false"];
}
42 [id="node42" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#50545, plant#50546, 10), REPARTITION_BY_NUM, [plan_id=237034]"];
subgraph cluster43 {
isCluster="true";
id="cluster43";
label="WholeStageCodegen (1)";
tooltip="WholeStageCodegen (1)";
44 [id="node44" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (isnotnull(plant#50546) AND isnotnull(product#50545))"];
45 [id="node45" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
46 [id="node46" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [product#50545,plant#50546] Batched: true, DataFilters: [isnotnull(plant#50546), isnotnull(product#50545)], 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>"];
47 [id="node47" 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=241339]"];
subgraph cluster48 {
isCluster="true";
id="cluster48";
label="WholeStageCodegen (36)";
tooltip="WholeStageCodegen (36)";
49 [id="node49" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_code#51927, _extract_internalRefUUID#51928, _extract_internalRefUUID#51925, _extract_internalRefUUID#51926]"];
}
50 [id="node50" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=237050]"];
subgraph cluster51 {
isCluster="true";
id="cluster51";
label="WholeStageCodegen (2)";
tooltip="WholeStageCodegen (2)";
52 [id="node52" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#50552.internalRefUUID AS _extract_internalRefUUID#51926, product#50553.internalRefUUID AS _extract_internalRefUUID#51925, productionAspect#50555.productMovementPlants.unitOfIssue.code AS _extract_code#51927, productionAspect#50555.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#51928]"];
53 [id="node53" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
54 [id="node54" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [plant#50552,product#50553,productionAspect#50555,systemId#50550] 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..."];
55 [id="node55" 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=238384]"];
56 [id="node56" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=237069]"];
subgraph cluster57 {
isCluster="true";
id="cluster57";
label="WholeStageCodegen (3)";
tooltip="WholeStageCodegen (3)";
58 [id="node58" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [internalUUID#50563]"];
59 [id="node59" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
60 [id="node60" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#50563,systemId#50562] 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>"];
61 [id="node61" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=244121]"];
62 [id="node62" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=237089]"];
subgraph cluster63 {
isCluster="true";
id="cluster63";
label="WholeStageCodegen (4)";
tooltip="WholeStageCodegen (4)";
64 [id="node64" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]"];
65 [id="node65" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter isnotnull(internalUUID#50579)"];
66 [id="node66" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
67 [id="node67" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#50579,baseUnitOfMeasure#50583,unitOfMeasureConversions#50585,systemId#50578] Batched: true, DataFilters: [isnotnull(internalUUID#50579)], 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..."];
68 [id="node68" 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=269336]"];
69 [id="node69" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
70 [id="node70" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(coalesce(plant#51023, ), isnull(plant#51023), coalesce(product#51022, ), isnull(product#51022), 10), ENSURE_REQUIREMENTS, [plan_id=269160]"];
subgraph cluster71 {
isCluster="true";
id="cluster71";
label="WholeStageCodegen (67)";
tooltip="WholeStageCodegen (67)";
72 [id="node72" 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#51022, 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#51023]"];
73 [id="node73" labelType="html" label="<br><b>MapElements</b><br><br>" tooltip="MapElements com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, obj#51017: org.apache.spark.sql.Row"];
74 [id="node74" labelType="html" label="<br><b>DeserializeToObject</b><br><br>" tooltip="DeserializeToObject createexternalrow(invoke(product#51026.toString()), invoke(plant#51027.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#51028)), if (isnull(productPlant#51038)) null else createexternalrow(invoke(productPlant#51038.systemId.toString()), invoke(productPlant#51038.internalUUID.toString()), if (isnull(productPlant#51038.plant)) null else createexternalrow(invoke(productPlant#51038.plant.internalRefUUID.toString()), invoke(productPlant#51038.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#51038.product)) null else createexternalrow(invoke(productPlant#51038.product.internalRefUUID.toString()), invoke(productPlant#51038.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#51038.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#51038.productionAspect)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#51038.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.salesPlant)) null else createexternalrow(if (isnull(productPlant#51038.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#51038.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.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#51052.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#51069)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#51348)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#51349, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#51350, 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#50973, 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#51012: org.apache.spark.sql.Row"];
}
75 [id="node75" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000]#61276], functions=[collect_list(rawDemands#50972, 0, 0)])"];
76 [id="node76" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[product#51026, plant#51027, orderDateTime#51028, knownfloatingpointnormalized(if (isnull(productPlant#51038)) null else named_struct(systemId, productPlant#51038.systemId, internalUUID, productPlant#51038.internalUUID, plant, productPlant#51038.plant, product, productPlant#51038.product, blockedForReplenishmentStartingFrom, productPlant#51038.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#51038.productionAspect)) null else named_struct(productMovementPlants, productPlant#51038.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#51038.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#51038.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#51038.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#51038.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#51038.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#51038.salesPlant, listing, productPlant#51038.listing)) AS productPlant#51038, timezonecode#51052, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#51069)) AS outboundUnit#51069, stockDatetime#51348, knownfloatingpointnormalized(transform(stockBatchQuantities#51349, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#61277)), lambda arg#61277, false))) AS stockBatchQuantities#51349, [7226582400000000] AS [7226582400000000]#61276], functions=[partial_collect_list(rawDemands#50972, 0, 0)])"];
subgraph cluster77 {
isCluster="true";
id="cluster77";
label="WholeStageCodegen (66)";
tooltip="WholeStageCodegen (66)";
78 [id="node78" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, CASE WHEN isnotnull(product#50952) THEN struct(demandChannel, demandChannel#50954, demandStream, demandStream#50955, considerVariance, considerVariance#50956, demandTimeBuckets, demandTimeBuckets#50957, demandPointInTimeStart, demandPointInTimeStart#50958, demandPointInTimeEnd, demandPointInTimeEnd#50959, demandPointInTime, demandPointInTime#50960) END AS rawDemands#50972]"];
79 [id="node79" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#51026, plant#51027], [product#50952, plant#50953], LeftOuter, BuildRight, false"];
80 [id="node80" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, CASE WHEN isnotnull(minCalculationDateTime#51346) THEN minCalculationDateTime#51346 ELSE orderDateTime#51028 END AS stockDatetime#51348, CASE WHEN isnotnull(roundedQuantitySum#51347) THEN array(roundedQuantitySum#51347) ELSE [0.0] END AS stockBatchQuantities#51349]"];
81 [id="node81" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plant#51027, product#51026], [plant#51205, product#51206], LeftOuter, BuildRight, false"];
82 [id="node82" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, CASE WHEN (isnull(outboundUnit#51068) OR (outboundUnit#51068 <= 0.0)) THEN 1.0 ELSE outboundUnit#51068 END AS outboundUnit#51069]"];
83 [id="node83" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, (cast(quantityNumerator#51066 as double) / cast(quantityDenominator#51067 as double)) AS outboundUnit#51068]"];
84 [id="node84" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#51845), [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, quantityNumerator#51066], true, [quantityDenominator#51067]"];
85 [id="node85" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityNumerator#51846), [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, _extract_quantityDenominator#51845], true, [quantityNumerator#51066]"];
86 [id="node86" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filteredUnitOfMeasureConversions#51065.quantityDenominator AS _extract_quantityDenominator#51845, filteredUnitOfMeasureConversions#51065.quantityNumerator AS _extract_quantityNumerator#51846]"];
}
87 [id="node87" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filter(unitOfMeasureConversions#51060, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51058.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51058.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51065]"];
subgraph cluster88 {
isCluster="true";
id="cluster88";
label="WholeStageCodegen (65)";
tooltip="WholeStageCodegen (65)";
89 [id="node89" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#51026], [internalUUID#51054], LeftOuter, BuildRight, false"];
90 [id="node90" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, CASE WHEN isnotnull(timezonecode#51051) THEN timezonecode#51051 ELSE UTC END AS timezonecode#51052]"];
91 [id="node91" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#51027, ), isnull(plant#51027)], [coalesce(internalUUID#51040, ), isnull(internalUUID#51040)], LeftOuter, BuildRight, false"];
92 [id="node92" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#51026, ), isnull(product#51026), coalesce(plant#51027, ), isnull(plant#51027)], [coalesce(productPlant#51038.product.internalRefUUID, ), isnull(productPlant#51038.product.internalRefUUID), coalesce(productPlant#51038.plant.internalRefUUID, ), isnull(productPlant#51038.plant.internalRefUUID)], LeftOuter, BuildRight, false"];
}
93 [id="node93" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#51026, plant#51027, 10), REPARTITION_BY_NUM, [plan_id=237113]"];
subgraph cluster94 {
isCluster="true";
id="cluster94";
label="WholeStageCodegen (5)";
tooltip="WholeStageCodegen (5)";
95 [id="node95" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
96 [id="node96" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [product#51026,plant#51027,orderDateTime#51028] 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>"];
97 [id="node97" 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=245674]"];
subgraph cluster98 {
isCluster="true";
id="cluster98";
label="WholeStageCodegen (42)";
tooltip="WholeStageCodegen (42)";
99 [id="node99" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [struct(systemId, systemId#51030, internalUUID, internalUUID#51031, plant, plant#51032, product, product#51033, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#51034, productionAspect, productionAspect#51035, salesPlant, salesPlant#51036, listing, listing#51037) AS productPlant#51038]"];
}
100 [id="node100" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=237127]"];
subgraph cluster101 {
isCluster="true";
id="cluster101";
label="WholeStageCodegen (6)";
tooltip="WholeStageCodegen (6)";
102 [id="node102" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]"];
103 [id="node103" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
104 [id="node104" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#51031,plant#51032,product#51033,blockedForReplenishmentStartingFrom#51034,productionAspect#51035,salesPlant#51036,listing#51037,systemId#51030] 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..."];
105 [id="node105" 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=249184]"];
106 [id="node106" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=237145]"];
subgraph cluster107 {
isCluster="true";
id="cluster107";
label="WholeStageCodegen (7)";
tooltip="WholeStageCodegen (7)";
108 [id="node108" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [internalUUID#51040, address#51046.timeZone.code AS timezonecode#51051]"];
109 [id="node109" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
110 [id="node110" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#51040,address#51046,systemId#51039] 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>>>"];
111 [id="node111" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=268879]"];
subgraph cluster112 {
isCluster="true";
id="cluster112";
label="WholeStageCodegen (64)";
tooltip="WholeStageCodegen (64)";
113 [id="node113" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[product#51206, plant#51205], functions=[min(calculationDateTime#51149), sum(quantity#51158)])"];
}
114 [id="node114" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
115 [id="node115" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#51206, plant#51205, 10), ENSURE_REQUIREMENTS, [plan_id=268600]"];
subgraph cluster116 {
isCluster="true";
id="cluster116";
label="WholeStageCodegen (63)";
tooltip="WholeStageCodegen (63)";
117 [id="node117" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[product#51206, plant#51205], functions=[partial_min(calculationDateTime#51149), partial_sum(quantity#51158)])"];
118 [id="node118" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#51205, product#51206, calculationDateTime#51149, quantity#51158]"];
119 [id="node119" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#51205, ), isnull(plant#51205), coalesce(product#51206, ), isnull(product#51206), coalesce(storageLocId#51156, ), isnull(storageLocId#51156), coalesce(calculationDateTime#51149, 1970-01-01 00:00:00), isnull(calculationDateTime#51149)], [coalesce(plant#51342, ), isnull(plant#51342), coalesce(product#51343, ), isnull(product#51343), coalesce(storageLocId#51293, ), isnull(storageLocId#51293), coalesce(max_calc_datetime#51344, 1970-01-01 00:00:00), isnull(max_calc_datetime#51344)], Inner, BuildLeft, false"];
}
120 [id="node120" 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=268030]"];
121 [id="node121" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
122 [id="node122" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(coalesce(plant#51205, ), isnull(plant#51205), coalesce(product#51206, ), isnull(product#51206), coalesce(storageLocId#51156, ), isnull(storageLocId#51156), coalesce(calculationDateTime#51149, 1970-01-01 00:00:00), isnull(calculationDateTime#51149), 10), ENSURE_REQUIREMENTS, [plan_id=267693]"];
subgraph cluster123 {
isCluster="true";
id="cluster123";
label="WholeStageCodegen (62)";
tooltip="WholeStageCodegen (62)";
124 [id="node124" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#51153 AS plant#51205, productUuid#51155 AS product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158]"];
125 [id="node125" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#51153, productUuid#51155], [plant#51162, product#51161], Inner, BuildLeft, (calculationDateTime#51149 <= orderDateTime#51163), false"];
182 [id="node182" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51161, plant#51162, orderDateTime#51163]"];
183 [id="node183" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#51819), [product#51161, plant#51162, orderDateTime#51163], true, [quantityDenominator#51202]"];
184 [id="node184" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200.quantityDenominator AS _extract_quantityDenominator#51819]"];
185 [id="node185" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#51200.quantityNumerator), [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200], true, [quantityNumerator#51201]"];
}
126 [id="node126" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=266774]"];
127 [id="node127" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
128 [id="node128" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(productUuid#51155, plantUuid#51153, 10), ENSURE_REQUIREMENTS, [plan_id=265281]"];
subgraph cluster129 {
isCluster="true";
id="cluster129";
label="WholeStageCodegen (56)";
tooltip="WholeStageCodegen (56)";
130 [id="node130" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#51073.internalRefUUID AS plantUuid#51153, product#51072.internalRefUUID AS productUuid#51155, calculationDateTime#51149, stockQuantity#51151.storagelocation.id AS storageLocId#51156, stockQuantity#51151.quantity.measure AS quantity#51158]"];
131 [id="node131" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((isnotnull(stockQuantity#51151.specialStockIndicator.code) AND isnotnull(stockQuantity#51151.stockType.code)) AND (stockQuantity#51151.specialStockIndicator.code = )) AND (stockQuantity#51151.stockType.code = 01))"];
132 [id="node132" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(stockQuantities#51150), [product#51072, plant#51073, calculationDateTime#51149], false, [stockQuantity#51151]"];
133 [id="node133" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((size(stockQuantities#51150, true) > 0) AND isnotnull(calculationDateTime#51149))"];
}
134 [id="node134" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070], functions=[first(calculationDateTime#51074, false), collect_list(stockQuantity#51148, 0, 0)])"];
135 [id="node135" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070], functions=[partial_first(calculationDateTime#51074, false), partial_collect_list(stockQuantity#51148, 0, 0)])"];
136 [id="node136" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filter(stockQuantities#51075, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#51103) AND (lambda x#50650.storageLocation.Id = storageLocId#51102)), lambda x#50650, false))), [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, plantUuid#51101], false, [stockQuantity#51148]"];
subgraph cluster137 {
isCluster="true";
id="cluster137";
label="WholeStageCodegen (55)";
tooltip="WholeStageCodegen (55)";
138 [id="node138" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#51073.internalRefUUID, ), isnull(plant#51073.internalRefUUID)], [coalesce(plantUuid#51101, ), isnull(plantUuid#51101)], Inner, BuildLeft, false"];
146 [id="node146" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#51101, storageLocId#51102, storageLocUuid#51103]"];
147 [id="node147" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#51101], [plant#51105], Inner, BuildLeft, false"];
161 [id="node161" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#51105], functions=[])"];
}
139 [id="node139" 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=247205]"];
140 [id="node140" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=237195]"];
subgraph cluster141 {
isCluster="true";
id="cluster141";
label="WholeStageCodegen (9)";
tooltip="WholeStageCodegen (9)";
142 [id="node142" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075]"];
143 [id="node143" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (isnotnull(plant#51073.internalRefUUID) AND isnotnull(product#51072.internalRefUUID))"];
144 [id="node144" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
145 [id="node145" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#51071,product#51072,plant#51073,calculationDateTime#51074,stockQuantities#51075,systemId#51070] Batched: true, DataFilters: [isnotnull(plant#51073.internalRefUUID), isnotnull(product#51072.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..."];
148 [id="node148" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=251600]"];
subgraph cluster149 {
isCluster="true";
id="cluster149";
label="WholeStageCodegen (44)";
tooltip="WholeStageCodegen (44)";
150 [id="node150" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_internalRefUUID#51813 AS plantUuid#51101, storageLocations#51099.id AS storageLocId#51102, storageLocations#51099.internalRefUUID AS storageLocUuid#51103]"];
151 [id="node151" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_storageLocations#51814), [_extract_internalRefUUID#51813], false, [storageLocations#51099]"];
152 [id="node152" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#51098.internalRefUUID AS _extract_internalRefUUID#51813, distributionCenters#51098.storageLocations AS _extract_storageLocations#51814]"];
153 [id="node153" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((size(distributionCenters#51098.storageLocations, true) > 0) AND isnotnull(distributionCenters#51098.storageLocations)) AND isnotnull(distributionCenters#51098.internalRefUUID))"];
154 [id="node154" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(distributionCenters#51082), false, [distributionCenters#51098]"];
}
155 [id="node155" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=237215]"];
subgraph cluster156 {
isCluster="true";
id="cluster156";
label="WholeStageCodegen (10)";
tooltip="WholeStageCodegen (10)";
157 [id="node157" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#51082]"];
158 [id="node158" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((marketUnit#51076 <=> DIP_1691) AND (size(distributionCenters#51082, true) > 0)) AND isnotnull(distributionCenters#51082))"];
159 [id="node159" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
160 [id="node160" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [marketUnit#51076,distributionCenters#51082] Batched: true, DataFilters: [(marketUnit#51076 <=> DIP_1691), (size(distributionCenters#51082, 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..."];
162 [id="node162" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
163 [id="node163" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(plant#51105, 10), ENSURE_REQUIREMENTS, [plan_id=261709]"];
subgraph cluster164 {
isCluster="true";
id="cluster164";
label="WholeStageCodegen (50)";
tooltip="WholeStageCodegen (50)";
165 [id="node165" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#51105], functions=[])"];
166 [id="node166" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#51105]"];
167 [id="node167" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#51815), [plant#51105], true, [quantityDenominator#51145]"];
168 [id="node168" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#51105, filteredUnitOfMeasureConversions#51143.quantityDenominator AS _extract_quantityDenominator#51815]"];
169 [id="node169" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#51143.quantityNumerator), [plant#51105, filteredUnitOfMeasureConversions#51143], true, [quantityNumerator#51144]"];
}
170 [id="node170" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#51105, filter(unitOfMeasureConversions#51138, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51929) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51930)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51136.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51136.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51143]"];
subgraph cluster171 {
isCluster="true";
id="cluster171";
label="WholeStageCodegen (49)";
tooltip="WholeStageCodegen (49)";
172 [id="node172" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#51104], [internalUUID#51132], LeftOuter, BuildRight, false"];
173 [id="node173" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51104, plant#51105, _extract_code#51929, _extract_internalRefUUID#51930]"];
174 [id="node174" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#51105, ), isnull(plant#51105)], [coalesce(internalUUID#51118, ), isnull(internalUUID#51118)], LeftOuter, BuildRight, false"];
175 [id="node175" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51104, plant#51105, _extract_code#51929, _extract_internalRefUUID#51930]"];
176 [id="node176" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#51104, ), isnull(product#51104), coalesce(plant#51105, ), isnull(plant#51105)], [coalesce(_extract_internalRefUUID#51931, ), isnull(_extract_internalRefUUID#51931), coalesce(_extract_internalRefUUID#51932, ), isnull(_extract_internalRefUUID#51932)], LeftOuter, BuildRight, false"];
}
177 [id="node177" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#51104, plant#51105, 10), REPARTITION_BY_NUM, [plan_id=237238]"];
subgraph cluster178 {
isCluster="true";
id="cluster178";
label="WholeStageCodegen (11)";
tooltip="WholeStageCodegen (11)";
179 [id="node179" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter isnotnull(plant#51105)"];
180 [id="node180" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
181 [id="node181" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [product#51104,plant#51105] Batched: true, DataFilters: [isnotnull(plant#51105)], 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>"];
186 [id="node186" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51161, plant#51162, orderDateTime#51163, filter(unitOfMeasureConversions#51195, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51933) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51934)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51193.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51193.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51200]"];
subgraph cluster187 {
isCluster="true";
id="cluster187";
label="WholeStageCodegen (61)";
tooltip="WholeStageCodegen (61)";
188 [id="node188" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#51161], [internalUUID#51189], LeftOuter, BuildRight, false"];
189 [id="node189" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51161, plant#51162, orderDateTime#51163, _extract_code#51933, _extract_internalRefUUID#51934]"];
190 [id="node190" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#51162, ), isnull(plant#51162)], [coalesce(internalUUID#51175, ), isnull(internalUUID#51175)], LeftOuter, BuildRight, false"];
191 [id="node191" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51161, plant#51162, orderDateTime#51163, _extract_code#51933, _extract_internalRefUUID#51934]"];
192 [id="node192" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#51161, ), isnull(product#51161), coalesce(plant#51162, ), isnull(plant#51162)], [coalesce(_extract_internalRefUUID#51935, ), isnull(_extract_internalRefUUID#51935), coalesce(_extract_internalRefUUID#51936, ), isnull(_extract_internalRefUUID#51936)], LeftOuter, BuildRight, false"];
}
193 [id="node193" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#51161, plant#51162, 10), REPARTITION_BY_NUM, [plan_id=237338]"];
subgraph cluster194 {
isCluster="true";
id="cluster194";
label="WholeStageCodegen (15)";
tooltip="WholeStageCodegen (15)";
195 [id="node195" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((isnotnull(orderDateTime#51163) AND isnotnull(plant#51162)) AND isnotnull(product#51161))"];
196 [id="node196" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
197 [id="node197" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [product#51161,plant#51162,orderDateTime#51163] Batched: true, DataFilters: [isnotnull(orderDateTime#51163), isnotnull(plant#51162), isnotnull(product#51161)], 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>"];
198 [id="node198" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
199 [id="node199" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(coalesce(plant#51342, ), isnull(plant#51342), coalesce(product#51343, ), isnull(product#51343), coalesce(storageLocId#51293, ), isnull(storageLocId#51293), coalesce(max_calc_datetime#51344, 1970-01-01 00:00:00), isnull(max_calc_datetime#51344), 10), ENSURE_REQUIREMENTS, [plan_id=267258]"];
subgraph cluster200 {
isCluster="true";
id="cluster200";
label="WholeStageCodegen (60)";
tooltip="WholeStageCodegen (60)";
201 [id="node201" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#51342, product#51343, storageLocId#51293], functions=[max(calculationDateTime#51286)])"];
202 [id="node202" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#51342, product#51343, storageLocId#51293], functions=[partial_max(calculationDateTime#51286)])"];
203 [id="node203" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#51290 AS plant#51342, productUuid#51292 AS product#51343, storageLocId#51293, calculationDateTime#51286]"];
204 [id="node204" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#51290, productUuid#51292], [plant#51299, product#51298], Inner, BuildLeft, (calculationDateTime#51286 <= orderDateTime#51300), false"];
222 [id="node222" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51298, plant#51299, orderDateTime#51300]"];
223 [id="node223" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#51829), [product#51298, plant#51299, orderDateTime#51300], true, [quantityDenominator#51339]"];
224 [id="node224" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337.quantityDenominator AS _extract_quantityDenominator#51829]"];
225 [id="node225" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#51337.quantityNumerator), [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337], true, [quantityNumerator#51338]"];
}
205 [id="node205" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=266303]"];
206 [id="node206" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead local"];
207 [id="node207" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(productUuid#51292, plantUuid#51290, 10), ENSURE_REQUIREMENTS, [plan_id=265349]"];
subgraph cluster208 {
isCluster="true";
id="cluster208";
label="WholeStageCodegen (58)";
tooltip="WholeStageCodegen (58)";
209 [id="node209" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#51210.internalRefUUID AS plantUuid#51290, product#51209.internalRefUUID AS productUuid#51292, calculationDateTime#51286, stockQuantity#51288.storagelocation.id AS storageLocId#51293]"];
210 [id="node210" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((isnotnull(stockQuantity#51288.specialStockIndicator.code) AND isnotnull(stockQuantity#51288.stockType.code)) AND (stockQuantity#51288.specialStockIndicator.code = )) AND (stockQuantity#51288.stockType.code = 01))"];
211 [id="node211" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(stockQuantities#51287), [product#51209, plant#51210, calculationDateTime#51286], false, [stockQuantity#51288]"];
212 [id="node212" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((size(stockQuantities#51287, true) > 0) AND isnotnull(calculationDateTime#51286))"];
}
213 [id="node213" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207], functions=[first(calculationDateTime#51211, false), collect_list(stockQuantity#51285, 0, 0)])"];
214 [id="node214" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207], functions=[partial_first(calculationDateTime#51211, false), partial_collect_list(stockQuantity#51285, 0, 0)])"];
215 [id="node215" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filter(stockQuantities#51212, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#51240) AND (lambda x#50650.storageLocation.Id = storageLocId#51239)), lambda x#50650, false))), [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, plantUuid#51238], false, [stockQuantity#51285]"];
subgraph cluster216 {
isCluster="true";
id="cluster216";
label="WholeStageCodegen (57)";
tooltip="WholeStageCodegen (57)";
217 [id="node217" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#51210.internalRefUUID, ), isnull(plant#51210.internalRefUUID)], [coalesce(plantUuid#51238, ), isnull(plantUuid#51238)], Inner, BuildLeft, false"];
218 [id="node218" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#51238, storageLocId#51239, storageLocUuid#51240]"];
219 [id="node219" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#51238], [plant#51242], Inner, BuildLeft, false"];
220 [id="node220" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#51242], functions=[])"];
}
221 [id="node221" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
226 [id="node226" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51298, plant#51299, orderDateTime#51300, filter(unitOfMeasureConversions#51332, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51943) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51944)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51330.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51330.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51337]"];
subgraph cluster227 {
isCluster="true";
id="cluster227";
label="WholeStageCodegen (59)";
tooltip="WholeStageCodegen (59)";
228 [id="node228" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#51298], [internalUUID#51326], LeftOuter, BuildRight, false"];
229 [id="node229" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51298, plant#51299, orderDateTime#51300, _extract_code#51943, _extract_internalRefUUID#51944]"];
230 [id="node230" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#51299, ), isnull(plant#51299)], [coalesce(internalUUID#51312, ), isnull(internalUUID#51312)], LeftOuter, BuildRight, false"];
231 [id="node231" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#51298, plant#51299, orderDateTime#51300, _extract_code#51943, _extract_internalRefUUID#51944]"];
232 [id="node232" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#51298, ), isnull(product#51298), coalesce(plant#51299, ), isnull(plant#51299)], [coalesce(_extract_internalRefUUID#51942, ), isnull(_extract_internalRefUUID#51942), coalesce(_extract_internalRefUUID#51941, ), isnull(_extract_internalRefUUID#51941)], LeftOuter, BuildRight, false"];
}
233 [id="node233" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=237681]"];
subgraph cluster234 {
isCluster="true";
id="cluster234";
label="WholeStageCodegen (29)";
tooltip="WholeStageCodegen (29)";
235 [id="node235" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (isnotnull(product#50952) AND isnotnull(plant#50953))"];
236 [id="node236" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
237 [id="node237" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [product#50952,plant#50953,demandChannel#50954,demandStream#50955,considerVariance#50956,demandTimeBuckets#50957,demandPointInTimeStart#50958,demandPointInTimeEnd#50959,demandPointInTime#50960] Batched: true, DataFilters: [isnotnull(product#50952), isnotnull(plant#50953)], 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..."];
240 [id="node240" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=251702]"];
subgraph cluster241 {
isCluster="true";
id="cluster241";
label="WholeStageCodegen (46)";
tooltip="WholeStageCodegen (46)";
242 [id="node242" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_internalRefUUID#51833 AS plantUuid#51436, storageLocations#51434 AS storageLocUuid#51438]"];
243 [id="node243" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter isnotnull(storageLocations#51434)"];
244 [id="node244" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_internalRefUUID#51946), [_extract_internalRefUUID#51833], false, [storageLocations#51434]"];
245 [id="node245" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#51433.internalRefUUID AS _extract_internalRefUUID#51833, distributionCenters#51433.storageLocations.internalRefUUID AS _extract_internalRefUUID#51946]"];
246 [id="node246" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((size(distributionCenters#51433.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#51433.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#51433.internalRefUUID))"];
247 [id="node247" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(distributionCenters#51417), false, [distributionCenters#51433]"];
}
249 [id="node249" labelType="html" label="<br><b>AQEShuffleRead</b><br><br>" tooltip="AQEShuffleRead coalesced"];
250 [id="node250" 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=250639]"];
subgraph cluster251 {
isCluster="true";
id="cluster251";
label="WholeStageCodegen (43)";
tooltip="WholeStageCodegen (43)";
252 [id="node252" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [id#51377, internalUUID#51376, item#51387.plant.internalRefUUID AS plant#51392, item#51387.product.internalRefUUID AS product#51393, item#51387.storageLocation.internalRefUUID AS storageLocUuid#51394, item#51387.quantityUnit.code AS quantityUom#51395, item#51387.quantityUnit.internalRefUUID AS quantityUomUuid#51396, item#51387.quantityNumerator AS quantityNumerator#51397, item#51387.quantityDenominator AS quantityDenominator#51398, item#51387.scheduleLines AS scheduleLines#51399, item#51387.confirmations AS confirmations#51400]"];
253 [id="node253" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((((isnotnull(item#51387.deletionIndicator) AND isnotnull(item#51387.completeIndicator)) AND isnotnull(item#51387.returnIndicator)) AND ((NOT item#51387.deletionIndicator AND NOT item#51387.completeIndicator) AND NOT item#51387.returnIndicator)) AND ((isnotnull(item#51387.product.internalRefUUID) AND isnotnull(item#51387.plant.internalRefUUID)) AND isnotnull(item#51387.storageLocation.internalRefUUID)))"];
254 [id="node254" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(items#51383), [internalUUID#51376, id#51377], false, [item#51387]"];
}
255 [id="node255" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=237834]"];
subgraph cluster256 {
isCluster="true";
id="cluster256";
label="WholeStageCodegen (35)";
tooltip="WholeStageCodegen (35)";
257 [id="node257" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [internalUUID#51376, id#51377, items#51383]"];
258 [id="node258" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((isnotnull(isMarkedForDeletion#51382) AND NOT isMarkedForDeletion#51382) AND (size(items#51383, true) > 0)) AND isnotnull(items#51383))"];
259 [id="node259" labelType="html" label="<br><b>ColumnarToRow</b><br><br>" tooltip="ColumnarToRow"];
}
260 [id="node260" labelType="html" label="<br><b>Scan parquet </b><br><br>" tooltip="FileScan parquet [internalUUID#51376,id#51377,isMarkedForDeletion#51382,items#51383,systemId#51375] Batched: true, DataFilters: [isnotnull(isMarkedForDeletion#51382), NOT isMarkedForDeletion#51382, (size(items#51383, 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..."];
1->0;
2->1;
3->2;
4->3;
5->4;
6->5;
7->6;
8->7;
9->8;
10->9;
11->10;
12->11;
13->12;
14->13;
15->14;
16->15;
17->16;
19->17;
20->19;
21->20;
22->21;
23->22;
24->23;
26->24;
27->26;
28->27;
29->28;
31->29;
32->31;
33->32;
34->33;
35->34;
37->35;
38->37;
39->38;
40->39;
41->40;
42->41;
44->42;
45->44;
46->45;
47->41;
49->47;
50->49;
52->50;
53->52;
54->53;
55->39;
56->55;
58->56;
59->58;
60->59;
61->37;
62->61;
64->62;
65->64;
66->65;
67->66;
68->27;
69->68;
70->69;
72->70;
73->72;
74->73;
75->74;
76->75;
78->76;
79->78;
80->79;
81->80;
82->81;
83->82;
84->83;
85->84;
86->85;
87->86;
89->87;
90->89;
91->90;
92->91;
93->92;
95->93;
96->95;
97->92;
99->97;
100->99;
102->100;
103->102;
104->103;
105->91;
106->105;
108->106;
109->108;
110->109;
61->89;
111->81;
113->111;
114->113;
115->114;
117->115;
118->117;
119->118;
120->119;
121->120;
122->121;
124->122;
125->124;
126->125;
127->126;
128->127;
130->128;
131->130;
132->131;
133->132;
134->133;
135->134;
136->135;
138->136;
139->138;
140->139;
142->140;
143->142;
144->143;
145->144;
146->138;
147->146;
148->147;
150->148;
151->150;
152->151;
153->152;
154->153;
155->154;
157->155;
158->157;
159->158;
160->159;
161->147;
162->161;
163->162;
165->163;
166->165;
167->166;
168->167;
169->168;
170->169;
172->170;
173->172;
174->173;
175->174;
176->175;
177->176;
179->177;
180->179;
181->180;
47->176;
55->174;
61->172;
182->125;
183->182;
184->183;
185->184;
186->185;
188->186;
189->188;
190->189;
191->190;
192->191;
193->192;
195->193;
196->195;
197->196;
47->192;
55->190;
61->188;
198->119;
199->198;
201->199;
202->201;
203->202;
204->203;
205->204;
206->205;
207->206;
209->207;
210->209;
211->210;
212->211;
213->212;
214->213;
215->214;
217->215;
139->217;
218->217;
219->218;
148->219;
220->219;
221->220;
163->221;
222->204;
223->222;
224->223;
225->224;
226->225;
228->226;
229->228;
230->229;
231->230;
232->231;
193->232;
47->232;
55->230;
61->228;
233->79;
235->233;
236->235;
237->236;
238->21;
239->238;
240->239;
242->240;
243->242;
244->243;
245->244;
246->245;
247->246;
155->247;
248->239;
249->248;
163->249;
250->19;
252->250;
253->252;
254->253;
255->254;
257->255;
258->257;
259->258;
260->259;
}
== Physical Plan ==
AdaptiveSparkPlan (340)
+- == Final Plan ==
ResultQueryStage (335), Statistics(sizeInBytes=8.0 EiB)
+- Execute InsertIntoHadoopFsRelationCommand (334)
+- WriteFiles (333)
+- 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 ==
Execute InsertIntoHadoopFsRelationCommand (339)
+- WriteFiles (338)
+- Project (337)
+- Filter (336)
+- 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 [3]: [openGoodsMovements#51770, plant#51392, product#51393]
Arguments: [openGoodsMovements#51770, plant#51392, product#51393], [(size(transform(openGoodsMovements#51770, lambdafunction(struct(documentId, lambda x_30#64154.documentId, documentUuid, lambda x_30#64154.documentUuid, openQty, lambda x_30#64154.openQty, qtyUomUuid, lambda x_30#64154.qtyUomUuid, qtyUom, lambda x_30#64154.qtyUom, plannedDeliveryDatetime, lambda x_30#64154.availabilityDatetime), lambda x_30#64154, false)), false) > 0)]
(2) InMemoryRelation
Arguments: [product#51393, plant#51392, openGoodsMovements#51770], StorageLevel(disk, memory, 2 replicas)
(3) EmptyRelation
Output [3]: [product#51393, plant#51392, openGoodsMovements#51770]
Arguments: [plan_id=269704]
(4) ResultQueryStage
Output [3]: [product#51393, plant#51392, openGoodsMovements#51770]
Arguments: 110
(5) Scan parquet
Output [2]: [product#50545, plant#50546]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string>
(6) Filter
Input [2]: [product#50545, plant#50546]
Condition : (isnotnull(plant#50546) AND isnotnull(product#50545))
(7) Exchange
Input [2]: [product#50545, plant#50546]
Arguments: hashpartitioning(product#50545, plant#50546, 10), REPARTITION_BY_NUM, [plan_id=220198]
(8) Scan parquet
Output [4]: [plant#50552, product#50553, productionAspect#50555, systemId#50550]
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#50552.internalRefUUID AS _extract_internalRefUUID#51926, product#50553.internalRefUUID AS _extract_internalRefUUID#51925, productionAspect#50555.productMovementPlants.unitOfIssue.code AS _extract_code#51927, productionAspect#50555.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#51928]
Input [4]: [plant#50552, product#50553, productionAspect#50555, systemId#50550]
(10) Exchange
Input [4]: [_extract_internalRefUUID#51926, _extract_internalRefUUID#51925, _extract_code#51927, _extract_internalRefUUID#51928]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219926]
(11) Project
Output [4]: [_extract_code#51927, _extract_internalRefUUID#51928, _extract_internalRefUUID#51925, _extract_internalRefUUID#51926]
Input [4]: [_extract_internalRefUUID#51926, _extract_internalRefUUID#51925, _extract_code#51927, _extract_internalRefUUID#51928]
(12) BroadcastExchange
Input [4]: [_extract_code#51927, _extract_internalRefUUID#51928, _extract_internalRefUUID#51925, _extract_internalRefUUID#51926]
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=220322]
(13) BroadcastHashJoin
Left keys [4]: [coalesce(product#50545, ), isnull(product#50545), coalesce(plant#50546, ), isnull(plant#50546)]
Right keys [4]: [coalesce(_extract_internalRefUUID#51925, ), isnull(_extract_internalRefUUID#51925), coalesce(_extract_internalRefUUID#51926, ), isnull(_extract_internalRefUUID#51926)]
Join type: LeftOuter
Join condition: None
(14) Project
Output [4]: [product#50545, plant#50546, _extract_code#51927, _extract_internalRefUUID#51928]
Input [6]: [product#50545, plant#50546, _extract_code#51927, _extract_internalRefUUID#51928, _extract_internalRefUUID#51925, _extract_internalRefUUID#51926]
(15) Scan parquet
Output [2]: [internalUUID#50563, systemId#50562]
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#50563]
Input [2]: [internalUUID#50563, systemId#50562]
(17) Exchange
Input [1]: [internalUUID#50563]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219932]
(18) BroadcastExchange
Input [1]: [internalUUID#50563]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220326]
(19) BroadcastHashJoin
Left keys [2]: [coalesce(plant#50546, ), isnull(plant#50546)]
Right keys [2]: [coalesce(internalUUID#50563, ), isnull(internalUUID#50563)]
Join type: LeftOuter
Join condition: None
(20) Project
Output [4]: [product#50545, plant#50546, _extract_code#51927, _extract_internalRefUUID#51928]
Input [5]: [product#50545, plant#50546, _extract_code#51927, _extract_internalRefUUID#51928, internalUUID#50563]
(21) Scan parquet
Output [4]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585, systemId#50578]
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#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585, systemId#50578]
Condition : isnotnull(internalUUID#50579)
(23) Project
Output [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Input [4]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585, systemId#50578]
(24) Exchange
Input [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219938]
(25) BroadcastExchange
Input [3]: [internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220330]
(26) BroadcastHashJoin
Left keys [1]: [product#50545]
Right keys [1]: [internalUUID#50579]
Join type: LeftOuter
Join condition: None
(27) Project
Output [3]: [product#50545, plant#50546, filter(unitOfMeasureConversions#50585, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51927) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51928)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50583.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50583.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50591]
Input [7]: [product#50545, plant#50546, _extract_code#51927, _extract_internalRefUUID#51928, internalUUID#50579, baseUnitOfMeasure#50583, unitOfMeasureConversions#50585]
(28) Generate
Input [3]: [product#50545, plant#50546, filteredUnitOfMeasureConversions#50591]
Arguments: explode(filteredUnitOfMeasureConversions#50591.quantityNumerator), [product#50545, plant#50546, filteredUnitOfMeasureConversions#50591], true, [quantityNumerator#50599]
(29) Project
Output [3]: [product#50545, plant#50546, filteredUnitOfMeasureConversions#50591.quantityDenominator AS _extract_quantityDenominator#51787]
Input [4]: [product#50545, plant#50546, filteredUnitOfMeasureConversions#50591, quantityNumerator#50599]
(30) Generate
Input [3]: [product#50545, plant#50546, _extract_quantityDenominator#51787]
Arguments: explode(_extract_quantityDenominator#51787), [product#50545, plant#50546], true, [quantityDenominator#50602]
(31) Project
Output [2]: [product#50545, plant#50546]
Input [3]: [product#50545, plant#50546, quantityDenominator#50602]
(32) Exchange
Input [2]: [product#50545, plant#50546]
Arguments: hashpartitioning(coalesce(plant#50546, ), isnull(plant#50546), coalesce(product#50545, ), isnull(product#50545), 10), ENSURE_REQUIREMENTS, [plan_id=220493]
(33) Sort
Input [2]: [product#50545, plant#50546]
Arguments: [coalesce(plant#50546, ) ASC NULLS FIRST, isnull(plant#50546) ASC NULLS FIRST, coalesce(product#50545, ) ASC NULLS FIRST, isnull(product#50545) ASC NULLS FIRST], false, 0
(34) Scan parquet
Output [3]: [product#51026, plant#51027, orderDateTime#51028]
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/10000000006/shardId=0_1_10000000006]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(35) Exchange
Input [3]: [product#51026, plant#51027, orderDateTime#51028]
Arguments: hashpartitioning(product#51026, plant#51027, 10), REPARTITION_BY_NUM, [plan_id=219946]
(36) Scan parquet
Output [8]: [internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037, systemId#51030]
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#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]
Input [8]: [internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037, systemId#51030]
(38) Exchange
Input [8]: [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219949]
(39) Project
Output [1]: [struct(systemId, systemId#51030, internalUUID, internalUUID#51031, plant, plant#51032, product, product#51033, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#51034, productionAspect, productionAspect#51035, salesPlant, salesPlant#51036, listing, listing#51037) AS productPlant#51038]
Input [8]: [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037]
(40) BroadcastExchange
Input [1]: [productPlant#51038]
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=220337]
(41) BroadcastHashJoin
Left keys [4]: [coalesce(product#51026, ), isnull(product#51026), coalesce(plant#51027, ), isnull(plant#51027)]
Right keys [4]: [coalesce(productPlant#51038.product.internalRefUUID, ), isnull(productPlant#51038.product.internalRefUUID), coalesce(productPlant#51038.plant.internalRefUUID, ), isnull(productPlant#51038.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(42) Scan parquet
Output [3]: [internalUUID#51040, address#51046, systemId#51039]
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#51040, address#51046.timeZone.code AS timezonecode#51051]
Input [3]: [internalUUID#51040, address#51046, systemId#51039]
(44) Exchange
Input [2]: [internalUUID#51040, timezonecode#51051]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219954]
(45) BroadcastExchange
Input [2]: [internalUUID#51040, timezonecode#51051]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220340]
(46) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51027, ), isnull(plant#51027)]
Right keys [2]: [coalesce(internalUUID#51040, ), isnull(internalUUID#51040)]
Join type: LeftOuter
Join condition: None
(47) Project
Output [5]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, CASE WHEN isnotnull(timezonecode#51051) THEN timezonecode#51051 ELSE UTC END AS timezonecode#51052]
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, internalUUID#51040, timezonecode#51051]
(48) Scan parquet
Output [4]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060, systemId#51053]
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#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060, systemId#51053]
Condition : isnotnull(internalUUID#51054)
(50) Project
Output [3]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
Input [4]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060, systemId#51053]
(51) Exchange
Input [3]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219960]
(52) BroadcastExchange
Input [3]: [internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220344]
(53) BroadcastHashJoin
Left keys [1]: [product#51026]
Right keys [1]: [internalUUID#51054]
Join type: LeftOuter
Join condition: None
(54) Project
Output [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filter(unitOfMeasureConversions#51060, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51058.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51058.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51065]
Input [8]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, internalUUID#51054, baseUnitOfMeasure#51058, unitOfMeasureConversions#51060]
(55) Project
Output [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filteredUnitOfMeasureConversions#51065.quantityDenominator AS _extract_quantityDenominator#51845, filteredUnitOfMeasureConversions#51065.quantityNumerator AS _extract_quantityNumerator#51846]
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, filteredUnitOfMeasureConversions#51065]
(56) Generate
Input [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, _extract_quantityDenominator#51845, _extract_quantityNumerator#51846]
Arguments: explode(_extract_quantityNumerator#51846), [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, _extract_quantityDenominator#51845], true, [quantityNumerator#51066]
(57) Generate
Input [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, _extract_quantityDenominator#51845, quantityNumerator#51066]
Arguments: explode(_extract_quantityDenominator#51845), [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, quantityNumerator#51066], true, [quantityDenominator#51067]
(58) Project
Output [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, (cast(quantityNumerator#51066 as double) / cast(quantityDenominator#51067 as double)) AS outboundUnit#51068]
Input [7]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, quantityNumerator#51066, quantityDenominator#51067]
(59) Project
Output [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, CASE WHEN (isnull(outboundUnit#51068) OR (outboundUnit#51068 <= 0.0)) THEN 1.0 ELSE outboundUnit#51068 END AS outboundUnit#51069]
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51068]
(60) Sort
Input [6]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069]
Arguments: [product#51026 ASC NULLS FIRST, plant#51027 ASC NULLS FIRST], false, 0
(61) Scan parquet
Output [6]: [internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075, systemId#51070]
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#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075, systemId#51070]
Condition : (isnotnull(plant#51073.internalRefUUID) AND isnotnull(product#51072.internalRefUUID))
(63) Project
Output [6]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075]
Input [6]: [internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075, systemId#51070]
(64) Exchange
Input [6]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219971]
(65) BroadcastExchange
Input [6]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075]
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=220376]
(66) Scan parquet
Output [2]: [marketUnit#51076, distributionCenters#51082]
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#51076, distributionCenters#51082]
Condition : (((marketUnit#51076 <=> DIP_1691) AND (size(distributionCenters#51082, true) > 0)) AND isnotnull(distributionCenters#51082))
(68) Project
Output [1]: [distributionCenters#51082]
Input [2]: [marketUnit#51076, distributionCenters#51082]
(69) Exchange
Input [1]: [distributionCenters#51082]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219975]
(70) Generate
Input [1]: [distributionCenters#51082]
Arguments: explode(distributionCenters#51082), false, [distributionCenters#51098]
(71) Filter
Input [1]: [distributionCenters#51098]
Condition : (((size(distributionCenters#51098.storageLocations, true) > 0) AND isnotnull(distributionCenters#51098.storageLocations)) AND isnotnull(distributionCenters#51098.internalRefUUID))
(72) Project
Output [2]: [distributionCenters#51098.internalRefUUID AS _extract_internalRefUUID#51813, distributionCenters#51098.storageLocations AS _extract_storageLocations#51814]
Input [1]: [distributionCenters#51098]
(73) Generate
Input [2]: [_extract_internalRefUUID#51813, _extract_storageLocations#51814]
Arguments: explode(_extract_storageLocations#51814), [_extract_internalRefUUID#51813], false, [storageLocations#51099]
(74) Project
Output [3]: [_extract_internalRefUUID#51813 AS plantUuid#51101, storageLocations#51099.id AS storageLocId#51102, storageLocations#51099.internalRefUUID AS storageLocUuid#51103]
Input [2]: [_extract_internalRefUUID#51813, storageLocations#51099]
(75) BroadcastExchange
Input [3]: [plantUuid#51101, storageLocId#51102, storageLocUuid#51103]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220372]
(76) Scan parquet
Output [2]: [product#51104, plant#51105]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(77) Filter
Input [2]: [product#51104, plant#51105]
Condition : isnotnull(plant#51105)
(78) Exchange
Input [2]: [product#51104, plant#51105]
Arguments: hashpartitioning(product#51104, plant#51105, 10), REPARTITION_BY_NUM, [plan_id=220209]
(79) Scan parquet
Output [4]: [plant#51110, product#51111, productionAspect#51113, systemId#51108]
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#51110.internalRefUUID AS _extract_internalRefUUID#51932, product#51111.internalRefUUID AS _extract_internalRefUUID#51931, productionAspect#51113.productMovementPlants.unitOfIssue.code AS _extract_code#51929, productionAspect#51113.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#51930]
Input [4]: [plant#51110, product#51111, productionAspect#51113, systemId#51108]
(81) Exchange
Input [4]: [_extract_internalRefUUID#51932, _extract_internalRefUUID#51931, _extract_code#51929, _extract_internalRefUUID#51930]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219987]
(82) Project
Output [4]: [_extract_code#51929, _extract_internalRefUUID#51930, _extract_internalRefUUID#51931, _extract_internalRefUUID#51932]
Input [4]: [_extract_internalRefUUID#51932, _extract_internalRefUUID#51931, _extract_code#51929, _extract_internalRefUUID#51930]
(83) BroadcastExchange
Input [4]: [_extract_code#51929, _extract_internalRefUUID#51930, _extract_internalRefUUID#51931, _extract_internalRefUUID#51932]
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=220352]
(84) BroadcastHashJoin
Left keys [4]: [coalesce(product#51104, ), isnull(product#51104), coalesce(plant#51105, ), isnull(plant#51105)]
Right keys [4]: [coalesce(_extract_internalRefUUID#51931, ), isnull(_extract_internalRefUUID#51931), coalesce(_extract_internalRefUUID#51932, ), isnull(_extract_internalRefUUID#51932)]
Join type: LeftOuter
Join condition: None
(85) Project
Output [4]: [product#51104, plant#51105, _extract_code#51929, _extract_internalRefUUID#51930]
Input [6]: [product#51104, plant#51105, _extract_code#51929, _extract_internalRefUUID#51930, _extract_internalRefUUID#51931, _extract_internalRefUUID#51932]
(86) Scan parquet
Output [2]: [internalUUID#51118, systemId#51117]
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#51118]
Input [2]: [internalUUID#51118, systemId#51117]
(88) Exchange
Input [1]: [internalUUID#51118]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219993]
(89) BroadcastExchange
Input [1]: [internalUUID#51118]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220356]
(90) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51105, ), isnull(plant#51105)]
Right keys [2]: [coalesce(internalUUID#51118, ), isnull(internalUUID#51118)]
Join type: LeftOuter
Join condition: None
(91) Project
Output [4]: [product#51104, plant#51105, _extract_code#51929, _extract_internalRefUUID#51930]
Input [5]: [product#51104, plant#51105, _extract_code#51929, _extract_internalRefUUID#51930, internalUUID#51118]
(92) Scan parquet
Output [4]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138, systemId#51131]
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#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138, systemId#51131]
Condition : isnotnull(internalUUID#51132)
(94) Project
Output [3]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138]
Input [4]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138, systemId#51131]
(95) Exchange
Input [3]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=219999]
(96) BroadcastExchange
Input [3]: [internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220360]
(97) BroadcastHashJoin
Left keys [1]: [product#51104]
Right keys [1]: [internalUUID#51132]
Join type: LeftOuter
Join condition: None
(98) Project
Output [2]: [plant#51105, filter(unitOfMeasureConversions#51138, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51929) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51930)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51136.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51136.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51143]
Input [7]: [product#51104, plant#51105, _extract_code#51929, _extract_internalRefUUID#51930, internalUUID#51132, baseUnitOfMeasure#51136, unitOfMeasureConversions#51138]
(99) Generate
Input [2]: [plant#51105, filteredUnitOfMeasureConversions#51143]
Arguments: explode(filteredUnitOfMeasureConversions#51143.quantityNumerator), [plant#51105, filteredUnitOfMeasureConversions#51143], true, [quantityNumerator#51144]
(100) Project
Output [2]: [plant#51105, filteredUnitOfMeasureConversions#51143.quantityDenominator AS _extract_quantityDenominator#51815]
Input [3]: [plant#51105, filteredUnitOfMeasureConversions#51143, quantityNumerator#51144]
(101) Generate
Input [2]: [plant#51105, _extract_quantityDenominator#51815]
Arguments: explode(_extract_quantityDenominator#51815), [plant#51105], true, [quantityDenominator#51145]
(102) Project
Output [1]: [plant#51105]
Input [2]: [plant#51105, quantityDenominator#51145]
(103) HashAggregate
Input [1]: [plant#51105]
Keys [1]: [plant#51105]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51105]
(104) Exchange
Input [1]: [plant#51105]
Arguments: hashpartitioning(plant#51105, 10), ENSURE_REQUIREMENTS, [plan_id=220369]
(105) HashAggregate
Input [1]: [plant#51105]
Keys [1]: [plant#51105]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51105]
(106) BroadcastHashJoin
Left keys [1]: [plantUuid#51101]
Right keys [1]: [plant#51105]
Join type: Inner
Join condition: None
(107) Project
Output [3]: [plantUuid#51101, storageLocId#51102, storageLocUuid#51103]
Input [4]: [plantUuid#51101, storageLocId#51102, storageLocUuid#51103, plant#51105]
(108) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51073.internalRefUUID, ), isnull(plant#51073.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#51101, ), isnull(plantUuid#51101)]
Join type: Inner
Join condition: None
(109) Generate
Input [9]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075, plantUuid#51101, storageLocId#51102, storageLocUuid#51103]
Arguments: explode(filter(stockQuantities#51075, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#51103) AND (lambda x#50650.storageLocation.Id = storageLocId#51102)), lambda x#50650, false))), [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, plantUuid#51101], false, [stockQuantity#51148]
(110) ObjectHashAggregate
Input [7]: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, plantUuid#51101, stockQuantity#51148]
Keys [5]: [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070]
Functions [2]: [partial_first(calculationDateTime#51074, false), partial_collect_list(stockQuantity#51148, 0, 0)]
Aggregate Attributes [3]: [first#53709, valueSet#53710, buf#53711]
Results [8]: [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070, first#53712, valueSet#53713, buf#53714]
(111) ObjectHashAggregate
Input [8]: [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070, first#53712, valueSet#53713, buf#53714]
Keys [5]: [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070]
Functions [2]: [first(calculationDateTime#51074, false), collect_list(stockQuantity#51148, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#51074)()#50665, collect_list(stockQuantity#51148, 0, 0)#50666]
Results [4]: [product#51072, plant#51073, first(calculationDateTime#51074)()#50665 AS calculationDateTime#51149, collect_list(stockQuantity#51148, 0, 0)#50666 AS stockQuantities#51150]
(112) Filter
Input [4]: [product#51072, plant#51073, calculationDateTime#51149, stockQuantities#51150]
Condition : ((size(stockQuantities#51150, true) > 0) AND isnotnull(calculationDateTime#51149))
(113) Generate
Input [4]: [product#51072, plant#51073, calculationDateTime#51149, stockQuantities#51150]
Arguments: explode(stockQuantities#51150), [product#51072, plant#51073, calculationDateTime#51149], false, [stockQuantity#51151]
(114) Filter
Input [4]: [product#51072, plant#51073, calculationDateTime#51149, stockQuantity#51151]
Condition : (((isnotnull(stockQuantity#51151.specialStockIndicator.code) AND isnotnull(stockQuantity#51151.stockType.code)) AND (stockQuantity#51151.specialStockIndicator.code = )) AND (stockQuantity#51151.stockType.code = 01))
(115) Project
Output [5]: [plant#51073.internalRefUUID AS plantUuid#51153, product#51072.internalRefUUID AS productUuid#51155, calculationDateTime#51149, stockQuantity#51151.storagelocation.id AS storageLocId#51156, stockQuantity#51151.quantity.measure AS quantity#51158]
Input [4]: [product#51072, plant#51073, calculationDateTime#51149, stockQuantity#51151]
(116) Exchange
Input [5]: [plantUuid#51153, productUuid#51155, calculationDateTime#51149, storageLocId#51156, quantity#51158]
Arguments: hashpartitioning(productUuid#51155, plantUuid#51153, 10), ENSURE_REQUIREMENTS, [plan_id=220402]
(117) Sort
Input [5]: [plantUuid#51153, productUuid#51155, calculationDateTime#51149, storageLocId#51156, quantity#51158]
Arguments: [productUuid#51155 ASC NULLS FIRST, plantUuid#51153 ASC NULLS FIRST], false, 0
(118) Scan parquet
Output [3]: [product#51161, plant#51162, orderDateTime#51163]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(119) Filter
Input [3]: [product#51161, plant#51162, orderDateTime#51163]
Condition : ((isnotnull(orderDateTime#51163) AND isnotnull(plant#51162)) AND isnotnull(product#51161))
(120) Exchange
Input [3]: [product#51161, plant#51162, orderDateTime#51163]
Arguments: hashpartitioning(product#51161, plant#51162, 10), REPARTITION_BY_NUM, [plan_id=220232]
(121) Scan parquet
Output [4]: [plant#51167, product#51168, productionAspect#51170, systemId#51165]
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#51167.internalRefUUID AS _extract_internalRefUUID#51936, product#51168.internalRefUUID AS _extract_internalRefUUID#51935, productionAspect#51170.productMovementPlants.unitOfIssue.code AS _extract_code#51933, productionAspect#51170.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#51934]
Input [4]: [plant#51167, product#51168, productionAspect#51170, systemId#51165]
(123) Exchange
Input [4]: [_extract_internalRefUUID#51936, _extract_internalRefUUID#51935, _extract_code#51933, _extract_internalRefUUID#51934]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220024]
(124) Project
Output [4]: [_extract_code#51933, _extract_internalRefUUID#51934, _extract_internalRefUUID#51935, _extract_internalRefUUID#51936]
Input [4]: [_extract_internalRefUUID#51936, _extract_internalRefUUID#51935, _extract_code#51933, _extract_internalRefUUID#51934]
(125) BroadcastExchange
Input [4]: [_extract_code#51933, _extract_internalRefUUID#51934, _extract_internalRefUUID#51935, _extract_internalRefUUID#51936]
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=220385]
(126) BroadcastHashJoin
Left keys [4]: [coalesce(product#51161, ), isnull(product#51161), coalesce(plant#51162, ), isnull(plant#51162)]
Right keys [4]: [coalesce(_extract_internalRefUUID#51935, ), isnull(_extract_internalRefUUID#51935), coalesce(_extract_internalRefUUID#51936, ), isnull(_extract_internalRefUUID#51936)]
Join type: LeftOuter
Join condition: None
(127) Project
Output [5]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#51933, _extract_internalRefUUID#51934]
Input [7]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#51933, _extract_internalRefUUID#51934, _extract_internalRefUUID#51935, _extract_internalRefUUID#51936]
(128) Scan parquet
Output [2]: [internalUUID#51175, systemId#51174]
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#51175]
Input [2]: [internalUUID#51175, systemId#51174]
(130) Exchange
Input [1]: [internalUUID#51175]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220030]
(131) BroadcastExchange
Input [1]: [internalUUID#51175]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220389]
(132) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51162, ), isnull(plant#51162)]
Right keys [2]: [coalesce(internalUUID#51175, ), isnull(internalUUID#51175)]
Join type: LeftOuter
Join condition: None
(133) Project
Output [5]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#51933, _extract_internalRefUUID#51934]
Input [6]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#51933, _extract_internalRefUUID#51934, internalUUID#51175]
(134) Scan parquet
Output [4]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195, systemId#51188]
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#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195, systemId#51188]
Condition : isnotnull(internalUUID#51189)
(136) Project
Output [3]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195]
Input [4]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195, systemId#51188]
(137) Exchange
Input [3]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220036]
(138) BroadcastExchange
Input [3]: [internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220393]
(139) BroadcastHashJoin
Left keys [1]: [product#51161]
Right keys [1]: [internalUUID#51189]
Join type: LeftOuter
Join condition: None
(140) Project
Output [4]: [product#51161, plant#51162, orderDateTime#51163, filter(unitOfMeasureConversions#51195, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51933) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51934)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51193.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51193.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51200]
Input [8]: [product#51161, plant#51162, orderDateTime#51163, _extract_code#51933, _extract_internalRefUUID#51934, internalUUID#51189, baseUnitOfMeasure#51193, unitOfMeasureConversions#51195]
(141) Generate
Input [4]: [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200]
Arguments: explode(filteredUnitOfMeasureConversions#51200.quantityNumerator), [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200], true, [quantityNumerator#51201]
(142) Project
Output [4]: [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200.quantityDenominator AS _extract_quantityDenominator#51819]
Input [5]: [product#51161, plant#51162, orderDateTime#51163, filteredUnitOfMeasureConversions#51200, quantityNumerator#51201]
(143) Generate
Input [4]: [product#51161, plant#51162, orderDateTime#51163, _extract_quantityDenominator#51819]
Arguments: explode(_extract_quantityDenominator#51819), [product#51161, plant#51162, orderDateTime#51163], true, [quantityDenominator#51202]
(144) Project
Output [3]: [product#51161, plant#51162, orderDateTime#51163]
Input [4]: [product#51161, plant#51162, orderDateTime#51163, quantityDenominator#51202]
(145) Sort
Input [3]: [product#51161, plant#51162, orderDateTime#51163]
Arguments: [product#51161 ASC NULLS FIRST, plant#51162 ASC NULLS FIRST], false, 0
(146) SortMergeJoin
Left keys [2]: [productUuid#51155, plantUuid#51153]
Right keys [2]: [product#51161, plant#51162]
Join type: Inner
Join condition: (calculationDateTime#51149 <= orderDateTime#51163)
(147) Project
Output [5]: [plantUuid#51153 AS plant#51205, productUuid#51155 AS product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158]
Input [8]: [plantUuid#51153, productUuid#51155, calculationDateTime#51149, storageLocId#51156, quantity#51158, product#51161, plant#51162, orderDateTime#51163]
(148) Exchange
Input [5]: [plant#51205, product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158]
Arguments: hashpartitioning(coalesce(plant#51205, ), isnull(plant#51205), coalesce(product#51206, ), isnull(product#51206), coalesce(storageLocId#51156, ), isnull(storageLocId#51156), coalesce(calculationDateTime#51149, 1970-01-01 00:00:00), isnull(calculationDateTime#51149), 10), ENSURE_REQUIREMENTS, [plan_id=220466]
(149) Sort
Input [5]: [plant#51205, product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158]
Arguments: [coalesce(plant#51205, ) ASC NULLS FIRST, isnull(plant#51205) ASC NULLS FIRST, coalesce(product#51206, ) ASC NULLS FIRST, isnull(product#51206) ASC NULLS FIRST, coalesce(storageLocId#51156, ) ASC NULLS FIRST, isnull(storageLocId#51156) ASC NULLS FIRST, coalesce(calculationDateTime#51149, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#51149) ASC NULLS FIRST], false, 0
(150) Scan parquet
Output [6]: [internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212, systemId#51207]
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#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212, systemId#51207]
Condition : (isnotnull(plant#51210.internalRefUUID) AND isnotnull(product#51209.internalRefUUID))
(152) Project
Output [6]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212]
Input [6]: [internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212, systemId#51207]
(153) Exchange
Input [6]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220048]
(154) BroadcastExchange
Input [6]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212]
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=220431]
(155) Scan parquet
Output [2]: [marketUnit#51213, distributionCenters#51219]
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#51213, distributionCenters#51219]
Condition : (((marketUnit#51213 <=> DIP_1691) AND (size(distributionCenters#51219, true) > 0)) AND isnotnull(distributionCenters#51219))
(157) Project
Output [1]: [distributionCenters#51219]
Input [2]: [marketUnit#51213, distributionCenters#51219]
(158) Exchange
Input [1]: [distributionCenters#51219]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220052]
(159) Generate
Input [1]: [distributionCenters#51219]
Arguments: explode(distributionCenters#51219), false, [distributionCenters#51235]
(160) Filter
Input [1]: [distributionCenters#51235]
Condition : (((size(distributionCenters#51235.storageLocations, true) > 0) AND isnotnull(distributionCenters#51235.storageLocations)) AND isnotnull(distributionCenters#51235.internalRefUUID))
(161) Project
Output [2]: [distributionCenters#51235.internalRefUUID AS _extract_internalRefUUID#51823, distributionCenters#51235.storageLocations AS _extract_storageLocations#51824]
Input [1]: [distributionCenters#51235]
(162) Generate
Input [2]: [_extract_internalRefUUID#51823, _extract_storageLocations#51824]
Arguments: explode(_extract_storageLocations#51824), [_extract_internalRefUUID#51823], false, [storageLocations#51236]
(163) Project
Output [3]: [_extract_internalRefUUID#51823 AS plantUuid#51238, storageLocations#51236.id AS storageLocId#51239, storageLocations#51236.internalRefUUID AS storageLocUuid#51240]
Input [2]: [_extract_internalRefUUID#51823, storageLocations#51236]
(164) BroadcastExchange
Input [3]: [plantUuid#51238, storageLocId#51239, storageLocUuid#51240]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220427]
(165) Scan parquet
Output [2]: [product#51241, plant#51242]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(166) Filter
Input [2]: [product#51241, plant#51242]
Condition : isnotnull(plant#51242)
(167) Exchange
Input [2]: [product#51241, plant#51242]
Arguments: hashpartitioning(product#51241, plant#51242, 10), REPARTITION_BY_NUM, [plan_id=220245]
(168) Scan parquet
Output [4]: [plant#51247, product#51248, productionAspect#51250, systemId#51245]
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#51247.internalRefUUID AS _extract_internalRefUUID#51940, product#51248.internalRefUUID AS _extract_internalRefUUID#51937, productionAspect#51250.productMovementPlants.unitOfIssue.code AS _extract_code#51938, productionAspect#51250.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#51939]
Input [4]: [plant#51247, product#51248, productionAspect#51250, systemId#51245]
(170) Exchange
Input [4]: [_extract_internalRefUUID#51940, _extract_internalRefUUID#51937, _extract_code#51938, _extract_internalRefUUID#51939]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220064]
(171) Project
Output [4]: [_extract_code#51938, _extract_internalRefUUID#51939, _extract_internalRefUUID#51937, _extract_internalRefUUID#51940]
Input [4]: [_extract_internalRefUUID#51940, _extract_internalRefUUID#51937, _extract_code#51938, _extract_internalRefUUID#51939]
(172) BroadcastExchange
Input [4]: [_extract_code#51938, _extract_internalRefUUID#51939, _extract_internalRefUUID#51937, _extract_internalRefUUID#51940]
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=220407]
(173) BroadcastHashJoin
Left keys [4]: [coalesce(product#51241, ), isnull(product#51241), coalesce(plant#51242, ), isnull(plant#51242)]
Right keys [4]: [coalesce(_extract_internalRefUUID#51937, ), isnull(_extract_internalRefUUID#51937), coalesce(_extract_internalRefUUID#51940, ), isnull(_extract_internalRefUUID#51940)]
Join type: LeftOuter
Join condition: None
(174) Project
Output [4]: [product#51241, plant#51242, _extract_code#51938, _extract_internalRefUUID#51939]
Input [6]: [product#51241, plant#51242, _extract_code#51938, _extract_internalRefUUID#51939, _extract_internalRefUUID#51937, _extract_internalRefUUID#51940]
(175) Scan parquet
Output [2]: [internalUUID#51255, systemId#51254]
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#51255]
Input [2]: [internalUUID#51255, systemId#51254]
(177) Exchange
Input [1]: [internalUUID#51255]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220070]
(178) BroadcastExchange
Input [1]: [internalUUID#51255]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220411]
(179) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51242, ), isnull(plant#51242)]
Right keys [2]: [coalesce(internalUUID#51255, ), isnull(internalUUID#51255)]
Join type: LeftOuter
Join condition: None
(180) Project
Output [4]: [product#51241, plant#51242, _extract_code#51938, _extract_internalRefUUID#51939]
Input [5]: [product#51241, plant#51242, _extract_code#51938, _extract_internalRefUUID#51939, internalUUID#51255]
(181) Scan parquet
Output [4]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275, systemId#51268]
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#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275, systemId#51268]
Condition : isnotnull(internalUUID#51269)
(183) Project
Output [3]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275]
Input [4]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275, systemId#51268]
(184) Exchange
Input [3]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220076]
(185) BroadcastExchange
Input [3]: [internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220415]
(186) BroadcastHashJoin
Left keys [1]: [product#51241]
Right keys [1]: [internalUUID#51269]
Join type: LeftOuter
Join condition: None
(187) Project
Output [2]: [plant#51242, filter(unitOfMeasureConversions#51275, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51938) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51939)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51273.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51273.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51280]
Input [7]: [product#51241, plant#51242, _extract_code#51938, _extract_internalRefUUID#51939, internalUUID#51269, baseUnitOfMeasure#51273, unitOfMeasureConversions#51275]
(188) Generate
Input [2]: [plant#51242, filteredUnitOfMeasureConversions#51280]
Arguments: explode(filteredUnitOfMeasureConversions#51280.quantityNumerator), [plant#51242, filteredUnitOfMeasureConversions#51280], true, [quantityNumerator#51281]
(189) Project
Output [2]: [plant#51242, filteredUnitOfMeasureConversions#51280.quantityDenominator AS _extract_quantityDenominator#51825]
Input [3]: [plant#51242, filteredUnitOfMeasureConversions#51280, quantityNumerator#51281]
(190) Generate
Input [2]: [plant#51242, _extract_quantityDenominator#51825]
Arguments: explode(_extract_quantityDenominator#51825), [plant#51242], true, [quantityDenominator#51282]
(191) Project
Output [1]: [plant#51242]
Input [2]: [plant#51242, quantityDenominator#51282]
(192) HashAggregate
Input [1]: [plant#51242]
Keys [1]: [plant#51242]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51242]
(193) Exchange
Input [1]: [plant#51242]
Arguments: hashpartitioning(plant#51242, 10), ENSURE_REQUIREMENTS, [plan_id=220424]
(194) HashAggregate
Input [1]: [plant#51242]
Keys [1]: [plant#51242]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51242]
(195) BroadcastHashJoin
Left keys [1]: [plantUuid#51238]
Right keys [1]: [plant#51242]
Join type: Inner
Join condition: None
(196) Project
Output [3]: [plantUuid#51238, storageLocId#51239, storageLocUuid#51240]
Input [4]: [plantUuid#51238, storageLocId#51239, storageLocUuid#51240, plant#51242]
(197) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51210.internalRefUUID, ), isnull(plant#51210.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#51238, ), isnull(plantUuid#51238)]
Join type: Inner
Join condition: None
(198) Generate
Input [9]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212, plantUuid#51238, storageLocId#51239, storageLocUuid#51240]
Arguments: explode(filter(stockQuantities#51212, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#51240) AND (lambda x#50650.storageLocation.Id = storageLocId#51239)), lambda x#50650, false))), [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, plantUuid#51238], false, [stockQuantity#51285]
(199) ObjectHashAggregate
Input [7]: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, plantUuid#51238, stockQuantity#51285]
Keys [5]: [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207]
Functions [2]: [partial_first(calculationDateTime#51211, false), partial_collect_list(stockQuantity#51285, 0, 0)]
Aggregate Attributes [3]: [first#53717, valueSet#53718, buf#53719]
Results [8]: [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207, first#53720, valueSet#53721, buf#53722]
(200) ObjectHashAggregate
Input [8]: [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207, first#53720, valueSet#53721, buf#53722]
Keys [5]: [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207]
Functions [2]: [first(calculationDateTime#51211, false), collect_list(stockQuantity#51285, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#51211)()#50665, collect_list(stockQuantity#51285, 0, 0)#50666]
Results [4]: [product#51209, plant#51210, first(calculationDateTime#51211)()#50665 AS calculationDateTime#51286, collect_list(stockQuantity#51285, 0, 0)#50666 AS stockQuantities#51287]
(201) Filter
Input [4]: [product#51209, plant#51210, calculationDateTime#51286, stockQuantities#51287]
Condition : ((size(stockQuantities#51287, true) > 0) AND isnotnull(calculationDateTime#51286))
(202) Generate
Input [4]: [product#51209, plant#51210, calculationDateTime#51286, stockQuantities#51287]
Arguments: explode(stockQuantities#51287), [product#51209, plant#51210, calculationDateTime#51286], false, [stockQuantity#51288]
(203) Filter
Input [4]: [product#51209, plant#51210, calculationDateTime#51286, stockQuantity#51288]
Condition : (((isnotnull(stockQuantity#51288.specialStockIndicator.code) AND isnotnull(stockQuantity#51288.stockType.code)) AND (stockQuantity#51288.specialStockIndicator.code = )) AND (stockQuantity#51288.stockType.code = 01))
(204) Project
Output [4]: [plant#51210.internalRefUUID AS plantUuid#51290, product#51209.internalRefUUID AS productUuid#51292, calculationDateTime#51286, stockQuantity#51288.storagelocation.id AS storageLocId#51293]
Input [4]: [product#51209, plant#51210, calculationDateTime#51286, stockQuantity#51288]
(205) Exchange
Input [4]: [plantUuid#51290, productUuid#51292, calculationDateTime#51286, storageLocId#51293]
Arguments: hashpartitioning(productUuid#51292, plantUuid#51290, 10), ENSURE_REQUIREMENTS, [plan_id=220457]
(206) Sort
Input [4]: [plantUuid#51290, productUuid#51292, calculationDateTime#51286, storageLocId#51293]
Arguments: [productUuid#51292 ASC NULLS FIRST, plantUuid#51290 ASC NULLS FIRST], false, 0
(207) Scan parquet
Output [3]: [product#51298, plant#51299, orderDateTime#51300]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(208) Filter
Input [3]: [product#51298, plant#51299, orderDateTime#51300]
Condition : ((isnotnull(orderDateTime#51300) AND isnotnull(plant#51299)) AND isnotnull(product#51298))
(209) Exchange
Input [3]: [product#51298, plant#51299, orderDateTime#51300]
Arguments: hashpartitioning(product#51298, plant#51299, 10), REPARTITION_BY_NUM, [plan_id=220268]
(210) Scan parquet
Output [4]: [plant#51304, product#51305, productionAspect#51307, systemId#51302]
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#51304.internalRefUUID AS _extract_internalRefUUID#51941, product#51305.internalRefUUID AS _extract_internalRefUUID#51942, productionAspect#51307.productMovementPlants.unitOfIssue.code AS _extract_code#51943, productionAspect#51307.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#51944]
Input [4]: [plant#51304, product#51305, productionAspect#51307, systemId#51302]
(212) Exchange
Input [4]: [_extract_internalRefUUID#51941, _extract_internalRefUUID#51942, _extract_code#51943, _extract_internalRefUUID#51944]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220101]
(213) Project
Output [4]: [_extract_code#51943, _extract_internalRefUUID#51944, _extract_internalRefUUID#51942, _extract_internalRefUUID#51941]
Input [4]: [_extract_internalRefUUID#51941, _extract_internalRefUUID#51942, _extract_code#51943, _extract_internalRefUUID#51944]
(214) BroadcastExchange
Input [4]: [_extract_code#51943, _extract_internalRefUUID#51944, _extract_internalRefUUID#51942, _extract_internalRefUUID#51941]
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=220440]
(215) BroadcastHashJoin
Left keys [4]: [coalesce(product#51298, ), isnull(product#51298), coalesce(plant#51299, ), isnull(plant#51299)]
Right keys [4]: [coalesce(_extract_internalRefUUID#51942, ), isnull(_extract_internalRefUUID#51942), coalesce(_extract_internalRefUUID#51941, ), isnull(_extract_internalRefUUID#51941)]
Join type: LeftOuter
Join condition: None
(216) Project
Output [5]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#51943, _extract_internalRefUUID#51944]
Input [7]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#51943, _extract_internalRefUUID#51944, _extract_internalRefUUID#51942, _extract_internalRefUUID#51941]
(217) Scan parquet
Output [2]: [internalUUID#51312, systemId#51311]
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#51312]
Input [2]: [internalUUID#51312, systemId#51311]
(219) Exchange
Input [1]: [internalUUID#51312]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220107]
(220) BroadcastExchange
Input [1]: [internalUUID#51312]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220444]
(221) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51299, ), isnull(plant#51299)]
Right keys [2]: [coalesce(internalUUID#51312, ), isnull(internalUUID#51312)]
Join type: LeftOuter
Join condition: None
(222) Project
Output [5]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#51943, _extract_internalRefUUID#51944]
Input [6]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#51943, _extract_internalRefUUID#51944, internalUUID#51312]
(223) Scan parquet
Output [4]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332, systemId#51325]
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#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332, systemId#51325]
Condition : isnotnull(internalUUID#51326)
(225) Project
Output [3]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332]
Input [4]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332, systemId#51325]
(226) Exchange
Input [3]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220113]
(227) BroadcastExchange
Input [3]: [internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220448]
(228) BroadcastHashJoin
Left keys [1]: [product#51298]
Right keys [1]: [internalUUID#51326]
Join type: LeftOuter
Join condition: None
(229) Project
Output [4]: [product#51298, plant#51299, orderDateTime#51300, filter(unitOfMeasureConversions#51332, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51943) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51944)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51330.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51330.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51337]
Input [8]: [product#51298, plant#51299, orderDateTime#51300, _extract_code#51943, _extract_internalRefUUID#51944, internalUUID#51326, baseUnitOfMeasure#51330, unitOfMeasureConversions#51332]
(230) Generate
Input [4]: [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337]
Arguments: explode(filteredUnitOfMeasureConversions#51337.quantityNumerator), [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337], true, [quantityNumerator#51338]
(231) Project
Output [4]: [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337.quantityDenominator AS _extract_quantityDenominator#51829]
Input [5]: [product#51298, plant#51299, orderDateTime#51300, filteredUnitOfMeasureConversions#51337, quantityNumerator#51338]
(232) Generate
Input [4]: [product#51298, plant#51299, orderDateTime#51300, _extract_quantityDenominator#51829]
Arguments: explode(_extract_quantityDenominator#51829), [product#51298, plant#51299, orderDateTime#51300], true, [quantityDenominator#51339]
(233) Project
Output [3]: [product#51298, plant#51299, orderDateTime#51300]
Input [4]: [product#51298, plant#51299, orderDateTime#51300, quantityDenominator#51339]
(234) Sort
Input [3]: [product#51298, plant#51299, orderDateTime#51300]
Arguments: [product#51298 ASC NULLS FIRST, plant#51299 ASC NULLS FIRST], false, 0
(235) SortMergeJoin
Left keys [2]: [productUuid#51292, plantUuid#51290]
Right keys [2]: [product#51298, plant#51299]
Join type: Inner
Join condition: (calculationDateTime#51286 <= orderDateTime#51300)
(236) Project
Output [4]: [plantUuid#51290 AS plant#51342, productUuid#51292 AS product#51343, storageLocId#51293, calculationDateTime#51286]
Input [7]: [plantUuid#51290, productUuid#51292, calculationDateTime#51286, storageLocId#51293, product#51298, plant#51299, orderDateTime#51300]
(237) HashAggregate
Input [4]: [plant#51342, product#51343, storageLocId#51293, calculationDateTime#51286]
Keys [3]: [plant#51342, product#51343, storageLocId#51293]
Functions [1]: [partial_max(calculationDateTime#51286)]
Aggregate Attributes [1]: [max#53715]
Results [4]: [plant#51342, product#51343, storageLocId#51293, max#53716]
(238) HashAggregate
Input [4]: [plant#51342, product#51343, storageLocId#51293, max#53716]
Keys [3]: [plant#51342, product#51343, storageLocId#51293]
Functions [1]: [max(calculationDateTime#51286)]
Aggregate Attributes [1]: [max(calculationDateTime#51286)#50743]
Results [4]: [plant#51342, product#51343, storageLocId#51293, max(calculationDateTime#51286)#50743 AS max_calc_datetime#51344]
(239) Exchange
Input [4]: [plant#51342, product#51343, storageLocId#51293, max_calc_datetime#51344]
Arguments: hashpartitioning(coalesce(plant#51342, ), isnull(plant#51342), coalesce(product#51343, ), isnull(product#51343), coalesce(storageLocId#51293, ), isnull(storageLocId#51293), coalesce(max_calc_datetime#51344, 1970-01-01 00:00:00), isnull(max_calc_datetime#51344), 10), ENSURE_REQUIREMENTS, [plan_id=220467]
(240) Sort
Input [4]: [plant#51342, product#51343, storageLocId#51293, max_calc_datetime#51344]
Arguments: [coalesce(plant#51342, ) ASC NULLS FIRST, isnull(plant#51342) ASC NULLS FIRST, coalesce(product#51343, ) ASC NULLS FIRST, isnull(product#51343) ASC NULLS FIRST, coalesce(storageLocId#51293, ) ASC NULLS FIRST, isnull(storageLocId#51293) ASC NULLS FIRST, coalesce(max_calc_datetime#51344, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#51344) ASC NULLS FIRST], false, 0
(241) SortMergeJoin
Left keys [8]: [coalesce(plant#51205, ), isnull(plant#51205), coalesce(product#51206, ), isnull(product#51206), coalesce(storageLocId#51156, ), isnull(storageLocId#51156), coalesce(calculationDateTime#51149, 1970-01-01 00:00:00), isnull(calculationDateTime#51149)]
Right keys [8]: [coalesce(plant#51342, ), isnull(plant#51342), coalesce(product#51343, ), isnull(product#51343), coalesce(storageLocId#51293, ), isnull(storageLocId#51293), coalesce(max_calc_datetime#51344, 1970-01-01 00:00:00), isnull(max_calc_datetime#51344)]
Join type: Inner
Join condition: None
(242) Project
Output [4]: [plant#51205, product#51206, calculationDateTime#51149, quantity#51158]
Input [9]: [plant#51205, product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158, plant#51342, product#51343, storageLocId#51293, max_calc_datetime#51344]
(243) HashAggregate
Input [4]: [plant#51205, product#51206, calculationDateTime#51149, quantity#51158]
Keys [2]: [product#51206, plant#51205]
Functions [2]: [partial_min(calculationDateTime#51149), partial_sum(quantity#51158)]
Aggregate Attributes [2]: [min#53705, sum#53706]
Results [4]: [product#51206, plant#51205, min#53707, sum#53708]
(244) Exchange
Input [4]: [product#51206, plant#51205, min#53707, sum#53708]
Arguments: hashpartitioning(product#51206, plant#51205, 10), ENSURE_REQUIREMENTS, [plan_id=220474]
(245) HashAggregate
Input [4]: [product#51206, plant#51205, min#53707, sum#53708]
Keys [2]: [product#51206, plant#51205]
Functions [2]: [min(calculationDateTime#51149), sum(quantity#51158)]
Aggregate Attributes [2]: [min(calculationDateTime#51149)#50899, sum(quantity#51158)#50898]
Results [4]: [product#51206, plant#51205, min(calculationDateTime#51149)#50899 AS minCalculationDateTime#51346, round(sum(quantity#51158)#50898, 0) AS roundedQuantitySum#51347]
(246) Sort
Input [4]: [product#51206, plant#51205, minCalculationDateTime#51346, roundedQuantitySum#51347]
Arguments: [product#51206 ASC NULLS FIRST, plant#51205 ASC NULLS FIRST], false, 0
(247) SortMergeJoin
Left keys [2]: [product#51026, plant#51027]
Right keys [2]: [product#51206, plant#51205]
Join type: LeftOuter
Join condition: None
(248) Project
Output [8]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, CASE WHEN isnotnull(minCalculationDateTime#51346) THEN minCalculationDateTime#51346 ELSE orderDateTime#51028 END AS stockDatetime#51348, CASE WHEN isnotnull(roundedQuantitySum#51347) THEN array(roundedQuantitySum#51347) ELSE [0.0] END AS stockBatchQuantities#51349]
Input [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, product#51206, plant#51205, minCalculationDateTime#51346, roundedQuantitySum#51347]
(249) Scan parquet
Output [9]: [product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000006/0_1_10000000006]
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#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
Condition : (isnotnull(product#50952) AND isnotnull(plant#50953))
(251) BroadcastExchange
Input [9]: [product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=220483]
(252) BroadcastHashJoin
Left keys [2]: [product#51026, plant#51027]
Right keys [2]: [product#50952, plant#50953]
Join type: LeftOuter
Join condition: None
(253) Project
Output [9]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, CASE WHEN isnotnull(product#50952) THEN struct(demandChannel, demandChannel#50954, demandStream, demandStream#50955, considerVariance, considerVariance#50956, demandTimeBuckets, demandTimeBuckets#50957, demandPointInTimeStart, demandPointInTimeStart#50958, demandPointInTimeEnd, demandPointInTimeEnd#50959, demandPointInTime, demandPointInTime#50960) END AS rawDemands#50972]
Input [17]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960]
(254) ObjectHashAggregate
Input [9]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, rawDemands#50972]
Keys [9]: [product#51026, plant#51027, orderDateTime#51028, knownfloatingpointnormalized(if (isnull(productPlant#51038)) null else named_struct(systemId, productPlant#51038.systemId, internalUUID, productPlant#51038.internalUUID, plant, productPlant#51038.plant, product, productPlant#51038.product, blockedForReplenishmentStartingFrom, productPlant#51038.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#51038.productionAspect)) null else named_struct(productMovementPlants, productPlant#51038.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#51038.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#51038.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#51038.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#51038.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#51038.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#51038.salesPlant, listing, productPlant#51038.listing)) AS productPlant#51038, timezonecode#51052, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#51069)) AS outboundUnit#51069, stockDatetime#51348, knownfloatingpointnormalized(transform(stockBatchQuantities#51349, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#53702)), lambda arg#53702, false))) AS stockBatchQuantities#51349, [7226582400000000] AS [7226582400000000]#53701]
Functions [1]: [partial_collect_list(rawDemands#50972, 0, 0)]
Aggregate Attributes [1]: [buf#53703]
Results [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000]#53701, buf#53704]
(255) ObjectHashAggregate
Input [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000]#53701, buf#53704]
Keys [9]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000]#53701]
Functions [1]: [collect_list(rawDemands#50972, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#50972, 0, 0)#50991]
Results [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#51350, collect_list(rawDemands#50972, 0, 0)#50991 AS rawDemands#50973]
(256) DeserializeToObject
Input [10]: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, stockBatchShelfLifeEndDatetimes#51350, rawDemands#50973]
Arguments: createexternalrow(invoke(product#51026.toString()), invoke(plant#51027.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#51028)), if (isnull(productPlant#51038)) null else createexternalrow(invoke(productPlant#51038.systemId.toString()), invoke(productPlant#51038.internalUUID.toString()), if (isnull(productPlant#51038.plant)) null else createexternalrow(invoke(productPlant#51038.plant.internalRefUUID.toString()), invoke(productPlant#51038.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#51038.product)) null else createexternalrow(invoke(productPlant#51038.product.internalRefUUID.toString()), invoke(productPlant#51038.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#51038.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#51038.productionAspect)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#51038.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.salesPlant)) null else createexternalrow(if (isnull(productPlant#51038.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#51038.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.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#51052.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#51069)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#51348)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#51349, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#51350, 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#50973, 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#51012: org.apache.spark.sql.Row
(257) MapElements
Input [1]: [obj#51012]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, obj#51017: org.apache.spark.sql.Row
(258) SerializeFromObject
Input [1]: [obj#51017]
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#51022, 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#51023]
(259) Exchange
Input [2]: [product#51022, plant#51023]
Arguments: hashpartitioning(coalesce(plant#51023, ), isnull(plant#51023), coalesce(product#51022, ), isnull(product#51022), 10), ENSURE_REQUIREMENTS, [plan_id=220494]
(260) Sort
Input [2]: [product#51022, plant#51023]
Arguments: [coalesce(plant#51023, ) ASC NULLS FIRST, isnull(plant#51023) ASC NULLS FIRST, coalesce(product#51022, ) ASC NULLS FIRST, isnull(product#51022) ASC NULLS FIRST], false, 0
(261) SortMergeJoin
Left keys [4]: [coalesce(plant#50546, ), isnull(plant#50546), coalesce(product#50545, ), isnull(product#50545)]
Right keys [4]: [coalesce(plant#51023, ), isnull(plant#51023), coalesce(product#51022, ), isnull(product#51022)]
Join type: LeftOuter
Join condition: None
(262) Project
Output [2]: [product#50545, plant#50546]
Input [4]: [product#50545, plant#50546, product#51022, plant#51023]
(263) Exchange
Input [2]: [product#50545, plant#50546]
Arguments: hashpartitioning(plant#50546, 10), ENSURE_REQUIREMENTS, [plan_id=220524]
(264) Sort
Input [2]: [product#50545, plant#50546]
Arguments: [plant#50546 ASC NULLS FIRST], false, 0
(265) Scan parquet
Output [2]: [marketUnit#51411, distributionCenters#51417]
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#51411, distributionCenters#51417]
Condition : (((marketUnit#51411 <=> DIP_1691) AND (size(distributionCenters#51417, true) > 0)) AND isnotnull(distributionCenters#51417))
(267) Project
Output [1]: [distributionCenters#51417]
Input [2]: [marketUnit#51411, distributionCenters#51417]
(268) Exchange
Input [1]: [distributionCenters#51417]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220145]
(269) Generate
Input [1]: [distributionCenters#51417]
Arguments: explode(distributionCenters#51417), false, [distributionCenters#51433]
(270) Filter
Input [1]: [distributionCenters#51433]
Condition : (((size(distributionCenters#51433.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#51433.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#51433.internalRefUUID))
(271) Project
Output [2]: [distributionCenters#51433.internalRefUUID AS _extract_internalRefUUID#51833, distributionCenters#51433.storageLocations.internalRefUUID AS _extract_internalRefUUID#51946]
Input [1]: [distributionCenters#51433]
(272) Generate
Input [2]: [_extract_internalRefUUID#51833, _extract_internalRefUUID#51946]
Arguments: explode(_extract_internalRefUUID#51946), [_extract_internalRefUUID#51833], false, [storageLocations#51434]
(273) Filter
Input [2]: [_extract_internalRefUUID#51833, storageLocations#51434]
Condition : isnotnull(storageLocations#51434)
(274) Project
Output [2]: [_extract_internalRefUUID#51833 AS plantUuid#51436, storageLocations#51434 AS storageLocUuid#51438]
Input [2]: [_extract_internalRefUUID#51833, storageLocations#51434]
(275) BroadcastExchange
Input [2]: [plantUuid#51436, storageLocUuid#51438]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220519]
(276) Scan parquet
Output [2]: [product#51439, plant#51440]
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/10000000006/shardId=0_1_10000000006]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(277) Filter
Input [2]: [product#51439, plant#51440]
Condition : isnotnull(plant#51440)
(278) Exchange
Input [2]: [product#51439, plant#51440]
Arguments: hashpartitioning(product#51439, plant#51440, 10), REPARTITION_BY_NUM, [plan_id=220298]
(279) Scan parquet
Output [4]: [plant#51445, product#51446, productionAspect#51448, systemId#51443]
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#51445.internalRefUUID AS _extract_internalRefUUID#51948, product#51446.internalRefUUID AS _extract_internalRefUUID#51947, productionAspect#51448.productMovementPlants.unitOfIssue.code AS _extract_code#51949, productionAspect#51448.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#51950]
Input [4]: [plant#51445, product#51446, productionAspect#51448, systemId#51443]
(281) Exchange
Input [4]: [_extract_internalRefUUID#51948, _extract_internalRefUUID#51947, _extract_code#51949, _extract_internalRefUUID#51950]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220158]
(282) Project
Output [4]: [_extract_code#51949, _extract_internalRefUUID#51950, _extract_internalRefUUID#51947, _extract_internalRefUUID#51948]
Input [4]: [_extract_internalRefUUID#51948, _extract_internalRefUUID#51947, _extract_code#51949, _extract_internalRefUUID#51950]
(283) BroadcastExchange
Input [4]: [_extract_code#51949, _extract_internalRefUUID#51950, _extract_internalRefUUID#51947, _extract_internalRefUUID#51948]
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=220499]
(284) BroadcastHashJoin
Left keys [4]: [coalesce(product#51439, ), isnull(product#51439), coalesce(plant#51440, ), isnull(plant#51440)]
Right keys [4]: [coalesce(_extract_internalRefUUID#51947, ), isnull(_extract_internalRefUUID#51947), coalesce(_extract_internalRefUUID#51948, ), isnull(_extract_internalRefUUID#51948)]
Join type: LeftOuter
Join condition: None
(285) Project
Output [4]: [product#51439, plant#51440, _extract_code#51949, _extract_internalRefUUID#51950]
Input [6]: [product#51439, plant#51440, _extract_code#51949, _extract_internalRefUUID#51950, _extract_internalRefUUID#51947, _extract_internalRefUUID#51948]
(286) Scan parquet
Output [2]: [internalUUID#51453, systemId#51452]
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#51453]
Input [2]: [internalUUID#51453, systemId#51452]
(288) Exchange
Input [1]: [internalUUID#51453]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220164]
(289) BroadcastExchange
Input [1]: [internalUUID#51453]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=220503]
(290) BroadcastHashJoin
Left keys [2]: [coalesce(plant#51440, ), isnull(plant#51440)]
Right keys [2]: [coalesce(internalUUID#51453, ), isnull(internalUUID#51453)]
Join type: LeftOuter
Join condition: None
(291) Project
Output [4]: [product#51439, plant#51440, _extract_code#51949, _extract_internalRefUUID#51950]
Input [5]: [product#51439, plant#51440, _extract_code#51949, _extract_internalRefUUID#51950, internalUUID#51453]
(292) Scan parquet
Output [4]: [internalUUID#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473, systemId#51466]
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#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473, systemId#51466]
Condition : isnotnull(internalUUID#51467)
(294) Project
Output [3]: [internalUUID#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473]
Input [4]: [internalUUID#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473, systemId#51466]
(295) Exchange
Input [3]: [internalUUID#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220170]
(296) BroadcastExchange
Input [3]: [internalUUID#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=220507]
(297) BroadcastHashJoin
Left keys [1]: [product#51439]
Right keys [1]: [internalUUID#51467]
Join type: LeftOuter
Join condition: None
(298) Project
Output [2]: [plant#51440, filter(unitOfMeasureConversions#51473, lambdafunction((((lambda u#50592.measurementUnit1.code = _extract_code#51949) AND (lambda u#50592.measurementUnit1.internalRefUUID = _extract_internalRefUUID#51950)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51471.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51471.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51478]
Input [7]: [product#51439, plant#51440, _extract_code#51949, _extract_internalRefUUID#51950, internalUUID#51467, baseUnitOfMeasure#51471, unitOfMeasureConversions#51473]
(299) Generate
Input [2]: [plant#51440, filteredUnitOfMeasureConversions#51478]
Arguments: explode(filteredUnitOfMeasureConversions#51478.quantityNumerator), [plant#51440, filteredUnitOfMeasureConversions#51478], true, [quantityNumerator#51479]
(300) Project
Output [2]: [plant#51440, filteredUnitOfMeasureConversions#51478.quantityDenominator AS _extract_quantityDenominator#51835]
Input [3]: [plant#51440, filteredUnitOfMeasureConversions#51478, quantityNumerator#51479]
(301) Generate
Input [2]: [plant#51440, _extract_quantityDenominator#51835]
Arguments: explode(_extract_quantityDenominator#51835), [plant#51440], true, [quantityDenominator#51480]
(302) Project
Output [1]: [plant#51440]
Input [2]: [plant#51440, quantityDenominator#51480]
(303) HashAggregate
Input [1]: [plant#51440]
Keys [1]: [plant#51440]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51440]
(304) Exchange
Input [1]: [plant#51440]
Arguments: hashpartitioning(plant#51440, 10), ENSURE_REQUIREMENTS, [plan_id=220516]
(305) HashAggregate
Input [1]: [plant#51440]
Keys [1]: [plant#51440]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#51440]
(306) BroadcastHashJoin
Left keys [1]: [plantUuid#51436]
Right keys [1]: [plant#51440]
Join type: Inner
Join condition: None
(307) Project
Output [2]: [plantUuid#51436 AS plant#51410, storageLocUuid#51438]
Input [3]: [plantUuid#51436, storageLocUuid#51438, plant#51440]
(308) Sort
Input [2]: [plant#51410, storageLocUuid#51438]
Arguments: [plant#51410 ASC NULLS FIRST], false, 0
(309) SortMergeJoin
Left keys [1]: [plant#50546]
Right keys [1]: [plant#51410]
Join type: Inner
Join condition: None
(310) Project
Output [3]: [plant#50546, product#50545, storageLocUuid#51438]
Input [4]: [product#50545, plant#50546, plant#51410, storageLocUuid#51438]
(311) Scan parquet
Output [5]: [internalUUID#51376, id#51377, isMarkedForDeletion#51382, items#51383, systemId#51375]
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#51376, id#51377, isMarkedForDeletion#51382, items#51383, systemId#51375]
Condition : (((isnotnull(isMarkedForDeletion#51382) AND NOT isMarkedForDeletion#51382) AND (size(items#51383, true) > 0)) AND isnotnull(items#51383))
(313) Project
Output [3]: [internalUUID#51376, id#51377, items#51383]
Input [5]: [internalUUID#51376, id#51377, isMarkedForDeletion#51382, items#51383, systemId#51375]
(314) Exchange
Input [3]: [internalUUID#51376, id#51377, items#51383]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=220186]
(315) Generate
Input [3]: [internalUUID#51376, id#51377, items#51383]
Arguments: explode(items#51383), [internalUUID#51376, id#51377], false, [item#51387]
(316) Filter
Input [3]: [internalUUID#51376, id#51377, item#51387]
Condition : ((((isnotnull(item#51387.deletionIndicator) AND isnotnull(item#51387.completeIndicator)) AND isnotnull(item#51387.returnIndicator)) AND ((NOT item#51387.deletionIndicator AND NOT item#51387.completeIndicator) AND NOT item#51387.returnIndicator)) AND ((isnotnull(item#51387.product.internalRefUUID) AND isnotnull(item#51387.plant.internalRefUUID)) AND isnotnull(item#51387.storageLocation.internalRefUUID)))
(317) Project
Output [11]: [id#51377, internalUUID#51376, item#51387.plant.internalRefUUID AS plant#51392, item#51387.product.internalRefUUID AS product#51393, item#51387.storageLocation.internalRefUUID AS storageLocUuid#51394, item#51387.quantityUnit.code AS quantityUom#51395, item#51387.quantityUnit.internalRefUUID AS quantityUomUuid#51396, item#51387.quantityNumerator AS quantityNumerator#51397, item#51387.quantityDenominator AS quantityDenominator#51398, item#51387.scheduleLines AS scheduleLines#51399, item#51387.confirmations AS confirmations#51400]
Input [3]: [internalUUID#51376, id#51377, item#51387]
(318) BroadcastExchange
Input [11]: [id#51377, internalUUID#51376, plant#51392, product#51393, storageLocUuid#51394, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=220530]
(319) BroadcastHashJoin
Left keys [3]: [product#50545, plant#50546, storageLocUuid#51438]
Right keys [3]: [product#51393, plant#51392, storageLocUuid#51394]
Join type: Inner
Join condition: None
(320) Project
Output [11]: [id#51377, internalUUID#51376, plant#51392, product#51393, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, size(filter(confirmations#51400, lambdafunction(((NOT lambda x_22#51761.deletionIndicator AND lambda x_22#51761.isRelevantForConfirmation) AND isnotnull(lambda x_22#51761.confirmedDeliveryAt)), lambda x_22#51761, false)), false) AS _w0#51768]
Input [14]: [plant#50546, product#50545, storageLocUuid#51438, id#51377, internalUUID#51376, plant#51392, product#51393, storageLocUuid#51394, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400]
(321) Exchange
Input [11]: [id#51377, internalUUID#51376, plant#51392, product#51393, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, _w0#51768]
Arguments: hashpartitioning(internalUUID#51376, 10), ENSURE_REQUIREMENTS, [plan_id=220534]
(322) Sort
Input [11]: [id#51377, internalUUID#51376, plant#51392, product#51393, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, _w0#51768]
Arguments: [internalUUID#51376 ASC NULLS FIRST], false, 0
(323) Window
Input [11]: [id#51377, internalUUID#51376, plant#51392, product#51393, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, _w0#51768]
Arguments: [sum(_w0#51768) windowspecdefinition(internalUUID#51376, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#51769L], [internalUUID#51376]
(324) Project
Output [3]: [plant#51392, product#51393, filter(transform(CASE WHEN (_we0#51769L > 0) THEN transform(filter(confirmations#51400, lambdafunction(((NOT lambda x_22#51762.deletionIndicator AND lambda x_22#51762.isRelevantForConfirmation) AND isnotnull(lambda x_22#51762.confirmedDeliveryAt)), lambda x_22#51762, false)), lambdafunction(struct(openQty, greatest((lambda x_23#51765.confirmedQuantity - coalesce(lambda x_23#51765.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_23#51765.confirmedDeliveryAt), lambda x_23#51765, false)) ELSE transform(scheduleLines#51399, lambdafunction(struct(openQty, greatest((lambda x_21#51763.quantity - coalesce(lambda x_21#51763.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_21#51763.deliveryAt), lambda x_21#51763, false)) END, lambdafunction(struct(documentId, id#51377, documentUuid, internalUUID#51376, openQty, lambda x_24#51766.openQty, openQtyInBaseUnit, ((lambda x_24#51766.openQty * quantityNumerator#51397) / quantityDenominator#51398), qtyUom, quantityUom#51395, qtyUomUuid, quantityUomUuid#51396, availabilityDatetime, lambda x_24#51766.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_24#51766, false)), lambdafunction(NOT (lambda x_25#51767.openQty = 0.0), lambda x_25#51767, false)) AS openGoodsMovements#51760]
Input [12]: [id#51377, internalUUID#51376, plant#51392, product#51393, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, _w0#51768, _we0#51769L]
(325) ObjectHashAggregate
Input [3]: [plant#51392, product#51393, openGoodsMovements#51760]
Keys [2]: [product#51393, plant#51392]
Functions [1]: [partial_collect_list(openGoodsMovements#51760, 0, 0)]
Aggregate Attributes [1]: [buf#53699]
Results [3]: [product#51393, plant#51392, buf#53700]
(326) Exchange
Input [3]: [product#51393, plant#51392, buf#53700]
Arguments: hashpartitioning(product#51393, plant#51392, 10), ENSURE_REQUIREMENTS, [plan_id=220540]
(327) ObjectHashAggregate
Input [3]: [product#51393, plant#51392, buf#53700]
Keys [2]: [product#51393, plant#51392]
Functions [1]: [collect_list(openGoodsMovements#51760, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#51760, 0, 0)#51786]
Results [3]: [product#51393, plant#51392, flatten(collect_list(openGoodsMovements#51760, 0, 0)#51786) AS openGoodsMovements#51770]
(328) Filter
Input [3]: [product#51393, plant#51392, openGoodsMovements#51770]
Condition : (size(openGoodsMovements#51770, false) > 0)
(329) AdaptiveSparkPlan
Output [3]: [product#51393, plant#51392, openGoodsMovements#51770]
Arguments: isFinalPlan=true
(330) TableCacheQueryStage
Output [3]: [openGoodsMovements#51770, plant#51392, product#51393]
Arguments: 0
(331) Filter
Input [3]: [openGoodsMovements#51770, plant#51392, product#51393]
Condition : (size(transform(openGoodsMovements#51770, lambdafunction(struct(documentId, lambda x_30#64154.documentId, documentUuid, lambda x_30#64154.documentUuid, openQty, lambda x_30#64154.openQty, qtyUomUuid, lambda x_30#64154.qtyUomUuid, qtyUom, lambda x_30#64154.qtyUom, plannedDeliveryDatetime, lambda x_30#64154.availabilityDatetime), lambda x_30#64154, false)), false) > 0)
(332) Project
Output [4]: [product#51393, plant#51392 AS location#64151, transform(openGoodsMovements#51770, lambdafunction(struct(documentId, lambda x_30#64154.documentId, documentUuid, lambda x_30#64154.documentUuid, openQty, lambda x_30#64154.openQty, qtyUomUuid, lambda x_30#64154.qtyUomUuid, qtyUom, lambda x_30#64154.qtyUom, plannedDeliveryDatetime, lambda x_30#64154.availabilityDatetime), lambda x_30#64154, false)) AS documents#64153, 10000000006 AS replenishmentRunId#64155L]
Input [3]: [openGoodsMovements#51770, plant#51392, product#51393]
(333) WriteFiles
Input [4]: [product#51393, location#64151, documents#64153, replenishmentRunId#64155L]
(334) Execute InsertIntoHadoopFsRelationCommand
Input: []
Arguments: hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/prp-op-traceability-results/raw/crp-order-quantity-kpi-service/ogr/10000000006/0_1_10000000006, false, Parquet, [path=hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/prp-op-traceability-results/raw/crp-order-quantity-kpi-service/ogr/10000000006/0_1_10000000006], Append, [product, location, documents, replenishmentRunId]
(335) ResultQueryStage
Output: []
Arguments: 1
(336) Filter
Input [3]: [openGoodsMovements#51770, plant#51392, product#51393]
Condition : (size(transform(openGoodsMovements#51770, lambdafunction(struct(documentId, lambda x_30#64154.documentId, documentUuid, lambda x_30#64154.documentUuid, openQty, lambda x_30#64154.openQty, qtyUomUuid, lambda x_30#64154.qtyUomUuid, qtyUom, lambda x_30#64154.qtyUom, plannedDeliveryDatetime, lambda x_30#64154.availabilityDatetime), lambda x_30#64154, false)), false) > 0)
(337) Project
Output [4]: [product#51393, plant#51392 AS location#64151, transform(openGoodsMovements#51770, lambdafunction(struct(documentId, lambda x_30#64154.documentId, documentUuid, lambda x_30#64154.documentUuid, openQty, lambda x_30#64154.openQty, qtyUomUuid, lambda x_30#64154.qtyUomUuid, qtyUom, lambda x_30#64154.qtyUom, plannedDeliveryDatetime, lambda x_30#64154.availabilityDatetime), lambda x_30#64154, false)) AS documents#64153, 10000000006 AS replenishmentRunId#64155L]
Input [3]: [openGoodsMovements#51770, plant#51392, product#51393]
(338) WriteFiles
Input [4]: [product#51393, location#64151, documents#64153, replenishmentRunId#64155L]
(339) Execute InsertIntoHadoopFsRelationCommand
Input: []
Arguments: hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/prp-op-traceability-results/raw/crp-order-quantity-kpi-service/ogr/10000000006/0_1_10000000006, false, Parquet, [path=hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/prp-op-traceability-results/raw/crp-order-quantity-kpi-service/ogr/10000000006/0_1_10000000006], Append, [product, location, documents, replenishmentRunId]
(340) AdaptiveSparkPlan
Output: []
Arguments: isFinalPlan=true