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: 238 ms<br>number of written files: 1<br>job commit time: 294 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/10000000004/0_1_10000000004, 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/10000000004/0_1_10000000004], 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#1950, plant#1949 AS location#14564, transform(openGoodsMovements#2331, lambdafunction(struct(documentId, lambda x_10#14567.documentId, documentUuid, lambda x_10#14567.documentUuid, openQty, lambda x_10#14567.openQty, qtyUomUuid, lambda x_10#14567.qtyUomUuid, qtyUom, lambda x_10#14567.qtyUom, plannedDeliveryDatetime, lambda x_10#14567.availabilityDatetime), lambda x_10#14567, false)) AS documents#14566, 10000000004 AS replenishmentRunId#14568L]"];
4 [id="node4" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (size(transform(openGoodsMovements#2331, lambdafunction(struct(documentId, lambda x_10#14567.documentId, documentUuid, lambda x_10#14567.documentUuid, openQty, lambda x_10#14567.openQty, qtyUomUuid, lambda x_10#14567.qtyUomUuid, qtyUom, lambda x_10#14567.qtyUom, plannedDeliveryDatetime, lambda x_10#14567.availabilityDatetime), lambda x_10#14567, false)), false) > 0)"];
5 [id="node5" labelType="html" label="<br><b>InMemoryTableScan</b><br><br>" tooltip="InMemoryTableScan [openGoodsMovements#2331, plant#1949, product#1950], [(size(transform(openGoodsMovements#2331, lambdafunction(struct(documentId, lambda x_10#14567.documentId, documentUuid, lambda x_10#14567.documentUuid, openQty, lambda x_10#14567.openQty, qtyUomUuid, lambda x_10#14567.qtyUomUuid, qtyUom, lambda x_10#14567.qtyUom, plannedDeliveryDatetime, lambda x_10#14567.availabilityDatetime), lambda x_10#14567, 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=50862]"];
8 [id="node8" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (size(openGoodsMovements#2331, false) > 0)"];
9 [id="node9" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Aggregate [product#1950, plant#1949], [product#1950, plant#1949, flatten(collect_list(openGoodsMovements#2321, 0, 0)) AS openGoodsMovements#2331]"];
10 [id="node10" labelType="html" label="<br><b>Aggregate</b><br><br>" tooltip="Aggregate [product#1950, plant#1949], [product#1950, plant#1949, flatten(collect_list(openGoodsMovements#2321, 0, 0)) AS openGoodsMovements#2331]"];
11 [id="node11" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Project [plant#1949, product#1950, filter(transform(CASE WHEN (_we0#2330L > 0) THEN transform(filter(confirmations#1957, lambdafunction(((NOT lambda x_2#2323.deletionIndicator AND lambda x_2#2323.isRelevantForConfirmation) AND isnotnull(lambda x_2#2323.confirmedDeliveryAt)), lambda x_2#2323, false)), lambdafunction(struct(openQty, greatest((lambda x_3#2326.confirmedQuantity - coalesce(lambda x_3#2326.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_3#2326.confirmedDeliveryAt), lambda x_3#2326, false)) ELSE transform(scheduleLines#1956, lambdafunction(struct(openQty, greatest((lambda x_1#2324.quantity - coalesce(lambda x_1#2324.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1#2324.deliveryAt), lambda x_1#2324, false)) END, lambdafunction(struct(documentId, id#1934, documentUuid, internalUUID#1933, openQty, lambda x_4#2327.openQty, openQtyInBaseUnit, ((lambda x_4#2327.openQty * quantityNumerator#1954) / quantityDenominator#1955), qtyUom, quantityUom#1952, qtyUomUuid, quantityUomUuid#1953, availabilityDatetime, lambda x_4#2327.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_4#2327, false)), lambdafunction(NOT (lambda x_5#2328.openQty = 0.0), lambda x_5#2328, false)) AS openGoodsMovements#2321]"];
12 [id="node12" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#1949, product#1950, filter(transform(CASE WHEN (_we0#2330L > 0) THEN transform(filter(confirmations#1957, lambdafunction(((NOT lambda x_2#2323.deletionIndicator AND lambda x_2#2323.isRelevantForConfirmation) AND isnotnull(lambda x_2#2323.confirmedDeliveryAt)), lambda x_2#2323, false)), lambdafunction(struct(openQty, greatest((lambda x_3#2326.confirmedQuantity - coalesce(lambda x_3#2326.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_3#2326.confirmedDeliveryAt), lambda x_3#2326, false)) ELSE transform(scheduleLines#1956, lambdafunction(struct(openQty, greatest((lambda x_1#2324.quantity - coalesce(lambda x_1#2324.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1#2324.deliveryAt), lambda x_1#2324, false)) END, lambdafunction(struct(documentId, id#1934, documentUuid, internalUUID#1933, openQty, lambda x_4#2327.openQty, openQtyInBaseUnit, ((lambda x_4#2327.openQty * quantityNumerator#1954) / quantityDenominator#1955), qtyUom, quantityUom#1952, qtyUomUuid, quantityUomUuid#1953, availabilityDatetime, lambda x_4#2327.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_4#2327, false)), lambdafunction(NOT (lambda x_5#2328.openQty = 0.0), lambda x_5#2328, false)) AS openGoodsMovements#2321]"];
13 [id="node13" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Window [sum(_w0#2329) windowspecdefinition(internalUUID#1933, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#2330L], [internalUUID#1933]"];
14 [id="node14" labelType="html" label="<br><b>Window</b><br><br>" tooltip="Window [sum(_w0#2329) windowspecdefinition(internalUUID#1933, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#2330L], [internalUUID#1933]"];
15 [id="node15" labelType="html" label="<br><b>LogicalQueryStage</b><br><br>" tooltip="LogicalQueryStage Project [id#1934, internalUUID#1933, plant#1949, product#1950, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, size(filter(confirmations#1957, lambdafunction(((NOT lambda x_2#2322.deletionIndicator AND lambda x_2#2322.isRelevantForConfirmation) AND isnotnull(lambda x_2#2322.confirmedDeliveryAt)), lambda x_2#2322, false)), false) AS _w0#2329], ShuffleQueryStage 109"];
16 [id="node16" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(internalUUID#1933, 10), ENSURE_REQUIREMENTS, [plan_id=50830]"];
17 [id="node17" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [id#1934, internalUUID#1933, plant#1949, product#1950, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, size(filter(confirmations#1957, lambdafunction(((NOT lambda x_2#2322.deletionIndicator AND lambda x_2#2322.isRelevantForConfirmation) AND isnotnull(lambda x_2#2322.confirmedDeliveryAt)), lambda x_2#2322, false)), false) AS _w0#2329]"];
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#1102, plant#1103, storageLocUuid#1995], [product#1950, plant#1949, storageLocUuid#1951], Inner, BuildRight, false"];
20 [id="node20" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#1103, product#1102, storageLocUuid#1995]"];
21 [id="node21" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plant#1103], [plant#1967], Inner, BuildLeft, false"];
238 [id="node238" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#1993 AS plant#1967, storageLocUuid#1995]"];
239 [id="node239" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#1993], [plant#1997], Inner, BuildLeft, false"];
248 [id="node248" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#1997], functions=[])"];
}
22 [id="node22" labelType="html" label="<br><b>BroadcastExchange</b><br><br>" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[1, string, true]),false), [plan_id=50725]"];
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#1103, 10), ENSURE_REQUIREMENTS, [plan_id=50619]"];
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#1102, plant#1103]"];
27 [id="node27" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#1103, ), isnull(plant#1103), coalesce(product#1102, ), isnull(product#1102)], [coalesce(plant#1580, ), isnull(plant#1580), coalesce(product#1579, ), isnull(product#1579)], 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#1103, ), isnull(plant#1103), coalesce(product#1102, ), isnull(product#1102), 10), ENSURE_REQUIREMENTS, [plan_id=45354]"];
subgraph cluster30 {
isCluster="true";
id="cluster30";
label="WholeStageCodegen (54)";
tooltip="WholeStageCodegen (54)";
31 [id="node31" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1102, plant#1103]"];
32 [id="node32" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#2348), [product#1102, plant#1103], true, [quantityDenominator#1159]"];
33 [id="node33" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1102, plant#1103, filteredUnitOfMeasureConversions#1148.quantityDenominator AS _extract_quantityDenominator#2348]"];
34 [id="node34" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#1148.quantityNumerator), [product#1102, plant#1103, filteredUnitOfMeasureConversions#1148], true, [quantityNumerator#1156]"];
}
35 [id="node35" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1102, plant#1103, filter(unitOfMeasureConversions#1142, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2487) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2488)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1140.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1140.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1148]"];
subgraph cluster36 {
isCluster="true";
id="cluster36";
label="WholeStageCodegen (53)";
tooltip="WholeStageCodegen (53)";
37 [id="node37" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#1102], [internalUUID#1136], LeftOuter, BuildRight, false"];
38 [id="node38" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1102, plant#1103, _extract_code#2487, _extract_internalRefUUID#2488]"];
39 [id="node39" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#1103, ), isnull(plant#1103)], [coalesce(internalUUID#1120, ), isnull(internalUUID#1120)], LeftOuter, BuildRight, false"];
40 [id="node40" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1102, plant#1103, _extract_code#2487, _extract_internalRefUUID#2488]"];
41 [id="node41" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#1102, ), isnull(product#1102), coalesce(plant#1103, ), isnull(plant#1103)], [coalesce(_extract_internalRefUUID#2486, ), isnull(_extract_internalRefUUID#2486), coalesce(_extract_internalRefUUID#2489, ), isnull(_extract_internalRefUUID#2489)], LeftOuter, BuildRight, false"];
}
42 [id="node42" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#1102, plant#1103, 10), REPARTITION_BY_NUM, [plan_id=19516]"];
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#1103) AND isnotnull(product#1102))"];
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#1102,plant#1103] Batched: true, DataFilters: [isnotnull(plant#1103), isnotnull(product#1102)], 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=23821]"];
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#2487, _extract_internalRefUUID#2488, _extract_internalRefUUID#2486, _extract_internalRefUUID#2489]"];
}
50 [id="node50" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=19532]"];
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#1109.internalRefUUID AS _extract_internalRefUUID#2489, product#1110.internalRefUUID AS _extract_internalRefUUID#2486, productionAspect#1112.productMovementPlants.unitOfIssue.code AS _extract_code#2487, productionAspect#1112.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#2488]"];
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#1109,product#1110,productionAspect#1112,systemId#1107] 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=20866]"];
56 [id="node56" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=19551]"];
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#1120]"];
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#1120,systemId#1119] 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=31456]"];
62 [id="node62" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=19571]"];
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#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]"];
65 [id="node65" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter isnotnull(internalUUID#1136)"];
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#1136,baseUnitOfMeasure#1140,unitOfMeasureConversions#1142,systemId#1135] Batched: true, DataFilters: [isnotnull(internalUUID#1136)], 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=50494]"];
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#1580, ), isnull(plant#1580), coalesce(product#1579, ), isnull(product#1579), 10), ENSURE_REQUIREMENTS, [plan_id=50318]"];
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#1579, 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#1580]"];
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@762840b4, obj#1574: org.apache.spark.sql.Row"];
74 [id="node74" labelType="html" label="<br><b>DeserializeToObject</b><br><br>" tooltip="DeserializeToObject createexternalrow(invoke(product#1583.toString()), invoke(plant#1584.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1585)), if (isnull(productPlant#1595)) null else createexternalrow(invoke(productPlant#1595.systemId.toString()), invoke(productPlant#1595.internalUUID.toString()), if (isnull(productPlant#1595.plant)) null else createexternalrow(invoke(productPlant#1595.plant.internalRefUUID.toString()), invoke(productPlant#1595.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1595.product)) null else createexternalrow(invoke(productPlant#1595.product.internalRefUUID.toString()), invoke(productPlant#1595.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1595.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1595.productionAspect)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1595.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.salesPlant)) null else createexternalrow(if (isnull(productPlant#1595.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1595.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.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#1609.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1626)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1905)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#1906, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#1907, 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#1530, 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#1569: org.apache.spark.sql.Row"];
}
75 [id="node75" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000]#11765], functions=[collect_list(rawDemands#1529, 0, 0)])"];
76 [id="node76" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[product#1583, plant#1584, orderDateTime#1585, knownfloatingpointnormalized(if (isnull(productPlant#1595)) null else named_struct(systemId, productPlant#1595.systemId, internalUUID, productPlant#1595.internalUUID, plant, productPlant#1595.plant, product, productPlant#1595.product, blockedForReplenishmentStartingFrom, productPlant#1595.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1595.productionAspect)) null else named_struct(productMovementPlants, productPlant#1595.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1595.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1595.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1595.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1595.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1595.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#1595.salesPlant, listing, productPlant#1595.listing)) AS productPlant#1595, timezonecode#1609, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1626)) AS outboundUnit#1626, stockDatetime#1905, knownfloatingpointnormalized(transform(stockBatchQuantities#1906, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#11766)), lambda arg#11766, false))) AS stockBatchQuantities#1906, [7226582400000000] AS [7226582400000000]#11765], functions=[partial_collect_list(rawDemands#1529, 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#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, CASE WHEN isnotnull(product#1509) THEN struct(demandChannel, demandChannel#1511, demandStream, demandStream#1512, considerVariance, considerVariance#1513, demandTimeBuckets, demandTimeBuckets#1514, demandPointInTimeStart, demandPointInTimeStart#1515, demandPointInTimeEnd, demandPointInTimeEnd#1516, demandPointInTime, demandPointInTime#1517) END AS rawDemands#1529]"];
79 [id="node79" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#1583, plant#1584], [product#1509, plant#1510], LeftOuter, BuildRight, false"];
80 [id="node80" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, CASE WHEN isnotnull(minCalculationDateTime#1903) THEN minCalculationDateTime#1903 ELSE orderDateTime#1585 END AS stockDatetime#1905, CASE WHEN isnotnull(roundedQuantitySum#1904) THEN array(roundedQuantitySum#1904) ELSE [0.0] END AS stockBatchQuantities#1906]"];
81 [id="node81" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plant#1584, product#1583], [plant#1762, product#1763], LeftOuter, BuildRight, false"];
82 [id="node82" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, CASE WHEN (isnull(outboundUnit#1625) OR (outboundUnit#1625 <= 0.0)) THEN 1.0 ELSE outboundUnit#1625 END AS outboundUnit#1626]"];
83 [id="node83" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, (cast(quantityNumerator#1623 as double) / cast(quantityDenominator#1624 as double)) AS outboundUnit#1625]"];
84 [id="node84" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#2406), [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, quantityNumerator#1623], true, [quantityDenominator#1624]"];
85 [id="node85" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityNumerator#2407), [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, _extract_quantityDenominator#2406], true, [quantityNumerator#1623]"];
86 [id="node86" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filteredUnitOfMeasureConversions#1622.quantityDenominator AS _extract_quantityDenominator#2406, filteredUnitOfMeasureConversions#1622.quantityNumerator AS _extract_quantityNumerator#2407]"];
}
87 [id="node87" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filter(unitOfMeasureConversions#1617, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1615.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1615.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1622]"];
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#1583], [internalUUID#1611], LeftOuter, BuildRight, false"];
90 [id="node90" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, CASE WHEN isnotnull(timezonecode#1608) THEN timezonecode#1608 ELSE UTC END AS timezonecode#1609]"];
91 [id="node91" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#1584, ), isnull(plant#1584)], [coalesce(internalUUID#1597, ), isnull(internalUUID#1597)], LeftOuter, BuildRight, false"];
92 [id="node92" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#1583, ), isnull(product#1583), coalesce(plant#1584, ), isnull(plant#1584)], [coalesce(productPlant#1595.product.internalRefUUID, ), isnull(productPlant#1595.product.internalRefUUID), coalesce(productPlant#1595.plant.internalRefUUID, ), isnull(productPlant#1595.plant.internalRefUUID)], LeftOuter, BuildRight, false"];
}
93 [id="node93" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#1583, plant#1584, 10), REPARTITION_BY_NUM, [plan_id=19595]"];
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#1583,plant#1584,orderDateTime#1585] 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=25854]"];
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#1587, internalUUID, internalUUID#1588, plant, plant#1589, product, product#1590, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1591, productionAspect, productionAspect#1592, salesPlant, salesPlant#1593, listing, listing#1594) AS productPlant#1595]"];
}
100 [id="node100" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=19609]"];
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#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]"];
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#1588,plant#1589,product#1590,blockedForReplenishmentStartingFrom#1591,productionAspect#1592,salesPlant#1593,listing#1594,systemId#1587] 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=24545]"];
106 [id="node106" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=19627]"];
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#1597, address#1603.timeZone.code AS timezonecode#1608]"];
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#1597,address#1603,systemId#1596] 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=50037]"];
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#1763, plant#1762], functions=[min(calculationDateTime#1706), sum(quantity#1715)])"];
}
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#1763, plant#1762, 10), ENSURE_REQUIREMENTS, [plan_id=49758]"];
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#1763, plant#1762], functions=[partial_min(calculationDateTime#1706), partial_sum(quantity#1715)])"];
118 [id="node118" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#1762, product#1763, calculationDateTime#1706, quantity#1715]"];
119 [id="node119" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#1762, ), isnull(plant#1762), coalesce(product#1763, ), isnull(product#1763), coalesce(storageLocId#1713, ), isnull(storageLocId#1713), coalesce(calculationDateTime#1706, 1970-01-01 00:00:00), isnull(calculationDateTime#1706)], [coalesce(plant#1899, ), isnull(plant#1899), coalesce(product#1900, ), isnull(product#1900), coalesce(storageLocId#1850, ), isnull(storageLocId#1850), coalesce(max_calc_datetime#1901, 1970-01-01 00:00:00), isnull(max_calc_datetime#1901)], 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=49188]"];
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#1762, ), isnull(plant#1762), coalesce(product#1763, ), isnull(product#1763), coalesce(storageLocId#1713, ), isnull(storageLocId#1713), coalesce(calculationDateTime#1706, 1970-01-01 00:00:00), isnull(calculationDateTime#1706), 10), ENSURE_REQUIREMENTS, [plan_id=48405]"];
subgraph cluster123 {
isCluster="true";
id="cluster123";
label="WholeStageCodegen (60)";
tooltip="WholeStageCodegen (60)";
124 [id="node124" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#1710 AS plant#1762, productUuid#1712 AS product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715]"];
125 [id="node125" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#1710, productUuid#1712], [plant#1719, product#1718], Inner, BuildLeft, (calculationDateTime#1706 <= orderDateTime#1720), false"];
182 [id="node182" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1718, plant#1719, orderDateTime#1720]"];
183 [id="node183" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#2380), [product#1718, plant#1719, orderDateTime#1720], true, [quantityDenominator#1759]"];
184 [id="node184" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757.quantityDenominator AS _extract_quantityDenominator#2380]"];
185 [id="node185" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#1757.quantityNumerator), [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757], true, [quantityNumerator#1758]"];
}
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=47450]"];
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#1712, plantUuid#1710, 10), ENSURE_REQUIREMENTS, [plan_id=45986]"];
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#1630.internalRefUUID AS plantUuid#1710, product#1629.internalRefUUID AS productUuid#1712, calculationDateTime#1706, stockQuantity#1708.storagelocation.id AS storageLocId#1713, stockQuantity#1708.quantity.measure AS quantity#1715]"];
131 [id="node131" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((isnotnull(stockQuantity#1708.specialStockIndicator.code) AND isnotnull(stockQuantity#1708.stockType.code)) AND (stockQuantity#1708.specialStockIndicator.code = )) AND (stockQuantity#1708.stockType.code = 01))"];
132 [id="node132" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(stockQuantities#1707), [product#1629, plant#1630, calculationDateTime#1706], false, [stockQuantity#1708]"];
133 [id="node133" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((size(stockQuantities#1707, true) > 0) AND isnotnull(calculationDateTime#1706))"];
}
134 [id="node134" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627], functions=[first(calculationDateTime#1631, false), collect_list(stockQuantity#1705, 0, 0)])"];
135 [id="node135" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627], functions=[partial_first(calculationDateTime#1631, false), partial_collect_list(stockQuantity#1705, 0, 0)])"];
136 [id="node136" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filter(stockQuantities#1632, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1660) AND (lambda x#1207.storageLocation.Id = storageLocId#1659)), lambda x#1207, false))), [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, plantUuid#1658], false, [stockQuantity#1705]"];
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#1630.internalRefUUID, ), isnull(plant#1630.internalRefUUID)], [coalesce(plantUuid#1658, ), isnull(plantUuid#1658)], Inner, BuildLeft, false"];
146 [id="node146" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#1658, storageLocId#1659, storageLocUuid#1660]"];
147 [id="node147" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#1658], [plant#1662], Inner, BuildLeft, false"];
161 [id="node161" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#1662], 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=26431]"];
140 [id="node140" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=19677]"];
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#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632]"];
143 [id="node143" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (isnotnull(plant#1630.internalRefUUID) AND isnotnull(product#1629.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#1628,product#1629,plant#1630,calculationDateTime#1631,stockQuantities#1632,systemId#1627] Batched: true, DataFilters: [isnotnull(plant#1630.internalRefUUID), isnotnull(product#1629.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=29020]"];
subgraph cluster149 {
isCluster="true";
id="cluster149";
label="WholeStageCodegen (43)";
tooltip="WholeStageCodegen (43)";
150 [id="node150" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_internalRefUUID#2374 AS plantUuid#1658, storageLocations#1656.id AS storageLocId#1659, storageLocations#1656.internalRefUUID AS storageLocUuid#1660]"];
151 [id="node151" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_storageLocations#2375), [_extract_internalRefUUID#2374], false, [storageLocations#1656]"];
152 [id="node152" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#1655.internalRefUUID AS _extract_internalRefUUID#2374, distributionCenters#1655.storageLocations AS _extract_storageLocations#2375]"];
153 [id="node153" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((size(distributionCenters#1655.storageLocations, true) > 0) AND isnotnull(distributionCenters#1655.storageLocations)) AND isnotnull(distributionCenters#1655.internalRefUUID))"];
154 [id="node154" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(distributionCenters#1639), false, [distributionCenters#1655]"];
}
155 [id="node155" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=19697]"];
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#1639]"];
158 [id="node158" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((marketUnit#1633 <=> DIP_1691) AND (size(distributionCenters#1639, true) > 0)) AND isnotnull(distributionCenters#1639))"];
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#1633,distributionCenters#1639] Batched: true, DataFilters: [(marketUnit#1633 <=> DIP_1691), (size(distributionCenters#1639, true) > 0), isnotnull(distributi..., 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#1662, 10), ENSURE_REQUIREMENTS, [plan_id=43893]"];
subgraph cluster164 {
isCluster="true";
id="cluster164";
label="WholeStageCodegen (48)";
tooltip="WholeStageCodegen (48)";
165 [id="node165" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#1662], functions=[])"];
166 [id="node166" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#1662]"];
167 [id="node167" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#2376), [plant#1662], true, [quantityDenominator#1702]"];
168 [id="node168" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#1662, filteredUnitOfMeasureConversions#1700.quantityDenominator AS _extract_quantityDenominator#2376]"];
169 [id="node169" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#1700.quantityNumerator), [plant#1662, filteredUnitOfMeasureConversions#1700], true, [quantityNumerator#1701]"];
}
170 [id="node170" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#1662, filter(unitOfMeasureConversions#1695, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2490) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2491)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1693.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1693.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1700]"];
subgraph cluster171 {
isCluster="true";
id="cluster171";
label="WholeStageCodegen (47)";
tooltip="WholeStageCodegen (47)";
172 [id="node172" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#1661], [internalUUID#1689], LeftOuter, BuildRight, false"];
173 [id="node173" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1661, plant#1662, _extract_code#2490, _extract_internalRefUUID#2491]"];
174 [id="node174" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#1662, ), isnull(plant#1662)], [coalesce(internalUUID#1675, ), isnull(internalUUID#1675)], LeftOuter, BuildRight, false"];
175 [id="node175" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1661, plant#1662, _extract_code#2490, _extract_internalRefUUID#2491]"];
176 [id="node176" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#1661, ), isnull(product#1661), coalesce(plant#1662, ), isnull(plant#1662)], [coalesce(_extract_internalRefUUID#2492, ), isnull(_extract_internalRefUUID#2492), coalesce(_extract_internalRefUUID#2493, ), isnull(_extract_internalRefUUID#2493)], LeftOuter, BuildRight, false"];
}
177 [id="node177" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#1661, plant#1662, 10), REPARTITION_BY_NUM, [plan_id=19720]"];
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#1662)"];
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#1661,plant#1662] Batched: true, DataFilters: [isnotnull(plant#1662)], 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#1718, plant#1719, orderDateTime#1720, filter(unitOfMeasureConversions#1752, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2495) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2496)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1750.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1750.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1757]"];
subgraph cluster187 {
isCluster="true";
id="cluster187";
label="WholeStageCodegen (59)";
tooltip="WholeStageCodegen (59)";
188 [id="node188" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#1718], [internalUUID#1746], LeftOuter, BuildRight, false"];
189 [id="node189" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1718, plant#1719, orderDateTime#1720, _extract_code#2495, _extract_internalRefUUID#2496]"];
190 [id="node190" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#1719, ), isnull(plant#1719)], [coalesce(internalUUID#1732, ), isnull(internalUUID#1732)], LeftOuter, BuildRight, false"];
191 [id="node191" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1718, plant#1719, orderDateTime#1720, _extract_code#2495, _extract_internalRefUUID#2496]"];
192 [id="node192" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#1718, ), isnull(product#1718), coalesce(plant#1719, ), isnull(plant#1719)], [coalesce(_extract_internalRefUUID#2497, ), isnull(_extract_internalRefUUID#2497), coalesce(_extract_internalRefUUID#2494, ), isnull(_extract_internalRefUUID#2494)], LeftOuter, BuildRight, false"];
}
193 [id="node193" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange hashpartitioning(product#1718, plant#1719, 10), REPARTITION_BY_NUM, [plan_id=19820]"];
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#1720) AND isnotnull(plant#1719)) AND isnotnull(product#1718))"];
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#1718,plant#1719,orderDateTime#1720] Batched: true, DataFilters: [isnotnull(orderDateTime#1720), isnotnull(plant#1719), isnotnull(product#1718)], 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#1899, ), isnull(plant#1899), coalesce(product#1900, ), isnull(product#1900), coalesce(storageLocId#1850, ), isnull(storageLocId#1850), coalesce(max_calc_datetime#1901, 1970-01-01 00:00:00), isnull(max_calc_datetime#1901), 10), ENSURE_REQUIREMENTS, [plan_id=48847]"];
subgraph cluster200 {
isCluster="true";
id="cluster200";
label="WholeStageCodegen (62)";
tooltip="WholeStageCodegen (62)";
201 [id="node201" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#1899, product#1900, storageLocId#1850], functions=[max(calculationDateTime#1843)])"];
202 [id="node202" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#1899, product#1900, storageLocId#1850], functions=[partial_max(calculationDateTime#1843)])"];
203 [id="node203" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#1847 AS plant#1899, productUuid#1849 AS product#1900, storageLocId#1850, calculationDateTime#1843]"];
204 [id="node204" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#1847, productUuid#1849], [plant#1856, product#1855], Inner, BuildLeft, (calculationDateTime#1843 <= orderDateTime#1857), false"];
222 [id="node222" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1855, plant#1856, orderDateTime#1857]"];
223 [id="node223" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_quantityDenominator#2390), [product#1855, plant#1856, orderDateTime#1857], true, [quantityDenominator#1896]"];
224 [id="node224" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894.quantityDenominator AS _extract_quantityDenominator#2390]"];
225 [id="node225" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filteredUnitOfMeasureConversions#1894.quantityNumerator), [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894], true, [quantityNumerator#1895]"];
}
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=47921]"];
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#1849, plantUuid#1847, 10), ENSURE_REQUIREMENTS, [plan_id=46054]"];
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#1767.internalRefUUID AS plantUuid#1847, product#1766.internalRefUUID AS productUuid#1849, calculationDateTime#1843, stockQuantity#1845.storagelocation.id AS storageLocId#1850]"];
210 [id="node210" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((isnotnull(stockQuantity#1845.specialStockIndicator.code) AND isnotnull(stockQuantity#1845.stockType.code)) AND (stockQuantity#1845.specialStockIndicator.code = )) AND (stockQuantity#1845.stockType.code = 01))"];
211 [id="node211" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(stockQuantities#1844), [product#1766, plant#1767, calculationDateTime#1843], false, [stockQuantity#1845]"];
212 [id="node212" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((size(stockQuantities#1844, true) > 0) AND isnotnull(calculationDateTime#1843))"];
}
213 [id="node213" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764], functions=[first(calculationDateTime#1768, false), collect_list(stockQuantity#1842, 0, 0)])"];
214 [id="node214" labelType="html" label="<br><b>ObjectHashAggregate</b><br><br>" tooltip="ObjectHashAggregate(keys=[plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764], functions=[partial_first(calculationDateTime#1768, false), partial_collect_list(stockQuantity#1842, 0, 0)])"];
215 [id="node215" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(filter(stockQuantities#1769, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1797) AND (lambda x#1207.storageLocation.Id = storageLocId#1796)), lambda x#1207, false))), [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, plantUuid#1795], false, [stockQuantity#1842]"];
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#1767.internalRefUUID, ), isnull(plant#1767.internalRefUUID)], [coalesce(plantUuid#1795, ), isnull(plantUuid#1795)], Inner, BuildLeft, false"];
218 [id="node218" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#1795, storageLocId#1796, storageLocUuid#1797]"];
219 [id="node219" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [plantUuid#1795], [plant#1799], Inner, BuildLeft, false"];
220 [id="node220" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[plant#1799], 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#1855, plant#1856, orderDateTime#1857, filter(unitOfMeasureConversions#1889, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2503) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2504)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1887.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1887.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1894]"];
subgraph cluster227 {
isCluster="true";
id="cluster227";
label="WholeStageCodegen (61)";
tooltip="WholeStageCodegen (61)";
228 [id="node228" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [product#1855], [internalUUID#1883], LeftOuter, BuildRight, false"];
229 [id="node229" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1855, plant#1856, orderDateTime#1857, _extract_code#2503, _extract_internalRefUUID#2504]"];
230 [id="node230" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(plant#1856, ), isnull(plant#1856)], [coalesce(internalUUID#1869, ), isnull(internalUUID#1869)], LeftOuter, BuildRight, false"];
231 [id="node231" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#1855, plant#1856, orderDateTime#1857, _extract_code#2503, _extract_internalRefUUID#2504]"];
232 [id="node232" labelType="html" label="<br><b>BroadcastHashJoin</b><br><br>" tooltip="BroadcastHashJoin [coalesce(product#1855, ), isnull(product#1855), coalesce(plant#1856, ), isnull(plant#1856)], [coalesce(_extract_internalRefUUID#2505, ), isnull(_extract_internalRefUUID#2505), coalesce(_extract_internalRefUUID#2502, ), isnull(_extract_internalRefUUID#2502)], 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=20163]"];
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#1509) AND isnotnull(plant#1510))"];
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#1509,plant#1510,demandChannel#1511,demandStream#1512,considerVariance#1513,demandTimeBuckets#1514,demandPointInTimeStart#1515,demandPointInTimeEnd#1516,demandPointInTime#1517] Batched: true, DataFilters: [isnotnull(product#1509), isnotnull(plant#1510)], 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=29122]"];
subgraph cluster241 {
isCluster="true";
id="cluster241";
label="WholeStageCodegen (45)";
tooltip="WholeStageCodegen (45)";
242 [id="node242" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_internalRefUUID#2394 AS plantUuid#1993, storageLocations#1991 AS storageLocUuid#1995]"];
243 [id="node243" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter isnotnull(storageLocations#1991)"];
244 [id="node244" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(_extract_internalRefUUID#2507), [_extract_internalRefUUID#2394], false, [storageLocations#1991]"];
245 [id="node245" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#1990.internalRefUUID AS _extract_internalRefUUID#2394, distributionCenters#1990.storageLocations.internalRefUUID AS _extract_internalRefUUID#2507]"];
246 [id="node246" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((size(distributionCenters#1990.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#1990.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#1990.internalRefUUID))"];
247 [id="node247" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(distributionCenters#1974), false, [distributionCenters#1990]"];
}
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=30084]"];
subgraph cluster251 {
isCluster="true";
id="cluster251";
label="WholeStageCodegen (46)";
tooltip="WholeStageCodegen (46)";
252 [id="node252" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [id#1934, internalUUID#1933, item#1944.plant.internalRefUUID AS plant#1949, item#1944.product.internalRefUUID AS product#1950, item#1944.storageLocation.internalRefUUID AS storageLocUuid#1951, item#1944.quantityUnit.code AS quantityUom#1952, item#1944.quantityUnit.internalRefUUID AS quantityUomUuid#1953, item#1944.quantityNumerator AS quantityNumerator#1954, item#1944.quantityDenominator AS quantityDenominator#1955, item#1944.scheduleLines AS scheduleLines#1956, item#1944.confirmations AS confirmations#1957]"];
253 [id="node253" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter ((((isnotnull(item#1944.deletionIndicator) AND isnotnull(item#1944.completeIndicator)) AND isnotnull(item#1944.returnIndicator)) AND ((NOT item#1944.deletionIndicator AND NOT item#1944.completeIndicator) AND NOT item#1944.returnIndicator)) AND ((isnotnull(item#1944.product.internalRefUUID) AND isnotnull(item#1944.plant.internalRefUUID)) AND isnotnull(item#1944.storageLocation.internalRefUUID)))"];
254 [id="node254" labelType="html" label="<br><b>Generate</b><br><br>" tooltip="Generate explode(items#1940), [internalUUID#1933, id#1934], false, [item#1944]"];
}
255 [id="node255" labelType="html" label="<br><b>Exchange</b><br><br>" tooltip="Exchange RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=20316]"];
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#1933, id#1934, items#1940]"];
258 [id="node258" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (((isnotnull(isMarkedForDeletion#1939) AND NOT isMarkedForDeletion#1939) AND (size(items#1940, true) > 0)) AND isnotnull(items#1940))"];
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#1933,id#1934,isMarkedForDeletion#1939,items#1940,systemId#1932] Batched: true, DataFilters: [isnotnull(isMarkedForDeletion#1939), NOT isMarkedForDeletion#1939, (size(items#1940, true) > 0),..., 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#2331, plant#1949, product#1950]
Arguments: [openGoodsMovements#2331, plant#1949, product#1950], [(size(transform(openGoodsMovements#2331, lambdafunction(struct(documentId, lambda x_10#14567.documentId, documentUuid, lambda x_10#14567.documentUuid, openQty, lambda x_10#14567.openQty, qtyUomUuid, lambda x_10#14567.qtyUomUuid, qtyUom, lambda x_10#14567.qtyUom, plannedDeliveryDatetime, lambda x_10#14567.availabilityDatetime), lambda x_10#14567, false)), false) > 0)]
(2) InMemoryRelation
Arguments: [product#1950, plant#1949, openGoodsMovements#2331], StorageLevel(disk, memory, 2 replicas)
(3) EmptyRelation
Output [3]: [product#1950, plant#1949, openGoodsMovements#2331]
Arguments: [plan_id=50862]
(4) ResultQueryStage
Output [3]: [product#1950, plant#1949, openGoodsMovements#2331]
Arguments: 110
(5) Scan parquet
Output [2]: [product#1102, plant#1103]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string>
(6) Filter
Input [2]: [product#1102, plant#1103]
Condition : (isnotnull(plant#1103) AND isnotnull(product#1102))
(7) Exchange
Input [2]: [product#1102, plant#1103]
Arguments: hashpartitioning(product#1102, plant#1103, 10), REPARTITION_BY_NUM, [plan_id=2680]
(8) Scan parquet
Output [4]: [plant#1109, product#1110, productionAspect#1112, systemId#1107]
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#1109.internalRefUUID AS _extract_internalRefUUID#2489, product#1110.internalRefUUID AS _extract_internalRefUUID#2486, productionAspect#1112.productMovementPlants.unitOfIssue.code AS _extract_code#2487, productionAspect#1112.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#2488]
Input [4]: [plant#1109, product#1110, productionAspect#1112, systemId#1107]
(10) Exchange
Input [4]: [_extract_internalRefUUID#2489, _extract_internalRefUUID#2486, _extract_code#2487, _extract_internalRefUUID#2488]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2408]
(11) Project
Output [4]: [_extract_code#2487, _extract_internalRefUUID#2488, _extract_internalRefUUID#2486, _extract_internalRefUUID#2489]
Input [4]: [_extract_internalRefUUID#2489, _extract_internalRefUUID#2486, _extract_code#2487, _extract_internalRefUUID#2488]
(12) BroadcastExchange
Input [4]: [_extract_code#2487, _extract_internalRefUUID#2488, _extract_internalRefUUID#2486, _extract_internalRefUUID#2489]
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=2804]
(13) BroadcastHashJoin
Left keys [4]: [coalesce(product#1102, ), isnull(product#1102), coalesce(plant#1103, ), isnull(plant#1103)]
Right keys [4]: [coalesce(_extract_internalRefUUID#2486, ), isnull(_extract_internalRefUUID#2486), coalesce(_extract_internalRefUUID#2489, ), isnull(_extract_internalRefUUID#2489)]
Join type: LeftOuter
Join condition: None
(14) Project
Output [4]: [product#1102, plant#1103, _extract_code#2487, _extract_internalRefUUID#2488]
Input [6]: [product#1102, plant#1103, _extract_code#2487, _extract_internalRefUUID#2488, _extract_internalRefUUID#2486, _extract_internalRefUUID#2489]
(15) Scan parquet
Output [2]: [internalUUID#1120, systemId#1119]
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#1120]
Input [2]: [internalUUID#1120, systemId#1119]
(17) Exchange
Input [1]: [internalUUID#1120]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2414]
(18) BroadcastExchange
Input [1]: [internalUUID#1120]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2808]
(19) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1103, ), isnull(plant#1103)]
Right keys [2]: [coalesce(internalUUID#1120, ), isnull(internalUUID#1120)]
Join type: LeftOuter
Join condition: None
(20) Project
Output [4]: [product#1102, plant#1103, _extract_code#2487, _extract_internalRefUUID#2488]
Input [5]: [product#1102, plant#1103, _extract_code#2487, _extract_internalRefUUID#2488, internalUUID#1120]
(21) Scan parquet
Output [4]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142, systemId#1135]
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#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142, systemId#1135]
Condition : isnotnull(internalUUID#1136)
(23) Project
Output [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Input [4]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142, systemId#1135]
(24) Exchange
Input [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2420]
(25) BroadcastExchange
Input [3]: [internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2812]
(26) BroadcastHashJoin
Left keys [1]: [product#1102]
Right keys [1]: [internalUUID#1136]
Join type: LeftOuter
Join condition: None
(27) Project
Output [3]: [product#1102, plant#1103, filter(unitOfMeasureConversions#1142, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2487) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2488)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1140.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1140.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1148]
Input [7]: [product#1102, plant#1103, _extract_code#2487, _extract_internalRefUUID#2488, internalUUID#1136, baseUnitOfMeasure#1140, unitOfMeasureConversions#1142]
(28) Generate
Input [3]: [product#1102, plant#1103, filteredUnitOfMeasureConversions#1148]
Arguments: explode(filteredUnitOfMeasureConversions#1148.quantityNumerator), [product#1102, plant#1103, filteredUnitOfMeasureConversions#1148], true, [quantityNumerator#1156]
(29) Project
Output [3]: [product#1102, plant#1103, filteredUnitOfMeasureConversions#1148.quantityDenominator AS _extract_quantityDenominator#2348]
Input [4]: [product#1102, plant#1103, filteredUnitOfMeasureConversions#1148, quantityNumerator#1156]
(30) Generate
Input [3]: [product#1102, plant#1103, _extract_quantityDenominator#2348]
Arguments: explode(_extract_quantityDenominator#2348), [product#1102, plant#1103], true, [quantityDenominator#1159]
(31) Project
Output [2]: [product#1102, plant#1103]
Input [3]: [product#1102, plant#1103, quantityDenominator#1159]
(32) Exchange
Input [2]: [product#1102, plant#1103]
Arguments: hashpartitioning(coalesce(plant#1103, ), isnull(plant#1103), coalesce(product#1102, ), isnull(product#1102), 10), ENSURE_REQUIREMENTS, [plan_id=2975]
(33) Sort
Input [2]: [product#1102, plant#1103]
Arguments: [coalesce(plant#1103, ) ASC NULLS FIRST, isnull(plant#1103) ASC NULLS FIRST, coalesce(product#1102, ) ASC NULLS FIRST, isnull(product#1102) ASC NULLS FIRST], false, 0
(34) Scan parquet
Output [3]: [product#1583, plant#1584, orderDateTime#1585]
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/10000000004/shardId=0_1_10000000004]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(35) Exchange
Input [3]: [product#1583, plant#1584, orderDateTime#1585]
Arguments: hashpartitioning(product#1583, plant#1584, 10), REPARTITION_BY_NUM, [plan_id=2428]
(36) Scan parquet
Output [8]: [internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594, systemId#1587]
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#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]
Input [8]: [internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594, systemId#1587]
(38) Exchange
Input [8]: [systemId#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2431]
(39) Project
Output [1]: [struct(systemId, systemId#1587, internalUUID, internalUUID#1588, plant, plant#1589, product, product#1590, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1591, productionAspect, productionAspect#1592, salesPlant, salesPlant#1593, listing, listing#1594) AS productPlant#1595]
Input [8]: [systemId#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594]
(40) BroadcastExchange
Input [1]: [productPlant#1595]
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=2819]
(41) BroadcastHashJoin
Left keys [4]: [coalesce(product#1583, ), isnull(product#1583), coalesce(plant#1584, ), isnull(plant#1584)]
Right keys [4]: [coalesce(productPlant#1595.product.internalRefUUID, ), isnull(productPlant#1595.product.internalRefUUID), coalesce(productPlant#1595.plant.internalRefUUID, ), isnull(productPlant#1595.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(42) Scan parquet
Output [3]: [internalUUID#1597, address#1603, systemId#1596]
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#1597, address#1603.timeZone.code AS timezonecode#1608]
Input [3]: [internalUUID#1597, address#1603, systemId#1596]
(44) Exchange
Input [2]: [internalUUID#1597, timezonecode#1608]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2436]
(45) BroadcastExchange
Input [2]: [internalUUID#1597, timezonecode#1608]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2822]
(46) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1584, ), isnull(plant#1584)]
Right keys [2]: [coalesce(internalUUID#1597, ), isnull(internalUUID#1597)]
Join type: LeftOuter
Join condition: None
(47) Project
Output [5]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, CASE WHEN isnotnull(timezonecode#1608) THEN timezonecode#1608 ELSE UTC END AS timezonecode#1609]
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, internalUUID#1597, timezonecode#1608]
(48) Scan parquet
Output [4]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617, systemId#1610]
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#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617, systemId#1610]
Condition : isnotnull(internalUUID#1611)
(50) Project
Output [3]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
Input [4]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617, systemId#1610]
(51) Exchange
Input [3]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2442]
(52) BroadcastExchange
Input [3]: [internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2826]
(53) BroadcastHashJoin
Left keys [1]: [product#1583]
Right keys [1]: [internalUUID#1611]
Join type: LeftOuter
Join condition: None
(54) Project
Output [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filter(unitOfMeasureConversions#1617, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1615.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1615.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1622]
Input [8]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, internalUUID#1611, baseUnitOfMeasure#1615, unitOfMeasureConversions#1617]
(55) Project
Output [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filteredUnitOfMeasureConversions#1622.quantityDenominator AS _extract_quantityDenominator#2406, filteredUnitOfMeasureConversions#1622.quantityNumerator AS _extract_quantityNumerator#2407]
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, filteredUnitOfMeasureConversions#1622]
(56) Generate
Input [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, _extract_quantityDenominator#2406, _extract_quantityNumerator#2407]
Arguments: explode(_extract_quantityNumerator#2407), [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, _extract_quantityDenominator#2406], true, [quantityNumerator#1623]
(57) Generate
Input [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, _extract_quantityDenominator#2406, quantityNumerator#1623]
Arguments: explode(_extract_quantityDenominator#2406), [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, quantityNumerator#1623], true, [quantityDenominator#1624]
(58) Project
Output [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, (cast(quantityNumerator#1623 as double) / cast(quantityDenominator#1624 as double)) AS outboundUnit#1625]
Input [7]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, quantityNumerator#1623, quantityDenominator#1624]
(59) Project
Output [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, CASE WHEN (isnull(outboundUnit#1625) OR (outboundUnit#1625 <= 0.0)) THEN 1.0 ELSE outboundUnit#1625 END AS outboundUnit#1626]
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1625]
(60) Sort
Input [6]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626]
Arguments: [product#1583 ASC NULLS FIRST, plant#1584 ASC NULLS FIRST], false, 0
(61) Scan parquet
Output [6]: [internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632, systemId#1627]
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#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632, systemId#1627]
Condition : (isnotnull(plant#1630.internalRefUUID) AND isnotnull(product#1629.internalRefUUID))
(63) Project
Output [6]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632]
Input [6]: [internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632, systemId#1627]
(64) Exchange
Input [6]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2453]
(65) BroadcastExchange
Input [6]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632]
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=2858]
(66) Scan parquet
Output [2]: [marketUnit#1633, distributionCenters#1639]
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#1633, distributionCenters#1639]
Condition : (((marketUnit#1633 <=> DIP_1691) AND (size(distributionCenters#1639, true) > 0)) AND isnotnull(distributionCenters#1639))
(68) Project
Output [1]: [distributionCenters#1639]
Input [2]: [marketUnit#1633, distributionCenters#1639]
(69) Exchange
Input [1]: [distributionCenters#1639]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2457]
(70) Generate
Input [1]: [distributionCenters#1639]
Arguments: explode(distributionCenters#1639), false, [distributionCenters#1655]
(71) Filter
Input [1]: [distributionCenters#1655]
Condition : (((size(distributionCenters#1655.storageLocations, true) > 0) AND isnotnull(distributionCenters#1655.storageLocations)) AND isnotnull(distributionCenters#1655.internalRefUUID))
(72) Project
Output [2]: [distributionCenters#1655.internalRefUUID AS _extract_internalRefUUID#2374, distributionCenters#1655.storageLocations AS _extract_storageLocations#2375]
Input [1]: [distributionCenters#1655]
(73) Generate
Input [2]: [_extract_internalRefUUID#2374, _extract_storageLocations#2375]
Arguments: explode(_extract_storageLocations#2375), [_extract_internalRefUUID#2374], false, [storageLocations#1656]
(74) Project
Output [3]: [_extract_internalRefUUID#2374 AS plantUuid#1658, storageLocations#1656.id AS storageLocId#1659, storageLocations#1656.internalRefUUID AS storageLocUuid#1660]
Input [2]: [_extract_internalRefUUID#2374, storageLocations#1656]
(75) BroadcastExchange
Input [3]: [plantUuid#1658, storageLocId#1659, storageLocUuid#1660]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2854]
(76) Scan parquet
Output [2]: [product#1661, plant#1662]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(77) Filter
Input [2]: [product#1661, plant#1662]
Condition : isnotnull(plant#1662)
(78) Exchange
Input [2]: [product#1661, plant#1662]
Arguments: hashpartitioning(product#1661, plant#1662, 10), REPARTITION_BY_NUM, [plan_id=2691]
(79) Scan parquet
Output [4]: [plant#1667, product#1668, productionAspect#1670, systemId#1665]
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#1667.internalRefUUID AS _extract_internalRefUUID#2493, product#1668.internalRefUUID AS _extract_internalRefUUID#2492, productionAspect#1670.productMovementPlants.unitOfIssue.code AS _extract_code#2490, productionAspect#1670.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#2491]
Input [4]: [plant#1667, product#1668, productionAspect#1670, systemId#1665]
(81) Exchange
Input [4]: [_extract_internalRefUUID#2493, _extract_internalRefUUID#2492, _extract_code#2490, _extract_internalRefUUID#2491]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2469]
(82) Project
Output [4]: [_extract_code#2490, _extract_internalRefUUID#2491, _extract_internalRefUUID#2492, _extract_internalRefUUID#2493]
Input [4]: [_extract_internalRefUUID#2493, _extract_internalRefUUID#2492, _extract_code#2490, _extract_internalRefUUID#2491]
(83) BroadcastExchange
Input [4]: [_extract_code#2490, _extract_internalRefUUID#2491, _extract_internalRefUUID#2492, _extract_internalRefUUID#2493]
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=2834]
(84) BroadcastHashJoin
Left keys [4]: [coalesce(product#1661, ), isnull(product#1661), coalesce(plant#1662, ), isnull(plant#1662)]
Right keys [4]: [coalesce(_extract_internalRefUUID#2492, ), isnull(_extract_internalRefUUID#2492), coalesce(_extract_internalRefUUID#2493, ), isnull(_extract_internalRefUUID#2493)]
Join type: LeftOuter
Join condition: None
(85) Project
Output [4]: [product#1661, plant#1662, _extract_code#2490, _extract_internalRefUUID#2491]
Input [6]: [product#1661, plant#1662, _extract_code#2490, _extract_internalRefUUID#2491, _extract_internalRefUUID#2492, _extract_internalRefUUID#2493]
(86) Scan parquet
Output [2]: [internalUUID#1675, systemId#1674]
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#1675]
Input [2]: [internalUUID#1675, systemId#1674]
(88) Exchange
Input [1]: [internalUUID#1675]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2475]
(89) BroadcastExchange
Input [1]: [internalUUID#1675]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2838]
(90) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1662, ), isnull(plant#1662)]
Right keys [2]: [coalesce(internalUUID#1675, ), isnull(internalUUID#1675)]
Join type: LeftOuter
Join condition: None
(91) Project
Output [4]: [product#1661, plant#1662, _extract_code#2490, _extract_internalRefUUID#2491]
Input [5]: [product#1661, plant#1662, _extract_code#2490, _extract_internalRefUUID#2491, internalUUID#1675]
(92) Scan parquet
Output [4]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695, systemId#1688]
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#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695, systemId#1688]
Condition : isnotnull(internalUUID#1689)
(94) Project
Output [3]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695]
Input [4]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695, systemId#1688]
(95) Exchange
Input [3]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2481]
(96) BroadcastExchange
Input [3]: [internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2842]
(97) BroadcastHashJoin
Left keys [1]: [product#1661]
Right keys [1]: [internalUUID#1689]
Join type: LeftOuter
Join condition: None
(98) Project
Output [2]: [plant#1662, filter(unitOfMeasureConversions#1695, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2490) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2491)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1693.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1693.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1700]
Input [7]: [product#1661, plant#1662, _extract_code#2490, _extract_internalRefUUID#2491, internalUUID#1689, baseUnitOfMeasure#1693, unitOfMeasureConversions#1695]
(99) Generate
Input [2]: [plant#1662, filteredUnitOfMeasureConversions#1700]
Arguments: explode(filteredUnitOfMeasureConversions#1700.quantityNumerator), [plant#1662, filteredUnitOfMeasureConversions#1700], true, [quantityNumerator#1701]
(100) Project
Output [2]: [plant#1662, filteredUnitOfMeasureConversions#1700.quantityDenominator AS _extract_quantityDenominator#2376]
Input [3]: [plant#1662, filteredUnitOfMeasureConversions#1700, quantityNumerator#1701]
(101) Generate
Input [2]: [plant#1662, _extract_quantityDenominator#2376]
Arguments: explode(_extract_quantityDenominator#2376), [plant#1662], true, [quantityDenominator#1702]
(102) Project
Output [1]: [plant#1662]
Input [2]: [plant#1662, quantityDenominator#1702]
(103) HashAggregate
Input [1]: [plant#1662]
Keys [1]: [plant#1662]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1662]
(104) Exchange
Input [1]: [plant#1662]
Arguments: hashpartitioning(plant#1662, 10), ENSURE_REQUIREMENTS, [plan_id=2851]
(105) HashAggregate
Input [1]: [plant#1662]
Keys [1]: [plant#1662]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1662]
(106) BroadcastHashJoin
Left keys [1]: [plantUuid#1658]
Right keys [1]: [plant#1662]
Join type: Inner
Join condition: None
(107) Project
Output [3]: [plantUuid#1658, storageLocId#1659, storageLocUuid#1660]
Input [4]: [plantUuid#1658, storageLocId#1659, storageLocUuid#1660, plant#1662]
(108) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1630.internalRefUUID, ), isnull(plant#1630.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1658, ), isnull(plantUuid#1658)]
Join type: Inner
Join condition: None
(109) Generate
Input [9]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632, plantUuid#1658, storageLocId#1659, storageLocUuid#1660]
Arguments: explode(filter(stockQuantities#1632, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1660) AND (lambda x#1207.storageLocation.Id = storageLocId#1659)), lambda x#1207, false))), [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, plantUuid#1658], false, [stockQuantity#1705]
(110) ObjectHashAggregate
Input [7]: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, plantUuid#1658, stockQuantity#1705]
Keys [5]: [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627]
Functions [2]: [partial_first(calculationDateTime#1631, false), partial_collect_list(stockQuantity#1705, 0, 0)]
Aggregate Attributes [3]: [first#4288, valueSet#4289, buf#4290]
Results [8]: [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627, first#4291, valueSet#4292, buf#4293]
(111) ObjectHashAggregate
Input [8]: [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627, first#4291, valueSet#4292, buf#4293]
Keys [5]: [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627]
Functions [2]: [first(calculationDateTime#1631, false), collect_list(stockQuantity#1705, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1631)()#1222, collect_list(stockQuantity#1705, 0, 0)#1223]
Results [4]: [product#1629, plant#1630, first(calculationDateTime#1631)()#1222 AS calculationDateTime#1706, collect_list(stockQuantity#1705, 0, 0)#1223 AS stockQuantities#1707]
(112) Filter
Input [4]: [product#1629, plant#1630, calculationDateTime#1706, stockQuantities#1707]
Condition : ((size(stockQuantities#1707, true) > 0) AND isnotnull(calculationDateTime#1706))
(113) Generate
Input [4]: [product#1629, plant#1630, calculationDateTime#1706, stockQuantities#1707]
Arguments: explode(stockQuantities#1707), [product#1629, plant#1630, calculationDateTime#1706], false, [stockQuantity#1708]
(114) Filter
Input [4]: [product#1629, plant#1630, calculationDateTime#1706, stockQuantity#1708]
Condition : (((isnotnull(stockQuantity#1708.specialStockIndicator.code) AND isnotnull(stockQuantity#1708.stockType.code)) AND (stockQuantity#1708.specialStockIndicator.code = )) AND (stockQuantity#1708.stockType.code = 01))
(115) Project
Output [5]: [plant#1630.internalRefUUID AS plantUuid#1710, product#1629.internalRefUUID AS productUuid#1712, calculationDateTime#1706, stockQuantity#1708.storagelocation.id AS storageLocId#1713, stockQuantity#1708.quantity.measure AS quantity#1715]
Input [4]: [product#1629, plant#1630, calculationDateTime#1706, stockQuantity#1708]
(116) Exchange
Input [5]: [plantUuid#1710, productUuid#1712, calculationDateTime#1706, storageLocId#1713, quantity#1715]
Arguments: hashpartitioning(productUuid#1712, plantUuid#1710, 10), ENSURE_REQUIREMENTS, [plan_id=2884]
(117) Sort
Input [5]: [plantUuid#1710, productUuid#1712, calculationDateTime#1706, storageLocId#1713, quantity#1715]
Arguments: [productUuid#1712 ASC NULLS FIRST, plantUuid#1710 ASC NULLS FIRST], false, 0
(118) Scan parquet
Output [3]: [product#1718, plant#1719, orderDateTime#1720]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(119) Filter
Input [3]: [product#1718, plant#1719, orderDateTime#1720]
Condition : ((isnotnull(orderDateTime#1720) AND isnotnull(plant#1719)) AND isnotnull(product#1718))
(120) Exchange
Input [3]: [product#1718, plant#1719, orderDateTime#1720]
Arguments: hashpartitioning(product#1718, plant#1719, 10), REPARTITION_BY_NUM, [plan_id=2714]
(121) Scan parquet
Output [4]: [plant#1724, product#1725, productionAspect#1727, systemId#1722]
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#1724.internalRefUUID AS _extract_internalRefUUID#2494, product#1725.internalRefUUID AS _extract_internalRefUUID#2497, productionAspect#1727.productMovementPlants.unitOfIssue.code AS _extract_code#2495, productionAspect#1727.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#2496]
Input [4]: [plant#1724, product#1725, productionAspect#1727, systemId#1722]
(123) Exchange
Input [4]: [_extract_internalRefUUID#2494, _extract_internalRefUUID#2497, _extract_code#2495, _extract_internalRefUUID#2496]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2506]
(124) Project
Output [4]: [_extract_code#2495, _extract_internalRefUUID#2496, _extract_internalRefUUID#2497, _extract_internalRefUUID#2494]
Input [4]: [_extract_internalRefUUID#2494, _extract_internalRefUUID#2497, _extract_code#2495, _extract_internalRefUUID#2496]
(125) BroadcastExchange
Input [4]: [_extract_code#2495, _extract_internalRefUUID#2496, _extract_internalRefUUID#2497, _extract_internalRefUUID#2494]
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=2867]
(126) BroadcastHashJoin
Left keys [4]: [coalesce(product#1718, ), isnull(product#1718), coalesce(plant#1719, ), isnull(plant#1719)]
Right keys [4]: [coalesce(_extract_internalRefUUID#2497, ), isnull(_extract_internalRefUUID#2497), coalesce(_extract_internalRefUUID#2494, ), isnull(_extract_internalRefUUID#2494)]
Join type: LeftOuter
Join condition: None
(127) Project
Output [5]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#2495, _extract_internalRefUUID#2496]
Input [7]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#2495, _extract_internalRefUUID#2496, _extract_internalRefUUID#2497, _extract_internalRefUUID#2494]
(128) Scan parquet
Output [2]: [internalUUID#1732, systemId#1731]
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#1732]
Input [2]: [internalUUID#1732, systemId#1731]
(130) Exchange
Input [1]: [internalUUID#1732]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2512]
(131) BroadcastExchange
Input [1]: [internalUUID#1732]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2871]
(132) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1719, ), isnull(plant#1719)]
Right keys [2]: [coalesce(internalUUID#1732, ), isnull(internalUUID#1732)]
Join type: LeftOuter
Join condition: None
(133) Project
Output [5]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#2495, _extract_internalRefUUID#2496]
Input [6]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#2495, _extract_internalRefUUID#2496, internalUUID#1732]
(134) Scan parquet
Output [4]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752, systemId#1745]
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#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752, systemId#1745]
Condition : isnotnull(internalUUID#1746)
(136) Project
Output [3]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752]
Input [4]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752, systemId#1745]
(137) Exchange
Input [3]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2518]
(138) BroadcastExchange
Input [3]: [internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2875]
(139) BroadcastHashJoin
Left keys [1]: [product#1718]
Right keys [1]: [internalUUID#1746]
Join type: LeftOuter
Join condition: None
(140) Project
Output [4]: [product#1718, plant#1719, orderDateTime#1720, filter(unitOfMeasureConversions#1752, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2495) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2496)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1750.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1750.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1757]
Input [8]: [product#1718, plant#1719, orderDateTime#1720, _extract_code#2495, _extract_internalRefUUID#2496, internalUUID#1746, baseUnitOfMeasure#1750, unitOfMeasureConversions#1752]
(141) Generate
Input [4]: [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757]
Arguments: explode(filteredUnitOfMeasureConversions#1757.quantityNumerator), [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757], true, [quantityNumerator#1758]
(142) Project
Output [4]: [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757.quantityDenominator AS _extract_quantityDenominator#2380]
Input [5]: [product#1718, plant#1719, orderDateTime#1720, filteredUnitOfMeasureConversions#1757, quantityNumerator#1758]
(143) Generate
Input [4]: [product#1718, plant#1719, orderDateTime#1720, _extract_quantityDenominator#2380]
Arguments: explode(_extract_quantityDenominator#2380), [product#1718, plant#1719, orderDateTime#1720], true, [quantityDenominator#1759]
(144) Project
Output [3]: [product#1718, plant#1719, orderDateTime#1720]
Input [4]: [product#1718, plant#1719, orderDateTime#1720, quantityDenominator#1759]
(145) Sort
Input [3]: [product#1718, plant#1719, orderDateTime#1720]
Arguments: [product#1718 ASC NULLS FIRST, plant#1719 ASC NULLS FIRST], false, 0
(146) SortMergeJoin
Left keys [2]: [productUuid#1712, plantUuid#1710]
Right keys [2]: [product#1718, plant#1719]
Join type: Inner
Join condition: (calculationDateTime#1706 <= orderDateTime#1720)
(147) Project
Output [5]: [plantUuid#1710 AS plant#1762, productUuid#1712 AS product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715]
Input [8]: [plantUuid#1710, productUuid#1712, calculationDateTime#1706, storageLocId#1713, quantity#1715, product#1718, plant#1719, orderDateTime#1720]
(148) Exchange
Input [5]: [plant#1762, product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715]
Arguments: hashpartitioning(coalesce(plant#1762, ), isnull(plant#1762), coalesce(product#1763, ), isnull(product#1763), coalesce(storageLocId#1713, ), isnull(storageLocId#1713), coalesce(calculationDateTime#1706, 1970-01-01 00:00:00), isnull(calculationDateTime#1706), 10), ENSURE_REQUIREMENTS, [plan_id=2948]
(149) Sort
Input [5]: [plant#1762, product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715]
Arguments: [coalesce(plant#1762, ) ASC NULLS FIRST, isnull(plant#1762) ASC NULLS FIRST, coalesce(product#1763, ) ASC NULLS FIRST, isnull(product#1763) ASC NULLS FIRST, coalesce(storageLocId#1713, ) ASC NULLS FIRST, isnull(storageLocId#1713) ASC NULLS FIRST, coalesce(calculationDateTime#1706, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#1706) ASC NULLS FIRST], false, 0
(150) Scan parquet
Output [6]: [internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769, systemId#1764]
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#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769, systemId#1764]
Condition : (isnotnull(plant#1767.internalRefUUID) AND isnotnull(product#1766.internalRefUUID))
(152) Project
Output [6]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769]
Input [6]: [internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769, systemId#1764]
(153) Exchange
Input [6]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2530]
(154) BroadcastExchange
Input [6]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769]
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=2913]
(155) Scan parquet
Output [2]: [marketUnit#1770, distributionCenters#1776]
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#1770, distributionCenters#1776]
Condition : (((marketUnit#1770 <=> DIP_1691) AND (size(distributionCenters#1776, true) > 0)) AND isnotnull(distributionCenters#1776))
(157) Project
Output [1]: [distributionCenters#1776]
Input [2]: [marketUnit#1770, distributionCenters#1776]
(158) Exchange
Input [1]: [distributionCenters#1776]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2534]
(159) Generate
Input [1]: [distributionCenters#1776]
Arguments: explode(distributionCenters#1776), false, [distributionCenters#1792]
(160) Filter
Input [1]: [distributionCenters#1792]
Condition : (((size(distributionCenters#1792.storageLocations, true) > 0) AND isnotnull(distributionCenters#1792.storageLocations)) AND isnotnull(distributionCenters#1792.internalRefUUID))
(161) Project
Output [2]: [distributionCenters#1792.internalRefUUID AS _extract_internalRefUUID#2384, distributionCenters#1792.storageLocations AS _extract_storageLocations#2385]
Input [1]: [distributionCenters#1792]
(162) Generate
Input [2]: [_extract_internalRefUUID#2384, _extract_storageLocations#2385]
Arguments: explode(_extract_storageLocations#2385), [_extract_internalRefUUID#2384], false, [storageLocations#1793]
(163) Project
Output [3]: [_extract_internalRefUUID#2384 AS plantUuid#1795, storageLocations#1793.id AS storageLocId#1796, storageLocations#1793.internalRefUUID AS storageLocUuid#1797]
Input [2]: [_extract_internalRefUUID#2384, storageLocations#1793]
(164) BroadcastExchange
Input [3]: [plantUuid#1795, storageLocId#1796, storageLocUuid#1797]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2909]
(165) Scan parquet
Output [2]: [product#1798, plant#1799]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(166) Filter
Input [2]: [product#1798, plant#1799]
Condition : isnotnull(plant#1799)
(167) Exchange
Input [2]: [product#1798, plant#1799]
Arguments: hashpartitioning(product#1798, plant#1799, 10), REPARTITION_BY_NUM, [plan_id=2727]
(168) Scan parquet
Output [4]: [plant#1804, product#1805, productionAspect#1807, systemId#1802]
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#1804.internalRefUUID AS _extract_internalRefUUID#2501, product#1805.internalRefUUID AS _extract_internalRefUUID#2500, productionAspect#1807.productMovementPlants.unitOfIssue.code AS _extract_code#2498, productionAspect#1807.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#2499]
Input [4]: [plant#1804, product#1805, productionAspect#1807, systemId#1802]
(170) Exchange
Input [4]: [_extract_internalRefUUID#2501, _extract_internalRefUUID#2500, _extract_code#2498, _extract_internalRefUUID#2499]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2546]
(171) Project
Output [4]: [_extract_code#2498, _extract_internalRefUUID#2499, _extract_internalRefUUID#2500, _extract_internalRefUUID#2501]
Input [4]: [_extract_internalRefUUID#2501, _extract_internalRefUUID#2500, _extract_code#2498, _extract_internalRefUUID#2499]
(172) BroadcastExchange
Input [4]: [_extract_code#2498, _extract_internalRefUUID#2499, _extract_internalRefUUID#2500, _extract_internalRefUUID#2501]
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=2889]
(173) BroadcastHashJoin
Left keys [4]: [coalesce(product#1798, ), isnull(product#1798), coalesce(plant#1799, ), isnull(plant#1799)]
Right keys [4]: [coalesce(_extract_internalRefUUID#2500, ), isnull(_extract_internalRefUUID#2500), coalesce(_extract_internalRefUUID#2501, ), isnull(_extract_internalRefUUID#2501)]
Join type: LeftOuter
Join condition: None
(174) Project
Output [4]: [product#1798, plant#1799, _extract_code#2498, _extract_internalRefUUID#2499]
Input [6]: [product#1798, plant#1799, _extract_code#2498, _extract_internalRefUUID#2499, _extract_internalRefUUID#2500, _extract_internalRefUUID#2501]
(175) Scan parquet
Output [2]: [internalUUID#1812, systemId#1811]
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#1812]
Input [2]: [internalUUID#1812, systemId#1811]
(177) Exchange
Input [1]: [internalUUID#1812]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2552]
(178) BroadcastExchange
Input [1]: [internalUUID#1812]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2893]
(179) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1799, ), isnull(plant#1799)]
Right keys [2]: [coalesce(internalUUID#1812, ), isnull(internalUUID#1812)]
Join type: LeftOuter
Join condition: None
(180) Project
Output [4]: [product#1798, plant#1799, _extract_code#2498, _extract_internalRefUUID#2499]
Input [5]: [product#1798, plant#1799, _extract_code#2498, _extract_internalRefUUID#2499, internalUUID#1812]
(181) Scan parquet
Output [4]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832, systemId#1825]
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#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832, systemId#1825]
Condition : isnotnull(internalUUID#1826)
(183) Project
Output [3]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832]
Input [4]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832, systemId#1825]
(184) Exchange
Input [3]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2558]
(185) BroadcastExchange
Input [3]: [internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2897]
(186) BroadcastHashJoin
Left keys [1]: [product#1798]
Right keys [1]: [internalUUID#1826]
Join type: LeftOuter
Join condition: None
(187) Project
Output [2]: [plant#1799, filter(unitOfMeasureConversions#1832, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2498) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2499)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1830.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1830.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1837]
Input [7]: [product#1798, plant#1799, _extract_code#2498, _extract_internalRefUUID#2499, internalUUID#1826, baseUnitOfMeasure#1830, unitOfMeasureConversions#1832]
(188) Generate
Input [2]: [plant#1799, filteredUnitOfMeasureConversions#1837]
Arguments: explode(filteredUnitOfMeasureConversions#1837.quantityNumerator), [plant#1799, filteredUnitOfMeasureConversions#1837], true, [quantityNumerator#1838]
(189) Project
Output [2]: [plant#1799, filteredUnitOfMeasureConversions#1837.quantityDenominator AS _extract_quantityDenominator#2386]
Input [3]: [plant#1799, filteredUnitOfMeasureConversions#1837, quantityNumerator#1838]
(190) Generate
Input [2]: [plant#1799, _extract_quantityDenominator#2386]
Arguments: explode(_extract_quantityDenominator#2386), [plant#1799], true, [quantityDenominator#1839]
(191) Project
Output [1]: [plant#1799]
Input [2]: [plant#1799, quantityDenominator#1839]
(192) HashAggregate
Input [1]: [plant#1799]
Keys [1]: [plant#1799]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1799]
(193) Exchange
Input [1]: [plant#1799]
Arguments: hashpartitioning(plant#1799, 10), ENSURE_REQUIREMENTS, [plan_id=2906]
(194) HashAggregate
Input [1]: [plant#1799]
Keys [1]: [plant#1799]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1799]
(195) BroadcastHashJoin
Left keys [1]: [plantUuid#1795]
Right keys [1]: [plant#1799]
Join type: Inner
Join condition: None
(196) Project
Output [3]: [plantUuid#1795, storageLocId#1796, storageLocUuid#1797]
Input [4]: [plantUuid#1795, storageLocId#1796, storageLocUuid#1797, plant#1799]
(197) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1767.internalRefUUID, ), isnull(plant#1767.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#1795, ), isnull(plantUuid#1795)]
Join type: Inner
Join condition: None
(198) Generate
Input [9]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769, plantUuid#1795, storageLocId#1796, storageLocUuid#1797]
Arguments: explode(filter(stockQuantities#1769, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1797) AND (lambda x#1207.storageLocation.Id = storageLocId#1796)), lambda x#1207, false))), [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, plantUuid#1795], false, [stockQuantity#1842]
(199) ObjectHashAggregate
Input [7]: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, plantUuid#1795, stockQuantity#1842]
Keys [5]: [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764]
Functions [2]: [partial_first(calculationDateTime#1768, false), partial_collect_list(stockQuantity#1842, 0, 0)]
Aggregate Attributes [3]: [first#4296, valueSet#4297, buf#4298]
Results [8]: [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764, first#4299, valueSet#4300, buf#4301]
(200) ObjectHashAggregate
Input [8]: [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764, first#4299, valueSet#4300, buf#4301]
Keys [5]: [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764]
Functions [2]: [first(calculationDateTime#1768, false), collect_list(stockQuantity#1842, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#1768)()#1222, collect_list(stockQuantity#1842, 0, 0)#1223]
Results [4]: [product#1766, plant#1767, first(calculationDateTime#1768)()#1222 AS calculationDateTime#1843, collect_list(stockQuantity#1842, 0, 0)#1223 AS stockQuantities#1844]
(201) Filter
Input [4]: [product#1766, plant#1767, calculationDateTime#1843, stockQuantities#1844]
Condition : ((size(stockQuantities#1844, true) > 0) AND isnotnull(calculationDateTime#1843))
(202) Generate
Input [4]: [product#1766, plant#1767, calculationDateTime#1843, stockQuantities#1844]
Arguments: explode(stockQuantities#1844), [product#1766, plant#1767, calculationDateTime#1843], false, [stockQuantity#1845]
(203) Filter
Input [4]: [product#1766, plant#1767, calculationDateTime#1843, stockQuantity#1845]
Condition : (((isnotnull(stockQuantity#1845.specialStockIndicator.code) AND isnotnull(stockQuantity#1845.stockType.code)) AND (stockQuantity#1845.specialStockIndicator.code = )) AND (stockQuantity#1845.stockType.code = 01))
(204) Project
Output [4]: [plant#1767.internalRefUUID AS plantUuid#1847, product#1766.internalRefUUID AS productUuid#1849, calculationDateTime#1843, stockQuantity#1845.storagelocation.id AS storageLocId#1850]
Input [4]: [product#1766, plant#1767, calculationDateTime#1843, stockQuantity#1845]
(205) Exchange
Input [4]: [plantUuid#1847, productUuid#1849, calculationDateTime#1843, storageLocId#1850]
Arguments: hashpartitioning(productUuid#1849, plantUuid#1847, 10), ENSURE_REQUIREMENTS, [plan_id=2939]
(206) Sort
Input [4]: [plantUuid#1847, productUuid#1849, calculationDateTime#1843, storageLocId#1850]
Arguments: [productUuid#1849 ASC NULLS FIRST, plantUuid#1847 ASC NULLS FIRST], false, 0
(207) Scan parquet
Output [3]: [product#1855, plant#1856, orderDateTime#1857]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(208) Filter
Input [3]: [product#1855, plant#1856, orderDateTime#1857]
Condition : ((isnotnull(orderDateTime#1857) AND isnotnull(plant#1856)) AND isnotnull(product#1855))
(209) Exchange
Input [3]: [product#1855, plant#1856, orderDateTime#1857]
Arguments: hashpartitioning(product#1855, plant#1856, 10), REPARTITION_BY_NUM, [plan_id=2750]
(210) Scan parquet
Output [4]: [plant#1861, product#1862, productionAspect#1864, systemId#1859]
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#1861.internalRefUUID AS _extract_internalRefUUID#2502, product#1862.internalRefUUID AS _extract_internalRefUUID#2505, productionAspect#1864.productMovementPlants.unitOfIssue.code AS _extract_code#2503, productionAspect#1864.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#2504]
Input [4]: [plant#1861, product#1862, productionAspect#1864, systemId#1859]
(212) Exchange
Input [4]: [_extract_internalRefUUID#2502, _extract_internalRefUUID#2505, _extract_code#2503, _extract_internalRefUUID#2504]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2583]
(213) Project
Output [4]: [_extract_code#2503, _extract_internalRefUUID#2504, _extract_internalRefUUID#2505, _extract_internalRefUUID#2502]
Input [4]: [_extract_internalRefUUID#2502, _extract_internalRefUUID#2505, _extract_code#2503, _extract_internalRefUUID#2504]
(214) BroadcastExchange
Input [4]: [_extract_code#2503, _extract_internalRefUUID#2504, _extract_internalRefUUID#2505, _extract_internalRefUUID#2502]
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=2922]
(215) BroadcastHashJoin
Left keys [4]: [coalesce(product#1855, ), isnull(product#1855), coalesce(plant#1856, ), isnull(plant#1856)]
Right keys [4]: [coalesce(_extract_internalRefUUID#2505, ), isnull(_extract_internalRefUUID#2505), coalesce(_extract_internalRefUUID#2502, ), isnull(_extract_internalRefUUID#2502)]
Join type: LeftOuter
Join condition: None
(216) Project
Output [5]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#2503, _extract_internalRefUUID#2504]
Input [7]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#2503, _extract_internalRefUUID#2504, _extract_internalRefUUID#2505, _extract_internalRefUUID#2502]
(217) Scan parquet
Output [2]: [internalUUID#1869, systemId#1868]
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#1869]
Input [2]: [internalUUID#1869, systemId#1868]
(219) Exchange
Input [1]: [internalUUID#1869]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2589]
(220) BroadcastExchange
Input [1]: [internalUUID#1869]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2926]
(221) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1856, ), isnull(plant#1856)]
Right keys [2]: [coalesce(internalUUID#1869, ), isnull(internalUUID#1869)]
Join type: LeftOuter
Join condition: None
(222) Project
Output [5]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#2503, _extract_internalRefUUID#2504]
Input [6]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#2503, _extract_internalRefUUID#2504, internalUUID#1869]
(223) Scan parquet
Output [4]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889, systemId#1882]
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#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889, systemId#1882]
Condition : isnotnull(internalUUID#1883)
(225) Project
Output [3]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889]
Input [4]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889, systemId#1882]
(226) Exchange
Input [3]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2595]
(227) BroadcastExchange
Input [3]: [internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2930]
(228) BroadcastHashJoin
Left keys [1]: [product#1855]
Right keys [1]: [internalUUID#1883]
Join type: LeftOuter
Join condition: None
(229) Project
Output [4]: [product#1855, plant#1856, orderDateTime#1857, filter(unitOfMeasureConversions#1889, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2503) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2504)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1887.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1887.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1894]
Input [8]: [product#1855, plant#1856, orderDateTime#1857, _extract_code#2503, _extract_internalRefUUID#2504, internalUUID#1883, baseUnitOfMeasure#1887, unitOfMeasureConversions#1889]
(230) Generate
Input [4]: [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894]
Arguments: explode(filteredUnitOfMeasureConversions#1894.quantityNumerator), [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894], true, [quantityNumerator#1895]
(231) Project
Output [4]: [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894.quantityDenominator AS _extract_quantityDenominator#2390]
Input [5]: [product#1855, plant#1856, orderDateTime#1857, filteredUnitOfMeasureConversions#1894, quantityNumerator#1895]
(232) Generate
Input [4]: [product#1855, plant#1856, orderDateTime#1857, _extract_quantityDenominator#2390]
Arguments: explode(_extract_quantityDenominator#2390), [product#1855, plant#1856, orderDateTime#1857], true, [quantityDenominator#1896]
(233) Project
Output [3]: [product#1855, plant#1856, orderDateTime#1857]
Input [4]: [product#1855, plant#1856, orderDateTime#1857, quantityDenominator#1896]
(234) Sort
Input [3]: [product#1855, plant#1856, orderDateTime#1857]
Arguments: [product#1855 ASC NULLS FIRST, plant#1856 ASC NULLS FIRST], false, 0
(235) SortMergeJoin
Left keys [2]: [productUuid#1849, plantUuid#1847]
Right keys [2]: [product#1855, plant#1856]
Join type: Inner
Join condition: (calculationDateTime#1843 <= orderDateTime#1857)
(236) Project
Output [4]: [plantUuid#1847 AS plant#1899, productUuid#1849 AS product#1900, storageLocId#1850, calculationDateTime#1843]
Input [7]: [plantUuid#1847, productUuid#1849, calculationDateTime#1843, storageLocId#1850, product#1855, plant#1856, orderDateTime#1857]
(237) HashAggregate
Input [4]: [plant#1899, product#1900, storageLocId#1850, calculationDateTime#1843]
Keys [3]: [plant#1899, product#1900, storageLocId#1850]
Functions [1]: [partial_max(calculationDateTime#1843)]
Aggregate Attributes [1]: [max#4294]
Results [4]: [plant#1899, product#1900, storageLocId#1850, max#4295]
(238) HashAggregate
Input [4]: [plant#1899, product#1900, storageLocId#1850, max#4295]
Keys [3]: [plant#1899, product#1900, storageLocId#1850]
Functions [1]: [max(calculationDateTime#1843)]
Aggregate Attributes [1]: [max(calculationDateTime#1843)#1300]
Results [4]: [plant#1899, product#1900, storageLocId#1850, max(calculationDateTime#1843)#1300 AS max_calc_datetime#1901]
(239) Exchange
Input [4]: [plant#1899, product#1900, storageLocId#1850, max_calc_datetime#1901]
Arguments: hashpartitioning(coalesce(plant#1899, ), isnull(plant#1899), coalesce(product#1900, ), isnull(product#1900), coalesce(storageLocId#1850, ), isnull(storageLocId#1850), coalesce(max_calc_datetime#1901, 1970-01-01 00:00:00), isnull(max_calc_datetime#1901), 10), ENSURE_REQUIREMENTS, [plan_id=2949]
(240) Sort
Input [4]: [plant#1899, product#1900, storageLocId#1850, max_calc_datetime#1901]
Arguments: [coalesce(plant#1899, ) ASC NULLS FIRST, isnull(plant#1899) ASC NULLS FIRST, coalesce(product#1900, ) ASC NULLS FIRST, isnull(product#1900) ASC NULLS FIRST, coalesce(storageLocId#1850, ) ASC NULLS FIRST, isnull(storageLocId#1850) ASC NULLS FIRST, coalesce(max_calc_datetime#1901, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#1901) ASC NULLS FIRST], false, 0
(241) SortMergeJoin
Left keys [8]: [coalesce(plant#1762, ), isnull(plant#1762), coalesce(product#1763, ), isnull(product#1763), coalesce(storageLocId#1713, ), isnull(storageLocId#1713), coalesce(calculationDateTime#1706, 1970-01-01 00:00:00), isnull(calculationDateTime#1706)]
Right keys [8]: [coalesce(plant#1899, ), isnull(plant#1899), coalesce(product#1900, ), isnull(product#1900), coalesce(storageLocId#1850, ), isnull(storageLocId#1850), coalesce(max_calc_datetime#1901, 1970-01-01 00:00:00), isnull(max_calc_datetime#1901)]
Join type: Inner
Join condition: None
(242) Project
Output [4]: [plant#1762, product#1763, calculationDateTime#1706, quantity#1715]
Input [9]: [plant#1762, product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715, plant#1899, product#1900, storageLocId#1850, max_calc_datetime#1901]
(243) HashAggregate
Input [4]: [plant#1762, product#1763, calculationDateTime#1706, quantity#1715]
Keys [2]: [product#1763, plant#1762]
Functions [2]: [partial_min(calculationDateTime#1706), partial_sum(quantity#1715)]
Aggregate Attributes [2]: [min#4284, sum#4285]
Results [4]: [product#1763, plant#1762, min#4286, sum#4287]
(244) Exchange
Input [4]: [product#1763, plant#1762, min#4286, sum#4287]
Arguments: hashpartitioning(product#1763, plant#1762, 10), ENSURE_REQUIREMENTS, [plan_id=2956]
(245) HashAggregate
Input [4]: [product#1763, plant#1762, min#4286, sum#4287]
Keys [2]: [product#1763, plant#1762]
Functions [2]: [min(calculationDateTime#1706), sum(quantity#1715)]
Aggregate Attributes [2]: [min(calculationDateTime#1706)#1456, sum(quantity#1715)#1455]
Results [4]: [product#1763, plant#1762, min(calculationDateTime#1706)#1456 AS minCalculationDateTime#1903, round(sum(quantity#1715)#1455, 0) AS roundedQuantitySum#1904]
(246) Sort
Input [4]: [product#1763, plant#1762, minCalculationDateTime#1903, roundedQuantitySum#1904]
Arguments: [product#1763 ASC NULLS FIRST, plant#1762 ASC NULLS FIRST], false, 0
(247) SortMergeJoin
Left keys [2]: [product#1583, plant#1584]
Right keys [2]: [product#1763, plant#1762]
Join type: LeftOuter
Join condition: None
(248) Project
Output [8]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, CASE WHEN isnotnull(minCalculationDateTime#1903) THEN minCalculationDateTime#1903 ELSE orderDateTime#1585 END AS stockDatetime#1905, CASE WHEN isnotnull(roundedQuantitySum#1904) THEN array(roundedQuantitySum#1904) ELSE [0.0] END AS stockBatchQuantities#1906]
Input [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, product#1763, plant#1762, minCalculationDateTime#1903, roundedQuantitySum#1904]
(249) Scan parquet
Output [9]: [product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
Batched: true
Location: InMemoryFileIndex [hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000004/0_1_10000000004]
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#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
Condition : (isnotnull(product#1509) AND isnotnull(plant#1510))
(251) BroadcastExchange
Input [9]: [product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
Arguments: HashedRelationBroadcastMode(List(input[0, string, false], input[1, string, false]),false), [plan_id=2965]
(252) BroadcastHashJoin
Left keys [2]: [product#1583, plant#1584]
Right keys [2]: [product#1509, plant#1510]
Join type: LeftOuter
Join condition: None
(253) Project
Output [9]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, CASE WHEN isnotnull(product#1509) THEN struct(demandChannel, demandChannel#1511, demandStream, demandStream#1512, considerVariance, considerVariance#1513, demandTimeBuckets, demandTimeBuckets#1514, demandPointInTimeStart, demandPointInTimeStart#1515, demandPointInTimeEnd, demandPointInTimeEnd#1516, demandPointInTime, demandPointInTime#1517) END AS rawDemands#1529]
Input [17]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517]
(254) ObjectHashAggregate
Input [9]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, rawDemands#1529]
Keys [9]: [product#1583, plant#1584, orderDateTime#1585, knownfloatingpointnormalized(if (isnull(productPlant#1595)) null else named_struct(systemId, productPlant#1595.systemId, internalUUID, productPlant#1595.internalUUID, plant, productPlant#1595.plant, product, productPlant#1595.product, blockedForReplenishmentStartingFrom, productPlant#1595.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#1595.productionAspect)) null else named_struct(productMovementPlants, productPlant#1595.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#1595.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#1595.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#1595.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#1595.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#1595.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile, sourceOfSupplyCategory, productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory)))), salesPlant, productPlant#1595.salesPlant, listing, productPlant#1595.listing)) AS productPlant#1595, timezonecode#1609, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#1626)) AS outboundUnit#1626, stockDatetime#1905, knownfloatingpointnormalized(transform(stockBatchQuantities#1906, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#4281)), lambda arg#4281, false))) AS stockBatchQuantities#1906, [7226582400000000] AS [7226582400000000]#4280]
Functions [1]: [partial_collect_list(rawDemands#1529, 0, 0)]
Aggregate Attributes [1]: [buf#4282]
Results [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000]#4280, buf#4283]
(255) ObjectHashAggregate
Input [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000]#4280, buf#4283]
Keys [9]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000]#4280]
Functions [1]: [collect_list(rawDemands#1529, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#1529, 0, 0)#1548]
Results [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#1907, collect_list(rawDemands#1529, 0, 0)#1548 AS rawDemands#1530]
(256) DeserializeToObject
Input [10]: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, stockBatchShelfLifeEndDatetimes#1907, rawDemands#1530]
Arguments: createexternalrow(invoke(product#1583.toString()), invoke(plant#1584.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1585)), if (isnull(productPlant#1595)) null else createexternalrow(invoke(productPlant#1595.systemId.toString()), invoke(productPlant#1595.internalUUID.toString()), if (isnull(productPlant#1595.plant)) null else createexternalrow(invoke(productPlant#1595.plant.internalRefUUID.toString()), invoke(productPlant#1595.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1595.product)) null else createexternalrow(invoke(productPlant#1595.product.internalRefUUID.toString()), invoke(productPlant#1595.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1595.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1595.productionAspect)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1595.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.salesPlant)) null else createexternalrow(if (isnull(productPlant#1595.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1595.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.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#1609.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1626)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1905)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#1906, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#1907, 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#1530, 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#1569: org.apache.spark.sql.Row
(257) MapElements
Input [1]: [obj#1569]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@762840b4, obj#1574: org.apache.spark.sql.Row
(258) SerializeFromObject
Input [1]: [obj#1574]
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#1579, 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#1580]
(259) Exchange
Input [2]: [product#1579, plant#1580]
Arguments: hashpartitioning(coalesce(plant#1580, ), isnull(plant#1580), coalesce(product#1579, ), isnull(product#1579), 10), ENSURE_REQUIREMENTS, [plan_id=2976]
(260) Sort
Input [2]: [product#1579, plant#1580]
Arguments: [coalesce(plant#1580, ) ASC NULLS FIRST, isnull(plant#1580) ASC NULLS FIRST, coalesce(product#1579, ) ASC NULLS FIRST, isnull(product#1579) ASC NULLS FIRST], false, 0
(261) SortMergeJoin
Left keys [4]: [coalesce(plant#1103, ), isnull(plant#1103), coalesce(product#1102, ), isnull(product#1102)]
Right keys [4]: [coalesce(plant#1580, ), isnull(plant#1580), coalesce(product#1579, ), isnull(product#1579)]
Join type: LeftOuter
Join condition: None
(262) Project
Output [2]: [product#1102, plant#1103]
Input [4]: [product#1102, plant#1103, product#1579, plant#1580]
(263) Exchange
Input [2]: [product#1102, plant#1103]
Arguments: hashpartitioning(plant#1103, 10), ENSURE_REQUIREMENTS, [plan_id=3006]
(264) Sort
Input [2]: [product#1102, plant#1103]
Arguments: [plant#1103 ASC NULLS FIRST], false, 0
(265) Scan parquet
Output [2]: [marketUnit#1968, distributionCenters#1974]
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#1968, distributionCenters#1974]
Condition : (((marketUnit#1968 <=> DIP_1691) AND (size(distributionCenters#1974, true) > 0)) AND isnotnull(distributionCenters#1974))
(267) Project
Output [1]: [distributionCenters#1974]
Input [2]: [marketUnit#1968, distributionCenters#1974]
(268) Exchange
Input [1]: [distributionCenters#1974]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2627]
(269) Generate
Input [1]: [distributionCenters#1974]
Arguments: explode(distributionCenters#1974), false, [distributionCenters#1990]
(270) Filter
Input [1]: [distributionCenters#1990]
Condition : (((size(distributionCenters#1990.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#1990.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#1990.internalRefUUID))
(271) Project
Output [2]: [distributionCenters#1990.internalRefUUID AS _extract_internalRefUUID#2394, distributionCenters#1990.storageLocations.internalRefUUID AS _extract_internalRefUUID#2507]
Input [1]: [distributionCenters#1990]
(272) Generate
Input [2]: [_extract_internalRefUUID#2394, _extract_internalRefUUID#2507]
Arguments: explode(_extract_internalRefUUID#2507), [_extract_internalRefUUID#2394], false, [storageLocations#1991]
(273) Filter
Input [2]: [_extract_internalRefUUID#2394, storageLocations#1991]
Condition : isnotnull(storageLocations#1991)
(274) Project
Output [2]: [_extract_internalRefUUID#2394 AS plantUuid#1993, storageLocations#1991 AS storageLocUuid#1995]
Input [2]: [_extract_internalRefUUID#2394, storageLocations#1991]
(275) BroadcastExchange
Input [2]: [plantUuid#1993, storageLocUuid#1995]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=3001]
(276) Scan parquet
Output [2]: [product#1996, plant#1997]
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/10000000004/shardId=0_1_10000000004]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(277) Filter
Input [2]: [product#1996, plant#1997]
Condition : isnotnull(plant#1997)
(278) Exchange
Input [2]: [product#1996, plant#1997]
Arguments: hashpartitioning(product#1996, plant#1997, 10), REPARTITION_BY_NUM, [plan_id=2780]
(279) Scan parquet
Output [4]: [plant#2002, product#2003, productionAspect#2005, systemId#2000]
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#2002.internalRefUUID AS _extract_internalRefUUID#2508, product#2003.internalRefUUID AS _extract_internalRefUUID#2511, productionAspect#2005.productMovementPlants.unitOfIssue.code AS _extract_code#2509, productionAspect#2005.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#2510]
Input [4]: [plant#2002, product#2003, productionAspect#2005, systemId#2000]
(281) Exchange
Input [4]: [_extract_internalRefUUID#2508, _extract_internalRefUUID#2511, _extract_code#2509, _extract_internalRefUUID#2510]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2640]
(282) Project
Output [4]: [_extract_code#2509, _extract_internalRefUUID#2510, _extract_internalRefUUID#2511, _extract_internalRefUUID#2508]
Input [4]: [_extract_internalRefUUID#2508, _extract_internalRefUUID#2511, _extract_code#2509, _extract_internalRefUUID#2510]
(283) BroadcastExchange
Input [4]: [_extract_code#2509, _extract_internalRefUUID#2510, _extract_internalRefUUID#2511, _extract_internalRefUUID#2508]
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=2981]
(284) BroadcastHashJoin
Left keys [4]: [coalesce(product#1996, ), isnull(product#1996), coalesce(plant#1997, ), isnull(plant#1997)]
Right keys [4]: [coalesce(_extract_internalRefUUID#2511, ), isnull(_extract_internalRefUUID#2511), coalesce(_extract_internalRefUUID#2508, ), isnull(_extract_internalRefUUID#2508)]
Join type: LeftOuter
Join condition: None
(285) Project
Output [4]: [product#1996, plant#1997, _extract_code#2509, _extract_internalRefUUID#2510]
Input [6]: [product#1996, plant#1997, _extract_code#2509, _extract_internalRefUUID#2510, _extract_internalRefUUID#2511, _extract_internalRefUUID#2508]
(286) Scan parquet
Output [2]: [internalUUID#2010, systemId#2009]
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#2010]
Input [2]: [internalUUID#2010, systemId#2009]
(288) Exchange
Input [1]: [internalUUID#2010]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2646]
(289) BroadcastExchange
Input [1]: [internalUUID#2010]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=2985]
(290) BroadcastHashJoin
Left keys [2]: [coalesce(plant#1997, ), isnull(plant#1997)]
Right keys [2]: [coalesce(internalUUID#2010, ), isnull(internalUUID#2010)]
Join type: LeftOuter
Join condition: None
(291) Project
Output [4]: [product#1996, plant#1997, _extract_code#2509, _extract_internalRefUUID#2510]
Input [5]: [product#1996, plant#1997, _extract_code#2509, _extract_internalRefUUID#2510, internalUUID#2010]
(292) Scan parquet
Output [4]: [internalUUID#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030, systemId#2023]
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#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030, systemId#2023]
Condition : isnotnull(internalUUID#2024)
(294) Project
Output [3]: [internalUUID#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030]
Input [4]: [internalUUID#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030, systemId#2023]
(295) Exchange
Input [3]: [internalUUID#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2652]
(296) BroadcastExchange
Input [3]: [internalUUID#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=2989]
(297) BroadcastHashJoin
Left keys [1]: [product#1996]
Right keys [1]: [internalUUID#2024]
Join type: LeftOuter
Join condition: None
(298) Project
Output [2]: [plant#1997, filter(unitOfMeasureConversions#2030, lambdafunction((((lambda u#1149.measurementUnit1.code = _extract_code#2509) AND (lambda u#1149.measurementUnit1.internalRefUUID = _extract_internalRefUUID#2510)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#2028.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2028.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#2035]
Input [7]: [product#1996, plant#1997, _extract_code#2509, _extract_internalRefUUID#2510, internalUUID#2024, baseUnitOfMeasure#2028, unitOfMeasureConversions#2030]
(299) Generate
Input [2]: [plant#1997, filteredUnitOfMeasureConversions#2035]
Arguments: explode(filteredUnitOfMeasureConversions#2035.quantityNumerator), [plant#1997, filteredUnitOfMeasureConversions#2035], true, [quantityNumerator#2036]
(300) Project
Output [2]: [plant#1997, filteredUnitOfMeasureConversions#2035.quantityDenominator AS _extract_quantityDenominator#2396]
Input [3]: [plant#1997, filteredUnitOfMeasureConversions#2035, quantityNumerator#2036]
(301) Generate
Input [2]: [plant#1997, _extract_quantityDenominator#2396]
Arguments: explode(_extract_quantityDenominator#2396), [plant#1997], true, [quantityDenominator#2037]
(302) Project
Output [1]: [plant#1997]
Input [2]: [plant#1997, quantityDenominator#2037]
(303) HashAggregate
Input [1]: [plant#1997]
Keys [1]: [plant#1997]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1997]
(304) Exchange
Input [1]: [plant#1997]
Arguments: hashpartitioning(plant#1997, 10), ENSURE_REQUIREMENTS, [plan_id=2998]
(305) HashAggregate
Input [1]: [plant#1997]
Keys [1]: [plant#1997]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#1997]
(306) BroadcastHashJoin
Left keys [1]: [plantUuid#1993]
Right keys [1]: [plant#1997]
Join type: Inner
Join condition: None
(307) Project
Output [2]: [plantUuid#1993 AS plant#1967, storageLocUuid#1995]
Input [3]: [plantUuid#1993, storageLocUuid#1995, plant#1997]
(308) Sort
Input [2]: [plant#1967, storageLocUuid#1995]
Arguments: [plant#1967 ASC NULLS FIRST], false, 0
(309) SortMergeJoin
Left keys [1]: [plant#1103]
Right keys [1]: [plant#1967]
Join type: Inner
Join condition: None
(310) Project
Output [3]: [plant#1103, product#1102, storageLocUuid#1995]
Input [4]: [product#1102, plant#1103, plant#1967, storageLocUuid#1995]
(311) Scan parquet
Output [5]: [internalUUID#1933, id#1934, isMarkedForDeletion#1939, items#1940, systemId#1932]
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#1933, id#1934, isMarkedForDeletion#1939, items#1940, systemId#1932]
Condition : (((isnotnull(isMarkedForDeletion#1939) AND NOT isMarkedForDeletion#1939) AND (size(items#1940, true) > 0)) AND isnotnull(items#1940))
(313) Project
Output [3]: [internalUUID#1933, id#1934, items#1940]
Input [5]: [internalUUID#1933, id#1934, isMarkedForDeletion#1939, items#1940, systemId#1932]
(314) Exchange
Input [3]: [internalUUID#1933, id#1934, items#1940]
Arguments: RoundRobinPartitioning(10), REPARTITION_BY_NUM, [plan_id=2668]
(315) Generate
Input [3]: [internalUUID#1933, id#1934, items#1940]
Arguments: explode(items#1940), [internalUUID#1933, id#1934], false, [item#1944]
(316) Filter
Input [3]: [internalUUID#1933, id#1934, item#1944]
Condition : ((((isnotnull(item#1944.deletionIndicator) AND isnotnull(item#1944.completeIndicator)) AND isnotnull(item#1944.returnIndicator)) AND ((NOT item#1944.deletionIndicator AND NOT item#1944.completeIndicator) AND NOT item#1944.returnIndicator)) AND ((isnotnull(item#1944.product.internalRefUUID) AND isnotnull(item#1944.plant.internalRefUUID)) AND isnotnull(item#1944.storageLocation.internalRefUUID)))
(317) Project
Output [11]: [id#1934, internalUUID#1933, item#1944.plant.internalRefUUID AS plant#1949, item#1944.product.internalRefUUID AS product#1950, item#1944.storageLocation.internalRefUUID AS storageLocUuid#1951, item#1944.quantityUnit.code AS quantityUom#1952, item#1944.quantityUnit.internalRefUUID AS quantityUomUuid#1953, item#1944.quantityNumerator AS quantityNumerator#1954, item#1944.quantityDenominator AS quantityDenominator#1955, item#1944.scheduleLines AS scheduleLines#1956, item#1944.confirmations AS confirmations#1957]
Input [3]: [internalUUID#1933, id#1934, item#1944]
(318) BroadcastExchange
Input [11]: [id#1934, internalUUID#1933, plant#1949, product#1950, storageLocUuid#1951, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=3012]
(319) BroadcastHashJoin
Left keys [3]: [product#1102, plant#1103, storageLocUuid#1995]
Right keys [3]: [product#1950, plant#1949, storageLocUuid#1951]
Join type: Inner
Join condition: None
(320) Project
Output [11]: [id#1934, internalUUID#1933, plant#1949, product#1950, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, size(filter(confirmations#1957, lambdafunction(((NOT lambda x_2#2322.deletionIndicator AND lambda x_2#2322.isRelevantForConfirmation) AND isnotnull(lambda x_2#2322.confirmedDeliveryAt)), lambda x_2#2322, false)), false) AS _w0#2329]
Input [14]: [plant#1103, product#1102, storageLocUuid#1995, id#1934, internalUUID#1933, plant#1949, product#1950, storageLocUuid#1951, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957]
(321) Exchange
Input [11]: [id#1934, internalUUID#1933, plant#1949, product#1950, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, _w0#2329]
Arguments: hashpartitioning(internalUUID#1933, 10), ENSURE_REQUIREMENTS, [plan_id=3016]
(322) Sort
Input [11]: [id#1934, internalUUID#1933, plant#1949, product#1950, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, _w0#2329]
Arguments: [internalUUID#1933 ASC NULLS FIRST], false, 0
(323) Window
Input [11]: [id#1934, internalUUID#1933, plant#1949, product#1950, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, _w0#2329]
Arguments: [sum(_w0#2329) windowspecdefinition(internalUUID#1933, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#2330L], [internalUUID#1933]
(324) Project
Output [3]: [plant#1949, product#1950, filter(transform(CASE WHEN (_we0#2330L > 0) THEN transform(filter(confirmations#1957, lambdafunction(((NOT lambda x_2#2323.deletionIndicator AND lambda x_2#2323.isRelevantForConfirmation) AND isnotnull(lambda x_2#2323.confirmedDeliveryAt)), lambda x_2#2323, false)), lambdafunction(struct(openQty, greatest((lambda x_3#2326.confirmedQuantity - coalesce(lambda x_3#2326.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_3#2326.confirmedDeliveryAt), lambda x_3#2326, false)) ELSE transform(scheduleLines#1956, lambdafunction(struct(openQty, greatest((lambda x_1#2324.quantity - coalesce(lambda x_1#2324.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1#2324.deliveryAt), lambda x_1#2324, false)) END, lambdafunction(struct(documentId, id#1934, documentUuid, internalUUID#1933, openQty, lambda x_4#2327.openQty, openQtyInBaseUnit, ((lambda x_4#2327.openQty * quantityNumerator#1954) / quantityDenominator#1955), qtyUom, quantityUom#1952, qtyUomUuid, quantityUomUuid#1953, availabilityDatetime, lambda x_4#2327.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_4#2327, false)), lambdafunction(NOT (lambda x_5#2328.openQty = 0.0), lambda x_5#2328, false)) AS openGoodsMovements#2321]
Input [12]: [id#1934, internalUUID#1933, plant#1949, product#1950, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, _w0#2329, _we0#2330L]
(325) ObjectHashAggregate
Input [3]: [plant#1949, product#1950, openGoodsMovements#2321]
Keys [2]: [product#1950, plant#1949]
Functions [1]: [partial_collect_list(openGoodsMovements#2321, 0, 0)]
Aggregate Attributes [1]: [buf#4278]
Results [3]: [product#1950, plant#1949, buf#4279]
(326) Exchange
Input [3]: [product#1950, plant#1949, buf#4279]
Arguments: hashpartitioning(product#1950, plant#1949, 10), ENSURE_REQUIREMENTS, [plan_id=3022]
(327) ObjectHashAggregate
Input [3]: [product#1950, plant#1949, buf#4279]
Keys [2]: [product#1950, plant#1949]
Functions [1]: [collect_list(openGoodsMovements#2321, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#2321, 0, 0)#2347]
Results [3]: [product#1950, plant#1949, flatten(collect_list(openGoodsMovements#2321, 0, 0)#2347) AS openGoodsMovements#2331]
(328) Filter
Input [3]: [product#1950, plant#1949, openGoodsMovements#2331]
Condition : (size(openGoodsMovements#2331, false) > 0)
(329) AdaptiveSparkPlan
Output [3]: [product#1950, plant#1949, openGoodsMovements#2331]
Arguments: isFinalPlan=true
(330) TableCacheQueryStage
Output [3]: [openGoodsMovements#2331, plant#1949, product#1950]
Arguments: 0
(331) Filter
Input [3]: [openGoodsMovements#2331, plant#1949, product#1950]
Condition : (size(transform(openGoodsMovements#2331, lambdafunction(struct(documentId, lambda x_10#14567.documentId, documentUuid, lambda x_10#14567.documentUuid, openQty, lambda x_10#14567.openQty, qtyUomUuid, lambda x_10#14567.qtyUomUuid, qtyUom, lambda x_10#14567.qtyUom, plannedDeliveryDatetime, lambda x_10#14567.availabilityDatetime), lambda x_10#14567, false)), false) > 0)
(332) Project
Output [4]: [product#1950, plant#1949 AS location#14564, transform(openGoodsMovements#2331, lambdafunction(struct(documentId, lambda x_10#14567.documentId, documentUuid, lambda x_10#14567.documentUuid, openQty, lambda x_10#14567.openQty, qtyUomUuid, lambda x_10#14567.qtyUomUuid, qtyUom, lambda x_10#14567.qtyUom, plannedDeliveryDatetime, lambda x_10#14567.availabilityDatetime), lambda x_10#14567, false)) AS documents#14566, 10000000004 AS replenishmentRunId#14568L]
Input [3]: [openGoodsMovements#2331, plant#1949, product#1950]
(333) WriteFiles
Input [4]: [product#1950, location#14564, documents#14566, replenishmentRunId#14568L]
(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/10000000004/0_1_10000000004, 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/10000000004/0_1_10000000004], Append, [product, location, documents, replenishmentRunId]
(335) ResultQueryStage
Output: []
Arguments: 1
(336) Filter
Input [3]: [openGoodsMovements#2331, plant#1949, product#1950]
Condition : (size(transform(openGoodsMovements#2331, lambdafunction(struct(documentId, lambda x_10#14567.documentId, documentUuid, lambda x_10#14567.documentUuid, openQty, lambda x_10#14567.openQty, qtyUomUuid, lambda x_10#14567.qtyUomUuid, qtyUom, lambda x_10#14567.qtyUom, plannedDeliveryDatetime, lambda x_10#14567.availabilityDatetime), lambda x_10#14567, false)), false) > 0)
(337) Project
Output [4]: [product#1950, plant#1949 AS location#14564, transform(openGoodsMovements#2331, lambdafunction(struct(documentId, lambda x_10#14567.documentId, documentUuid, lambda x_10#14567.documentUuid, openQty, lambda x_10#14567.openQty, qtyUomUuid, lambda x_10#14567.qtyUomUuid, qtyUom, lambda x_10#14567.qtyUom, plannedDeliveryDatetime, lambda x_10#14567.availabilityDatetime), lambda x_10#14567, false)) AS documents#14566, 10000000004 AS replenishmentRunId#14568L]
Input [3]: [openGoodsMovements#2331, plant#1949, product#1950]
(338) WriteFiles
Input [4]: [product#1950, location#14564, documents#14566, replenishmentRunId#14568L]
(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/10000000004/0_1_10000000004, 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/10000000004/0_1_10000000004], Append, [product, location, documents, replenishmentRunId]
(340) AdaptiveSparkPlan
Output: []
Arguments: isFinalPlan=true