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>CollectLimit</b><br><br>shuffle records written: 0<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 0<br>local bytes read: 0.0 B<br>merged fetch fallback count: 0<br>local blocks read: 0<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>local merged bytes read: 0.0 B<br>remote reqs duration: 0 ms<br>local merged chunks fetched: 0<br>shuffle write time: 0 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time: 0 ms<br>remote bytes read: 0.0 B<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 0.0 B" tooltip="CollectLimit 1"];
subgraph cluster2 {
isCluster="true";
id="cluster2";
label="WholeStageCodegen (70)\n \nduration: 0 ms";
tooltip="WholeStageCodegen (70)";
3 [id="node3" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project"];
}
4 [id="node4" labelType="html" label="<b>Filter</b><br><br>number of output rows: 1" tooltip="Filter ((size(openGoodsMovements#946371, false) > 0) AND (size(transform(openGoodsMovements#946371, lambdafunction(struct(documentId, lambda x_148#958170.documentId, documentUuid, lambda x_148#958170.documentUuid, openQty, lambda x_148#958170.openQty, qtyUomUuid, lambda x_148#958170.qtyUomUuid, qtyUom, lambda x_148#958170.qtyUom, plannedDeliveryDatetime, lambda x_148#958170.availabilityDatetime), lambda x_148#958170, false)), false) > 0))"];
5 [id="node5" labelType="html" label="<b>ObjectHashAggregate</b><br><br>number of output rows: 1<br>time in aggregation build: 69 ms<br>spill size: 0.0 B<br>number of sort fallback tasks: 0" tooltip="ObjectHashAggregate(keys=[product#946271, plant#946270], functions=[collect_list(openGoodsMovements#946361, 0, 0)])"];
6 [id="node6" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 1<br>partition data size: 3.1 KiB<br>number of coalesced partitions: 1" tooltip="AQEShuffleRead coalesced"];
7 [id="node7" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 11<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 11<br>local bytes read: 2.9 KiB<br>merged fetch fallback count: 0<br>local blocks read: 9<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 3.4 KiB<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 0 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time: 0 ms<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 2.9 KiB" tooltip="Exchange hashpartitioning(product#946271, plant#946270, 37), ENSURE_REQUIREMENTS, [plan_id=1595205]"];
8 [id="node8" labelType="html" label="<b>ObjectHashAggregate</b><br><br>number of output rows: 11<br>time in aggregation build: 125 ms<br>spill size: 0.0 B<br>number of sort fallback tasks: 0" tooltip="ObjectHashAggregate(keys=[product#946271, plant#946270], functions=[partial_collect_list(openGoodsMovements#946361, 0, 0)])"];
9 [id="node9" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#946270, product#946271, filter(transform(CASE WHEN (_we0#946370L > 0) THEN transform(filter(confirmations#946278, lambdafunction(((NOT lambda x_140#946363.deletionIndicator AND lambda x_140#946363.isRelevantForConfirmation) AND isnotnull(lambda x_140#946363.confirmedDeliveryAt)), lambda x_140#946363, false)), lambdafunction(struct(openQty, greatest((lambda x_141#946366.confirmedQuantity - coalesce(lambda x_141#946366.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_141#946366.confirmedDeliveryAt), lambda x_141#946366, false)) ELSE transform(scheduleLines#946277, lambdafunction(struct(openQty, greatest((lambda x_139#946364.quantity - coalesce(lambda x_139#946364.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_139#946364.deliveryAt), lambda x_139#946364, false)) END, lambdafunction(struct(documentId, id#946255, documentUuid, internalUUID#946254, openQty, lambda x_142#946367.openQty, openQtyInBaseUnit, ((lambda x_142#946367.openQty * quantityNumerator#946275) / quantityDenominator#946276), qtyUom, quantityUom#946273, qtyUomUuid, quantityUomUuid#946274, availabilityDatetime, lambda x_142#946367.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_142#946367, false)), lambdafunction(NOT (lambda x_143#946368.openQty = 0.0), lambda x_143#946368, false)) AS openGoodsMovements#946361]"];
10 [id="node10" labelType="html" label="<b>Window</b><br><br>spill size: 0.0 B" tooltip="Window [sum(_w0#946369) windowspecdefinition(internalUUID#946254, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#946370L], [internalUUID#946254]"];
subgraph cluster11 {
isCluster="true";
id="cluster11";
label="WholeStageCodegen (69)\n \nduration: 495 ms";
tooltip="WholeStageCodegen (69)";
12 [id="node12" labelType="html" label="<b>Sort</b><br><br>sort time: 0 ms<br>peak memory: 2.1 MiB<br>spill size: 0.0 B" tooltip="Sort [internalUUID#946254 ASC NULLS FIRST], false, 0"];
}
13 [id="node13" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 1<br>partition data size: 955.0 B<br>number of coalesced partitions: 1" tooltip="AQEShuffleRead coalesced"];
14 [id="node14" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 11<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 11<br>local bytes read: 884.0 B<br>merged fetch fallback count: 0<br>local blocks read: 1<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 4.4 KiB<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 0 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time: 0 ms<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 884.0 B" tooltip="Exchange hashpartitioning(internalUUID#946254, 37), ENSURE_REQUIREMENTS, [plan_id=1595085]"];
15 [id="node15" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, size(filter(confirmations#946278, lambdafunction(((NOT lambda x_140#946362.deletionIndicator AND lambda x_140#946362.isRelevantForConfirmation) AND isnotnull(lambda x_140#946362.confirmedDeliveryAt)), lambda x_140#946362, false)), false) AS _w0#946369]"];
subgraph cluster16 {
isCluster="true";
id="cluster16";
label="WholeStageCodegen (68)\n \nduration: 121 ms";
tooltip="WholeStageCodegen (68)";
17 [id="node17" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 11" tooltip="BroadcastHashJoin [product#944305, plant#944306, storageLocUuid#946315], [product#946271, plant#946270, storageLocUuid#946272], Inner, BuildRight, false"];
18 [id="node18" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#944306, product#944305, storageLocUuid#946315]"];
19 [id="node19" labelType="html" label="<b>SortMergeJoin</b><br><br>number of output rows: 434<br>spill size: 0.0 B" tooltip="SortMergeJoin [plant#944306], [plant#946288], Inner"];
}
subgraph cluster20 {
isCluster="true";
id="cluster20";
label="WholeStageCodegen (66)\n \nduration: 1.0 s";
tooltip="WholeStageCodegen (66)";
21 [id="node21" labelType="html" label="<b>Sort</b><br><br>sort time: 0 ms<br>peak memory: 2.1 MiB<br>spill size: 0.0 B" tooltip="Sort [plant#944306 ASC NULLS FIRST], false, 0"];
}
22 [id="node22" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 1<br>partition data size: 16.0 KiB<br>number of coalesced partitions: 1" tooltip="AQEShuffleRead coalesced"];
23 [id="node23" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 434<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 434<br>local bytes read: 15.4 KiB<br>merged fetch fallback count: 0<br>local blocks read: 4<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 37.3 KiB<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 0 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time: 0 ms<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 15.4 KiB" tooltip="Exchange hashpartitioning(plant#944306, 37), ENSURE_REQUIREMENTS, [plan_id=1594906]"];
subgraph cluster24 {
isCluster="true";
id="cluster24";
label="WholeStageCodegen (65)\n \nduration: 114 ms";
tooltip="WholeStageCodegen (65)";
25 [id="node25" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#944305, plant#944306]"];
26 [id="node26" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 434" tooltip="BroadcastHashJoin [coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305)], [coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950)], LeftOuter, BuildRight, false"];
}
27 [id="node27" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 1" tooltip="AQEShuffleRead local"];
28 [id="node28" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 434<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 434<br>local bytes read: 18.1 KiB<br>merged fetch fallback count: 0<br>local blocks read: 121<br>remote merged chunks fetched: 0<br>remote blocks read: 251<br>data size total (min, med, max (stageId: taskId))<br>37.3 KiB (528.0 B, 968.0 B, 1760.0 B (stage 101197.0: task 328398))<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>31 ms (0 ms, 0 ms, 1 ms (stage 101197.0: task 328378))<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time: 0 ms<br>remote bytes read: 38.0 KiB<br>number of partitions: 37<br>remote reqs duration: 12 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>56.1 KiB (863.0 B, 1433.0 B, 2.5 KiB (stage 101197.0: task 328395))" tooltip="Exchange hashpartitioning(coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305), 37), ENSURE_REQUIREMENTS, [plan_id=1590032]"];
subgraph cluster29 {
isCluster="true";
id="cluster29";
label="WholeStageCodegen (48)\n \nduration: total (min, med, max (stageId: taskId))\n93 ms (1 ms, 2 ms, 5 ms (stage 101197.0: task 328382))";
tooltip="WholeStageCodegen (48)";
30 [id="node30" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#944305, plant#944306]"];
31 [id="node31" labelType="html" label="<b>Generate</b><br><br>number of output rows: 434" tooltip="Generate explode(_extract_quantityDenominator#958172), [product#944305, plant#944306], true, [quantityDenominator#944420]"];
32 [id="node32" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409.quantityDenominator AS _extract_quantityDenominator#958172]"];
33 [id="node33" labelType="html" label="<b>Generate</b><br><br>number of output rows: 434" tooltip="Generate explode(filteredUnitOfMeasureConversions#944409.quantityNumerator), [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409], true, [quantityNumerator#944417]"];
}
34 [id="node34" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#944305, plant#944306, filter(unitOfMeasureConversions#944403, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958334) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958335)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944401.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944401.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944409]"];
subgraph cluster35 {
isCluster="true";
id="cluster35";
label="WholeStageCodegen (47)\n \nduration: total (min, med, max (stageId: taskId))\n506 ms (2 ms, 3 ms, 61 ms (stage 101197.0: task 328382))";
tooltip="WholeStageCodegen (47)";
36 [id="node36" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 434" tooltip="BroadcastHashJoin [product#944305], [internalUUID#944397], LeftOuter, BuildRight, false"];
37 [id="node37" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#944305, plant#944306, _extract_code#958334, _extract_internalRefUUID#958335]"];
38 [id="node38" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 434" tooltip="BroadcastHashJoin [coalesce(product#944305, ), isnull(product#944305), coalesce(plant#944306, ), isnull(plant#944306)], [coalesce(_extract_internalRefUUID#958336, ), isnull(_extract_internalRefUUID#958336), coalesce(_extract_internalRefUUID#958337, ), isnull(_extract_internalRefUUID#958337)], LeftOuter, BuildRight, false"];
}
39 [id="node39" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 434<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 434<br>local bytes read total (min, med, max (stageId: taskId))<br>22.5 KiB (399.0 B, 581.0 B, 911.0 B (stage 101197.0: task 328398))<br>merged fetch fallback count: 0<br>local blocks read: 37<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size total (min, med, max (stageId: taskId))<br>37.3 KiB (528.0 B, 968.0 B, 1760.0 B (stage 101172.0: task 327868))<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>18 ms (0 ms, 0 ms, 0 ms (stage 101172.0: task 327919))<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101197.0: task 328374))<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>22.5 KiB (399.0 B, 581.0 B, 911.0 B (stage 101172.0: task 327868))" tooltip="Exchange hashpartitioning(product#944305, plant#944306, 37), REPARTITION_BY_NUM, [plan_id=1573091]"];
subgraph cluster40 {
isCluster="true";
id="cluster40";
label="WholeStageCodegen (1)\n \nduration: total (min, med, max (stageId: taskId))\n3.8 s (83 ms, 101 ms, 191 ms (stage 101172.0: task 327903))";
tooltip="WholeStageCodegen (1)";
41 [id="node41" labelType="html" label="<b>Filter</b><br><br>number of output rows: 434" tooltip="Filter (isnotnull(plant#944306) AND isnotnull(product#944305))"];
42 [id="node42" labelType="html" label="<b>ColumnarToRow</b><br><br>number of output rows: 434<br>number of input batches: 37" tooltip="ColumnarToRow"];
}
43 [id="node43" labelType="html" label="<b>Scan parquet </b><br><br>number of files read: 37<br>scan time total (min, med, max (stageId: taskId))<br>3.8 s (82 ms, 100 ms, 185 ms (stage 101172.0: task 327903))<br>metadata time: 0 ms<br>size of files read: 78.2 KiB<br>number of output rows: 434" tooltip="FileScan parquet [product#944305,plant#944306] Batched: true, DataFilters: [isnotnull(plant#944306), isnotnull(product#944305)], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [IsNotNull(plant), IsNotNull(product)], ReadSchema: struct<product:string,plant:string>"];
44 [id="node44" labelType="html" label="<b>BroadcastExchange</b><br><br>time to broadcast: 1 ms<br>time to build: 2 ms<br>time to collect: 204 ms<br>number of output rows: 1,462<br>data size: 2.1 MiB" 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=1576017]"];
subgraph cluster45 {
isCluster="true";
id="cluster45";
label="WholeStageCodegen (30)\n \nduration: total (min, med, max (stageId: taskId))\n0 ms (0 ms, 0 ms, 0 ms (stage 101182.0: task 327905))";
tooltip="WholeStageCodegen (30)";
46 [id="node46" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_code#958334, _extract_internalRefUUID#958335, _extract_internalRefUUID#958336, _extract_internalRefUUID#958337]"];
}
47 [id="node47" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 1,462<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 1,462<br>local bytes read total (min, med, max (stageId: taskId))<br>77.5 KiB (1958.0 B, 2.1 KiB, 2.3 KiB (stage 101182.0: task 327958))<br>merged fetch fallback count: 0<br>local blocks read: 37<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 202.9 KiB<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 1 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101182.0: task 327905))<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 77.5 KiB" tooltip="Exchange RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573107]"];
subgraph cluster48 {
isCluster="true";
id="cluster48";
label="WholeStageCodegen (2)\n \nduration: 101 ms";
tooltip="WholeStageCodegen (2)";
49 [id="node49" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#944363.internalRefUUID AS _extract_internalRefUUID#958337, product#944364.internalRefUUID AS _extract_internalRefUUID#958336, productionAspect#944366.productMovementPlants.unitOfIssue.code AS _extract_code#958334, productionAspect#944366.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#958335]"];
50 [id="node50" labelType="html" label="<b>ColumnarToRow</b><br><br>number of output rows: 1,462<br>number of input batches: 1" tooltip="ColumnarToRow"];
}
51 [id="node51" labelType="html" label="<b>Scan parquet </b><br><br>number of files read: 1<br>scan time: 97 ms<br>dynamic partition pruning time: 0 ms<br>metadata time: 0 ms<br>size of files read: 80.3 KiB<br>number of output rows: 1,462<br>number of partitions read: 1" tooltip="FileScan parquet [plant#944363,product#944364,productionAspect#944366,systemId#944361] Batched: true, DataFilters: [], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<plant:struct<internalRefUUID:string>,product:struct<internalRefUUID:string>,productionAspe..."];
52 [id="node52" labelType="html" label="<b>BroadcastExchange</b><br><br>time to broadcast: 0 ms<br>time to build: 1 ms<br>time to collect: 127 ms<br>number of output rows: 145<br>data size: 2.0 MiB" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1574283]"];
53 [id="node53" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 145<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 145<br>local bytes read total (min, med, max (stageId: taskId))<br>28.8 KiB (573.0 B, 786.0 B, 999.0 B (stage 101180.0: task 327895))<br>merged fetch fallback count: 0<br>local blocks read: 37<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 88.5 KiB<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 1 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101180.0: task 327875))<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 28.8 KiB" tooltip="Exchange RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573128]"];
subgraph cluster54 {
isCluster="true";
id="cluster54";
label="WholeStageCodegen (3)\n \nduration: 116 ms";
tooltip="WholeStageCodegen (3)";
55 [id="node55" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]"];
56 [id="node56" labelType="html" label="<b>Filter</b><br><br>number of output rows: 145" tooltip="Filter isnotnull(internalUUID#944397)"];
57 [id="node57" labelType="html" label="<b>ColumnarToRow</b><br><br>number of output rows: 145<br>number of input batches: 1" tooltip="ColumnarToRow"];
}
58 [id="node58" labelType="html" label="<b>Scan parquet </b><br><br>number of files read: 1<br>scan time: 115 ms<br>dynamic partition pruning time: 0 ms<br>metadata time: 0 ms<br>size of files read: 33.6 KiB<br>number of output rows: 145<br>number of partitions read: 1" tooltip="FileScan parquet [internalUUID#944397,baseUnitOfMeasure#944401,unitOfMeasureConversions#944403,systemId#944396] Batched: true, DataFilters: [isnotnull(internalUUID#944397)], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [IsNotNull(internalUUID)], ReadSchema: struct<internalUUID:string,baseUnitOfMeasure:struct<internalRefUUID:string,code:string>,unitOfMea..."];
59 [id="node59" labelType="html" label="<b>BroadcastExchange</b><br><br>time to broadcast: 0 ms<br>time to build: 5 ms<br>time to collect: 43 ms<br>number of output rows: 434<br>data size: 2.0 MiB" 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=1594772]"];
60 [id="node60" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 1" tooltip="AQEShuffleRead local"];
61 [id="node61" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 434<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 434<br>local bytes read: 7.7 KiB<br>merged fetch fallback count: 0<br>local blocks read: 52<br>remote merged chunks fetched: 0<br>remote blocks read: 313<br>data size total (min, med, max (stageId: taskId))<br>37.3 KiB (704.0 B, 1056.0 B, 1760.0 B (stage 101232.0: task 328564))<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>29 ms (0 ms, 0 ms, 1 ms (stage 101232.0: task 328570))<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time: 0 ms<br>remote bytes read: 47.7 KiB<br>number of partitions: 37<br>remote reqs duration: 16 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>55.4 KiB (1053.0 B, 1653.0 B, 2.5 KiB (stage 101232.0: task 328564))" tooltip="Exchange hashpartitioning(coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950), 37), ENSURE_REQUIREMENTS, [plan_id=1594620]"];
subgraph cluster62 {
isCluster="true";
id="cluster62";
label="WholeStageCodegen (64)\n \nduration: total (min, med, max (stageId: taskId))\n447 ms (3 ms, 13 ms, 31 ms (stage 101232.0: task 328563))";
tooltip="WholeStageCodegen (64)";
63 [id="node63" 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#945950, 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#945951]"];
64 [id="node64" labelType="html" label="<br><b>MapElements</b><br><br>" tooltip="MapElements com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, obj#945945: org.apache.spark.sql.Row"];
65 [id="node65" labelType="html" label="<br><b>DeserializeToObject</b><br><br>" tooltip="DeserializeToObject createexternalrow(invoke(product#945954.toString()), invoke(plant#945955.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#945956)), if (isnull(productPlant#945967)) null else createexternalrow(invoke(productPlant#945967.systemId.toString()), invoke(productPlant#945967.internalUUID.toString()), if (isnull(productPlant#945967.plant)) null else createexternalrow(invoke(productPlant#945967.plant.internalRefUUID.toString()), invoke(productPlant#945967.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#945967.product)) null else createexternalrow(invoke(productPlant#945967.product.internalRefUUID.toString()), invoke(productPlant#945967.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#945967.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#945967.productionAspect)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#945967.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#945967.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,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(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)),true)), if (isnull(productPlant#945967.salesPlant)) null else createexternalrow(if (isnull(productPlant#945967.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#945967.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#945967.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#945967.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#945967.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#945967.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#945967.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), 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)),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), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#945984)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#946209)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#946210, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#946211, 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#944825, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#945919.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row"];
66 [id="node66" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, CASE WHEN isnotnull(timezonecode#945917) THEN timezonecode#945917 ELSE UTC END AS timezonecode#945919]"];
67 [id="node67" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 434" tooltip="BroadcastHashJoin [coalesce(plant#945955, ), isnull(plant#945955)], [coalesce(internalUUID#945905, ), isnull(internalUUID#945905)], LeftOuter, BuildRight, false"];
}
68 [id="node68" labelType="html" label="<b>ObjectHashAggregate</b><br><br>number of output rows: 434<br>time in aggregation build total (min, med, max (stageId: taskId))<br>772 ms (5 ms, 7 ms, 70 ms (stage 101232.0: task 328571))<br>spill size total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 101232.0: task 328573))<br>number of sort fallback tasks: 0" tooltip="ObjectHashAggregate(keys=[product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#959657], functions=[collect_list(rawDemands#944824, 0, 0)])"];
69 [id="node69" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 33<br>partition data size total (min, med, max (stageId: taskId))<br>3.0 MiB (52.3 KiB, 94.7 KiB, 135.7 KiB (driver))<br>number of coalesced partitions: 4" tooltip="AQEShuffleRead coalesced"];
70 [id="node70" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 434<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 434<br>local bytes read total (min, med, max (stageId: taskId))<br>1967.9 KiB (17.8 KiB, 50.4 KiB, 118.0 KiB (stage 101232.0: task 328580))<br>merged fetch fallback count: 0<br>local blocks read: 234<br>remote merged chunks fetched: 0<br>remote blocks read: 131<br>data size total (min, med, max (stageId: taskId))<br>5.3 MiB (85.4 KiB, 161.1 KiB, 283.6 KiB (stage 101227.0: task 328555))<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>39 ms (0 ms, 0 ms, 3 ms (stage 101227.0: task 328528))<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101232.0: task 328573))<br>remote bytes read total (min, med, max (stageId: taskId))<br>987.5 KiB (794.0 B, 19.0 KiB, 107.6 KiB (stage 101232.0: task 328571))<br>number of partitions: 37<br>remote reqs duration total (min, med, max (stageId: taskId))<br>97 ms (0 ms, 3 ms, 7 ms (stage 101232.0: task 328574))<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>2.9 MiB (53.2 KiB, 89.9 KiB, 151.8 KiB (stage 101227.0: task 328555))" tooltip="Exchange hashpartitioning(product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#959657, 37), ENSURE_REQUIREMENTS, [plan_id=1594415]"];
71 [id="node71" labelType="html" label="<b>ObjectHashAggregate</b><br><br>number of output rows: 434<br>time in aggregation build total (min, med, max (stageId: taskId))<br>1.3 s (9 ms, 13 ms, 106 ms (stage 101227.0: task 328536))<br>spill size total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 101227.0: task 328529))<br>number of sort fallback tasks: 0" tooltip="ObjectHashAggregate(keys=[product#945954, plant#945955, orderDateTime#945956, knownfloatingpointnormalized(if (isnull(productPlant#945967)) null else named_struct(systemId, productPlant#945967.systemId, internalUUID, productPlant#945967.internalUUID, plant, productPlant#945967.plant, product, productPlant#945967.product, blockedForReplenishmentStartingFrom, productPlant#945967.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect)) null else named_struct(productMovementPlants, productPlant#945967.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#945967.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#945967.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#945967.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#945967.salesPlant, listing, productPlant#945967.listing, sourceOfSupplyCategory, productPlant#945967.sourceOfSupplyCategory)) AS productPlant#945967, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#945984)) AS outboundUnit#945984, stockDatetime#946209, knownfloatingpointnormalized(transform(stockBatchQuantities#946210, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#959658)), lambda arg#959658, false))) AS stockBatchQuantities#946210, [7226582400000000] AS [7226582400000000]#959657], functions=[partial_collect_list(rawDemands#944824, 0, 0)])"];
subgraph cluster72 {
isCluster="true";
id="cluster72";
label="WholeStageCodegen (63)\n \nduration: total (min, med, max (stageId: taskId))\n1.3 s (9 ms, 13 ms, 108 ms (stage 101227.0: task 328534))";
tooltip="WholeStageCodegen (63)";
73 [id="node73" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, CASE WHEN isnotnull(product#944814) THEN struct(demandChannel, demandChannel#944816, demandStream, demandStream#944817, considerVariance, considerVariance#944818, demandTimeBuckets, demandTimeBuckets#944819, demandPointInTimeStart, demandPointInTimeStart#944820, demandPointInTimeEnd, demandPointInTimeEnd#944821, demandPointInTime, demandPointInTime#944822) END AS rawDemands#944824]"];
74 [id="node74" labelType="html" label="<b>SortMergeJoin</b><br><br>number of output rows: 434<br>spill size total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 101227.0: task 328529))" tooltip="SortMergeJoin [coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954)], [coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814)], LeftOuter"];
}
subgraph cluster75 {
isCluster="true";
id="cluster75";
label="WholeStageCodegen (61)\n \nduration: total (min, med, max (stageId: taskId))\n2.6 s (11 ms, 15 ms, 278 ms (stage 101227.0: task 328538))";
tooltip="WholeStageCodegen (61)";
76 [id="node76" labelType="html" label="<b>Sort</b><br><br>sort time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101227.0: task 328529))<br>peak memory total (min, med, max (stageId: taskId))<br>70.1 MiB (2.1 MiB, 2.1 MiB, 2.1 MiB (stage 101227.0: task 328529))<br>spill size total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 101227.0: task 328529))" tooltip="Sort [coalesce(plant#945955, ) ASC NULLS FIRST, isnull(plant#945955) ASC NULLS FIRST, coalesce(product#945954, ) ASC NULLS FIRST, isnull(product#945954) ASC NULLS FIRST], false, 0"];
}
77 [id="node77" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 34<br>partition data size total (min, med, max (stageId: taskId))<br>280.3 KiB (3.8 KiB, 8.0 KiB, 13.2 KiB (driver))<br>number of coalesced partitions: 3" tooltip="AQEShuffleRead coalesced"];
78 [id="node78" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 434<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 434<br>local bytes read total (min, med, max (stageId: taskId))<br>114.8 KiB (1628.0 B, 3.2 KiB, 6.8 KiB (stage 101227.0: task 328547))<br>merged fetch fallback count: 0<br>local blocks read: 163<br>remote merged chunks fetched: 0<br>remote blocks read: 209<br>data size total (min, med, max (stageId: taskId))<br>398.9 KiB (5.6 KiB, 9.9 KiB, 18.4 KiB (stage 101223.0: task 328512))<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>28 ms (0 ms, 0 ms, 1 ms (stage 101223.0: task 328498))<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>3 ms (0 ms, 0 ms, 1 ms (stage 101227.0: task 328542))<br>remote bytes read total (min, med, max (stageId: taskId))<br>147.2 KiB (1326.0 B, 4.2 KiB, 10.0 KiB (stage 101227.0: task 328533))<br>number of partitions: 37<br>remote reqs duration total (min, med, max (stageId: taskId))<br>111 ms (2 ms, 3 ms, 6 ms (stage 101227.0: task 328534))<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>262.1 KiB (4.0 KiB, 6.5 KiB, 11.4 KiB (stage 101223.0: task 328512))" tooltip="Exchange hashpartitioning(coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954), 37), ENSURE_REQUIREMENTS, [plan_id=1594145]"];
subgraph cluster79 {
isCluster="true";
id="cluster79";
label="WholeStageCodegen (60)\n \nduration: total (min, med, max (stageId: taskId))\n171 ms (1 ms, 2 ms, 18 ms (stage 101223.0: task 328496))";
tooltip="WholeStageCodegen (60)";
80 [id="node80" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, CASE WHEN isnotnull(minCalculationDateTime#946207) THEN minCalculationDateTime#946207 ELSE orderDateTime#945956 END AS stockDatetime#946209, CASE WHEN isnotnull(roundedQuantitySum#946208) THEN array(roundedQuantitySum#946208) ELSE [0.0] END AS stockBatchQuantities#946210]"];
81 [id="node81" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 434" tooltip="BroadcastHashJoin [plant#945955, product#945954], [plant#946093, product#946094], LeftOuter, BuildRight, false"];
82 [id="node82" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, CASE WHEN (isnull(outboundUnit#945983) OR (outboundUnit#945983 <= 0.0)) THEN 1.0 ELSE outboundUnit#945983 END AS outboundUnit#945984]"];
83 [id="node83" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, (cast(quantityNumerator#945981 as double) / cast(quantityDenominator#945982 as double)) AS outboundUnit#945983]"];
84 [id="node84" labelType="html" label="<b>Generate</b><br><br>number of output rows: 434" tooltip="Generate explode(_extract_quantityDenominator#958338), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, quantityNumerator#945981], true, [quantityDenominator#945982]"];
85 [id="node85" labelType="html" label="<b>Generate</b><br><br>number of output rows: 434" tooltip="Generate explode(_extract_quantityNumerator#958339), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#958338], true, [quantityNumerator#945981]"];
86 [id="node86" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filteredUnitOfMeasureConversions#945980.quantityDenominator AS _extract_quantityDenominator#958338, filteredUnitOfMeasureConversions#945980.quantityNumerator AS _extract_quantityNumerator#958339]"];
}
87 [id="node87" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filter(unitOfMeasureConversions#945975, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#945973.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#945973.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#945980]"];
subgraph cluster88 {
isCluster="true";
id="cluster88";
label="WholeStageCodegen (59)\n \nduration: total (min, med, max (stageId: taskId))\n1.3 s (3 ms, 4 ms, 142 ms (stage 101223.0: task 328493))";
tooltip="WholeStageCodegen (59)";
89 [id="node89" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 434" tooltip="BroadcastHashJoin [product#945954], [internalUUID#945969], LeftOuter, BuildRight, false"];
90 [id="node90" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 434" tooltip="BroadcastHashJoin [coalesce(product#945954, ), isnull(product#945954), coalesce(plant#945955, ), isnull(plant#945955)], [coalesce(productPlant#945967.product.internalRefUUID, ), isnull(productPlant#945967.product.internalRefUUID), coalesce(productPlant#945967.plant.internalRefUUID, ), isnull(productPlant#945967.plant.internalRefUUID)], LeftOuter, BuildRight, false"];
}
91 [id="node91" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 434<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 434<br>local bytes read total (min, med, max (stageId: taskId))<br>24.1 KiB (425.0 B, 623.0 B, 969.0 B (stage 101223.0: task 328512))<br>merged fetch fallback count: 0<br>local blocks read: 37<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size total (min, med, max (stageId: taskId))<br>40.7 KiB (576.0 B, 1056.0 B, 1920.0 B (stage 101171.0: task 327867))<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>17 ms (0 ms, 0 ms, 0 ms (stage 101171.0: task 327929))<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101223.0: task 328492))<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>24.1 KiB (425.0 B, 623.0 B, 969.0 B (stage 101171.0: task 327867))" tooltip="Exchange hashpartitioning(product#945954, plant#945955, 37), REPARTITION_BY_NUM, [plan_id=1573152]"];
subgraph cluster92 {
isCluster="true";
id="cluster92";
label="WholeStageCodegen (4)\n \nduration: total (min, med, max (stageId: taskId))\n2.9 s (61 ms, 76 ms, 152 ms (stage 101171.0: task 327867))";
tooltip="WholeStageCodegen (4)";
93 [id="node93" labelType="html" label="<b>ColumnarToRow</b><br><br>number of output rows: 434<br>number of input batches: 37" tooltip="ColumnarToRow"];
}
94 [id="node94" labelType="html" label="<b>Scan parquet </b><br><br>number of files read: 37<br>scan time total (min, med, max (stageId: taskId))<br>2.9 s (60 ms, 75 ms, 151 ms (stage 101171.0: task 327867))<br>metadata time: 0 ms<br>size of files read: 78.2 KiB<br>number of output rows: 434" tooltip="FileScan parquet [product#945954,plant#945955,orderDateTime#945956] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>"];
95 [id="node95" labelType="html" label="<b>BroadcastExchange</b><br><br>time to broadcast: 2 ms<br>time to build: 3 ms<br>time to collect: 184 ms<br>number of output rows: 1,462<br>data size: 2.1 MiB" 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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1579623]"];
subgraph cluster96 {
isCluster="true";
id="cluster96";
label="WholeStageCodegen (36)\n \nduration: total (min, med, max (stageId: taskId))\n4 ms (0 ms, 0 ms, 2 ms (stage 101186.0: task 328014))";
tooltip="WholeStageCodegen (36)";
97 [id="node97" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [struct(systemId, systemId#945958, internalUUID, internalUUID#945959, plant, plant#945960, product, product#945961, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#945962, productionAspect, productionAspect#945963, salesPlant, salesPlant#945964, listing, listing#945965, sourceOfSupplyCategory, sourceOfSupplyCategory#945966) AS productPlant#945967]"];
}
98 [id="node98" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 1,462<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 1,462<br>local bytes read total (min, med, max (stageId: taskId))<br>240.6 KiB (6.0 KiB, 6.5 KiB, 7.1 KiB (stage 101186.0: task 328035))<br>merged fetch fallback count: 0<br>local blocks read: 37<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 1122.3 KiB<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 2 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101186.0: task 328014))<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 240.6 KiB" tooltip="Exchange RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573166]"];
subgraph cluster99 {
isCluster="true";
id="cluster99";
label="WholeStageCodegen (5)\n \nduration: 112 ms";
tooltip="WholeStageCodegen (5)";
100 [id="node100" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]"];
101 [id="node101" labelType="html" label="<b>ColumnarToRow</b><br><br>number of output rows: 1,462<br>number of input batches: 1" tooltip="ColumnarToRow"];
}
102 [id="node102" labelType="html" label="<b>Scan parquet </b><br><br>number of files read: 1<br>scan time: 96 ms<br>dynamic partition pruning time: 0 ms<br>metadata time: 0 ms<br>size of files read: 80.3 KiB<br>number of output rows: 1,462<br>number of partitions read: 1" tooltip="FileScan parquet [internalUUID#945959,plant#945960,product#945961,blockedForReplenishmentStartingFrom#945962,productionAspect#945963,salesPlant#945964,listing#945965,sourceOfSupplyCategory#945966,systemId#945958] Batched: true, DataFilters: [], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<internalUUID:string,plant:struct<internalRefUUID:string,id:string>,product:struct<internal..."];
103 [id="node103" labelType="html" label="<b>BroadcastExchange</b><br><br>time to broadcast: 0 ms<br>time to build: 1 ms<br>time to collect: 98 ms<br>number of output rows: 55<br>data size: 2.0 MiB" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=1593839]"];
subgraph cluster104 {
isCluster="true";
id="cluster104";
label="WholeStageCodegen (58)\n \nduration: 5 ms";
tooltip="WholeStageCodegen (58)";
105 [id="node105" labelType="html" label="<b>HashAggregate</b><br><br>spill size: 0.0 B<br>time in aggregation build: 3 ms<br>peak memory: 2.3 MiB<br>number of output rows: 55<br>number of sort fallback tasks: 0<br>avg hash probes per key: 1" tooltip="HashAggregate(keys=[product#946094, plant#946093], functions=[min(calculationDateTime#946050), sum(quantity#946059)])"];
}
106 [id="node106" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 1<br>partition data size: 6.1 KiB<br>number of coalesced partitions: 1" tooltip="AQEShuffleRead coalesced"];
107 [id="node107" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 55<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 55<br>local bytes read: 5.7 KiB<br>merged fetch fallback count: 0<br>local blocks read: 28<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 5.6 KiB<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 1 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time: 0 ms<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 5.7 KiB" tooltip="Exchange hashpartitioning(product#946094, plant#946093, 37), ENSURE_REQUIREMENTS, [plan_id=1593529]"];
subgraph cluster108 {
isCluster="true";
id="cluster108";
label="WholeStageCodegen (57)\n \nduration: 54 ms";
tooltip="WholeStageCodegen (57)";
109 [id="node109" labelType="html" label="<b>HashAggregate</b><br><br>spill size: 0.0 B<br>time in aggregation build: 5 ms<br>peak memory: 256.0 KiB<br>number of output rows: 55<br>number of sort fallback tasks: 0<br>avg hash probes per key: 0" tooltip="HashAggregate(keys=[product#946094, plant#946093], functions=[partial_min(calculationDateTime#946050), partial_sum(quantity#946059)])"];
110 [id="node110" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#946093, product#946094, calculationDateTime#946050, quantity#946059]"];
111 [id="node111" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 55" tooltip="BroadcastHashJoin [coalesce(plant#946093, ), isnull(plant#946093), coalesce(product#946094, ), isnull(product#946094), coalesce(storageLocId#946057, ), isnull(storageLocId#946057), coalesce(calculationDateTime#946050, 1970-01-01 00:00:00), isnull(calculationDateTime#946050)], [coalesce(plant#946203, ), isnull(plant#946203), coalesce(product#946204, ), isnull(product#946204), coalesce(storageLocId#946167, ), isnull(storageLocId#946167), coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00), isnull(max_calc_datetime#946205)], Inner, BuildLeft, false"];
}
112 [id="node112" labelType="html" label="<b>BroadcastExchange</b><br><br>time to broadcast: 0 ms<br>time to build: 2 ms<br>time to collect: 29 ms<br>number of output rows: 55<br>data size: 2.0 MiB" 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=1592904]"];
113 [id="node113" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 1" tooltip="AQEShuffleRead local"];
114 [id="node114" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 55<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 55<br>local bytes read: 0.0 B<br>merged fetch fallback count: 0<br>local blocks read: 0<br>remote merged chunks fetched: 0<br>remote blocks read: 54<br>data size total (min, med, max (stageId: taskId))<br>6.4 KiB (120.0 B, 240.0 B, 840.0 B (stage 101211.0: task 328435))<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>15 ms (0 ms, 0 ms, 0 ms (stage 101211.0: task 328416))<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time: 3 ms<br>remote bytes read: 9.2 KiB<br>number of partitions: 37<br>remote reqs duration: 10 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>9.2 KiB (174.0 B, 348.0 B, 1094.0 B (stage 101211.0: task 328435))" tooltip="Exchange hashpartitioning(coalesce(plant#946093, ), isnull(plant#946093), coalesce(product#946094, ), isnull(product#946094), coalesce(storageLocId#946057, ), isnull(storageLocId#946057), coalesce(calculationDateTime#946050, 1970-01-01 00:00:00), isnull(calculationDateTime#946050), 37), ENSURE_REQUIREMENTS, [plan_id=1592084]"];
subgraph cluster115 {
isCluster="true";
id="cluster115";
label="WholeStageCodegen (54)\n \nduration: total (min, med, max (stageId: taskId))\n589 ms (0 ms, 1 ms, 177 ms (stage 101211.0: task 328414))";
tooltip="WholeStageCodegen (54)";
116 [id="node116" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#946054 AS plant#946093, productUuid#946056 AS product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]"];
117 [id="node117" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 55" tooltip="BroadcastHashJoin [plantUuid#946054, productUuid#946056], [plant#946063, product#946062], Inner, BuildLeft, (calculationDateTime#946050 <= orderDateTime#946064), false"];
172 [id="node172" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#946062, plant#946063, orderDateTime#946064]"];
173 [id="node173" labelType="html" label="<b>Generate</b><br><br>number of output rows: 434" tooltip="Generate explode(_extract_quantityDenominator#958221), [product#946062, plant#946063, orderDateTime#946064], true, [quantityDenominator#946090]"];
174 [id="node174" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088.quantityDenominator AS _extract_quantityDenominator#958221]"];
175 [id="node175" labelType="html" label="<b>Generate</b><br><br>number of output rows: 434" tooltip="Generate explode(filteredUnitOfMeasureConversions#946088.quantityNumerator), [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088], true, [quantityNumerator#946089]"];
}
118 [id="node118" labelType="html" label="<b>BroadcastExchange</b><br><br>time to broadcast: 0 ms<br>time to build: 0 ms<br>time to collect: 16 ms<br>number of output rows: 89<br>data size: 2.0 MiB" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1591118]"];
119 [id="node119" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 1" tooltip="AQEShuffleRead local"];
120 [id="node120" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 89<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 89<br>local bytes read: 8.9 KiB<br>merged fetch fallback count: 0<br>local blocks read: 35<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 10.4 KiB<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 1 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time: 0 ms<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 8.9 KiB" tooltip="Exchange hashpartitioning(productUuid#946056, plantUuid#946054, 37), ENSURE_REQUIREMENTS, [plan_id=1590089]"];
subgraph cluster121 {
isCluster="true";
id="cluster121";
label="WholeStageCodegen (50)\n \nduration: 5 ms";
tooltip="WholeStageCodegen (50)";
122 [id="node122" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#945988.internalRefUUID AS plantUuid#946054, product#945987.internalRefUUID AS productUuid#946056, calculationDateTime#946050, stockQuantity#946052.storagelocation.id AS storageLocId#946057, stockQuantity#946052.quantity.measure AS quantity#946059]"];
123 [id="node123" labelType="html" label="<b>Filter</b><br><br>number of output rows: 89" tooltip="Filter (((isnotnull(stockQuantity#946052.specialStockIndicator.code) AND isnotnull(stockQuantity#946052.stockType.code)) AND (stockQuantity#946052.specialStockIndicator.code = )) AND (stockQuantity#946052.stockType.code = 01))"];
124 [id="node124" labelType="html" label="<b>Generate</b><br><br>number of output rows: 89" tooltip="Generate explode(stockQuantities#946051), [product#945987, plant#945988, calculationDateTime#946050], false, [stockQuantity#946052]"];
125 [id="node125" labelType="html" label="<b>Filter</b><br><br>number of output rows: 89" tooltip="Filter ((size(stockQuantities#946051, true) > 0) AND isnotnull(calculationDateTime#946050))"];
}
126 [id="node126" labelType="html" label="<b>ObjectHashAggregate</b><br><br>number of output rows: 89<br>time in aggregation build: 4 ms<br>spill size: 0.0 B<br>number of sort fallback tasks: 0" tooltip="ObjectHashAggregate(keys=[plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985], functions=[first(calculationDateTime#945989, false), collect_list(stockQuantity#946049, 0, 0)])"];
127 [id="node127" labelType="html" label="<b>ObjectHashAggregate</b><br><br>number of output rows: 89<br>time in aggregation build: 22 ms<br>spill size: 0.0 B<br>number of sort fallback tasks: 0" tooltip="ObjectHashAggregate(keys=[plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985], functions=[partial_first(calculationDateTime#945989, false), partial_collect_list(stockQuantity#946049, 0, 0)])"];
128 [id="node128" labelType="html" label="<b>Generate</b><br><br>number of output rows: 89" tooltip="Generate explode(filter(stockQuantities#945990, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946017) AND (lambda x#944569.storageLocation.Id = storageLocId#946016)), lambda x#944569, false))), [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, plantUuid#946015], false, [stockQuantity#946049]"];
subgraph cluster129 {
isCluster="true";
id="cluster129";
label="WholeStageCodegen (49)\n \nduration: 28 ms";
tooltip="WholeStageCodegen (49)";
130 [id="node130" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 90" tooltip="BroadcastHashJoin [coalesce(plant#945988.internalRefUUID, ), isnull(plant#945988.internalRefUUID)], [coalesce(plantUuid#946015, ), isnull(plantUuid#946015)], Inner, BuildLeft, false"];
138 [id="node138" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#946015, storageLocId#946016, storageLocUuid#946017]"];
139 [id="node139" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 4" tooltip="BroadcastHashJoin [plantUuid#946015], [plant#946019], Inner, BuildLeft, false"];
153 [id="node153" labelType="html" label="<b>HashAggregate</b><br><br>spill size: 0.0 B<br>time in aggregation build: 10 ms<br>peak memory: 256.0 KiB<br>number of output rows: 4<br>number of sort fallback tasks: 0<br>avg hash probes per key: 0" tooltip="HashAggregate(keys=[plant#946019], functions=[])"];
}
131 [id="node131" labelType="html" label="<b>BroadcastExchange</b><br><br>time to broadcast: 1 ms<br>time to build: 1 ms<br>time to collect: 102 ms<br>number of output rows: 398<br>data size: 2.0 MiB" 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=1580138]"];
132 [id="node132" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 398<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 398<br>local bytes read total (min, med, max (stageId: taskId))<br>64.3 KiB (1469.0 B, 1786.0 B, 2.1 KiB (stage 101188.0: task 328069))<br>merged fetch fallback count: 0<br>local blocks read: 37<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 240.1 KiB<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 1 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101188.0: task 328004))<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 64.3 KiB" tooltip="Exchange RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573216]"];
subgraph cluster133 {
isCluster="true";
id="cluster133";
label="WholeStageCodegen (7)\n \nduration: 132 ms";
tooltip="WholeStageCodegen (7)";
134 [id="node134" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]"];
135 [id="node135" labelType="html" label="<b>Filter</b><br><br>number of output rows: 398" tooltip="Filter (isnotnull(plant#945988.internalRefUUID) AND isnotnull(product#945987.internalRefUUID))"];
136 [id="node136" labelType="html" label="<b>ColumnarToRow</b><br><br>number of output rows: 398<br>number of input batches: 1" tooltip="ColumnarToRow"];
}
137 [id="node137" labelType="html" label="<b>Scan parquet </b><br><br>number of files read: 1<br>scan time: 126 ms<br>dynamic partition pruning time: 0 ms<br>metadata time: 0 ms<br>size of files read: 30.1 KiB<br>number of output rows: 398<br>number of partitions read: 1" tooltip="FileScan parquet [internalUUID#945986,product#945987,plant#945988,calculationDateTime#945989,stockQuantities#945990,systemId#945985] Batched: true, DataFilters: [isnotnull(plant#945988.internalRefUUID), isnotnull(product#945987.internalRefUUID)], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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..."];
140 [id="node140" labelType="html" label="<b>BroadcastExchange</b><br><br>time to broadcast: 0 ms<br>time to build: 1 ms<br>time to collect: 166 ms<br>number of output rows: 4<br>data size: 2.0 MiB" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1582478]"];
subgraph cluster141 {
isCluster="true";
id="cluster141";
label="WholeStageCodegen (38)\n \nduration: total (min, med, max (stageId: taskId))\n1 ms (0 ms, 0 ms, 1 ms (stage 101192.0: task 328083))";
tooltip="WholeStageCodegen (38)";
142 [id="node142" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_internalRefUUID#958212 AS plantUuid#946015, storageLocations#946013.id AS storageLocId#946016, storageLocations#946013.internalRefUUID AS storageLocUuid#946017]"];
143 [id="node143" labelType="html" label="<b>Generate</b><br><br>number of output rows: 4" tooltip="Generate explode(_extract_storageLocations#958213), [_extract_internalRefUUID#958212], false, [storageLocations#946013]"];
144 [id="node144" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#946012.internalRefUUID AS _extract_internalRefUUID#958212, distributionCenters#946012.storageLocations AS _extract_storageLocations#958213]"];
145 [id="node145" labelType="html" label="<b>Filter</b><br><br>number of output rows: 4" tooltip="Filter (((size(distributionCenters#946012.storageLocations, true) > 0) AND isnotnull(distributionCenters#946012.storageLocations)) AND isnotnull(distributionCenters#946012.internalRefUUID))"];
146 [id="node146" labelType="html" label="<b>Generate</b><br><br>number of output rows: 4" tooltip="Generate explode(distributionCenters#945997), false, [distributionCenters#946012]"];
}
147 [id="node147" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 1<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 2<br>local bytes read total (min, med, max (stageId: taskId))<br>960.0 B (480.0 B, 480.0 B, 480.0 B (stage 101192.0: task 328083))<br>merged fetch fallback count: 0<br>local blocks read: 2<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 704.0 B<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 0 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101192.0: task 328083))<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 480.0 B" tooltip="Exchange RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573236]"];
subgraph cluster148 {
isCluster="true";
id="cluster148";
label="WholeStageCodegen (8)\n \nduration: total (min, med, max (stageId: taskId))\n218 ms (98 ms, 120 ms, 120 ms (stage 101174.0: task 327870))";
tooltip="WholeStageCodegen (8)";
149 [id="node149" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#945997]"];
150 [id="node150" labelType="html" label="<b>Filter</b><br><br>number of output rows: 1" tooltip="Filter (((marketUnit#945991 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#945997, true) > 0)) AND isnotnull(distributionCenters#945997))"];
151 [id="node151" labelType="html" label="<b>ColumnarToRow</b><br><br>number of output rows: 88<br>number of input batches: 2" tooltip="ColumnarToRow"];
}
152 [id="node152" labelType="html" label="<b>Scan parquet </b><br><br>number of files read: 2<br>scan time total (min, med, max (stageId: taskId))<br>214 ms (97 ms, 117 ms, 117 ms (stage 101174.0: task 327870))<br>metadata time: 0 ms<br>size of files read: 43.4 KiB<br>number of output rows: 88" tooltip="FileScan parquet [marketUnit#945991,distributionCenters#945997] Batched: true, DataFilters: [(marketUnit#945991 <=> IW_MU_CRP-125444_1), (size(distributionCenters#945997, true) > 0), isnotn..., Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)], ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storag..."];
154 [id="node154" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 1<br>partition data size: 15.9 KiB<br>number of coalesced partitions: 1" tooltip="AQEShuffleRead coalesced"];
155 [id="node155" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 139<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 417<br>local bytes read total (min, med, max (stageId: taskId))<br>15.0 KiB (4.2 KiB, 4.2 KiB, 6.5 KiB (stage 101250.0: task 328629))<br>merged fetch fallback count: 0<br>local blocks read: 142<br>remote merged chunks fetched: 0<br>remote blocks read: 275<br>data size total (min, med, max (stageId: taskId))<br>6.5 KiB (144.0 B, 192.0 B, 192.0 B (stage 101195.0: task 328327))<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>23 ms (0 ms, 0 ms, 1 ms (stage 101195.0: task 328360))<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101200.0: task 328388))<br>remote bytes read total (min, med, max (stageId: taskId))<br>29.0 KiB (8.1 KiB, 10.4 KiB, 10.4 KiB (stage 101200.0: task 328388))<br>number of partitions: 37<br>remote reqs duration total (min, med, max (stageId: taskId))<br>209 ms (6 ms, 6 ms, 197 ms (stage 101250.0: task 328629))<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>14.7 KiB (324.0 B, 432.0 B, 432.0 B (stage 101195.0: task 328327))" tooltip="Exchange hashpartitioning(plant#946019, 37), ENSURE_REQUIREMENTS, [plan_id=1587410]"];
subgraph cluster156 {
isCluster="true";
id="cluster156";
label="WholeStageCodegen (42)\n \nduration: total (min, med, max (stageId: taskId))\n408 ms (1 ms, 1 ms, 93 ms (stage 101195.0: task 328305))";
tooltip="WholeStageCodegen (42)";
157 [id="node157" labelType="html" label="<b>HashAggregate</b><br><br>spill size: 0.0 B<br>time in aggregation build total (min, med, max (stageId: taskId))<br>17 ms (0 ms, 0 ms, 3 ms (stage 101195.0: task 328305))<br>peak memory total (min, med, max (stageId: taskId))<br>9.3 MiB (256.0 KiB, 256.0 KiB, 256.0 KiB (stage 101195.0: task 328312))<br>number of output rows: 139<br>number of sort fallback tasks: 0<br>avg hash probes per key: 0" tooltip="HashAggregate(keys=[plant#946019], functions=[])"];
158 [id="node158" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#946019]"];
159 [id="node159" labelType="html" label="<b>Generate</b><br><br>number of output rows: 434" tooltip="Generate explode(_extract_quantityDenominator#958214), [plant#946019], true, [quantityDenominator#946046]"];
160 [id="node160" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#946019, filteredUnitOfMeasureConversions#946044.quantityDenominator AS _extract_quantityDenominator#958214]"];
161 [id="node161" labelType="html" label="<b>Generate</b><br><br>number of output rows: 434" tooltip="Generate explode(filteredUnitOfMeasureConversions#946044.quantityNumerator), [plant#946019, filteredUnitOfMeasureConversions#946044], true, [quantityNumerator#946045]"];
}
162 [id="node162" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#946019, filter(unitOfMeasureConversions#946039, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958342) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958343)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946037.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946037.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946044]"];
subgraph cluster163 {
isCluster="true";
id="cluster163";
label="WholeStageCodegen (41)\n \nduration: total (min, med, max (stageId: taskId))\n1.1 s (1 ms, 1 ms, 301 ms (stage 101195.0: task 328305))";
tooltip="WholeStageCodegen (41)";
164 [id="node164" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 434" tooltip="BroadcastHashJoin [product#946018], [internalUUID#946033], LeftOuter, BuildRight, false"];
165 [id="node165" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#946018, plant#946019, _extract_code#958342, _extract_internalRefUUID#958343]"];
166 [id="node166" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 434" tooltip="BroadcastHashJoin [coalesce(product#946018, ), isnull(product#946018), coalesce(plant#946019, ), isnull(plant#946019)], [coalesce(_extract_internalRefUUID#958341, ), isnull(_extract_internalRefUUID#958341), coalesce(_extract_internalRefUUID#958340, ), isnull(_extract_internalRefUUID#958340)], LeftOuter, BuildRight, false"];
}
167 [id="node167" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 434<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 434<br>local bytes read total (min, med, max (stageId: taskId))<br>22.5 KiB (399.0 B, 581.0 B, 911.0 B (stage 101195.0: task 328338))<br>merged fetch fallback count: 0<br>local blocks read: 37<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size total (min, med, max (stageId: taskId))<br>37.3 KiB (528.0 B, 968.0 B, 1760.0 B (stage 101169.0: task 327853))<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>18 ms (0 ms, 0 ms, 0 ms (stage 101169.0: task 327862))<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101195.0: task 328312))<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>22.5 KiB (399.0 B, 581.0 B, 911.0 B (stage 101169.0: task 327853))" tooltip="Exchange hashpartitioning(product#946018, plant#946019, 37), REPARTITION_BY_NUM, [plan_id=1573259]"];
subgraph cluster168 {
isCluster="true";
id="cluster168";
label="WholeStageCodegen (9)\n \nduration: total (min, med, max (stageId: taskId))\n4.2 s (75 ms, 96 ms, 190 ms (stage 101169.0: task 327855))";
tooltip="WholeStageCodegen (9)";
169 [id="node169" labelType="html" label="<b>Filter</b><br><br>number of output rows: 434" tooltip="Filter isnotnull(plant#946019)"];
170 [id="node170" labelType="html" label="<b>ColumnarToRow</b><br><br>number of output rows: 434<br>number of input batches: 37" tooltip="ColumnarToRow"];
}
171 [id="node171" labelType="html" label="<b>Scan parquet </b><br><br>number of files read: 37<br>scan time total (min, med, max (stageId: taskId))<br>3.6 s (74 ms, 96 ms, 149 ms (stage 101169.0: task 327853))<br>metadata time: 0 ms<br>size of files read: 78.2 KiB<br>number of output rows: 434" tooltip="FileScan parquet [product#946018,plant#946019] Batched: true, DataFilters: [isnotnull(plant#946019)], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [IsNotNull(plant)], ReadSchema: struct<product:string,plant:string>"];
176 [id="node176" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#946062, plant#946063, orderDateTime#946064, filter(unitOfMeasureConversions#946083, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958344) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958345)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946081.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946081.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946088]"];
subgraph cluster177 {
isCluster="true";
id="cluster177";
label="WholeStageCodegen (53)\n \nduration: total (min, med, max (stageId: taskId))\n863 ms (1 ms, 2 ms, 294 ms (stage 101211.0: task 328414))";
tooltip="WholeStageCodegen (53)";
178 [id="node178" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 434" tooltip="BroadcastHashJoin [product#946062], [internalUUID#946077], LeftOuter, BuildRight, false"];
179 [id="node179" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#946062, plant#946063, orderDateTime#946064, _extract_code#958344, _extract_internalRefUUID#958345]"];
180 [id="node180" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 434" tooltip="BroadcastHashJoin [coalesce(product#946062, ), isnull(product#946062), coalesce(plant#946063, ), isnull(plant#946063)], [coalesce(_extract_internalRefUUID#958346, ), isnull(_extract_internalRefUUID#958346), coalesce(_extract_internalRefUUID#958347, ), isnull(_extract_internalRefUUID#958347)], LeftOuter, BuildRight, false"];
}
181 [id="node181" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 434<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 868<br>local bytes read total (min, med, max (stageId: taskId))<br>48.3 KiB (425.0 B, 623.0 B, 969.0 B (stage 101211.0: task 328435))<br>merged fetch fallback count: 0<br>local blocks read: 74<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size total (min, med, max (stageId: taskId))<br>40.7 KiB (576.0 B, 1056.0 B, 1920.0 B (stage 101173.0: task 327869))<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>19 ms (0 ms, 0 ms, 0 ms (stage 101173.0: task 328251))<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101211.0: task 328420))<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>24.1 KiB (425.0 B, 623.0 B, 969.0 B (stage 101173.0: task 327869))" tooltip="Exchange hashpartitioning(product#946062, plant#946063, 37), REPARTITION_BY_NUM, [plan_id=1573339]"];
subgraph cluster182 {
isCluster="true";
id="cluster182";
label="WholeStageCodegen (12)\n \nduration: total (min, med, max (stageId: taskId))\n3.8 s (85 ms, 100 ms, 130 ms (stage 101173.0: task 327869))";
tooltip="WholeStageCodegen (12)";
183 [id="node183" labelType="html" label="<b>Filter</b><br><br>number of output rows: 434" tooltip="Filter ((isnotnull(orderDateTime#946064) AND isnotnull(plant#946063)) AND isnotnull(product#946062))"];
184 [id="node184" labelType="html" label="<b>ColumnarToRow</b><br><br>number of output rows: 434<br>number of input batches: 37" tooltip="ColumnarToRow"];
}
185 [id="node185" labelType="html" label="<b>Scan parquet </b><br><br>number of files read: 37<br>scan time total (min, med, max (stageId: taskId))<br>3.8 s (84 ms, 99 ms, 130 ms (stage 101173.0: task 327869))<br>metadata time: 0 ms<br>size of files read: 78.2 KiB<br>number of output rows: 434" tooltip="FileScan parquet [product#946062,plant#946063,orderDateTime#946064] Batched: true, DataFilters: [isnotnull(orderDateTime#946064), isnotnull(plant#946063), isnotnull(product#946062)], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)], ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>"];
186 [id="node186" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 1" tooltip="AQEShuffleRead local"];
187 [id="node187" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 55<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 55<br>local bytes read: 3.4 KiB<br>merged fetch fallback count: 0<br>local blocks read: 21<br>remote merged chunks fetched: 0<br>remote blocks read: 33<br>data size total (min, med, max (stageId: taskId))<br>6.0 KiB (112.0 B, 224.0 B, 784.0 B (stage 101212.0: task 328454))<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>14 ms (0 ms, 0 ms, 0 ms (stage 101212.0: task 328466))<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time: 0 ms<br>remote bytes read: 5.4 KiB<br>number of partitions: 37<br>remote reqs duration: 2 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>8.9 KiB (167.0 B, 334.0 B, 1047.0 B (stage 101212.0: task 328454))" tooltip="Exchange hashpartitioning(coalesce(plant#946203, ), isnull(plant#946203), coalesce(product#946204, ), isnull(product#946204), coalesce(storageLocId#946167, ), isnull(storageLocId#946167), coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00), isnull(max_calc_datetime#946205), 37), ENSURE_REQUIREMENTS, [plan_id=1592537]"];
subgraph cluster188 {
isCluster="true";
id="cluster188";
label="WholeStageCodegen (56)\n \nduration: total (min, med, max (stageId: taskId))\n555 ms (1 ms, 2 ms, 126 ms (stage 101212.0: task 328438))";
tooltip="WholeStageCodegen (56)";
189 [id="node189" labelType="html" label="<b>HashAggregate</b><br><br>spill size: 0.0 B<br>time in aggregation build total (min, med, max (stageId: taskId))<br>57 ms (0 ms, 0 ms, 15 ms (stage 101212.0: task 328438))<br>peak memory total (min, med, max (stageId: taskId))<br>65.3 MiB (256.0 KiB, 2.3 MiB, 2.3 MiB (stage 101212.0: task 328443))<br>number of output rows: 55<br>number of sort fallback tasks: 0<br>avg hash probes per key (min, med, max (stageId: taskId)):<br>(1, 1, 1 (stage 101212.0: task 328443))" tooltip="HashAggregate(keys=[plant#946203, product#946204, storageLocId#946167], functions=[max(calculationDateTime#946160)])"];
190 [id="node190" labelType="html" label="<b>HashAggregate</b><br><br>spill size: 0.0 B<br>time in aggregation build total (min, med, max (stageId: taskId))<br>8 ms (0 ms, 0 ms, 3 ms (stage 101212.0: task 328438))<br>peak memory total (min, med, max (stageId: taskId))<br>9.3 MiB (256.0 KiB, 256.0 KiB, 256.0 KiB (stage 101212.0: task 328443))<br>number of output rows: 55<br>number of sort fallback tasks: 0<br>avg hash probes per key: 0" tooltip="HashAggregate(keys=[plant#946203, product#946204, storageLocId#946167], functions=[partial_max(calculationDateTime#946160)])"];
191 [id="node191" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#946164 AS plant#946203, productUuid#946166 AS product#946204, storageLocId#946167, calculationDateTime#946160]"];
192 [id="node192" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 55" tooltip="BroadcastHashJoin [plantUuid#946164, productUuid#946166], [plant#946173, product#946172], Inner, BuildLeft, (calculationDateTime#946160 <= orderDateTime#946174), false"];
210 [id="node210" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#946172, plant#946173, orderDateTime#946174]"];
211 [id="node211" labelType="html" label="<b>Generate</b><br><br>number of output rows: 434" tooltip="Generate explode(_extract_quantityDenominator#958237), [product#946172, plant#946173, orderDateTime#946174], true, [quantityDenominator#946200]"];
212 [id="node212" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198.quantityDenominator AS _extract_quantityDenominator#958237]"];
213 [id="node213" labelType="html" label="<b>Generate</b><br><br>number of output rows: 434" tooltip="Generate explode(filteredUnitOfMeasureConversions#946198.quantityNumerator), [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198], true, [quantityNumerator#946199]"];
}
193 [id="node193" labelType="html" label="<b>BroadcastExchange</b><br><br>time to broadcast: 2 ms<br>time to build: 1 ms<br>time to collect: 15 ms<br>number of output rows: 89<br>data size: 2.0 MiB" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1591596]"];
194 [id="node194" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 1" tooltip="AQEShuffleRead local"];
195 [id="node195" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 89<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 89<br>local bytes read: 8.4 KiB<br>merged fetch fallback count: 0<br>local blocks read: 35<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 9.7 KiB<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 1 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time: 0 ms<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 8.4 KiB" tooltip="Exchange hashpartitioning(productUuid#946166, plantUuid#946164, 37), ENSURE_REQUIREMENTS, [plan_id=1590157]"];
subgraph cluster196 {
isCluster="true";
id="cluster196";
label="WholeStageCodegen (52)\n \nduration: 4 ms";
tooltip="WholeStageCodegen (52)";
197 [id="node197" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plant#946098.internalRefUUID AS plantUuid#946164, product#946097.internalRefUUID AS productUuid#946166, calculationDateTime#946160, stockQuantity#946162.storagelocation.id AS storageLocId#946167]"];
198 [id="node198" labelType="html" label="<b>Filter</b><br><br>number of output rows: 89" tooltip="Filter (((isnotnull(stockQuantity#946162.specialStockIndicator.code) AND isnotnull(stockQuantity#946162.stockType.code)) AND (stockQuantity#946162.specialStockIndicator.code = )) AND (stockQuantity#946162.stockType.code = 01))"];
199 [id="node199" labelType="html" label="<b>Generate</b><br><br>number of output rows: 89" tooltip="Generate explode(stockQuantities#946161), [product#946097, plant#946098, calculationDateTime#946160], false, [stockQuantity#946162]"];
200 [id="node200" labelType="html" label="<b>Filter</b><br><br>number of output rows: 89" tooltip="Filter ((size(stockQuantities#946161, true) > 0) AND isnotnull(calculationDateTime#946160))"];
}
201 [id="node201" labelType="html" label="<b>ObjectHashAggregate</b><br><br>number of output rows: 89<br>time in aggregation build: 3 ms<br>spill size: 0.0 B<br>number of sort fallback tasks: 0" tooltip="ObjectHashAggregate(keys=[plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095], functions=[first(calculationDateTime#946099, false), collect_list(stockQuantity#946159, 0, 0)])"];
202 [id="node202" labelType="html" label="<b>ObjectHashAggregate</b><br><br>number of output rows: 89<br>time in aggregation build: 26 ms<br>spill size: 0.0 B<br>number of sort fallback tasks: 0" tooltip="ObjectHashAggregate(keys=[plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095], functions=[partial_first(calculationDateTime#946099, false), partial_collect_list(stockQuantity#946159, 0, 0)])"];
203 [id="node203" labelType="html" label="<b>Generate</b><br><br>number of output rows: 89" tooltip="Generate explode(filter(stockQuantities#946100, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946127) AND (lambda x#944569.storageLocation.Id = storageLocId#946126)), lambda x#944569, false))), [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, plantUuid#946125], false, [stockQuantity#946159]"];
subgraph cluster204 {
isCluster="true";
id="cluster204";
label="WholeStageCodegen (51)\n \nduration: 35 ms";
tooltip="WholeStageCodegen (51)";
205 [id="node205" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 90" tooltip="BroadcastHashJoin [coalesce(plant#946098.internalRefUUID, ), isnull(plant#946098.internalRefUUID)], [coalesce(plantUuid#946125, ), isnull(plantUuid#946125)], Inner, BuildLeft, false"];
206 [id="node206" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#946125, storageLocId#946126, storageLocUuid#946127]"];
207 [id="node207" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 4" tooltip="BroadcastHashJoin [plantUuid#946125], [plant#946129], Inner, BuildLeft, false"];
208 [id="node208" labelType="html" label="<b>HashAggregate</b><br><br>spill size: 0.0 B<br>time in aggregation build: 15 ms<br>peak memory: 256.0 KiB<br>number of output rows: 4<br>number of sort fallback tasks: 0<br>avg hash probes per key: 0" tooltip="HashAggregate(keys=[plant#946129], functions=[])"];
}
209 [id="node209" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 1<br>partition data size: 15.9 KiB<br>number of coalesced partitions: 1" tooltip="AQEShuffleRead coalesced"];
214 [id="node214" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#946172, plant#946173, orderDateTime#946174, filter(unitOfMeasureConversions#946193, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958354) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958355)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946191.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946191.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946198]"];
subgraph cluster215 {
isCluster="true";
id="cluster215";
label="WholeStageCodegen (55)\n \nduration: total (min, med, max (stageId: taskId))\n1.1 s (2 ms, 2 ms, 383 ms (stage 101212.0: task 328438))";
tooltip="WholeStageCodegen (55)";
216 [id="node216" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 434" tooltip="BroadcastHashJoin [product#946172], [internalUUID#946187], LeftOuter, BuildRight, false"];
217 [id="node217" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [product#946172, plant#946173, orderDateTime#946174, _extract_code#958354, _extract_internalRefUUID#958355]"];
218 [id="node218" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 434" tooltip="BroadcastHashJoin [coalesce(product#946172, ), isnull(product#946172), coalesce(plant#946173, ), isnull(plant#946173)], [coalesce(_extract_internalRefUUID#958352, ), isnull(_extract_internalRefUUID#958352), coalesce(_extract_internalRefUUID#958353, ), isnull(_extract_internalRefUUID#958353)], LeftOuter, BuildRight, false"];
}
subgraph cluster219 {
isCluster="true";
id="cluster219";
label="WholeStageCodegen (62)\n \nduration: total (min, med, max (stageId: taskId))\n2.1 s (10 ms, 14 ms, 200 ms (stage 101227.0: task 328534))";
tooltip="WholeStageCodegen (62)";
220 [id="node220" labelType="html" label="<b>Sort</b><br><br>sort time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101227.0: task 328529))<br>peak memory total (min, med, max (stageId: taskId))<br>70.1 MiB (2.1 MiB, 2.1 MiB, 2.1 MiB (stage 101227.0: task 328529))<br>spill size total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 101227.0: task 328529))" tooltip="Sort [coalesce(plant#944815, ) ASC NULLS FIRST, isnull(plant#944815) ASC NULLS FIRST, coalesce(product#944814, ) ASC NULLS FIRST, isnull(product#944814) ASC NULLS FIRST], false, 0"];
}
221 [id="node221" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 34<br>partition data size total (min, med, max (stageId: taskId))<br>2.8 MiB (51.1 KiB, 86.2 KiB, 148.0 KiB (driver))<br>number of coalesced partitions: 3" tooltip="AQEShuffleRead coalesced"];
222 [id="node222" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 434<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 434<br>local bytes read total (min, med, max (stageId: taskId))<br>1086.6 KiB (10.5 KiB, 29.7 KiB, 66.3 KiB (stage 101227.0: task 328543))<br>merged fetch fallback count: 0<br>local blocks read: 150<br>remote merged chunks fetched: 0<br>remote blocks read: 223<br>data size total (min, med, max (stageId: taskId))<br>4.9 MiB (98.1 KiB, 146.2 KiB, 224.9 KiB (stage 101170.0: task 327866))<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>32 ms (0 ms, 0 ms, 1 ms (stage 101170.0: task 327866))<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101227.0: task 328529))<br>remote bytes read total (min, med, max (stageId: taskId))<br>1656.8 KiB (347.0 B, 44.6 KiB, 93.2 KiB (stage 101227.0: task 328538))<br>number of partitions: 37<br>remote reqs duration total (min, med, max (stageId: taskId))<br>144 ms (0 ms, 3 ms, 13 ms (stage 101227.0: task 328538))<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>2.7 MiB (55.6 KiB, 82.2 KiB, 125.7 KiB (stage 101170.0: task 327866))" tooltip="Exchange hashpartitioning(coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814), 37), ENSURE_REQUIREMENTS, [plan_id=1573622]"];
subgraph cluster223 {
isCluster="true";
id="cluster223";
label="WholeStageCodegen (23)\n \nduration: total (min, med, max (stageId: taskId))\n2.7 s (66 ms, 81 ms, 114 ms (stage 101170.0: task 328192))";
tooltip="WholeStageCodegen (23)";
224 [id="node224" labelType="html" label="<b>ColumnarToRow</b><br><br>number of output rows: 434<br>number of input batches: 33" tooltip="ColumnarToRow"];
}
225 [id="node225" labelType="html" label="<b>Scan parquet </b><br><br>number of files read: 33<br>scan time total (min, med, max (stageId: taskId))<br>2.6 s (64 ms, 78 ms, 110 ms (stage 101170.0: task 328192))<br>metadata time: 0 ms<br>size of files read: 1745.1 KiB<br>number of output rows: 434" tooltip="FileScan parquet [product#944814,plant#944815,demandChannel#944816,demandStream#944817,considerVariance#944818,demandTimeBuckets#944819,demandPointInTimeStart#944820,demandPointInTimeEnd#944821,demandPointInTime#944822] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanac..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<product:string,plant:string,demandChannel:string,demandStream:string,considerVariance:bool..."];
226 [id="node226" labelType="html" label="<b>BroadcastExchange</b><br><br>time to broadcast: 16 ms<br>time to build: 5 ms<br>time to collect: 113 ms<br>number of output rows: 27<br>data size: 2.0 MiB" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1577697]"];
227 [id="node227" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 27<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 27<br>local bytes read total (min, med, max (stageId: taskId))<br>3.5 KiB (131.0 B, 132.0 B, 132.0 B (stage 101184.0: task 327971))<br>merged fetch fallback count: 0<br>local blocks read: 27<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 1944.0 B<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 1 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101184.0: task 327971))<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 3.5 KiB" tooltip="Exchange RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573642]"];
subgraph cluster228 {
isCluster="true";
id="cluster228";
label="WholeStageCodegen (24)\n \nduration: 96 ms";
tooltip="WholeStageCodegen (24)";
229 [id="node229" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [internalUUID#945905, address#945911.timeZone.code AS timezonecode#945917]"];
230 [id="node230" labelType="html" label="<b>ColumnarToRow</b><br><br>number of output rows: 27<br>number of input batches: 1" tooltip="ColumnarToRow"];
}
231 [id="node231" labelType="html" label="<b>Scan parquet </b><br><br>number of files read: 1<br>scan time: 89 ms<br>dynamic partition pruning time: 0 ms<br>metadata time: 0 ms<br>size of files read: 13.1 KiB<br>number of output rows: 27<br>number of partitions read: 1" tooltip="FileScan parquet [internalUUID#945905,address#945911,systemId#945904] Batched: true, DataFilters: [], Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20...., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<internalUUID:string,address:struct<timeZone:struct<code:string>>>"];
subgraph cluster232 {
isCluster="true";
id="cluster232";
label="WholeStageCodegen (67)\n \nduration: 422 ms";
tooltip="WholeStageCodegen (67)";
233 [id="node233" labelType="html" label="<b>Sort</b><br><br>sort time: 0 ms<br>peak memory: 2.1 MiB<br>spill size: 0.0 B" tooltip="Sort [plant#946288 ASC NULLS FIRST], false, 0"];
234 [id="node234" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [plantUuid#946313 AS plant#946288, storageLocUuid#946315]"];
235 [id="node235" labelType="html" label="<b>BroadcastHashJoin</b><br><br>number of output rows: 4" tooltip="BroadcastHashJoin [plantUuid#946313], [plant#946317], Inner, BuildLeft, false"];
244 [id="node244" labelType="html" label="<b>HashAggregate</b><br><br>spill size: 0.0 B<br>time in aggregation build: 11 ms<br>peak memory: 256.0 KiB<br>number of output rows: 4<br>number of sort fallback tasks: 0<br>avg hash probes per key: 0" tooltip="HashAggregate(keys=[plant#946317], functions=[])"];
}
236 [id="node236" labelType="html" label="<b>BroadcastExchange</b><br><br>time to broadcast: 0 ms<br>time to build: 1 ms<br>time to collect: 190 ms<br>number of output rows: 4<br>data size: 2.0 MiB" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1582585]"];
subgraph cluster237 {
isCluster="true";
id="cluster237";
label="WholeStageCodegen (40)\n \nduration: total (min, med, max (stageId: taskId))\n0 ms (0 ms, 0 ms, 0 ms (stage 101193.0: task 328087))";
tooltip="WholeStageCodegen (40)";
238 [id="node238" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [_extract_internalRefUUID#958245 AS plantUuid#946313, storageLocations#946311 AS storageLocUuid#946315]"];
239 [id="node239" labelType="html" label="<b>Filter</b><br><br>number of output rows: 4" tooltip="Filter isnotnull(storageLocations#946311)"];
240 [id="node240" labelType="html" label="<b>Generate</b><br><br>number of output rows: 4" tooltip="Generate explode(_extract_internalRefUUID#958361), [_extract_internalRefUUID#958245], false, [storageLocations#946311]"];
241 [id="node241" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [distributionCenters#946310.internalRefUUID AS _extract_internalRefUUID#958245, distributionCenters#946310.storageLocations.internalRefUUID AS _extract_internalRefUUID#958361]"];
242 [id="node242" labelType="html" label="<b>Filter</b><br><br>number of output rows: 4" tooltip="Filter (((size(distributionCenters#946310.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#946310.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#946310.internalRefUUID))"];
243 [id="node243" labelType="html" label="<b>Generate</b><br><br>number of output rows: 4" tooltip="Generate explode(distributionCenters#946295), false, [distributionCenters#946310]"];
}
245 [id="node245" labelType="html" label="<b>AQEShuffleRead</b><br><br>number of partitions: 1<br>partition data size: 15.9 KiB<br>number of coalesced partitions: 1" tooltip="AQEShuffleRead coalesced"];
246 [id="node246" labelType="html" label="<b>BroadcastExchange</b><br><br>time to broadcast: 0 ms<br>time to build: 6 ms<br>time to collect: 205 ms<br>number of output rows: 40<br>data size: 2.0 MiB" tooltip="BroadcastExchange HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=1581563]"];
subgraph cluster247 {
isCluster="true";
id="cluster247";
label="WholeStageCodegen (37)\n \nduration: total (min, med, max (stageId: taskId))\n8 ms (0 ms, 0 ms, 7 ms (stage 101190.0: task 328075))";
tooltip="WholeStageCodegen (37)";
248 [id="node248" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [id#946255, internalUUID#946254, item#946265.plant.internalRefUUID AS plant#946270, item#946265.product.internalRefUUID AS product#946271, item#946265.storageLocation.internalRefUUID AS storageLocUuid#946272, item#946265.quantityUnit.code AS quantityUom#946273, item#946265.quantityUnit.internalRefUUID AS quantityUomUuid#946274, item#946265.quantityNumerator AS quantityNumerator#946275, item#946265.quantityDenominator AS quantityDenominator#946276, item#946265.scheduleLines AS scheduleLines#946277, item#946265.confirmations AS confirmations#946278]"];
249 [id="node249" labelType="html" label="<b>Filter</b><br><br>number of output rows: 40" tooltip="Filter ((((isnotnull(item#946265.deletionIndicator) AND isnotnull(item#946265.completeIndicator)) AND isnotnull(item#946265.returnIndicator)) AND ((NOT item#946265.deletionIndicator AND NOT item#946265.completeIndicator) AND NOT item#946265.returnIndicator)) AND ((isnotnull(item#946265.product.internalRefUUID) AND isnotnull(item#946265.plant.internalRefUUID)) AND isnotnull(item#946265.storageLocation.internalRefUUID)))"];
250 [id="node250" labelType="html" label="<b>Generate</b><br><br>number of output rows: 40" tooltip="Generate explode(items#946261), [internalUUID#946254, id#946255], false, [item#946265]"];
}
251 [id="node251" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 5<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 5<br>local bytes read total (min, med, max (stageId: taskId))<br>5.0 KiB (509.0 B, 513.0 B, 2.1 KiB (stage 101190.0: task 328106))<br>merged fetch fallback count: 0<br>local blocks read: 5<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 25.1 KiB<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 0 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 101190.0: task 328075))<br>remote bytes read: 0.0 B<br>number of partitions: 37<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 5.0 KiB" tooltip="Exchange RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573774]"];
subgraph cluster252 {
isCluster="true";
id="cluster252";
label="WholeStageCodegen (29)\n \nduration: 157 ms";
tooltip="WholeStageCodegen (29)";
253 [id="node253" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [internalUUID#946254, id#946255, items#946261]"];
254 [id="node254" labelType="html" label="<b>Filter</b><br><br>number of output rows: 5" tooltip="Filter (((isnotnull(isMarkedForDeletion#946260) AND NOT isMarkedForDeletion#946260) AND (size(items#946261, true) > 0)) AND isnotnull(items#946261))"];
255 [id="node255" labelType="html" label="<b>ColumnarToRow</b><br><br>number of output rows: 5<br>number of input batches: 1" tooltip="ColumnarToRow"];
}
256 [id="node256" labelType="html" label="<b>Scan parquet </b><br><br>number of files read: 1<br>scan time: 151 ms<br>dynamic partition pruning time: 0 ms<br>metadata time: 0 ms<br>size of files read: 20.2 KiB<br>number of output rows: 5<br>number of partitions read: 1" tooltip="FileScan parquet [internalUUID#946254,id#946255,isMarkedForDeletion#946260,items#946261,systemId#946253] Batched: true, DataFilters: [isnotnull(isMarkedForDeletion#946260), NOT isMarkedForDeletion#946260, (size(items#946261, true)..., Format: Parquet, Location: PreparedDeltaFileIndex(1 paths)[hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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;
3->1;
4->3;
5->4;
6->5;
7->6;
8->7;
9->8;
10->9;
12->10;
13->12;
14->13;
15->14;
17->15;
18->17;
19->18;
21->19;
22->21;
23->22;
25->23;
26->25;
27->26;
28->27;
30->28;
31->30;
32->31;
33->32;
34->33;
36->34;
37->36;
38->37;
39->38;
41->39;
42->41;
43->42;
44->38;
46->44;
47->46;
49->47;
50->49;
51->50;
52->36;
53->52;
55->53;
56->55;
57->56;
58->57;
59->26;
60->59;
61->60;
63->61;
64->63;
65->64;
66->65;
67->66;
68->67;
69->68;
70->69;
71->70;
73->71;
74->73;
76->74;
77->76;
78->77;
80->78;
81->80;
82->81;
83->82;
84->83;
85->84;
86->85;
87->86;
89->87;
90->89;
91->90;
93->91;
94->93;
95->90;
97->95;
98->97;
100->98;
101->100;
102->101;
52->89;
103->81;
105->103;
106->105;
107->106;
109->107;
110->109;
111->110;
112->111;
113->112;
114->113;
116->114;
117->116;
118->117;
119->118;
120->119;
122->120;
123->122;
124->123;
125->124;
126->125;
127->126;
128->127;
130->128;
131->130;
132->131;
134->132;
135->134;
136->135;
137->136;
138->130;
139->138;
140->139;
142->140;
143->142;
144->143;
145->144;
146->145;
147->146;
149->147;
150->149;
151->150;
152->151;
153->139;
154->153;
155->154;
157->155;
158->157;
159->158;
160->159;
161->160;
162->161;
164->162;
165->164;
166->165;
167->166;
169->167;
170->169;
171->170;
44->166;
52->164;
172->117;
173->172;
174->173;
175->174;
176->175;
178->176;
179->178;
180->179;
181->180;
183->181;
184->183;
185->184;
44->180;
52->178;
186->111;
187->186;
189->187;
190->189;
191->190;
192->191;
193->192;
194->193;
195->194;
197->195;
198->197;
199->198;
200->199;
201->200;
202->201;
203->202;
205->203;
131->205;
206->205;
207->206;
140->207;
208->207;
209->208;
155->209;
210->192;
211->210;
212->211;
213->212;
214->213;
216->214;
217->216;
218->217;
181->218;
44->218;
52->216;
220->74;
221->220;
222->221;
224->222;
225->224;
226->67;
227->226;
229->227;
230->229;
231->230;
233->19;
234->233;
235->234;
236->235;
238->236;
239->238;
240->239;
241->240;
242->241;
243->242;
147->243;
244->235;
245->244;
155->245;
246->17;
248->246;
249->248;
250->249;
251->250;
253->251;
254->253;
255->254;
256->255;
}
== Physical Plan ==
AdaptiveSparkPlan (560)
+- == Final Plan ==
ResultQueryStage (278), Statistics(sizeInBytes=8.0 EiB)
+- CollectLimit (277)
+- * Project (276)
+- Filter (275)
+- ObjectHashAggregate (274)
+- AQEShuffleRead (273)
+- ShuffleQueryStage (272), Statistics(sizeInBytes=3.4 KiB, rowCount=11)
+- Exchange (271)
+- ObjectHashAggregate (270)
+- Project (269)
+- Window (268)
+- * Sort (267)
+- AQEShuffleRead (266)
+- ShuffleQueryStage (265), Statistics(sizeInBytes=4.4 KiB, rowCount=11)
+- Exchange (264)
+- Project (263)
+- * BroadcastHashJoin Inner BuildRight (262)
:- * Project (250)
: +- * SortMergeJoin Inner (249)
: :- * Sort (231)
: : +- AQEShuffleRead (230)
: : +- ShuffleQueryStage (229), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : +- Exchange (228)
: : +- * Project (227)
: : +- * BroadcastHashJoin LeftOuter BuildRight (226)
: : :- AQEShuffleRead (32)
: : : +- ShuffleQueryStage (31), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : +- Exchange (30)
: : : +- * Project (29)
: : : +- * Generate (28)
: : : +- * Project (27)
: : : +- * Generate (26)
: : : +- Project (25)
: : : +- * BroadcastHashJoin LeftOuter BuildRight (24)
: : : :- * Project (15)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (14)
: : : : :- ShuffleQueryStage (5), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : : : +- Exchange (4)
: : : : : +- * Filter (3)
: : : : : +- * ColumnarToRow (2)
: : : : : +- Scan parquet (1)
: : : : +- BroadcastQueryStage (13), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : +- BroadcastExchange (12)
: : : : +- * Project (11)
: : : : +- ShuffleQueryStage (10), Statistics(sizeInBytes=202.9 KiB, rowCount=1.46E+3)
: : : : +- Exchange (9)
: : : : +- * Project (8)
: : : : +- * ColumnarToRow (7)
: : : : +- Scan parquet (6)
: : : +- BroadcastQueryStage (23), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : +- BroadcastExchange (22)
: : : +- ShuffleQueryStage (21), Statistics(sizeInBytes=88.5 KiB, rowCount=145)
: : : +- Exchange (20)
: : : +- * Project (19)
: : : +- * Filter (18)
: : : +- * ColumnarToRow (17)
: : : +- Scan parquet (16)
: : +- BroadcastQueryStage (225), Statistics(sizeInBytes=2.0 MiB, rowCount=434)
: : +- BroadcastExchange (224)
: : +- AQEShuffleRead (223)
: : +- ShuffleQueryStage (222), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : +- Exchange (221)
: : +- * SerializeFromObject (220)
: : +- * MapElements (219)
: : +- * DeserializeToObject (218)
: : +- * Project (217)
: : +- * BroadcastHashJoin LeftOuter BuildRight (216)
: : :- ObjectHashAggregate (208)
: : : +- AQEShuffleRead (207)
: : : +- ShuffleQueryStage (206), Statistics(sizeInBytes=5.3 MiB, rowCount=434)
: : : +- Exchange (205)
: : : +- ObjectHashAggregate (204)
: : : +- * Project (203)
: : : +- * SortMergeJoin LeftOuter (202)
: : : :- * Sort (195)
: : : : +- AQEShuffleRead (194)
: : : : +- ShuffleQueryStage (193), Statistics(sizeInBytes=398.9 KiB, rowCount=434)
: : : : +- Exchange (192)
: : : : +- * Project (191)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (190)
: : : : :- * Project (54)
: : : : : +- * Project (53)
: : : : : +- * Generate (52)
: : : : : +- * Generate (51)
: : : : : +- * Project (50)
: : : : : +- Project (49)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (48)
: : : : : :- * BroadcastHashJoin LeftOuter BuildRight (45)
: : : : : : :- ShuffleQueryStage (36), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : : +- Exchange (35)
: : : : : : : +- * ColumnarToRow (34)
: : : : : : : +- Scan parquet (33)
: : : : : : +- BroadcastQueryStage (44), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : +- BroadcastExchange (43)
: : : : : : +- * Project (42)
: : : : : : +- ShuffleQueryStage (41), Statistics(sizeInBytes=1122.3 KiB, rowCount=1.46E+3)
: : : : : : +- Exchange (40)
: : : : : : +- * Project (39)
: : : : : : +- * ColumnarToRow (38)
: : : : : : +- Scan parquet (37)
: : : : : +- BroadcastQueryStage (47), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : +- ReusedExchange (46)
: : : : +- BroadcastQueryStage (189), Statistics(sizeInBytes=2.0 MiB, rowCount=55)
: : : : +- BroadcastExchange (188)
: : : : +- * HashAggregate (187)
: : : : +- AQEShuffleRead (186)
: : : : +- ShuffleQueryStage (185), Statistics(sizeInBytes=5.6 KiB, rowCount=55)
: : : : +- Exchange (184)
: : : : +- * HashAggregate (183)
: : : : +- * Project (182)
: : : : +- * BroadcastHashJoin Inner BuildLeft (181)
: : : : :- BroadcastQueryStage (136), Statistics(sizeInBytes=2.0 MiB, rowCount=55)
: : : : : +- BroadcastExchange (135)
: : : : : +- AQEShuffleRead (134)
: : : : : +- ShuffleQueryStage (133), Statistics(sizeInBytes=6.4 KiB, rowCount=55)
: : : : : +- Exchange (132)
: : : : : +- * Project (131)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (130)
: : : : : :- BroadcastQueryStage (112), Statistics(sizeInBytes=2.0 MiB, rowCount=89)
: : : : : : +- BroadcastExchange (111)
: : : : : : +- AQEShuffleRead (110)
: : : : : : +- ShuffleQueryStage (109), Statistics(sizeInBytes=10.4 KiB, rowCount=89)
: : : : : : +- Exchange (108)
: : : : : : +- * Project (107)
: : : : : : +- * Filter (106)
: : : : : : +- * Generate (105)
: : : : : : +- * Filter (104)
: : : : : : +- ObjectHashAggregate (103)
: : : : : : +- ObjectHashAggregate (102)
: : : : : : +- Generate (101)
: : : : : : +- * BroadcastHashJoin Inner BuildLeft (100)
: : : : : : :- BroadcastQueryStage (62), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : : +- BroadcastExchange (61)
: : : : : : : +- ShuffleQueryStage (60), Statistics(sizeInBytes=240.1 KiB, rowCount=398)
: : : : : : : +- Exchange (59)
: : : : : : : +- * Project (58)
: : : : : : : +- * Filter (57)
: : : : : : : +- * ColumnarToRow (56)
: : : : : : : +- Scan parquet (55)
: : : : : : +- * Project (99)
: : : : : : +- * BroadcastHashJoin Inner BuildLeft (98)
: : : : : : :- BroadcastQueryStage (75), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : : : : : : +- BroadcastExchange (74)
: : : : : : : +- * Project (73)
: : : : : : : +- * Generate (72)
: : : : : : : +- * Project (71)
: : : : : : : +- * Filter (70)
: : : : : : : +- * Generate (69)
: : : : : : : +- ShuffleQueryStage (68), Statistics(sizeInBytes=704.0 B, rowCount=1)
: : : : : : : +- Exchange (67)
: : : : : : : +- * Project (66)
: : : : : : : +- * Filter (65)
: : : : : : : +- * ColumnarToRow (64)
: : : : : : : +- Scan parquet (63)
: : : : : : +- * HashAggregate (97)
: : : : : : +- AQEShuffleRead (96)
: : : : : : +- ShuffleQueryStage (95), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: : : : : : +- Exchange (94)
: : : : : : +- * HashAggregate (93)
: : : : : : +- * Project (92)
: : : : : : +- * Generate (91)
: : : : : : +- * Project (90)
: : : : : : +- * Generate (89)
: : : : : : +- Project (88)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (87)
: : : : : : :- * Project (84)
: : : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (83)
: : : : : : : :- ShuffleQueryStage (80), Statistics(sizeInBytes=37.3 KiB, rowCount=434)
: : : : : : : : +- Exchange (79)
: : : : : : : : +- * Filter (78)
: : : : : : : : +- * ColumnarToRow (77)
: : : : : : : : +- Scan parquet (76)
: : : : : : : +- BroadcastQueryStage (82), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : : +- ReusedExchange (81)
: : : : : : +- BroadcastQueryStage (86), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : : +- ReusedExchange (85)
: : : : : +- * Project (129)
: : : : : +- * Generate (128)
: : : : : +- * Project (127)
: : : : : +- * Generate (126)
: : : : : +- Project (125)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (124)
: : : : : :- * Project (121)
: : : : : : +- * BroadcastHashJoin LeftOuter BuildRight (120)
: : : : : : :- ShuffleQueryStage (117), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : : +- Exchange (116)
: : : : : : : +- * Filter (115)
: : : : : : : +- * ColumnarToRow (114)
: : : : : : : +- Scan parquet (113)
: : : : : : +- BroadcastQueryStage (119), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : : +- ReusedExchange (118)
: : : : : +- BroadcastQueryStage (123), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : : +- ReusedExchange (122)
: : : : +- AQEShuffleRead (180)
: : : : +- ShuffleQueryStage (179), Statistics(sizeInBytes=6.0 KiB, rowCount=55)
: : : : +- Exchange (178)
: : : : +- * HashAggregate (177)
: : : : +- * HashAggregate (176)
: : : : +- * Project (175)
: : : : +- * BroadcastHashJoin Inner BuildLeft (174)
: : : : :- BroadcastQueryStage (159), Statistics(sizeInBytes=2.0 MiB, rowCount=89)
: : : : : +- BroadcastExchange (158)
: : : : : +- AQEShuffleRead (157)
: : : : : +- ShuffleQueryStage (156), Statistics(sizeInBytes=9.7 KiB, rowCount=89)
: : : : : +- Exchange (155)
: : : : : +- * Project (154)
: : : : : +- * Filter (153)
: : : : : +- * Generate (152)
: : : : : +- * Filter (151)
: : : : : +- ObjectHashAggregate (150)
: : : : : +- ObjectHashAggregate (149)
: : : : : +- Generate (148)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (147)
: : : : : :- BroadcastQueryStage (138), Statistics(sizeInBytes=2.0 MiB, rowCount=398)
: : : : : : +- ReusedExchange (137)
: : : : : +- * Project (146)
: : : : : +- * BroadcastHashJoin Inner BuildLeft (145)
: : : : : :- BroadcastQueryStage (140), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : : : : : +- ReusedExchange (139)
: : : : : +- * HashAggregate (144)
: : : : : +- AQEShuffleRead (143)
: : : : : +- ShuffleQueryStage (142), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: : : : : +- ReusedExchange (141)
: : : : +- * Project (173)
: : : : +- * Generate (172)
: : : : +- * Project (171)
: : : : +- * Generate (170)
: : : : +- Project (169)
: : : : +- * BroadcastHashJoin LeftOuter BuildRight (168)
: : : : :- * Project (165)
: : : : : +- * BroadcastHashJoin LeftOuter BuildRight (164)
: : : : : :- ShuffleQueryStage (161), Statistics(sizeInBytes=40.7 KiB, rowCount=434)
: : : : : : +- ReusedExchange (160)
: : : : : +- BroadcastQueryStage (163), Statistics(sizeInBytes=2.1 MiB, rowCount=1.46E+3)
: : : : : +- ReusedExchange (162)
: : : : +- BroadcastQueryStage (167), Statistics(sizeInBytes=2.0 MiB, rowCount=145)
: : : : +- ReusedExchange (166)
: : : +- * Sort (201)
: : : +- AQEShuffleRead (200)
: : : +- ShuffleQueryStage (199), Statistics(sizeInBytes=4.9 MiB, rowCount=434)
: : : +- Exchange (198)
: : : +- * ColumnarToRow (197)
: : : +- Scan parquet (196)
: : +- BroadcastQueryStage (215), Statistics(sizeInBytes=2.0 MiB, rowCount=27)
: : +- BroadcastExchange (214)
: : +- ShuffleQueryStage (213), Statistics(sizeInBytes=1944.0 B, rowCount=27)
: : +- Exchange (212)
: : +- * Project (211)
: : +- * ColumnarToRow (210)
: : +- Scan parquet (209)
: +- * Sort (248)
: +- * Project (247)
: +- * BroadcastHashJoin Inner BuildLeft (246)
: :- BroadcastQueryStage (241), Statistics(sizeInBytes=2.0 MiB, rowCount=4)
: : +- BroadcastExchange (240)
: : +- * Project (239)
: : +- * Filter (238)
: : +- * Generate (237)
: : +- * Project (236)
: : +- * Filter (235)
: : +- * Generate (234)
: : +- ShuffleQueryStage (233), Statistics(sizeInBytes=704.0 B, rowCount=1)
: : +- ReusedExchange (232)
: +- * HashAggregate (245)
: +- AQEShuffleRead (244)
: +- ShuffleQueryStage (243), Statistics(sizeInBytes=6.5 KiB, rowCount=139)
: +- ReusedExchange (242)
+- BroadcastQueryStage (261), Statistics(sizeInBytes=2.0 MiB, rowCount=40)
+- BroadcastExchange (260)
+- * Project (259)
+- * Filter (258)
+- * Generate (257)
+- ShuffleQueryStage (256), Statistics(sizeInBytes=25.1 KiB, rowCount=5)
+- Exchange (255)
+- * Project (254)
+- * Filter (253)
+- * ColumnarToRow (252)
+- Scan parquet (251)
+- == Initial Plan ==
CollectLimit (559)
+- Project (558)
+- Filter (557)
+- ObjectHashAggregate (556)
+- Exchange (555)
+- ObjectHashAggregate (554)
+- Project (553)
+- Window (552)
+- Sort (551)
+- Exchange (550)
+- Project (549)
+- BroadcastHashJoin Inner BuildRight (548)
:- Project (540)
: +- SortMergeJoin Inner (539)
: :- Sort (500)
: : +- Exchange (499)
: : +- Project (498)
: : +- SortMergeJoin LeftOuter (497)
: : :- Sort (298)
: : : +- Exchange (297)
: : : +- Project (296)
: : : +- Generate (295)
: : : +- Project (294)
: : : +- Generate (293)
: : : +- Project (292)
: : : +- BroadcastHashJoin LeftOuter BuildRight (291)
: : : :- Project (286)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (285)
: : : : :- Exchange (280)
: : : : : +- Filter (279)
: : : : : +- Scan parquet (1)
: : : : +- BroadcastExchange (284)
: : : : +- Project (283)
: : : : +- Exchange (282)
: : : : +- Project (281)
: : : : +- Scan parquet (6)
: : : +- BroadcastExchange (290)
: : : +- Exchange (289)
: : : +- Project (288)
: : : +- Filter (287)
: : : +- Scan parquet (16)
: : +- Sort (496)
: : +- Exchange (495)
: : +- SerializeFromObject (494)
: : +- MapElements (493)
: : +- DeserializeToObject (492)
: : +- Project (491)
: : +- BroadcastHashJoin LeftOuter BuildRight (490)
: : :- ObjectHashAggregate (486)
: : : +- Exchange (485)
: : : +- ObjectHashAggregate (484)
: : : +- Project (483)
: : : +- SortMergeJoin LeftOuter (482)
: : : :- Sort (479)
: : : : +- Exchange (478)
: : : : +- Project (477)
: : : : +- SortMergeJoin LeftOuter (476)
: : : : :- Sort (317)
: : : : : +- Project (316)
: : : : : +- Project (315)
: : : : : +- Generate (314)
: : : : : +- Generate (313)
: : : : : +- Project (312)
: : : : : +- Project (311)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (310)
: : : : : :- BroadcastHashJoin LeftOuter BuildRight (304)
: : : : : : :- Exchange (299)
: : : : : : : +- Scan parquet (33)
: : : : : : +- BroadcastExchange (303)
: : : : : : +- Project (302)
: : : : : : +- Exchange (301)
: : : : : : +- Project (300)
: : : : : : +- Scan parquet (37)
: : : : : +- BroadcastExchange (309)
: : : : : +- Exchange (308)
: : : : : +- Project (307)
: : : : : +- Filter (306)
: : : : : +- Scan parquet (305)
: : : : +- Sort (475)
: : : : +- HashAggregate (474)
: : : : +- Exchange (473)
: : : : +- HashAggregate (472)
: : : : +- Project (471)
: : : : +- SortMergeJoin Inner (470)
: : : : :- Sort (390)
: : : : : +- Exchange (389)
: : : : : +- Project (388)
: : : : : +- SortMergeJoin Inner (387)
: : : : : :- Sort (365)
: : : : : : +- Exchange (364)
: : : : : : +- Project (363)
: : : : : : +- Filter (362)
: : : : : : +- Generate (361)
: : : : : : +- Filter (360)
: : : : : : +- ObjectHashAggregate (359)
: : : : : : +- ObjectHashAggregate (358)
: : : : : : +- Generate (357)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (356)
: : : : : : :- BroadcastExchange (321)
: : : : : : : +- Exchange (320)
: : : : : : : +- Project (319)
: : : : : : : +- Filter (318)
: : : : : : : +- Scan parquet (55)
: : : : : : +- Project (355)
: : : : : : +- BroadcastHashJoin Inner BuildLeft (354)
: : : : : : :- BroadcastExchange (330)
: : : : : : : +- Project (329)
: : : : : : : +- Generate (328)
: : : : : : : +- Project (327)
: : : : : : : +- Filter (326)
: : : : : : : +- Generate (325)
: : : : : : : +- Exchange (324)
: : : : : : : +- Project (323)
: : : : : : : +- Filter (322)
: : : : : : : +- Scan parquet (63)
: : : : : : +- HashAggregate (353)
: : : : : : +- Exchange (352)
: : : : : : +- HashAggregate (351)
: : : : : : +- Project (350)
: : : : : : +- Generate (349)
: : : : : : +- Project (348)
: : : : : : +- Generate (347)
: : : : : : +- Project (346)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (345)
: : : : : : :- Project (339)
: : : : : : : +- BroadcastHashJoin LeftOuter BuildRight (338)
: : : : : : : :- Exchange (332)
: : : : : : : : +- Filter (331)
: : : : : : : : +- Scan parquet (76)
: : : : : : : +- BroadcastExchange (337)
: : : : : : : +- Project (336)
: : : : : : : +- Exchange (335)
: : : : : : : +- Project (334)
: : : : : : : +- Scan parquet (333)
: : : : : : +- BroadcastExchange (344)
: : : : : : +- Exchange (343)
: : : : : : +- Project (342)
: : : : : : +- Filter (341)
: : : : : : +- Scan parquet (340)
: : : : : +- Sort (386)
: : : : : +- Project (385)
: : : : : +- Generate (384)
: : : : : +- Project (383)
: : : : : +- Generate (382)
: : : : : +- Project (381)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (380)
: : : : : :- Project (374)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (373)
: : : : : : :- Exchange (367)
: : : : : : : +- Filter (366)
: : : : : : : +- Scan parquet (113)
: : : : : : +- BroadcastExchange (372)
: : : : : : +- Project (371)
: : : : : : +- Exchange (370)
: : : : : : +- Project (369)
: : : : : : +- Scan parquet (368)
: : : : : +- BroadcastExchange (379)
: : : : : +- Exchange (378)
: : : : : +- Project (377)
: : : : : +- Filter (376)
: : : : : +- Scan parquet (375)
: : : : +- Sort (469)
: : : : +- Exchange (468)
: : : : +- HashAggregate (467)
: : : : +- HashAggregate (466)
: : : : +- Project (465)
: : : : +- SortMergeJoin Inner (464)
: : : : :- Sort (441)
: : : : : +- Exchange (440)
: : : : : +- Project (439)
: : : : : +- Filter (438)
: : : : : +- Generate (437)
: : : : : +- Filter (436)
: : : : : +- ObjectHashAggregate (435)
: : : : : +- ObjectHashAggregate (434)
: : : : : +- Generate (433)
: : : : : +- BroadcastHashJoin Inner BuildLeft (432)
: : : : : :- BroadcastExchange (395)
: : : : : : +- Exchange (394)
: : : : : : +- Project (393)
: : : : : : +- Filter (392)
: : : : : : +- Scan parquet (391)
: : : : : +- Project (431)
: : : : : +- BroadcastHashJoin Inner BuildLeft (430)
: : : : : :- BroadcastExchange (405)
: : : : : : +- Project (404)
: : : : : : +- Generate (403)
: : : : : : +- Project (402)
: : : : : : +- Filter (401)
: : : : : : +- Generate (400)
: : : : : : +- Exchange (399)
: : : : : : +- Project (398)
: : : : : : +- Filter (397)
: : : : : : +- Scan parquet (396)
: : : : : +- HashAggregate (429)
: : : : : +- Exchange (428)
: : : : : +- HashAggregate (427)
: : : : : +- Project (426)
: : : : : +- Generate (425)
: : : : : +- Project (424)
: : : : : +- Generate (423)
: : : : : +- Project (422)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (421)
: : : : : :- Project (415)
: : : : : : +- BroadcastHashJoin LeftOuter BuildRight (414)
: : : : : : :- Exchange (408)
: : : : : : : +- Filter (407)
: : : : : : : +- Scan parquet (406)
: : : : : : +- BroadcastExchange (413)
: : : : : : +- Project (412)
: : : : : : +- Exchange (411)
: : : : : : +- Project (410)
: : : : : : +- Scan parquet (409)
: : : : : +- BroadcastExchange (420)
: : : : : +- Exchange (419)
: : : : : +- Project (418)
: : : : : +- Filter (417)
: : : : : +- Scan parquet (416)
: : : : +- Sort (463)
: : : : +- Project (462)
: : : : +- Generate (461)
: : : : +- Project (460)
: : : : +- Generate (459)
: : : : +- Project (458)
: : : : +- BroadcastHashJoin LeftOuter BuildRight (457)
: : : : :- Project (451)
: : : : : +- BroadcastHashJoin LeftOuter BuildRight (450)
: : : : : :- Exchange (444)
: : : : : : +- Filter (443)
: : : : : : +- Scan parquet (442)
: : : : : +- BroadcastExchange (449)
: : : : : +- Project (448)
: : : : : +- Exchange (447)
: : : : : +- Project (446)
: : : : : +- Scan parquet (445)
: : : : +- BroadcastExchange (456)
: : : : +- Exchange (455)
: : : : +- Project (454)
: : : : +- Filter (453)
: : : : +- Scan parquet (452)
: : : +- Sort (481)
: : : +- Exchange (480)
: : : +- Scan parquet (196)
: : +- BroadcastExchange (489)
: : +- Exchange (488)
: : +- Project (487)
: : +- Scan parquet (209)
: +- Sort (538)
: +- Project (537)
: +- BroadcastHashJoin Inner BuildLeft (536)
: :- BroadcastExchange (511)
: : +- Project (510)
: : +- Filter (509)
: : +- Generate (508)
: : +- Project (507)
: : +- Filter (506)
: : +- Generate (505)
: : +- Exchange (504)
: : +- Project (503)
: : +- Filter (502)
: : +- Scan parquet (501)
: +- HashAggregate (535)
: +- Exchange (534)
: +- HashAggregate (533)
: +- Project (532)
: +- Generate (531)
: +- Project (530)
: +- Generate (529)
: +- Project (528)
: +- BroadcastHashJoin LeftOuter BuildRight (527)
: :- Project (521)
: : +- BroadcastHashJoin LeftOuter BuildRight (520)
: : :- Exchange (514)
: : : +- Filter (513)
: : : +- Scan parquet (512)
: : +- BroadcastExchange (519)
: : +- Project (518)
: : +- Exchange (517)
: : +- Project (516)
: : +- Scan parquet (515)
: +- BroadcastExchange (526)
: +- Exchange (525)
: +- Project (524)
: +- Filter (523)
: +- Scan parquet (522)
+- BroadcastExchange (547)
+- Project (546)
+- Filter (545)
+- Generate (544)
+- Exchange (543)
+- Project (542)
+- Filter (541)
+- Scan parquet (251)
(1) Scan parquet
Output [2]: [product#944305, plant#944306]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string>
(2) ColumnarToRow [codegen id : 1]
Input [2]: [product#944305, plant#944306]
(3) Filter [codegen id : 1]
Input [2]: [product#944305, plant#944306]
Condition : (isnotnull(plant#944306) AND isnotnull(product#944305))
(4) Exchange
Input [2]: [product#944305, plant#944306]
Arguments: hashpartitioning(product#944305, plant#944306, 37), REPARTITION_BY_NUM, [plan_id=1573091]
(5) ShuffleQueryStage
Output [2]: [product#944305, plant#944306]
Arguments: 0
(6) Scan parquet
Output [4]: [plant#944363, product#944364, productionAspect#944366, systemId#944361]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(7) ColumnarToRow [codegen id : 2]
Input [4]: [plant#944363, product#944364, productionAspect#944366, systemId#944361]
(8) Project [codegen id : 2]
Output [4]: [plant#944363.internalRefUUID AS _extract_internalRefUUID#958337, product#944364.internalRefUUID AS _extract_internalRefUUID#958336, productionAspect#944366.productMovementPlants.unitOfIssue.code AS _extract_code#958334, productionAspect#944366.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#958335]
Input [4]: [plant#944363, product#944364, productionAspect#944366, systemId#944361]
(9) Exchange
Input [4]: [_extract_internalRefUUID#958337, _extract_internalRefUUID#958336, _extract_code#958334, _extract_internalRefUUID#958335]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573107]
(10) ShuffleQueryStage
Output [4]: [_extract_internalRefUUID#958337, _extract_internalRefUUID#958336, _extract_code#958334, _extract_internalRefUUID#958335]
Arguments: 1
(11) Project [codegen id : 30]
Output [4]: [_extract_code#958334, _extract_internalRefUUID#958335, _extract_internalRefUUID#958336, _extract_internalRefUUID#958337]
Input [4]: [_extract_internalRefUUID#958337, _extract_internalRefUUID#958336, _extract_code#958334, _extract_internalRefUUID#958335]
(12) BroadcastExchange
Input [4]: [_extract_code#958334, _extract_internalRefUUID#958335, _extract_internalRefUUID#958336, _extract_internalRefUUID#958337]
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=1576017]
(13) BroadcastQueryStage
Output [4]: [_extract_code#958334, _extract_internalRefUUID#958335, _extract_internalRefUUID#958336, _extract_internalRefUUID#958337]
Arguments: 53
(14) BroadcastHashJoin [codegen id : 47]
Left keys [4]: [coalesce(product#944305, ), isnull(product#944305), coalesce(plant#944306, ), isnull(plant#944306)]
Right keys [4]: [coalesce(_extract_internalRefUUID#958336, ), isnull(_extract_internalRefUUID#958336), coalesce(_extract_internalRefUUID#958337, ), isnull(_extract_internalRefUUID#958337)]
Join type: LeftOuter
Join condition: None
(15) Project [codegen id : 47]
Output [4]: [product#944305, plant#944306, _extract_code#958334, _extract_internalRefUUID#958335]
Input [6]: [product#944305, plant#944306, _extract_code#958334, _extract_internalRefUUID#958335, _extract_internalRefUUID#958336, _extract_internalRefUUID#958337]
(16) Scan parquet
Output [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(17) ColumnarToRow [codegen id : 3]
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
(18) Filter [codegen id : 3]
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
Condition : isnotnull(internalUUID#944397)
(19) Project [codegen id : 3]
Output [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
(20) Exchange
Input [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573128]
(21) ShuffleQueryStage
Output [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: 2
(22) BroadcastExchange
Input [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1574283]
(23) BroadcastQueryStage
Output [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: 46
(24) BroadcastHashJoin [codegen id : 47]
Left keys [1]: [product#944305]
Right keys [1]: [internalUUID#944397]
Join type: LeftOuter
Join condition: None
(25) Project
Output [3]: [product#944305, plant#944306, filter(unitOfMeasureConversions#944403, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958334) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958335)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944401.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944401.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944409]
Input [7]: [product#944305, plant#944306, _extract_code#958334, _extract_internalRefUUID#958335, internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
(26) Generate [codegen id : 48]
Input [3]: [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409]
Arguments: explode(filteredUnitOfMeasureConversions#944409.quantityNumerator), [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409], true, [quantityNumerator#944417]
(27) Project [codegen id : 48]
Output [3]: [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409.quantityDenominator AS _extract_quantityDenominator#958172]
Input [4]: [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409, quantityNumerator#944417]
(28) Generate [codegen id : 48]
Input [3]: [product#944305, plant#944306, _extract_quantityDenominator#958172]
Arguments: explode(_extract_quantityDenominator#958172), [product#944305, plant#944306], true, [quantityDenominator#944420]
(29) Project [codegen id : 48]
Output [2]: [product#944305, plant#944306]
Input [3]: [product#944305, plant#944306, quantityDenominator#944420]
(30) Exchange
Input [2]: [product#944305, plant#944306]
Arguments: hashpartitioning(coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305), 37), ENSURE_REQUIREMENTS, [plan_id=1590032]
(31) ShuffleQueryStage
Output [2]: [product#944305, plant#944306]
Arguments: 78
(32) AQEShuffleRead
Input [2]: [product#944305, plant#944306]
Arguments: local
(33) Scan parquet
Output [3]: [product#945954, plant#945955, orderDateTime#945956]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(34) ColumnarToRow [codegen id : 4]
Input [3]: [product#945954, plant#945955, orderDateTime#945956]
(35) Exchange
Input [3]: [product#945954, plant#945955, orderDateTime#945956]
Arguments: hashpartitioning(product#945954, plant#945955, 37), REPARTITION_BY_NUM, [plan_id=1573152]
(36) ShuffleQueryStage
Output [3]: [product#945954, plant#945955, orderDateTime#945956]
Arguments: 3
(37) Scan parquet
Output [9]: [internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966, systemId#945958]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>
(38) ColumnarToRow [codegen id : 5]
Input [9]: [internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966, systemId#945958]
(39) Project [codegen id : 5]
Output [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Input [9]: [internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966, systemId#945958]
(40) Exchange
Input [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573166]
(41) ShuffleQueryStage
Output [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Arguments: 4
(42) Project [codegen id : 36]
Output [1]: [struct(systemId, systemId#945958, internalUUID, internalUUID#945959, plant, plant#945960, product, product#945961, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#945962, productionAspect, productionAspect#945963, salesPlant, salesPlant#945964, listing, listing#945965, sourceOfSupplyCategory, sourceOfSupplyCategory#945966) AS productPlant#945967]
Input [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
(43) BroadcastExchange
Input [1]: [productPlant#945967]
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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1579623]
(44) BroadcastQueryStage
Output [1]: [productPlant#945967]
Arguments: 65
(45) BroadcastHashJoin [codegen id : 59]
Left keys [4]: [coalesce(product#945954, ), isnull(product#945954), coalesce(plant#945955, ), isnull(plant#945955)]
Right keys [4]: [coalesce(productPlant#945967.product.internalRefUUID, ), isnull(productPlant#945967.product.internalRefUUID), coalesce(productPlant#945967.plant.internalRefUUID, ), isnull(productPlant#945967.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(46) ReusedExchange [Reuses operator id: 22]
Output [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
(47) BroadcastQueryStage
Output [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
Arguments: 47
(48) BroadcastHashJoin [codegen id : 59]
Left keys [1]: [product#945954]
Right keys [1]: [internalUUID#945969]
Join type: LeftOuter
Join condition: None
(49) Project
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filter(unitOfMeasureConversions#945975, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#945973.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#945973.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#945980]
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
(50) Project [codegen id : 60]
Output [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filteredUnitOfMeasureConversions#945980.quantityDenominator AS _extract_quantityDenominator#958338, filteredUnitOfMeasureConversions#945980.quantityNumerator AS _extract_quantityNumerator#958339]
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filteredUnitOfMeasureConversions#945980]
(51) Generate [codegen id : 60]
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#958338, _extract_quantityNumerator#958339]
Arguments: explode(_extract_quantityNumerator#958339), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#958338], true, [quantityNumerator#945981]
(52) Generate [codegen id : 60]
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#958338, quantityNumerator#945981]
Arguments: explode(_extract_quantityDenominator#958338), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, quantityNumerator#945981], true, [quantityDenominator#945982]
(53) Project [codegen id : 60]
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, (cast(quantityNumerator#945981 as double) / cast(quantityDenominator#945982 as double)) AS outboundUnit#945983]
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, quantityNumerator#945981, quantityDenominator#945982]
(54) Project [codegen id : 60]
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, CASE WHEN (isnull(outboundUnit#945983) OR (outboundUnit#945983 <= 0.0)) THEN 1.0 ELSE outboundUnit#945983 END AS outboundUnit#945984]
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945983]
(55) Scan parquet
Output [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(56) ColumnarToRow [codegen id : 7]
Input [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
(57) Filter [codegen id : 7]
Input [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
Condition : (isnotnull(plant#945988.internalRefUUID) AND isnotnull(product#945987.internalRefUUID))
(58) Project [codegen id : 7]
Output [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Input [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
(59) Exchange
Input [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573216]
(60) ShuffleQueryStage
Output [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Arguments: 7
(61) BroadcastExchange
Input [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
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=1580138]
(62) BroadcastQueryStage
Output [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Arguments: 66
(63) Scan parquet
Output [2]: [marketUnit#945991, distributionCenters#945997]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(64) ColumnarToRow [codegen id : 8]
Input [2]: [marketUnit#945991, distributionCenters#945997]
(65) Filter [codegen id : 8]
Input [2]: [marketUnit#945991, distributionCenters#945997]
Condition : (((marketUnit#945991 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#945997, true) > 0)) AND isnotnull(distributionCenters#945997))
(66) Project [codegen id : 8]
Output [1]: [distributionCenters#945997]
Input [2]: [marketUnit#945991, distributionCenters#945997]
(67) Exchange
Input [1]: [distributionCenters#945997]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573236]
(68) ShuffleQueryStage
Output [1]: [distributionCenters#945997]
Arguments: 8
(69) Generate [codegen id : 38]
Input [1]: [distributionCenters#945997]
Arguments: explode(distributionCenters#945997), false, [distributionCenters#946012]
(70) Filter [codegen id : 38]
Input [1]: [distributionCenters#946012]
Condition : (((size(distributionCenters#946012.storageLocations, true) > 0) AND isnotnull(distributionCenters#946012.storageLocations)) AND isnotnull(distributionCenters#946012.internalRefUUID))
(71) Project [codegen id : 38]
Output [2]: [distributionCenters#946012.internalRefUUID AS _extract_internalRefUUID#958212, distributionCenters#946012.storageLocations AS _extract_storageLocations#958213]
Input [1]: [distributionCenters#946012]
(72) Generate [codegen id : 38]
Input [2]: [_extract_internalRefUUID#958212, _extract_storageLocations#958213]
Arguments: explode(_extract_storageLocations#958213), [_extract_internalRefUUID#958212], false, [storageLocations#946013]
(73) Project [codegen id : 38]
Output [3]: [_extract_internalRefUUID#958212 AS plantUuid#946015, storageLocations#946013.id AS storageLocId#946016, storageLocations#946013.internalRefUUID AS storageLocUuid#946017]
Input [2]: [_extract_internalRefUUID#958212, storageLocations#946013]
(74) BroadcastExchange
Input [3]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1582478]
(75) BroadcastQueryStage
Output [3]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Arguments: 69
(76) Scan parquet
Output [2]: [product#946018, plant#946019]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(77) ColumnarToRow [codegen id : 9]
Input [2]: [product#946018, plant#946019]
(78) Filter [codegen id : 9]
Input [2]: [product#946018, plant#946019]
Condition : isnotnull(plant#946019)
(79) Exchange
Input [2]: [product#946018, plant#946019]
Arguments: hashpartitioning(product#946018, plant#946019, 37), REPARTITION_BY_NUM, [plan_id=1573259]
(80) ShuffleQueryStage
Output [2]: [product#946018, plant#946019]
Arguments: 9
(81) ReusedExchange [Reuses operator id: 12]
Output [4]: [_extract_code#958342, _extract_internalRefUUID#958343, _extract_internalRefUUID#958341, _extract_internalRefUUID#958340]
(82) BroadcastQueryStage
Output [4]: [_extract_code#958342, _extract_internalRefUUID#958343, _extract_internalRefUUID#958341, _extract_internalRefUUID#958340]
Arguments: 55
(83) BroadcastHashJoin [codegen id : 41]
Left keys [4]: [coalesce(product#946018, ), isnull(product#946018), coalesce(plant#946019, ), isnull(plant#946019)]
Right keys [4]: [coalesce(_extract_internalRefUUID#958341, ), isnull(_extract_internalRefUUID#958341), coalesce(_extract_internalRefUUID#958340, ), isnull(_extract_internalRefUUID#958340)]
Join type: LeftOuter
Join condition: None
(84) Project [codegen id : 41]
Output [4]: [product#946018, plant#946019, _extract_code#958342, _extract_internalRefUUID#958343]
Input [6]: [product#946018, plant#946019, _extract_code#958342, _extract_internalRefUUID#958343, _extract_internalRefUUID#958341, _extract_internalRefUUID#958340]
(85) ReusedExchange [Reuses operator id: 22]
Output [3]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
(86) BroadcastQueryStage
Output [3]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
Arguments: 48
(87) BroadcastHashJoin [codegen id : 41]
Left keys [1]: [product#946018]
Right keys [1]: [internalUUID#946033]
Join type: LeftOuter
Join condition: None
(88) Project
Output [2]: [plant#946019, filter(unitOfMeasureConversions#946039, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958342) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958343)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946037.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946037.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946044]
Input [7]: [product#946018, plant#946019, _extract_code#958342, _extract_internalRefUUID#958343, internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
(89) Generate [codegen id : 42]
Input [2]: [plant#946019, filteredUnitOfMeasureConversions#946044]
Arguments: explode(filteredUnitOfMeasureConversions#946044.quantityNumerator), [plant#946019, filteredUnitOfMeasureConversions#946044], true, [quantityNumerator#946045]
(90) Project [codegen id : 42]
Output [2]: [plant#946019, filteredUnitOfMeasureConversions#946044.quantityDenominator AS _extract_quantityDenominator#958214]
Input [3]: [plant#946019, filteredUnitOfMeasureConversions#946044, quantityNumerator#946045]
(91) Generate [codegen id : 42]
Input [2]: [plant#946019, _extract_quantityDenominator#958214]
Arguments: explode(_extract_quantityDenominator#958214), [plant#946019], true, [quantityDenominator#946046]
(92) Project [codegen id : 42]
Output [1]: [plant#946019]
Input [2]: [plant#946019, quantityDenominator#946046]
(93) HashAggregate [codegen id : 42]
Input [1]: [plant#946019]
Keys [1]: [plant#946019]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946019]
(94) Exchange
Input [1]: [plant#946019]
Arguments: hashpartitioning(plant#946019, 37), ENSURE_REQUIREMENTS, [plan_id=1587410]
(95) ShuffleQueryStage
Output [1]: [plant#946019]
Arguments: 73
(96) AQEShuffleRead
Input [1]: [plant#946019]
Arguments: coalesced
(97) HashAggregate
Input [1]: [plant#946019]
Keys [1]: [plant#946019]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946019]
(98) BroadcastHashJoin
Left keys [1]: [plantUuid#946015]
Right keys [1]: [plant#946019]
Join type: Inner
Join condition: None
(99) Project
Output [3]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Input [4]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017, plant#946019]
(100) BroadcastHashJoin [codegen id : 49]
Left keys [2]: [coalesce(plant#945988.internalRefUUID, ), isnull(plant#945988.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#946015, ), isnull(plantUuid#946015)]
Join type: Inner
Join condition: None
(101) Generate
Input [9]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Arguments: explode(filter(stockQuantities#945990, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946017) AND (lambda x#944569.storageLocation.Id = storageLocId#946016)), lambda x#944569, false))), [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, plantUuid#946015], false, [stockQuantity#946049]
(102) ObjectHashAggregate
Input [7]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, plantUuid#946015, stockQuantity#946049]
Keys [5]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985]
Functions [2]: [partial_first(calculationDateTime#945989, false), partial_collect_list(stockQuantity#946049, 0, 0)]
Aggregate Attributes [3]: [first#947911, valueSet#947912, buf#947913]
Results [8]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985, first#947914, valueSet#947915, buf#947916]
(103) ObjectHashAggregate
Input [8]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985, first#947914, valueSet#947915, buf#947916]
Keys [5]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985]
Functions [2]: [first(calculationDateTime#945989, false), collect_list(stockQuantity#946049, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#945989)()#944584, collect_list(stockQuantity#946049, 0, 0)#944585]
Results [4]: [product#945987, plant#945988, first(calculationDateTime#945989)()#944584 AS calculationDateTime#946050, collect_list(stockQuantity#946049, 0, 0)#944585 AS stockQuantities#946051]
(104) Filter [codegen id : 50]
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantities#946051]
Condition : ((size(stockQuantities#946051, true) > 0) AND isnotnull(calculationDateTime#946050))
(105) Generate [codegen id : 50]
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantities#946051]
Arguments: explode(stockQuantities#946051), [product#945987, plant#945988, calculationDateTime#946050], false, [stockQuantity#946052]
(106) Filter [codegen id : 50]
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantity#946052]
Condition : (((isnotnull(stockQuantity#946052.specialStockIndicator.code) AND isnotnull(stockQuantity#946052.stockType.code)) AND (stockQuantity#946052.specialStockIndicator.code = )) AND (stockQuantity#946052.stockType.code = 01))
(107) Project [codegen id : 50]
Output [5]: [plant#945988.internalRefUUID AS plantUuid#946054, product#945987.internalRefUUID AS productUuid#946056, calculationDateTime#946050, stockQuantity#946052.storagelocation.id AS storageLocId#946057, stockQuantity#946052.quantity.measure AS quantity#946059]
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantity#946052]
(108) Exchange
Input [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: hashpartitioning(productUuid#946056, plantUuid#946054, 37), ENSURE_REQUIREMENTS, [plan_id=1590089]
(109) ShuffleQueryStage
Output [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: 79
(110) AQEShuffleRead
Input [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: local
(111) BroadcastExchange
Input [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1591118]
(112) BroadcastQueryStage
Output [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: 81
(113) Scan parquet
Output [3]: [product#946062, plant#946063, orderDateTime#946064]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(114) ColumnarToRow [codegen id : 12]
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
(115) Filter [codegen id : 12]
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
Condition : ((isnotnull(orderDateTime#946064) AND isnotnull(plant#946063)) AND isnotnull(product#946062))
(116) Exchange
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
Arguments: hashpartitioning(product#946062, plant#946063, 37), REPARTITION_BY_NUM, [plan_id=1573339]
(117) ShuffleQueryStage
Output [3]: [product#946062, plant#946063, orderDateTime#946064]
Arguments: 14
(118) ReusedExchange [Reuses operator id: 12]
Output [4]: [_extract_code#958344, _extract_internalRefUUID#958345, _extract_internalRefUUID#958346, _extract_internalRefUUID#958347]
(119) BroadcastQueryStage
Output [4]: [_extract_code#958344, _extract_internalRefUUID#958345, _extract_internalRefUUID#958346, _extract_internalRefUUID#958347]
Arguments: 57
(120) BroadcastHashJoin [codegen id : 53]
Left keys [4]: [coalesce(product#946062, ), isnull(product#946062), coalesce(plant#946063, ), isnull(plant#946063)]
Right keys [4]: [coalesce(_extract_internalRefUUID#958346, ), isnull(_extract_internalRefUUID#958346), coalesce(_extract_internalRefUUID#958347, ), isnull(_extract_internalRefUUID#958347)]
Join type: LeftOuter
Join condition: None
(121) Project [codegen id : 53]
Output [5]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#958344, _extract_internalRefUUID#958345]
Input [7]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#958344, _extract_internalRefUUID#958345, _extract_internalRefUUID#958346, _extract_internalRefUUID#958347]
(122) ReusedExchange [Reuses operator id: 22]
Output [3]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
(123) BroadcastQueryStage
Output [3]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
Arguments: 49
(124) BroadcastHashJoin [codegen id : 53]
Left keys [1]: [product#946062]
Right keys [1]: [internalUUID#946077]
Join type: LeftOuter
Join condition: None
(125) Project
Output [4]: [product#946062, plant#946063, orderDateTime#946064, filter(unitOfMeasureConversions#946083, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958344) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958345)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946081.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946081.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946088]
Input [8]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#958344, _extract_internalRefUUID#958345, internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
(126) Generate
Input [4]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088]
Arguments: explode(filteredUnitOfMeasureConversions#946088.quantityNumerator), [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088], true, [quantityNumerator#946089]
(127) Project
Output [4]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088.quantityDenominator AS _extract_quantityDenominator#958221]
Input [5]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088, quantityNumerator#946089]
(128) Generate
Input [4]: [product#946062, plant#946063, orderDateTime#946064, _extract_quantityDenominator#958221]
Arguments: explode(_extract_quantityDenominator#958221), [product#946062, plant#946063, orderDateTime#946064], true, [quantityDenominator#946090]
(129) Project
Output [3]: [product#946062, plant#946063, orderDateTime#946064]
Input [4]: [product#946062, plant#946063, orderDateTime#946064, quantityDenominator#946090]
(130) BroadcastHashJoin [codegen id : 54]
Left keys [2]: [plantUuid#946054, productUuid#946056]
Right keys [2]: [plant#946063, product#946062]
Join type: Inner
Join condition: (calculationDateTime#946050 <= orderDateTime#946064)
(131) Project [codegen id : 54]
Output [5]: [plantUuid#946054 AS plant#946093, productUuid#946056 AS product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Input [8]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059, product#946062, plant#946063, orderDateTime#946064]
(132) Exchange
Input [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: hashpartitioning(coalesce(plant#946093, ), isnull(plant#946093), coalesce(product#946094, ), isnull(product#946094), coalesce(storageLocId#946057, ), isnull(storageLocId#946057), coalesce(calculationDateTime#946050, 1970-01-01 00:00:00), isnull(calculationDateTime#946050), 37), ENSURE_REQUIREMENTS, [plan_id=1592084]
(133) ShuffleQueryStage
Output [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: 83
(134) AQEShuffleRead
Input [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: local
(135) BroadcastExchange
Input [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: 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=1592904]
(136) BroadcastQueryStage
Output [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: 85
(137) ReusedExchange [Reuses operator id: 61]
Output [6]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100]
(138) BroadcastQueryStage
Output [6]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100]
Arguments: 67
(139) ReusedExchange [Reuses operator id: 74]
Output [3]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
(140) BroadcastQueryStage
Output [3]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Arguments: 71
(141) ReusedExchange [Reuses operator id: 94]
Output [1]: [plant#946129]
(142) ShuffleQueryStage
Output [1]: [plant#946129]
Arguments: 75
(143) AQEShuffleRead
Input [1]: [plant#946129]
Arguments: coalesced
(144) HashAggregate
Input [1]: [plant#946129]
Keys [1]: [plant#946129]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946129]
(145) BroadcastHashJoin
Left keys [1]: [plantUuid#946125]
Right keys [1]: [plant#946129]
Join type: Inner
Join condition: None
(146) Project
Output [3]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Input [4]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127, plant#946129]
(147) BroadcastHashJoin [codegen id : 51]
Left keys [2]: [coalesce(plant#946098.internalRefUUID, ), isnull(plant#946098.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#946125, ), isnull(plantUuid#946125)]
Join type: Inner
Join condition: None
(148) Generate
Input [9]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Arguments: explode(filter(stockQuantities#946100, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946127) AND (lambda x#944569.storageLocation.Id = storageLocId#946126)), lambda x#944569, false))), [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, plantUuid#946125], false, [stockQuantity#946159]
(149) ObjectHashAggregate
Input [7]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, plantUuid#946125, stockQuantity#946159]
Keys [5]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095]
Functions [2]: [partial_first(calculationDateTime#946099, false), partial_collect_list(stockQuantity#946159, 0, 0)]
Aggregate Attributes [3]: [first#947919, valueSet#947920, buf#947921]
Results [8]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095, first#947922, valueSet#947923, buf#947924]
(150) ObjectHashAggregate
Input [8]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095, first#947922, valueSet#947923, buf#947924]
Keys [5]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095]
Functions [2]: [first(calculationDateTime#946099, false), collect_list(stockQuantity#946159, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#946099)()#944584, collect_list(stockQuantity#946159, 0, 0)#944585]
Results [4]: [product#946097, plant#946098, first(calculationDateTime#946099)()#944584 AS calculationDateTime#946160, collect_list(stockQuantity#946159, 0, 0)#944585 AS stockQuantities#946161]
(151) Filter [codegen id : 52]
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantities#946161]
Condition : ((size(stockQuantities#946161, true) > 0) AND isnotnull(calculationDateTime#946160))
(152) Generate [codegen id : 52]
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantities#946161]
Arguments: explode(stockQuantities#946161), [product#946097, plant#946098, calculationDateTime#946160], false, [stockQuantity#946162]
(153) Filter [codegen id : 52]
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantity#946162]
Condition : (((isnotnull(stockQuantity#946162.specialStockIndicator.code) AND isnotnull(stockQuantity#946162.stockType.code)) AND (stockQuantity#946162.specialStockIndicator.code = )) AND (stockQuantity#946162.stockType.code = 01))
(154) Project [codegen id : 52]
Output [4]: [plant#946098.internalRefUUID AS plantUuid#946164, product#946097.internalRefUUID AS productUuid#946166, calculationDateTime#946160, stockQuantity#946162.storagelocation.id AS storageLocId#946167]
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantity#946162]
(155) Exchange
Input [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: hashpartitioning(productUuid#946166, plantUuid#946164, 37), ENSURE_REQUIREMENTS, [plan_id=1590157]
(156) ShuffleQueryStage
Output [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: 80
(157) AQEShuffleRead
Input [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: local
(158) BroadcastExchange
Input [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true], input[1, string, true]),false), [plan_id=1591596]
(159) BroadcastQueryStage
Output [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: 82
(160) ReusedExchange [Reuses operator id: 116]
Output [3]: [product#946172, plant#946173, orderDateTime#946174]
(161) ShuffleQueryStage
Output [3]: [product#946172, plant#946173, orderDateTime#946174]
Arguments: 30
(162) ReusedExchange [Reuses operator id: 12]
Output [4]: [_extract_code#958354, _extract_internalRefUUID#958355, _extract_internalRefUUID#958352, _extract_internalRefUUID#958353]
(163) BroadcastQueryStage
Output [4]: [_extract_code#958354, _extract_internalRefUUID#958355, _extract_internalRefUUID#958352, _extract_internalRefUUID#958353]
Arguments: 61
(164) BroadcastHashJoin [codegen id : 55]
Left keys [4]: [coalesce(product#946172, ), isnull(product#946172), coalesce(plant#946173, ), isnull(plant#946173)]
Right keys [4]: [coalesce(_extract_internalRefUUID#958352, ), isnull(_extract_internalRefUUID#958352), coalesce(_extract_internalRefUUID#958353, ), isnull(_extract_internalRefUUID#958353)]
Join type: LeftOuter
Join condition: None
(165) Project [codegen id : 55]
Output [5]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#958354, _extract_internalRefUUID#958355]
Input [7]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#958354, _extract_internalRefUUID#958355, _extract_internalRefUUID#958352, _extract_internalRefUUID#958353]
(166) ReusedExchange [Reuses operator id: 22]
Output [3]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
(167) BroadcastQueryStage
Output [3]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
Arguments: 51
(168) BroadcastHashJoin [codegen id : 55]
Left keys [1]: [product#946172]
Right keys [1]: [internalUUID#946187]
Join type: LeftOuter
Join condition: None
(169) Project
Output [4]: [product#946172, plant#946173, orderDateTime#946174, filter(unitOfMeasureConversions#946193, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958354) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958355)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946191.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946191.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946198]
Input [8]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#958354, _extract_internalRefUUID#958355, internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
(170) Generate
Input [4]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198]
Arguments: explode(filteredUnitOfMeasureConversions#946198.quantityNumerator), [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198], true, [quantityNumerator#946199]
(171) Project
Output [4]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198.quantityDenominator AS _extract_quantityDenominator#958237]
Input [5]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198, quantityNumerator#946199]
(172) Generate
Input [4]: [product#946172, plant#946173, orderDateTime#946174, _extract_quantityDenominator#958237]
Arguments: explode(_extract_quantityDenominator#958237), [product#946172, plant#946173, orderDateTime#946174], true, [quantityDenominator#946200]
(173) Project
Output [3]: [product#946172, plant#946173, orderDateTime#946174]
Input [4]: [product#946172, plant#946173, orderDateTime#946174, quantityDenominator#946200]
(174) BroadcastHashJoin [codegen id : 56]
Left keys [2]: [plantUuid#946164, productUuid#946166]
Right keys [2]: [plant#946173, product#946172]
Join type: Inner
Join condition: (calculationDateTime#946160 <= orderDateTime#946174)
(175) Project [codegen id : 56]
Output [4]: [plantUuid#946164 AS plant#946203, productUuid#946166 AS product#946204, storageLocId#946167, calculationDateTime#946160]
Input [7]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167, product#946172, plant#946173, orderDateTime#946174]
(176) HashAggregate [codegen id : 56]
Input [4]: [plant#946203, product#946204, storageLocId#946167, calculationDateTime#946160]
Keys [3]: [plant#946203, product#946204, storageLocId#946167]
Functions [1]: [partial_max(calculationDateTime#946160)]
Aggregate Attributes [1]: [max#947917]
Results [4]: [plant#946203, product#946204, storageLocId#946167, max#947918]
(177) HashAggregate [codegen id : 56]
Input [4]: [plant#946203, product#946204, storageLocId#946167, max#947918]
Keys [3]: [plant#946203, product#946204, storageLocId#946167]
Functions [1]: [max(calculationDateTime#946160)]
Aggregate Attributes [1]: [max(calculationDateTime#946160)#944648]
Results [4]: [plant#946203, product#946204, storageLocId#946167, max(calculationDateTime#946160)#944648 AS max_calc_datetime#946205]
(178) Exchange
Input [4]: [plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
Arguments: hashpartitioning(coalesce(plant#946203, ), isnull(plant#946203), coalesce(product#946204, ), isnull(product#946204), coalesce(storageLocId#946167, ), isnull(storageLocId#946167), coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00), isnull(max_calc_datetime#946205), 37), ENSURE_REQUIREMENTS, [plan_id=1592537]
(179) ShuffleQueryStage
Output [4]: [plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
Arguments: 84
(180) AQEShuffleRead
Input [4]: [plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
Arguments: local
(181) BroadcastHashJoin [codegen id : 57]
Left keys [8]: [coalesce(plant#946093, ), isnull(plant#946093), coalesce(product#946094, ), isnull(product#946094), coalesce(storageLocId#946057, ), isnull(storageLocId#946057), coalesce(calculationDateTime#946050, 1970-01-01 00:00:00), isnull(calculationDateTime#946050)]
Right keys [8]: [coalesce(plant#946203, ), isnull(plant#946203), coalesce(product#946204, ), isnull(product#946204), coalesce(storageLocId#946167, ), isnull(storageLocId#946167), coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00), isnull(max_calc_datetime#946205)]
Join type: Inner
Join condition: None
(182) Project [codegen id : 57]
Output [4]: [plant#946093, product#946094, calculationDateTime#946050, quantity#946059]
Input [9]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059, plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
(183) HashAggregate [codegen id : 57]
Input [4]: [plant#946093, product#946094, calculationDateTime#946050, quantity#946059]
Keys [2]: [product#946094, plant#946093]
Functions [2]: [partial_min(calculationDateTime#946050), partial_sum(quantity#946059)]
Aggregate Attributes [2]: [min#947907, sum#947908]
Results [4]: [product#946094, plant#946093, min#947909, sum#947910]
(184) Exchange
Input [4]: [product#946094, plant#946093, min#947909, sum#947910]
Arguments: hashpartitioning(product#946094, plant#946093, 37), ENSURE_REQUIREMENTS, [plan_id=1593529]
(185) ShuffleQueryStage
Output [4]: [product#946094, plant#946093, min#947909, sum#947910]
Arguments: 86
(186) AQEShuffleRead
Input [4]: [product#946094, plant#946093, min#947909, sum#947910]
Arguments: coalesced
(187) HashAggregate [codegen id : 58]
Input [4]: [product#946094, plant#946093, min#947909, sum#947910]
Keys [2]: [product#946094, plant#946093]
Functions [2]: [min(calculationDateTime#946050), sum(quantity#946059)]
Aggregate Attributes [2]: [min(calculationDateTime#946050)#944775, sum(quantity#946059)#944774]
Results [4]: [product#946094, plant#946093, min(calculationDateTime#946050)#944775 AS minCalculationDateTime#946207, round(sum(quantity#946059)#944774, 0) AS roundedQuantitySum#946208]
(188) BroadcastExchange
Input [4]: [product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
Arguments: HashedRelationBroadcastMode(List(input[1, string, true], input[0, string, true]),false), [plan_id=1593839]
(189) BroadcastQueryStage
Output [4]: [product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
Arguments: 87
(190) BroadcastHashJoin [codegen id : 60]
Left keys [2]: [plant#945955, product#945954]
Right keys [2]: [plant#946093, product#946094]
Join type: LeftOuter
Join condition: None
(191) Project [codegen id : 60]
Output [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, CASE WHEN isnotnull(minCalculationDateTime#946207) THEN minCalculationDateTime#946207 ELSE orderDateTime#945956 END AS stockDatetime#946209, CASE WHEN isnotnull(roundedQuantitySum#946208) THEN array(roundedQuantitySum#946208) ELSE [0.0] END AS stockBatchQuantities#946210]
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
(192) Exchange
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: hashpartitioning(coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954), 37), ENSURE_REQUIREMENTS, [plan_id=1594145]
(193) ShuffleQueryStage
Output [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: 88
(194) AQEShuffleRead
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: coalesced
(195) Sort [codegen id : 61]
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: [coalesce(plant#945955, ) ASC NULLS FIRST, isnull(plant#945955) ASC NULLS FIRST, coalesce(product#945954, ) ASC NULLS FIRST, isnull(product#945954) ASC NULLS FIRST], false, 0
(196) Scan parquet
Output [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-demand-service/out/demand/10000000678/0_1_10000000678]
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>>>
(197) ColumnarToRow [codegen id : 23]
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
(198) Exchange
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: hashpartitioning(coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814), 37), ENSURE_REQUIREMENTS, [plan_id=1573622]
(199) ShuffleQueryStage
Output [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: 35
(200) AQEShuffleRead
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: coalesced
(201) Sort [codegen id : 62]
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: [coalesce(plant#944815, ) ASC NULLS FIRST, isnull(plant#944815) ASC NULLS FIRST, coalesce(product#944814, ) ASC NULLS FIRST, isnull(product#944814) ASC NULLS FIRST], false, 0
(202) SortMergeJoin [codegen id : 63]
Left keys [4]: [coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954)]
Right keys [4]: [coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814)]
Join type: LeftOuter
Join condition: None
(203) Project [codegen id : 63]
Output [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, CASE WHEN isnotnull(product#944814) THEN struct(demandChannel, demandChannel#944816, demandStream, demandStream#944817, considerVariance, considerVariance#944818, demandTimeBuckets, demandTimeBuckets#944819, demandPointInTimeStart, demandPointInTimeStart#944820, demandPointInTimeEnd, demandPointInTimeEnd#944821, demandPointInTime, demandPointInTime#944822) END AS rawDemands#944824]
Input [16]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
(204) ObjectHashAggregate
Input [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, rawDemands#944824]
Keys [8]: [product#945954, plant#945955, orderDateTime#945956, knownfloatingpointnormalized(if (isnull(productPlant#945967)) null else named_struct(systemId, productPlant#945967.systemId, internalUUID, productPlant#945967.internalUUID, plant, productPlant#945967.plant, product, productPlant#945967.product, blockedForReplenishmentStartingFrom, productPlant#945967.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect)) null else named_struct(productMovementPlants, productPlant#945967.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#945967.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#945967.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#945967.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#945967.salesPlant, listing, productPlant#945967.listing, sourceOfSupplyCategory, productPlant#945967.sourceOfSupplyCategory)) AS productPlant#945967, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#945984)) AS outboundUnit#945984, stockDatetime#946209, knownfloatingpointnormalized(transform(stockBatchQuantities#946210, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#959658)), lambda arg#959658, false))) AS stockBatchQuantities#946210, [7226582400000000] AS [7226582400000000]#959657]
Functions [1]: [partial_collect_list(rawDemands#944824, 0, 0)]
Aggregate Attributes [1]: [buf#947905]
Results [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#959657, buf#947906]
(205) Exchange
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#959657, buf#947906]
Arguments: hashpartitioning(product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#959657, 37), ENSURE_REQUIREMENTS, [plan_id=1594415]
(206) ShuffleQueryStage
Output [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#959657, buf#947906]
Arguments: 89
(207) AQEShuffleRead
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#959657, buf#947906]
Arguments: coalesced
(208) ObjectHashAggregate
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#959657, buf#947906]
Keys [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#959657]
Functions [1]: [collect_list(rawDemands#944824, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#944824, 0, 0)#944844]
Results [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, collect_list(rawDemands#944824, 0, 0)#944844 AS rawDemands#944825]
(209) Scan parquet
Output [3]: [internalUUID#945905, address#945911, systemId#945904]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(210) ColumnarToRow [codegen id : 24]
Input [3]: [internalUUID#945905, address#945911, systemId#945904]
(211) Project [codegen id : 24]
Output [2]: [internalUUID#945905, address#945911.timeZone.code AS timezonecode#945917]
Input [3]: [internalUUID#945905, address#945911, systemId#945904]
(212) Exchange
Input [2]: [internalUUID#945905, timezonecode#945917]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573642]
(213) ShuffleQueryStage
Output [2]: [internalUUID#945905, timezonecode#945917]
Arguments: 36
(214) BroadcastExchange
Input [2]: [internalUUID#945905, timezonecode#945917]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1577697]
(215) BroadcastQueryStage
Output [2]: [internalUUID#945905, timezonecode#945917]
Arguments: 64
(216) BroadcastHashJoin [codegen id : 64]
Left keys [2]: [coalesce(plant#945955, ), isnull(plant#945955)]
Right keys [2]: [coalesce(internalUUID#945905, ), isnull(internalUUID#945905)]
Join type: LeftOuter
Join condition: None
(217) Project [codegen id : 64]
Output [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, CASE WHEN isnotnull(timezonecode#945917) THEN timezonecode#945917 ELSE UTC END AS timezonecode#945919]
Input [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, rawDemands#944825, internalUUID#945905, timezonecode#945917]
(218) DeserializeToObject [codegen id : 64]
Input [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, timezonecode#945919]
Arguments: createexternalrow(invoke(product#945954.toString()), invoke(plant#945955.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#945956)), if (isnull(productPlant#945967)) null else createexternalrow(invoke(productPlant#945967.systemId.toString()), invoke(productPlant#945967.internalUUID.toString()), if (isnull(productPlant#945967.plant)) null else createexternalrow(invoke(productPlant#945967.plant.internalRefUUID.toString()), invoke(productPlant#945967.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#945967.product)) null else createexternalrow(invoke(productPlant#945967.product.internalRefUUID.toString()), invoke(productPlant#945967.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#945967.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#945967.productionAspect)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#945967.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#945967.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,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(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)),true)), if (isnull(productPlant#945967.salesPlant)) null else createexternalrow(if (isnull(productPlant#945967.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#945967.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#945967.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#945967.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#945967.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#945967.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#945967.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), 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)),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), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#945984)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#946209)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#946210, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#946211, 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#944825, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#945919.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(219) MapElements [codegen id : 64]
Input [1]: [obj#945940]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, obj#945945: org.apache.spark.sql.Row
(220) SerializeFromObject [codegen id : 64]
Input [1]: [obj#945945]
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#945950, 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#945951]
(221) Exchange
Input [2]: [product#945950, plant#945951]
Arguments: hashpartitioning(coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950), 37), ENSURE_REQUIREMENTS, [plan_id=1594620]
(222) ShuffleQueryStage
Output [2]: [product#945950, plant#945951]
Arguments: 90
(223) AQEShuffleRead
Input [2]: [product#945950, plant#945951]
Arguments: local
(224) BroadcastExchange
Input [2]: [product#945950, plant#945951]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[1, string, true], ), isnull(input[1, string, true]), coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1594772]
(225) BroadcastQueryStage
Output [2]: [product#945950, plant#945951]
Arguments: 91
(226) BroadcastHashJoin [codegen id : 65]
Left keys [4]: [coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305)]
Right keys [4]: [coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950)]
Join type: LeftOuter
Join condition: None
(227) Project [codegen id : 65]
Output [2]: [product#944305, plant#944306]
Input [4]: [product#944305, plant#944306, product#945950, plant#945951]
(228) Exchange
Input [2]: [product#944305, plant#944306]
Arguments: hashpartitioning(plant#944306, 37), ENSURE_REQUIREMENTS, [plan_id=1594906]
(229) ShuffleQueryStage
Output [2]: [product#944305, plant#944306]
Arguments: 92
(230) AQEShuffleRead
Input [2]: [product#944305, plant#944306]
Arguments: coalesced
(231) Sort [codegen id : 66]
Input [2]: [product#944305, plant#944306]
Arguments: [plant#944306 ASC NULLS FIRST], false, 0
(232) ReusedExchange [Reuses operator id: 67]
Output [1]: [distributionCenters#946295]
(233) ShuffleQueryStage
Output [1]: [distributionCenters#946295]
Arguments: 38
(234) Generate [codegen id : 40]
Input [1]: [distributionCenters#946295]
Arguments: explode(distributionCenters#946295), false, [distributionCenters#946310]
(235) Filter [codegen id : 40]
Input [1]: [distributionCenters#946310]
Condition : (((size(distributionCenters#946310.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#946310.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#946310.internalRefUUID))
(236) Project [codegen id : 40]
Output [2]: [distributionCenters#946310.internalRefUUID AS _extract_internalRefUUID#958245, distributionCenters#946310.storageLocations.internalRefUUID AS _extract_internalRefUUID#958361]
Input [1]: [distributionCenters#946310]
(237) Generate [codegen id : 40]
Input [2]: [_extract_internalRefUUID#958245, _extract_internalRefUUID#958361]
Arguments: explode(_extract_internalRefUUID#958361), [_extract_internalRefUUID#958245], false, [storageLocations#946311]
(238) Filter [codegen id : 40]
Input [2]: [_extract_internalRefUUID#958245, storageLocations#946311]
Condition : isnotnull(storageLocations#946311)
(239) Project [codegen id : 40]
Output [2]: [_extract_internalRefUUID#958245 AS plantUuid#946313, storageLocations#946311 AS storageLocUuid#946315]
Input [2]: [_extract_internalRefUUID#958245, storageLocations#946311]
(240) BroadcastExchange
Input [2]: [plantUuid#946313, storageLocUuid#946315]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1582585]
(241) BroadcastQueryStage
Output [2]: [plantUuid#946313, storageLocUuid#946315]
Arguments: 72
(242) ReusedExchange [Reuses operator id: 94]
Output [1]: [plant#946317]
(243) ShuffleQueryStage
Output [1]: [plant#946317]
Arguments: 77
(244) AQEShuffleRead
Input [1]: [plant#946317]
Arguments: coalesced
(245) HashAggregate
Input [1]: [plant#946317]
Keys [1]: [plant#946317]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946317]
(246) BroadcastHashJoin [codegen id : 67]
Left keys [1]: [plantUuid#946313]
Right keys [1]: [plant#946317]
Join type: Inner
Join condition: None
(247) Project [codegen id : 67]
Output [2]: [plantUuid#946313 AS plant#946288, storageLocUuid#946315]
Input [3]: [plantUuid#946313, storageLocUuid#946315, plant#946317]
(248) Sort [codegen id : 67]
Input [2]: [plant#946288, storageLocUuid#946315]
Arguments: [plant#946288 ASC NULLS FIRST], false, 0
(249) SortMergeJoin [codegen id : 68]
Left keys [1]: [plant#944306]
Right keys [1]: [plant#946288]
Join type: Inner
Join condition: None
(250) Project [codegen id : 68]
Output [3]: [plant#944306, product#944305, storageLocUuid#946315]
Input [4]: [product#944305, plant#944306, plant#946288, storageLocUuid#946315]
(251) Scan parquet
Output [5]: [internalUUID#946254, id#946255, isMarkedForDeletion#946260, items#946261, systemId#946253]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(252) ColumnarToRow [codegen id : 29]
Input [5]: [internalUUID#946254, id#946255, isMarkedForDeletion#946260, items#946261, systemId#946253]
(253) Filter [codegen id : 29]
Input [5]: [internalUUID#946254, id#946255, isMarkedForDeletion#946260, items#946261, systemId#946253]
Condition : (((isnotnull(isMarkedForDeletion#946260) AND NOT isMarkedForDeletion#946260) AND (size(items#946261, true) > 0)) AND isnotnull(items#946261))
(254) Project [codegen id : 29]
Output [3]: [internalUUID#946254, id#946255, items#946261]
Input [5]: [internalUUID#946254, id#946255, isMarkedForDeletion#946260, items#946261, systemId#946253]
(255) Exchange
Input [3]: [internalUUID#946254, id#946255, items#946261]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1573774]
(256) ShuffleQueryStage
Output [3]: [internalUUID#946254, id#946255, items#946261]
Arguments: 45
(257) Generate [codegen id : 37]
Input [3]: [internalUUID#946254, id#946255, items#946261]
Arguments: explode(items#946261), [internalUUID#946254, id#946255], false, [item#946265]
(258) Filter [codegen id : 37]
Input [3]: [internalUUID#946254, id#946255, item#946265]
Condition : ((((isnotnull(item#946265.deletionIndicator) AND isnotnull(item#946265.completeIndicator)) AND isnotnull(item#946265.returnIndicator)) AND ((NOT item#946265.deletionIndicator AND NOT item#946265.completeIndicator) AND NOT item#946265.returnIndicator)) AND ((isnotnull(item#946265.product.internalRefUUID) AND isnotnull(item#946265.plant.internalRefUUID)) AND isnotnull(item#946265.storageLocation.internalRefUUID)))
(259) Project [codegen id : 37]
Output [11]: [id#946255, internalUUID#946254, item#946265.plant.internalRefUUID AS plant#946270, item#946265.product.internalRefUUID AS product#946271, item#946265.storageLocation.internalRefUUID AS storageLocUuid#946272, item#946265.quantityUnit.code AS quantityUom#946273, item#946265.quantityUnit.internalRefUUID AS quantityUomUuid#946274, item#946265.quantityNumerator AS quantityNumerator#946275, item#946265.quantityDenominator AS quantityDenominator#946276, item#946265.scheduleLines AS scheduleLines#946277, item#946265.confirmations AS confirmations#946278]
Input [3]: [internalUUID#946254, id#946255, item#946265]
(260) BroadcastExchange
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=1581563]
(261) BroadcastQueryStage
Output [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278]
Arguments: 68
(262) BroadcastHashJoin [codegen id : 68]
Left keys [3]: [product#944305, plant#944306, storageLocUuid#946315]
Right keys [3]: [product#946271, plant#946270, storageLocUuid#946272]
Join type: Inner
Join condition: None
(263) Project
Output [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, size(filter(confirmations#946278, lambdafunction(((NOT lambda x_140#946362.deletionIndicator AND lambda x_140#946362.isRelevantForConfirmation) AND isnotnull(lambda x_140#946362.confirmedDeliveryAt)), lambda x_140#946362, false)), false) AS _w0#946369]
Input [14]: [plant#944306, product#944305, storageLocUuid#946315, id#946255, internalUUID#946254, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278]
(264) Exchange
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: hashpartitioning(internalUUID#946254, 37), ENSURE_REQUIREMENTS, [plan_id=1595085]
(265) ShuffleQueryStage
Output [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: 93
(266) AQEShuffleRead
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: coalesced
(267) Sort [codegen id : 69]
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: [internalUUID#946254 ASC NULLS FIRST], false, 0
(268) Window
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: [sum(_w0#946369) windowspecdefinition(internalUUID#946254, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#946370L], [internalUUID#946254]
(269) Project
Output [3]: [plant#946270, product#946271, filter(transform(CASE WHEN (_we0#946370L > 0) THEN transform(filter(confirmations#946278, lambdafunction(((NOT lambda x_140#946363.deletionIndicator AND lambda x_140#946363.isRelevantForConfirmation) AND isnotnull(lambda x_140#946363.confirmedDeliveryAt)), lambda x_140#946363, false)), lambdafunction(struct(openQty, greatest((lambda x_141#946366.confirmedQuantity - coalesce(lambda x_141#946366.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_141#946366.confirmedDeliveryAt), lambda x_141#946366, false)) ELSE transform(scheduleLines#946277, lambdafunction(struct(openQty, greatest((lambda x_139#946364.quantity - coalesce(lambda x_139#946364.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_139#946364.deliveryAt), lambda x_139#946364, false)) END, lambdafunction(struct(documentId, id#946255, documentUuid, internalUUID#946254, openQty, lambda x_142#946367.openQty, openQtyInBaseUnit, ((lambda x_142#946367.openQty * quantityNumerator#946275) / quantityDenominator#946276), qtyUom, quantityUom#946273, qtyUomUuid, quantityUomUuid#946274, availabilityDatetime, lambda x_142#946367.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_142#946367, false)), lambdafunction(NOT (lambda x_143#946368.openQty = 0.0), lambda x_143#946368, false)) AS openGoodsMovements#946361]
Input [12]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369, _we0#946370L]
(270) ObjectHashAggregate
Input [3]: [plant#946270, product#946271, openGoodsMovements#946361]
Keys [2]: [product#946271, plant#946270]
Functions [1]: [partial_collect_list(openGoodsMovements#946361, 0, 0)]
Aggregate Attributes [1]: [buf#947901]
Results [3]: [product#946271, plant#946270, buf#947902]
(271) Exchange
Input [3]: [product#946271, plant#946270, buf#947902]
Arguments: hashpartitioning(product#946271, plant#946270, 37), ENSURE_REQUIREMENTS, [plan_id=1595205]
(272) ShuffleQueryStage
Output [3]: [product#946271, plant#946270, buf#947902]
Arguments: 94
(273) AQEShuffleRead
Input [3]: [product#946271, plant#946270, buf#947902]
Arguments: coalesced
(274) ObjectHashAggregate
Input [3]: [product#946271, plant#946270, buf#947902]
Keys [2]: [product#946271, plant#946270]
Functions [1]: [collect_list(openGoodsMovements#946361, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#946361, 0, 0)#946386]
Results [1]: [flatten(collect_list(openGoodsMovements#946361, 0, 0)#946386) AS openGoodsMovements#946371]
(275) Filter
Input [1]: [openGoodsMovements#946371]
Condition : ((size(openGoodsMovements#946371, false) > 0) AND (size(transform(openGoodsMovements#946371, lambdafunction(struct(documentId, lambda x_148#958170.documentId, documentUuid, lambda x_148#958170.documentUuid, openQty, lambda x_148#958170.openQty, qtyUomUuid, lambda x_148#958170.qtyUomUuid, qtyUom, lambda x_148#958170.qtyUom, plannedDeliveryDatetime, lambda x_148#958170.availabilityDatetime), lambda x_148#958170, false)), false) > 0))
(276) Project [codegen id : 70]
Output: []
Input [1]: [openGoodsMovements#946371]
(277) CollectLimit
Input: []
Arguments: 1
(278) ResultQueryStage
Output: []
Arguments: 95
(279) Filter
Input [2]: [product#944305, plant#944306]
Condition : (isnotnull(plant#944306) AND isnotnull(product#944305))
(280) Exchange
Input [2]: [product#944305, plant#944306]
Arguments: hashpartitioning(product#944305, plant#944306, 37), REPARTITION_BY_NUM, [plan_id=1572256]
(281) Project
Output [4]: [plant#944363.internalRefUUID AS _extract_internalRefUUID#958337, product#944364.internalRefUUID AS _extract_internalRefUUID#958336, productionAspect#944366.productMovementPlants.unitOfIssue.code AS _extract_code#958334, productionAspect#944366.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#958335]
Input [4]: [plant#944363, product#944364, productionAspect#944366, systemId#944361]
(282) Exchange
Input [4]: [_extract_internalRefUUID#958337, _extract_internalRefUUID#958336, _extract_code#958334, _extract_internalRefUUID#958335]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572014]
(283) Project
Output [4]: [_extract_code#958334, _extract_internalRefUUID#958335, _extract_internalRefUUID#958336, _extract_internalRefUUID#958337]
Input [4]: [_extract_internalRefUUID#958337, _extract_internalRefUUID#958336, _extract_code#958334, _extract_internalRefUUID#958335]
(284) BroadcastExchange
Input [4]: [_extract_code#958334, _extract_internalRefUUID#958335, _extract_internalRefUUID#958336, _extract_internalRefUUID#958337]
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=1572372]
(285) BroadcastHashJoin
Left keys [4]: [coalesce(product#944305, ), isnull(product#944305), coalesce(plant#944306, ), isnull(plant#944306)]
Right keys [4]: [coalesce(_extract_internalRefUUID#958336, ), isnull(_extract_internalRefUUID#958336), coalesce(_extract_internalRefUUID#958337, ), isnull(_extract_internalRefUUID#958337)]
Join type: LeftOuter
Join condition: None
(286) Project
Output [4]: [product#944305, plant#944306, _extract_code#958334, _extract_internalRefUUID#958335]
Input [6]: [product#944305, plant#944306, _extract_code#958334, _extract_internalRefUUID#958335, _extract_internalRefUUID#958336, _extract_internalRefUUID#958337]
(287) Filter
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
Condition : isnotnull(internalUUID#944397)
(288) Project
Output [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Input [4]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403, systemId#944396]
(289) Exchange
Input [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572021]
(290) BroadcastExchange
Input [3]: [internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1572376]
(291) BroadcastHashJoin
Left keys [1]: [product#944305]
Right keys [1]: [internalUUID#944397]
Join type: LeftOuter
Join condition: None
(292) Project
Output [3]: [product#944305, plant#944306, filter(unitOfMeasureConversions#944403, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958334) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958335)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944401.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944401.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944409]
Input [7]: [product#944305, plant#944306, _extract_code#958334, _extract_internalRefUUID#958335, internalUUID#944397, baseUnitOfMeasure#944401, unitOfMeasureConversions#944403]
(293) Generate
Input [3]: [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409]
Arguments: explode(filteredUnitOfMeasureConversions#944409.quantityNumerator), [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409], true, [quantityNumerator#944417]
(294) Project
Output [3]: [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409.quantityDenominator AS _extract_quantityDenominator#958172]
Input [4]: [product#944305, plant#944306, filteredUnitOfMeasureConversions#944409, quantityNumerator#944417]
(295) Generate
Input [3]: [product#944305, plant#944306, _extract_quantityDenominator#958172]
Arguments: explode(_extract_quantityDenominator#958172), [product#944305, plant#944306], true, [quantityDenominator#944420]
(296) Project
Output [2]: [product#944305, plant#944306]
Input [3]: [product#944305, plant#944306, quantityDenominator#944420]
(297) Exchange
Input [2]: [product#944305, plant#944306]
Arguments: hashpartitioning(coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305), 37), ENSURE_REQUIREMENTS, [plan_id=1572529]
(298) Sort
Input [2]: [product#944305, plant#944306]
Arguments: [coalesce(plant#944306, ) ASC NULLS FIRST, isnull(plant#944306) ASC NULLS FIRST, coalesce(product#944305, ) ASC NULLS FIRST, isnull(product#944305) ASC NULLS FIRST], false, 0
(299) Exchange
Input [3]: [product#945954, plant#945955, orderDateTime#945956]
Arguments: hashpartitioning(product#945954, plant#945955, 37), REPARTITION_BY_NUM, [plan_id=1572029]
(300) Project
Output [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Input [9]: [internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966, systemId#945958]
(301) Exchange
Input [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572032]
(302) Project
Output [1]: [struct(systemId, systemId#945958, internalUUID, internalUUID#945959, plant, plant#945960, product, product#945961, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#945962, productionAspect, productionAspect#945963, salesPlant, salesPlant#945964, listing, listing#945965, sourceOfSupplyCategory, sourceOfSupplyCategory#945966) AS productPlant#945967]
Input [9]: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966]
(303) BroadcastExchange
Input [1]: [productPlant#945967]
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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, 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>>>,salesPlant:struct<loadingGroup:struct<internalRefUUID:string,code:string>>,listing:array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>,sourceOfSupplyCategory:struct<internalRefUUID:string,code:string>>, false].plant.internalRefUUID)),false), [plan_id=1572383]
(304) BroadcastHashJoin
Left keys [4]: [coalesce(product#945954, ), isnull(product#945954), coalesce(plant#945955, ), isnull(plant#945955)]
Right keys [4]: [coalesce(productPlant#945967.product.internalRefUUID, ), isnull(productPlant#945967.product.internalRefUUID), coalesce(productPlant#945967.plant.internalRefUUID, ), isnull(productPlant#945967.plant.internalRefUUID)]
Join type: LeftOuter
Join condition: None
(305) Scan parquet
Output [4]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975, systemId#945968]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(306) Filter
Input [4]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975, systemId#945968]
Condition : isnotnull(internalUUID#945969)
(307) Project
Output [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
Input [4]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975, systemId#945968]
(308) Exchange
Input [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572038]
(309) BroadcastExchange
Input [3]: [internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1572386]
(310) BroadcastHashJoin
Left keys [1]: [product#945954]
Right keys [1]: [internalUUID#945969]
Join type: LeftOuter
Join condition: None
(311) Project
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filter(unitOfMeasureConversions#945975, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#945973.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#945973.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#945980]
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, internalUUID#945969, baseUnitOfMeasure#945973, unitOfMeasureConversions#945975]
(312) Project
Output [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filteredUnitOfMeasureConversions#945980.quantityDenominator AS _extract_quantityDenominator#958338, filteredUnitOfMeasureConversions#945980.quantityNumerator AS _extract_quantityNumerator#958339]
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, filteredUnitOfMeasureConversions#945980]
(313) Generate
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#958338, _extract_quantityNumerator#958339]
Arguments: explode(_extract_quantityNumerator#958339), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#958338], true, [quantityNumerator#945981]
(314) Generate
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, _extract_quantityDenominator#958338, quantityNumerator#945981]
Arguments: explode(_extract_quantityDenominator#958338), [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, quantityNumerator#945981], true, [quantityDenominator#945982]
(315) Project
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, (cast(quantityNumerator#945981 as double) / cast(quantityDenominator#945982 as double)) AS outboundUnit#945983]
Input [6]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, quantityNumerator#945981, quantityDenominator#945982]
(316) Project
Output [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, CASE WHEN (isnull(outboundUnit#945983) OR (outboundUnit#945983 <= 0.0)) THEN 1.0 ELSE outboundUnit#945983 END AS outboundUnit#945984]
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945983]
(317) Sort
Input [5]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984]
Arguments: [product#945954 ASC NULLS FIRST, plant#945955 ASC NULLS FIRST], false, 0
(318) Filter
Input [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
Condition : (isnotnull(plant#945988.internalRefUUID) AND isnotnull(product#945987.internalRefUUID))
(319) Project
Output [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Input [6]: [internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, systemId#945985]
(320) Exchange
Input [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572049]
(321) BroadcastExchange
Input [6]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990]
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=1572414]
(322) Filter
Input [2]: [marketUnit#945991, distributionCenters#945997]
Condition : (((marketUnit#945991 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#945997, true) > 0)) AND isnotnull(distributionCenters#945997))
(323) Project
Output [1]: [distributionCenters#945997]
Input [2]: [marketUnit#945991, distributionCenters#945997]
(324) Exchange
Input [1]: [distributionCenters#945997]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572053]
(325) Generate
Input [1]: [distributionCenters#945997]
Arguments: explode(distributionCenters#945997), false, [distributionCenters#946012]
(326) Filter
Input [1]: [distributionCenters#946012]
Condition : (((size(distributionCenters#946012.storageLocations, true) > 0) AND isnotnull(distributionCenters#946012.storageLocations)) AND isnotnull(distributionCenters#946012.internalRefUUID))
(327) Project
Output [2]: [distributionCenters#946012.internalRefUUID AS _extract_internalRefUUID#958212, distributionCenters#946012.storageLocations AS _extract_storageLocations#958213]
Input [1]: [distributionCenters#946012]
(328) Generate
Input [2]: [_extract_internalRefUUID#958212, _extract_storageLocations#958213]
Arguments: explode(_extract_storageLocations#958213), [_extract_internalRefUUID#958212], false, [storageLocations#946013]
(329) Project
Output [3]: [_extract_internalRefUUID#958212 AS plantUuid#946015, storageLocations#946013.id AS storageLocId#946016, storageLocations#946013.internalRefUUID AS storageLocUuid#946017]
Input [2]: [_extract_internalRefUUID#958212, storageLocations#946013]
(330) BroadcastExchange
Input [3]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1572410]
(331) Filter
Input [2]: [product#946018, plant#946019]
Condition : isnotnull(plant#946019)
(332) Exchange
Input [2]: [product#946018, plant#946019]
Arguments: hashpartitioning(product#946018, plant#946019, 37), REPARTITION_BY_NUM, [plan_id=1572265]
(333) Scan parquet
Output [4]: [plant#946024, product#946025, productionAspect#946027, systemId#946022]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(334) Project
Output [4]: [plant#946024.internalRefUUID AS _extract_internalRefUUID#958340, product#946025.internalRefUUID AS _extract_internalRefUUID#958341, productionAspect#946027.productMovementPlants.unitOfIssue.code AS _extract_code#958342, productionAspect#946027.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#958343]
Input [4]: [plant#946024, product#946025, productionAspect#946027, systemId#946022]
(335) Exchange
Input [4]: [_extract_internalRefUUID#958340, _extract_internalRefUUID#958341, _extract_code#958342, _extract_internalRefUUID#958343]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572065]
(336) Project
Output [4]: [_extract_code#958342, _extract_internalRefUUID#958343, _extract_internalRefUUID#958341, _extract_internalRefUUID#958340]
Input [4]: [_extract_internalRefUUID#958340, _extract_internalRefUUID#958341, _extract_code#958342, _extract_internalRefUUID#958343]
(337) BroadcastExchange
Input [4]: [_extract_code#958342, _extract_internalRefUUID#958343, _extract_internalRefUUID#958341, _extract_internalRefUUID#958340]
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=1572394]
(338) BroadcastHashJoin
Left keys [4]: [coalesce(product#946018, ), isnull(product#946018), coalesce(plant#946019, ), isnull(plant#946019)]
Right keys [4]: [coalesce(_extract_internalRefUUID#958341, ), isnull(_extract_internalRefUUID#958341), coalesce(_extract_internalRefUUID#958340, ), isnull(_extract_internalRefUUID#958340)]
Join type: LeftOuter
Join condition: None
(339) Project
Output [4]: [product#946018, plant#946019, _extract_code#958342, _extract_internalRefUUID#958343]
Input [6]: [product#946018, plant#946019, _extract_code#958342, _extract_internalRefUUID#958343, _extract_internalRefUUID#958341, _extract_internalRefUUID#958340]
(340) Scan parquet
Output [4]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039, systemId#946032]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(341) Filter
Input [4]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039, systemId#946032]
Condition : isnotnull(internalUUID#946033)
(342) Project
Output [3]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
Input [4]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039, systemId#946032]
(343) Exchange
Input [3]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572072]
(344) BroadcastExchange
Input [3]: [internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1572398]
(345) BroadcastHashJoin
Left keys [1]: [product#946018]
Right keys [1]: [internalUUID#946033]
Join type: LeftOuter
Join condition: None
(346) Project
Output [2]: [plant#946019, filter(unitOfMeasureConversions#946039, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958342) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958343)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946037.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946037.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946044]
Input [7]: [product#946018, plant#946019, _extract_code#958342, _extract_internalRefUUID#958343, internalUUID#946033, baseUnitOfMeasure#946037, unitOfMeasureConversions#946039]
(347) Generate
Input [2]: [plant#946019, filteredUnitOfMeasureConversions#946044]
Arguments: explode(filteredUnitOfMeasureConversions#946044.quantityNumerator), [plant#946019, filteredUnitOfMeasureConversions#946044], true, [quantityNumerator#946045]
(348) Project
Output [2]: [plant#946019, filteredUnitOfMeasureConversions#946044.quantityDenominator AS _extract_quantityDenominator#958214]
Input [3]: [plant#946019, filteredUnitOfMeasureConversions#946044, quantityNumerator#946045]
(349) Generate
Input [2]: [plant#946019, _extract_quantityDenominator#958214]
Arguments: explode(_extract_quantityDenominator#958214), [plant#946019], true, [quantityDenominator#946046]
(350) Project
Output [1]: [plant#946019]
Input [2]: [plant#946019, quantityDenominator#946046]
(351) HashAggregate
Input [1]: [plant#946019]
Keys [1]: [plant#946019]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946019]
(352) Exchange
Input [1]: [plant#946019]
Arguments: hashpartitioning(plant#946019, 37), ENSURE_REQUIREMENTS, [plan_id=1572407]
(353) HashAggregate
Input [1]: [plant#946019]
Keys [1]: [plant#946019]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946019]
(354) BroadcastHashJoin
Left keys [1]: [plantUuid#946015]
Right keys [1]: [plant#946019]
Join type: Inner
Join condition: None
(355) Project
Output [3]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Input [4]: [plantUuid#946015, storageLocId#946016, storageLocUuid#946017, plant#946019]
(356) BroadcastHashJoin
Left keys [2]: [coalesce(plant#945988.internalRefUUID, ), isnull(plant#945988.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#946015, ), isnull(plantUuid#946015)]
Join type: Inner
Join condition: None
(357) Generate
Input [9]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
Arguments: explode(filter(stockQuantities#945990, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946017) AND (lambda x#944569.storageLocation.Id = storageLocId#946016)), lambda x#944569, false))), [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, plantUuid#946015], false, [stockQuantity#946049]
(358) ObjectHashAggregate
Input [7]: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, plantUuid#946015, stockQuantity#946049]
Keys [5]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985]
Functions [2]: [partial_first(calculationDateTime#945989, false), partial_collect_list(stockQuantity#946049, 0, 0)]
Aggregate Attributes [3]: [first#947911, valueSet#947912, buf#947913]
Results [8]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985, first#947914, valueSet#947915, buf#947916]
(359) ObjectHashAggregate
Input [8]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985, first#947914, valueSet#947915, buf#947916]
Keys [5]: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985]
Functions [2]: [first(calculationDateTime#945989, false), collect_list(stockQuantity#946049, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#945989)()#944584, collect_list(stockQuantity#946049, 0, 0)#944585]
Results [4]: [product#945987, plant#945988, first(calculationDateTime#945989)()#944584 AS calculationDateTime#946050, collect_list(stockQuantity#946049, 0, 0)#944585 AS stockQuantities#946051]
(360) Filter
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantities#946051]
Condition : ((size(stockQuantities#946051, true) > 0) AND isnotnull(calculationDateTime#946050))
(361) Generate
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantities#946051]
Arguments: explode(stockQuantities#946051), [product#945987, plant#945988, calculationDateTime#946050], false, [stockQuantity#946052]
(362) Filter
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantity#946052]
Condition : (((isnotnull(stockQuantity#946052.specialStockIndicator.code) AND isnotnull(stockQuantity#946052.stockType.code)) AND (stockQuantity#946052.specialStockIndicator.code = )) AND (stockQuantity#946052.stockType.code = 01))
(363) Project
Output [5]: [plant#945988.internalRefUUID AS plantUuid#946054, product#945987.internalRefUUID AS productUuid#946056, calculationDateTime#946050, stockQuantity#946052.storagelocation.id AS storageLocId#946057, stockQuantity#946052.quantity.measure AS quantity#946059]
Input [4]: [product#945987, plant#945988, calculationDateTime#946050, stockQuantity#946052]
(364) Exchange
Input [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: hashpartitioning(productUuid#946056, plantUuid#946054, 37), ENSURE_REQUIREMENTS, [plan_id=1572436]
(365) Sort
Input [5]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059]
Arguments: [productUuid#946056 ASC NULLS FIRST, plantUuid#946054 ASC NULLS FIRST], false, 0
(366) Filter
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
Condition : ((isnotnull(orderDateTime#946064) AND isnotnull(plant#946063)) AND isnotnull(product#946062))
(367) Exchange
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
Arguments: hashpartitioning(product#946062, plant#946063, 37), REPARTITION_BY_NUM, [plan_id=1572286]
(368) Scan parquet
Output [4]: [plant#946068, product#946069, productionAspect#946071, systemId#946066]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(369) Project
Output [4]: [plant#946068.internalRefUUID AS _extract_internalRefUUID#958347, product#946069.internalRefUUID AS _extract_internalRefUUID#958346, productionAspect#946071.productMovementPlants.unitOfIssue.code AS _extract_code#958344, productionAspect#946071.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#958345]
Input [4]: [plant#946068, product#946069, productionAspect#946071, systemId#946066]
(370) Exchange
Input [4]: [_extract_internalRefUUID#958347, _extract_internalRefUUID#958346, _extract_code#958344, _extract_internalRefUUID#958345]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572097]
(371) Project
Output [4]: [_extract_code#958344, _extract_internalRefUUID#958345, _extract_internalRefUUID#958346, _extract_internalRefUUID#958347]
Input [4]: [_extract_internalRefUUID#958347, _extract_internalRefUUID#958346, _extract_code#958344, _extract_internalRefUUID#958345]
(372) BroadcastExchange
Input [4]: [_extract_code#958344, _extract_internalRefUUID#958345, _extract_internalRefUUID#958346, _extract_internalRefUUID#958347]
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=1572423]
(373) BroadcastHashJoin
Left keys [4]: [coalesce(product#946062, ), isnull(product#946062), coalesce(plant#946063, ), isnull(plant#946063)]
Right keys [4]: [coalesce(_extract_internalRefUUID#958346, ), isnull(_extract_internalRefUUID#958346), coalesce(_extract_internalRefUUID#958347, ), isnull(_extract_internalRefUUID#958347)]
Join type: LeftOuter
Join condition: None
(374) Project
Output [5]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#958344, _extract_internalRefUUID#958345]
Input [7]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#958344, _extract_internalRefUUID#958345, _extract_internalRefUUID#958346, _extract_internalRefUUID#958347]
(375) Scan parquet
Output [4]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083, systemId#946076]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(376) Filter
Input [4]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083, systemId#946076]
Condition : isnotnull(internalUUID#946077)
(377) Project
Output [3]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
Input [4]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083, systemId#946076]
(378) Exchange
Input [3]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572104]
(379) BroadcastExchange
Input [3]: [internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1572427]
(380) BroadcastHashJoin
Left keys [1]: [product#946062]
Right keys [1]: [internalUUID#946077]
Join type: LeftOuter
Join condition: None
(381) Project
Output [4]: [product#946062, plant#946063, orderDateTime#946064, filter(unitOfMeasureConversions#946083, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958344) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958345)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946081.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946081.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946088]
Input [8]: [product#946062, plant#946063, orderDateTime#946064, _extract_code#958344, _extract_internalRefUUID#958345, internalUUID#946077, baseUnitOfMeasure#946081, unitOfMeasureConversions#946083]
(382) Generate
Input [4]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088]
Arguments: explode(filteredUnitOfMeasureConversions#946088.quantityNumerator), [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088], true, [quantityNumerator#946089]
(383) Project
Output [4]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088.quantityDenominator AS _extract_quantityDenominator#958221]
Input [5]: [product#946062, plant#946063, orderDateTime#946064, filteredUnitOfMeasureConversions#946088, quantityNumerator#946089]
(384) Generate
Input [4]: [product#946062, plant#946063, orderDateTime#946064, _extract_quantityDenominator#958221]
Arguments: explode(_extract_quantityDenominator#958221), [product#946062, plant#946063, orderDateTime#946064], true, [quantityDenominator#946090]
(385) Project
Output [3]: [product#946062, plant#946063, orderDateTime#946064]
Input [4]: [product#946062, plant#946063, orderDateTime#946064, quantityDenominator#946090]
(386) Sort
Input [3]: [product#946062, plant#946063, orderDateTime#946064]
Arguments: [product#946062 ASC NULLS FIRST, plant#946063 ASC NULLS FIRST], false, 0
(387) SortMergeJoin
Left keys [2]: [productUuid#946056, plantUuid#946054]
Right keys [2]: [product#946062, plant#946063]
Join type: Inner
Join condition: (calculationDateTime#946050 <= orderDateTime#946064)
(388) Project
Output [5]: [plantUuid#946054 AS plant#946093, productUuid#946056 AS product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Input [8]: [plantUuid#946054, productUuid#946056, calculationDateTime#946050, storageLocId#946057, quantity#946059, product#946062, plant#946063, orderDateTime#946064]
(389) Exchange
Input [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: hashpartitioning(coalesce(plant#946093, ), isnull(plant#946093), coalesce(product#946094, ), isnull(product#946094), coalesce(storageLocId#946057, ), isnull(storageLocId#946057), coalesce(calculationDateTime#946050, 1970-01-01 00:00:00), isnull(calculationDateTime#946050), 37), ENSURE_REQUIREMENTS, [plan_id=1572492]
(390) Sort
Input [5]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
Arguments: [coalesce(plant#946093, ) ASC NULLS FIRST, isnull(plant#946093) ASC NULLS FIRST, coalesce(product#946094, ) ASC NULLS FIRST, isnull(product#946094) ASC NULLS FIRST, coalesce(storageLocId#946057, ) ASC NULLS FIRST, isnull(storageLocId#946057) ASC NULLS FIRST, coalesce(calculationDateTime#946050, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(calculationDateTime#946050) ASC NULLS FIRST], false, 0
(391) Scan parquet
Output [6]: [internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, systemId#946095]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>>
(392) Filter
Input [6]: [internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, systemId#946095]
Condition : (isnotnull(plant#946098.internalRefUUID) AND isnotnull(product#946097.internalRefUUID))
(393) Project
Output [6]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100]
Input [6]: [internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, systemId#946095]
(394) Exchange
Input [6]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572116]
(395) BroadcastExchange
Input [6]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100]
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=1572461]
(396) Scan parquet
Output [2]: [marketUnit#946101, distributionCenters#946107]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(397) Filter
Input [2]: [marketUnit#946101, distributionCenters#946107]
Condition : (((marketUnit#946101 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#946107, true) > 0)) AND isnotnull(distributionCenters#946107))
(398) Project
Output [1]: [distributionCenters#946107]
Input [2]: [marketUnit#946101, distributionCenters#946107]
(399) Exchange
Input [1]: [distributionCenters#946107]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572120]
(400) Generate
Input [1]: [distributionCenters#946107]
Arguments: explode(distributionCenters#946107), false, [distributionCenters#946122]
(401) Filter
Input [1]: [distributionCenters#946122]
Condition : (((size(distributionCenters#946122.storageLocations, true) > 0) AND isnotnull(distributionCenters#946122.storageLocations)) AND isnotnull(distributionCenters#946122.internalRefUUID))
(402) Project
Output [2]: [distributionCenters#946122.internalRefUUID AS _extract_internalRefUUID#958228, distributionCenters#946122.storageLocations AS _extract_storageLocations#958229]
Input [1]: [distributionCenters#946122]
(403) Generate
Input [2]: [_extract_internalRefUUID#958228, _extract_storageLocations#958229]
Arguments: explode(_extract_storageLocations#958229), [_extract_internalRefUUID#958228], false, [storageLocations#946123]
(404) Project
Output [3]: [_extract_internalRefUUID#958228 AS plantUuid#946125, storageLocations#946123.id AS storageLocId#946126, storageLocations#946123.internalRefUUID AS storageLocUuid#946127]
Input [2]: [_extract_internalRefUUID#958228, storageLocations#946123]
(405) BroadcastExchange
Input [3]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1572457]
(406) Scan parquet
Output [2]: [product#946128, plant#946129]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(407) Filter
Input [2]: [product#946128, plant#946129]
Condition : isnotnull(plant#946129)
(408) Exchange
Input [2]: [product#946128, plant#946129]
Arguments: hashpartitioning(product#946128, plant#946129, 37), REPARTITION_BY_NUM, [plan_id=1572297]
(409) Scan parquet
Output [4]: [plant#946134, product#946135, productionAspect#946137, systemId#946132]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(410) Project
Output [4]: [plant#946134.internalRefUUID AS _extract_internalRefUUID#958351, product#946135.internalRefUUID AS _extract_internalRefUUID#958348, productionAspect#946137.productMovementPlants.unitOfIssue.code AS _extract_code#958349, productionAspect#946137.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#958350]
Input [4]: [plant#946134, product#946135, productionAspect#946137, systemId#946132]
(411) Exchange
Input [4]: [_extract_internalRefUUID#958351, _extract_internalRefUUID#958348, _extract_code#958349, _extract_internalRefUUID#958350]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572132]
(412) Project
Output [4]: [_extract_code#958349, _extract_internalRefUUID#958350, _extract_internalRefUUID#958348, _extract_internalRefUUID#958351]
Input [4]: [_extract_internalRefUUID#958351, _extract_internalRefUUID#958348, _extract_code#958349, _extract_internalRefUUID#958350]
(413) BroadcastExchange
Input [4]: [_extract_code#958349, _extract_internalRefUUID#958350, _extract_internalRefUUID#958348, _extract_internalRefUUID#958351]
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=1572441]
(414) BroadcastHashJoin
Left keys [4]: [coalesce(product#946128, ), isnull(product#946128), coalesce(plant#946129, ), isnull(plant#946129)]
Right keys [4]: [coalesce(_extract_internalRefUUID#958348, ), isnull(_extract_internalRefUUID#958348), coalesce(_extract_internalRefUUID#958351, ), isnull(_extract_internalRefUUID#958351)]
Join type: LeftOuter
Join condition: None
(415) Project
Output [4]: [product#946128, plant#946129, _extract_code#958349, _extract_internalRefUUID#958350]
Input [6]: [product#946128, plant#946129, _extract_code#958349, _extract_internalRefUUID#958350, _extract_internalRefUUID#958348, _extract_internalRefUUID#958351]
(416) Scan parquet
Output [4]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149, systemId#946142]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(417) Filter
Input [4]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149, systemId#946142]
Condition : isnotnull(internalUUID#946143)
(418) Project
Output [3]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149]
Input [4]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149, systemId#946142]
(419) Exchange
Input [3]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572139]
(420) BroadcastExchange
Input [3]: [internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1572445]
(421) BroadcastHashJoin
Left keys [1]: [product#946128]
Right keys [1]: [internalUUID#946143]
Join type: LeftOuter
Join condition: None
(422) Project
Output [2]: [plant#946129, filter(unitOfMeasureConversions#946149, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958349) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958350)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946147.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946147.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946154]
Input [7]: [product#946128, plant#946129, _extract_code#958349, _extract_internalRefUUID#958350, internalUUID#946143, baseUnitOfMeasure#946147, unitOfMeasureConversions#946149]
(423) Generate
Input [2]: [plant#946129, filteredUnitOfMeasureConversions#946154]
Arguments: explode(filteredUnitOfMeasureConversions#946154.quantityNumerator), [plant#946129, filteredUnitOfMeasureConversions#946154], true, [quantityNumerator#946155]
(424) Project
Output [2]: [plant#946129, filteredUnitOfMeasureConversions#946154.quantityDenominator AS _extract_quantityDenominator#958230]
Input [3]: [plant#946129, filteredUnitOfMeasureConversions#946154, quantityNumerator#946155]
(425) Generate
Input [2]: [plant#946129, _extract_quantityDenominator#958230]
Arguments: explode(_extract_quantityDenominator#958230), [plant#946129], true, [quantityDenominator#946156]
(426) Project
Output [1]: [plant#946129]
Input [2]: [plant#946129, quantityDenominator#946156]
(427) HashAggregate
Input [1]: [plant#946129]
Keys [1]: [plant#946129]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946129]
(428) Exchange
Input [1]: [plant#946129]
Arguments: hashpartitioning(plant#946129, 37), ENSURE_REQUIREMENTS, [plan_id=1572454]
(429) HashAggregate
Input [1]: [plant#946129]
Keys [1]: [plant#946129]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946129]
(430) BroadcastHashJoin
Left keys [1]: [plantUuid#946125]
Right keys [1]: [plant#946129]
Join type: Inner
Join condition: None
(431) Project
Output [3]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Input [4]: [plantUuid#946125, storageLocId#946126, storageLocUuid#946127, plant#946129]
(432) BroadcastHashJoin
Left keys [2]: [coalesce(plant#946098.internalRefUUID, ), isnull(plant#946098.internalRefUUID)]
Right keys [2]: [coalesce(plantUuid#946125, ), isnull(plantUuid#946125)]
Join type: Inner
Join condition: None
(433) Generate
Input [9]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
Arguments: explode(filter(stockQuantities#946100, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946127) AND (lambda x#944569.storageLocation.Id = storageLocId#946126)), lambda x#944569, false))), [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, plantUuid#946125], false, [stockQuantity#946159]
(434) ObjectHashAggregate
Input [7]: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, plantUuid#946125, stockQuantity#946159]
Keys [5]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095]
Functions [2]: [partial_first(calculationDateTime#946099, false), partial_collect_list(stockQuantity#946159, 0, 0)]
Aggregate Attributes [3]: [first#947919, valueSet#947920, buf#947921]
Results [8]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095, first#947922, valueSet#947923, buf#947924]
(435) ObjectHashAggregate
Input [8]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095, first#947922, valueSet#947923, buf#947924]
Keys [5]: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095]
Functions [2]: [first(calculationDateTime#946099, false), collect_list(stockQuantity#946159, 0, 0)]
Aggregate Attributes [2]: [first(calculationDateTime#946099)()#944584, collect_list(stockQuantity#946159, 0, 0)#944585]
Results [4]: [product#946097, plant#946098, first(calculationDateTime#946099)()#944584 AS calculationDateTime#946160, collect_list(stockQuantity#946159, 0, 0)#944585 AS stockQuantities#946161]
(436) Filter
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantities#946161]
Condition : ((size(stockQuantities#946161, true) > 0) AND isnotnull(calculationDateTime#946160))
(437) Generate
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantities#946161]
Arguments: explode(stockQuantities#946161), [product#946097, plant#946098, calculationDateTime#946160], false, [stockQuantity#946162]
(438) Filter
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantity#946162]
Condition : (((isnotnull(stockQuantity#946162.specialStockIndicator.code) AND isnotnull(stockQuantity#946162.stockType.code)) AND (stockQuantity#946162.specialStockIndicator.code = )) AND (stockQuantity#946162.stockType.code = 01))
(439) Project
Output [4]: [plant#946098.internalRefUUID AS plantUuid#946164, product#946097.internalRefUUID AS productUuid#946166, calculationDateTime#946160, stockQuantity#946162.storagelocation.id AS storageLocId#946167]
Input [4]: [product#946097, plant#946098, calculationDateTime#946160, stockQuantity#946162]
(440) Exchange
Input [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: hashpartitioning(productUuid#946166, plantUuid#946164, 37), ENSURE_REQUIREMENTS, [plan_id=1572483]
(441) Sort
Input [4]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167]
Arguments: [productUuid#946166 ASC NULLS FIRST, plantUuid#946164 ASC NULLS FIRST], false, 0
(442) Scan parquet
Output [3]: [product#946172, plant#946173, orderDateTime#946174]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(orderDateTime), IsNotNull(plant), IsNotNull(product)]
ReadSchema: struct<product:string,plant:string,orderDateTime:timestamp>
(443) Filter
Input [3]: [product#946172, plant#946173, orderDateTime#946174]
Condition : ((isnotnull(orderDateTime#946174) AND isnotnull(plant#946173)) AND isnotnull(product#946172))
(444) Exchange
Input [3]: [product#946172, plant#946173, orderDateTime#946174]
Arguments: hashpartitioning(product#946172, plant#946173, 37), REPARTITION_BY_NUM, [plan_id=1572318]
(445) Scan parquet
Output [4]: [plant#946178, product#946179, productionAspect#946181, systemId#946176]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(446) Project
Output [4]: [plant#946178.internalRefUUID AS _extract_internalRefUUID#958353, product#946179.internalRefUUID AS _extract_internalRefUUID#958352, productionAspect#946181.productMovementPlants.unitOfIssue.code AS _extract_code#958354, productionAspect#946181.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#958355]
Input [4]: [plant#946178, product#946179, productionAspect#946181, systemId#946176]
(447) Exchange
Input [4]: [_extract_internalRefUUID#958353, _extract_internalRefUUID#958352, _extract_code#958354, _extract_internalRefUUID#958355]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572164]
(448) Project
Output [4]: [_extract_code#958354, _extract_internalRefUUID#958355, _extract_internalRefUUID#958352, _extract_internalRefUUID#958353]
Input [4]: [_extract_internalRefUUID#958353, _extract_internalRefUUID#958352, _extract_code#958354, _extract_internalRefUUID#958355]
(449) BroadcastExchange
Input [4]: [_extract_code#958354, _extract_internalRefUUID#958355, _extract_internalRefUUID#958352, _extract_internalRefUUID#958353]
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=1572470]
(450) BroadcastHashJoin
Left keys [4]: [coalesce(product#946172, ), isnull(product#946172), coalesce(plant#946173, ), isnull(plant#946173)]
Right keys [4]: [coalesce(_extract_internalRefUUID#958352, ), isnull(_extract_internalRefUUID#958352), coalesce(_extract_internalRefUUID#958353, ), isnull(_extract_internalRefUUID#958353)]
Join type: LeftOuter
Join condition: None
(451) Project
Output [5]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#958354, _extract_internalRefUUID#958355]
Input [7]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#958354, _extract_internalRefUUID#958355, _extract_internalRefUUID#958352, _extract_internalRefUUID#958353]
(452) Scan parquet
Output [4]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193, systemId#946186]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(453) Filter
Input [4]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193, systemId#946186]
Condition : isnotnull(internalUUID#946187)
(454) Project
Output [3]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
Input [4]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193, systemId#946186]
(455) Exchange
Input [3]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572171]
(456) BroadcastExchange
Input [3]: [internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1572474]
(457) BroadcastHashJoin
Left keys [1]: [product#946172]
Right keys [1]: [internalUUID#946187]
Join type: LeftOuter
Join condition: None
(458) Project
Output [4]: [product#946172, plant#946173, orderDateTime#946174, filter(unitOfMeasureConversions#946193, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958354) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958355)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946191.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946191.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946198]
Input [8]: [product#946172, plant#946173, orderDateTime#946174, _extract_code#958354, _extract_internalRefUUID#958355, internalUUID#946187, baseUnitOfMeasure#946191, unitOfMeasureConversions#946193]
(459) Generate
Input [4]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198]
Arguments: explode(filteredUnitOfMeasureConversions#946198.quantityNumerator), [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198], true, [quantityNumerator#946199]
(460) Project
Output [4]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198.quantityDenominator AS _extract_quantityDenominator#958237]
Input [5]: [product#946172, plant#946173, orderDateTime#946174, filteredUnitOfMeasureConversions#946198, quantityNumerator#946199]
(461) Generate
Input [4]: [product#946172, plant#946173, orderDateTime#946174, _extract_quantityDenominator#958237]
Arguments: explode(_extract_quantityDenominator#958237), [product#946172, plant#946173, orderDateTime#946174], true, [quantityDenominator#946200]
(462) Project
Output [3]: [product#946172, plant#946173, orderDateTime#946174]
Input [4]: [product#946172, plant#946173, orderDateTime#946174, quantityDenominator#946200]
(463) Sort
Input [3]: [product#946172, plant#946173, orderDateTime#946174]
Arguments: [product#946172 ASC NULLS FIRST, plant#946173 ASC NULLS FIRST], false, 0
(464) SortMergeJoin
Left keys [2]: [productUuid#946166, plantUuid#946164]
Right keys [2]: [product#946172, plant#946173]
Join type: Inner
Join condition: (calculationDateTime#946160 <= orderDateTime#946174)
(465) Project
Output [4]: [plantUuid#946164 AS plant#946203, productUuid#946166 AS product#946204, storageLocId#946167, calculationDateTime#946160]
Input [7]: [plantUuid#946164, productUuid#946166, calculationDateTime#946160, storageLocId#946167, product#946172, plant#946173, orderDateTime#946174]
(466) HashAggregate
Input [4]: [plant#946203, product#946204, storageLocId#946167, calculationDateTime#946160]
Keys [3]: [plant#946203, product#946204, storageLocId#946167]
Functions [1]: [partial_max(calculationDateTime#946160)]
Aggregate Attributes [1]: [max#947917]
Results [4]: [plant#946203, product#946204, storageLocId#946167, max#947918]
(467) HashAggregate
Input [4]: [plant#946203, product#946204, storageLocId#946167, max#947918]
Keys [3]: [plant#946203, product#946204, storageLocId#946167]
Functions [1]: [max(calculationDateTime#946160)]
Aggregate Attributes [1]: [max(calculationDateTime#946160)#944648]
Results [4]: [plant#946203, product#946204, storageLocId#946167, max(calculationDateTime#946160)#944648 AS max_calc_datetime#946205]
(468) Exchange
Input [4]: [plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
Arguments: hashpartitioning(coalesce(plant#946203, ), isnull(plant#946203), coalesce(product#946204, ), isnull(product#946204), coalesce(storageLocId#946167, ), isnull(storageLocId#946167), coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00), isnull(max_calc_datetime#946205), 37), ENSURE_REQUIREMENTS, [plan_id=1572493]
(469) Sort
Input [4]: [plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
Arguments: [coalesce(plant#946203, ) ASC NULLS FIRST, isnull(plant#946203) ASC NULLS FIRST, coalesce(product#946204, ) ASC NULLS FIRST, isnull(product#946204) ASC NULLS FIRST, coalesce(storageLocId#946167, ) ASC NULLS FIRST, isnull(storageLocId#946167) ASC NULLS FIRST, coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00) ASC NULLS FIRST, isnull(max_calc_datetime#946205) ASC NULLS FIRST], false, 0
(470) SortMergeJoin
Left keys [8]: [coalesce(plant#946093, ), isnull(plant#946093), coalesce(product#946094, ), isnull(product#946094), coalesce(storageLocId#946057, ), isnull(storageLocId#946057), coalesce(calculationDateTime#946050, 1970-01-01 00:00:00), isnull(calculationDateTime#946050)]
Right keys [8]: [coalesce(plant#946203, ), isnull(plant#946203), coalesce(product#946204, ), isnull(product#946204), coalesce(storageLocId#946167, ), isnull(storageLocId#946167), coalesce(max_calc_datetime#946205, 1970-01-01 00:00:00), isnull(max_calc_datetime#946205)]
Join type: Inner
Join condition: None
(471) Project
Output [4]: [plant#946093, product#946094, calculationDateTime#946050, quantity#946059]
Input [9]: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059, plant#946203, product#946204, storageLocId#946167, max_calc_datetime#946205]
(472) HashAggregate
Input [4]: [plant#946093, product#946094, calculationDateTime#946050, quantity#946059]
Keys [2]: [product#946094, plant#946093]
Functions [2]: [partial_min(calculationDateTime#946050), partial_sum(quantity#946059)]
Aggregate Attributes [2]: [min#947907, sum#947908]
Results [4]: [product#946094, plant#946093, min#947909, sum#947910]
(473) Exchange
Input [4]: [product#946094, plant#946093, min#947909, sum#947910]
Arguments: hashpartitioning(product#946094, plant#946093, 37), ENSURE_REQUIREMENTS, [plan_id=1572500]
(474) HashAggregate
Input [4]: [product#946094, plant#946093, min#947909, sum#947910]
Keys [2]: [product#946094, plant#946093]
Functions [2]: [min(calculationDateTime#946050), sum(quantity#946059)]
Aggregate Attributes [2]: [min(calculationDateTime#946050)#944775, sum(quantity#946059)#944774]
Results [4]: [product#946094, plant#946093, min(calculationDateTime#946050)#944775 AS minCalculationDateTime#946207, round(sum(quantity#946059)#944774, 0) AS roundedQuantitySum#946208]
(475) Sort
Input [4]: [product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
Arguments: [product#946094 ASC NULLS FIRST, plant#946093 ASC NULLS FIRST], false, 0
(476) SortMergeJoin
Left keys [2]: [product#945954, plant#945955]
Right keys [2]: [product#946094, plant#946093]
Join type: LeftOuter
Join condition: None
(477) Project
Output [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, CASE WHEN isnotnull(minCalculationDateTime#946207) THEN minCalculationDateTime#946207 ELSE orderDateTime#945956 END AS stockDatetime#946209, CASE WHEN isnotnull(roundedQuantitySum#946208) THEN array(roundedQuantitySum#946208) ELSE [0.0] END AS stockBatchQuantities#946210]
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, product#946094, plant#946093, minCalculationDateTime#946207, roundedQuantitySum#946208]
(478) Exchange
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: hashpartitioning(coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954), 37), ENSURE_REQUIREMENTS, [plan_id=1572510]
(479) Sort
Input [7]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210]
Arguments: [coalesce(plant#945955, ) ASC NULLS FIRST, isnull(plant#945955) ASC NULLS FIRST, coalesce(product#945954, ) ASC NULLS FIRST, isnull(product#945954) ASC NULLS FIRST], false, 0
(480) Exchange
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: hashpartitioning(coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814), 37), ENSURE_REQUIREMENTS, [plan_id=1572511]
(481) Sort
Input [9]: [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
Arguments: [coalesce(plant#944815, ) ASC NULLS FIRST, isnull(plant#944815) ASC NULLS FIRST, coalesce(product#944814, ) ASC NULLS FIRST, isnull(product#944814) ASC NULLS FIRST], false, 0
(482) SortMergeJoin
Left keys [4]: [coalesce(plant#945955, ), isnull(plant#945955), coalesce(product#945954, ), isnull(product#945954)]
Right keys [4]: [coalesce(plant#944815, ), isnull(plant#944815), coalesce(product#944814, ), isnull(product#944814)]
Join type: LeftOuter
Join condition: None
(483) Project
Output [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, CASE WHEN isnotnull(product#944814) THEN struct(demandChannel, demandChannel#944816, demandStream, demandStream#944817, considerVariance, considerVariance#944818, demandTimeBuckets, demandTimeBuckets#944819, demandPointInTimeStart, demandPointInTimeStart#944820, demandPointInTimeEnd, demandPointInTimeEnd#944821, demandPointInTime, demandPointInTime#944822) END AS rawDemands#944824]
Input [16]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822]
(484) ObjectHashAggregate
Input [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, rawDemands#944824]
Keys [8]: [product#945954, plant#945955, orderDateTime#945956, knownfloatingpointnormalized(if (isnull(productPlant#945967)) null else named_struct(systemId, productPlant#945967.systemId, internalUUID, productPlant#945967.internalUUID, plant, productPlant#945967.plant, product, productPlant#945967.product, blockedForReplenishmentStartingFrom, productPlant#945967.blockedForReplenishmentStartingFrom, productionAspect, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect)) null else named_struct(productMovementPlants, productPlant#945967.productionAspect.productMovementPlants, productPlanningPlants, knownfloatingpointnormalized(if (isnull(productPlant#945967.productionAspect.productPlanningPlants)) null else named_struct(mrpType, productPlant#945967.productionAspect.productPlanningPlants.mrpType, abcIndicator, productPlant#945967.productionAspect.productPlanningPlants.abcIndicator, mrpController, productPlant#945967.productionAspect.productPlanningPlants.mrpController, minimumLotSize, knownfloatingpointnormalized(normalizenanandzero(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), logisticalRoundingProfile, productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)))), salesPlant, productPlant#945967.salesPlant, listing, productPlant#945967.listing, sourceOfSupplyCategory, productPlant#945967.sourceOfSupplyCategory)) AS productPlant#945967, knownfloatingpointnormalized(normalizenanandzero(outboundUnit#945984)) AS outboundUnit#945984, stockDatetime#946209, knownfloatingpointnormalized(transform(stockBatchQuantities#946210, lambdafunction(knownfloatingpointnormalized(normalizenanandzero(lambda arg#958897)), lambda arg#958897, false))) AS stockBatchQuantities#946210, [7226582400000000] AS [7226582400000000]#958896]
Functions [1]: [partial_collect_list(rawDemands#944824, 0, 0)]
Aggregate Attributes [1]: [buf#947905]
Results [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#958896, buf#947906]
(485) Exchange
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#958896, buf#947906]
Arguments: hashpartitioning(product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#958896, 37), ENSURE_REQUIREMENTS, [plan_id=1572518]
(486) ObjectHashAggregate
Input [9]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#958896, buf#947906]
Keys [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000]#958896]
Functions [1]: [collect_list(rawDemands#944824, 0, 0)]
Aggregate Attributes [1]: [collect_list(rawDemands#944824, 0, 0)#944844]
Results [8]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, collect_list(rawDemands#944824, 0, 0)#944844 AS rawDemands#944825]
(487) Project
Output [2]: [internalUUID#945905, address#945911.timeZone.code AS timezonecode#945917]
Input [3]: [internalUUID#945905, address#945911, systemId#945904]
(488) Exchange
Input [2]: [internalUUID#945905, timezonecode#945917]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572195]
(489) BroadcastExchange
Input [2]: [internalUUID#945905, timezonecode#945917]
Arguments: HashedRelationBroadcastMode(List(coalesce(input[0, string, true], ), isnull(input[0, string, true])),false), [plan_id=1572521]
(490) BroadcastHashJoin
Left keys [2]: [coalesce(plant#945955, ), isnull(plant#945955)]
Right keys [2]: [coalesce(internalUUID#945905, ), isnull(internalUUID#945905)]
Join type: LeftOuter
Join condition: None
(491) Project
Output [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, [7226582400000000] AS stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, CASE WHEN isnotnull(timezonecode#945917) THEN timezonecode#945917 ELSE UTC END AS timezonecode#945919]
Input [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, rawDemands#944825, internalUUID#945905, timezonecode#945917]
(492) DeserializeToObject
Input [10]: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, timezonecode#945919]
Arguments: createexternalrow(invoke(product#945954.toString()), invoke(plant#945955.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#945956)), if (isnull(productPlant#945967)) null else createexternalrow(invoke(productPlant#945967.systemId.toString()), invoke(productPlant#945967.internalUUID.toString()), if (isnull(productPlant#945967.plant)) null else createexternalrow(invoke(productPlant#945967.plant.internalRefUUID.toString()), invoke(productPlant#945967.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#945967.product)) null else createexternalrow(invoke(productPlant#945967.product.internalRefUUID.toString()), invoke(productPlant#945967.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#945967.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#945967.productionAspect)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#945967.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#945967.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,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(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)),true)), if (isnull(productPlant#945967.salesPlant)) null else createexternalrow(if (isnull(productPlant#945967.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#945967.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#945967.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#945967.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#945967.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#945967.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#945967.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), 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)),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), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#945984)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#946209)), mapobjects(lambdavariable(MapObject, DoubleType, true, -2), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, DoubleType, true, -2))), stockBatchQuantities#946210, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, -3), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, TimestampType, false, -3))), stockBatchShelfLifeEndDatetimes#946211, 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#944825, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#945919.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),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),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(493) MapElements
Input [1]: [obj#945940]
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, obj#945945: org.apache.spark.sql.Row
(494) SerializeFromObject
Input [1]: [obj#945945]
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#945950, 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#945951]
(495) Exchange
Input [2]: [product#945950, plant#945951]
Arguments: hashpartitioning(coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950), 37), ENSURE_REQUIREMENTS, [plan_id=1572530]
(496) Sort
Input [2]: [product#945950, plant#945951]
Arguments: [coalesce(plant#945951, ) ASC NULLS FIRST, isnull(plant#945951) ASC NULLS FIRST, coalesce(product#945950, ) ASC NULLS FIRST, isnull(product#945950) ASC NULLS FIRST], false, 0
(497) SortMergeJoin
Left keys [4]: [coalesce(plant#944306, ), isnull(plant#944306), coalesce(product#944305, ), isnull(product#944305)]
Right keys [4]: [coalesce(plant#945951, ), isnull(plant#945951), coalesce(product#945950, ), isnull(product#945950)]
Join type: LeftOuter
Join condition: None
(498) Project
Output [2]: [product#944305, plant#944306]
Input [4]: [product#944305, plant#944306, product#945950, plant#945951]
(499) Exchange
Input [2]: [product#944305, plant#944306]
Arguments: hashpartitioning(plant#944306, 37), ENSURE_REQUIREMENTS, [plan_id=1572556]
(500) Sort
Input [2]: [product#944305, plant#944306]
Arguments: [plant#944306 ASC NULLS FIRST], false, 0
(501) Scan parquet
Output [2]: [marketUnit#946289, distributionCenters#946295]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-dl-stream-service/prp/market-unit]
PushedFilters: [EqualNullSafe(marketUnit,IW_MU_CRP-125444_1), IsNotNull(distributionCenters)]
ReadSchema: struct<marketUnit:string,distributionCenters:array<struct<internalRefUUID:string,id:string,storageLocations:array<struct<internalRefUUID:string,id:string>>>>>
(502) Filter
Input [2]: [marketUnit#946289, distributionCenters#946295]
Condition : (((marketUnit#946289 <=> IW_MU_CRP-125444_1) AND (size(distributionCenters#946295, true) > 0)) AND isnotnull(distributionCenters#946295))
(503) Project
Output [1]: [distributionCenters#946295]
Input [2]: [marketUnit#946289, distributionCenters#946295]
(504) Exchange
Input [1]: [distributionCenters#946295]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572206]
(505) Generate
Input [1]: [distributionCenters#946295]
Arguments: explode(distributionCenters#946295), false, [distributionCenters#946310]
(506) Filter
Input [1]: [distributionCenters#946310]
Condition : (((size(distributionCenters#946310.storageLocations.internalRefUUID, true) > 0) AND isnotnull(distributionCenters#946310.storageLocations.internalRefUUID)) AND isnotnull(distributionCenters#946310.internalRefUUID))
(507) Project
Output [2]: [distributionCenters#946310.internalRefUUID AS _extract_internalRefUUID#958245, distributionCenters#946310.storageLocations.internalRefUUID AS _extract_internalRefUUID#958361]
Input [1]: [distributionCenters#946310]
(508) Generate
Input [2]: [_extract_internalRefUUID#958245, _extract_internalRefUUID#958361]
Arguments: explode(_extract_internalRefUUID#958361), [_extract_internalRefUUID#958245], false, [storageLocations#946311]
(509) Filter
Input [2]: [_extract_internalRefUUID#958245, storageLocations#946311]
Condition : isnotnull(storageLocations#946311)
(510) Project
Output [2]: [_extract_internalRefUUID#958245 AS plantUuid#946313, storageLocations#946311 AS storageLocUuid#946315]
Input [2]: [_extract_internalRefUUID#958245, storageLocations#946311]
(511) BroadcastExchange
Input [2]: [plantUuid#946313, storageLocUuid#946315]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1572551]
(512) Scan parquet
Output [2]: [product#946316, plant#946317]
Batched: true
Location: InMemoryFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-qty-opt-service/out/product-plant-list/10000000678/shardId=0_1_10000000678]
PushedFilters: [IsNotNull(plant)]
ReadSchema: struct<product:string,plant:string>
(513) Filter
Input [2]: [product#946316, plant#946317]
Condition : isnotnull(plant#946317)
(514) Exchange
Input [2]: [product#946316, plant#946317]
Arguments: hashpartitioning(product#946316, plant#946317, 37), REPARTITION_BY_NUM, [plan_id=1572348]
(515) Scan parquet
Output [4]: [plant#946322, product#946323, productionAspect#946325, systemId#946320]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>>
(516) Project
Output [4]: [plant#946322.internalRefUUID AS _extract_internalRefUUID#958358, product#946323.internalRefUUID AS _extract_internalRefUUID#958359, productionAspect#946325.productMovementPlants.unitOfIssue.code AS _extract_code#958356, productionAspect#946325.productMovementPlants.unitOfIssue.internalRefUUID AS _extract_internalRefUUID#958357]
Input [4]: [plant#946322, product#946323, productionAspect#946325, systemId#946320]
(517) Exchange
Input [4]: [_extract_internalRefUUID#958358, _extract_internalRefUUID#958359, _extract_code#958356, _extract_internalRefUUID#958357]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572219]
(518) Project
Output [4]: [_extract_code#958356, _extract_internalRefUUID#958357, _extract_internalRefUUID#958359, _extract_internalRefUUID#958358]
Input [4]: [_extract_internalRefUUID#958358, _extract_internalRefUUID#958359, _extract_code#958356, _extract_internalRefUUID#958357]
(519) BroadcastExchange
Input [4]: [_extract_code#958356, _extract_internalRefUUID#958357, _extract_internalRefUUID#958359, _extract_internalRefUUID#958358]
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=1572535]
(520) BroadcastHashJoin
Left keys [4]: [coalesce(product#946316, ), isnull(product#946316), coalesce(plant#946317, ), isnull(plant#946317)]
Right keys [4]: [coalesce(_extract_internalRefUUID#958359, ), isnull(_extract_internalRefUUID#958359), coalesce(_extract_internalRefUUID#958358, ), isnull(_extract_internalRefUUID#958358)]
Join type: LeftOuter
Join condition: None
(521) Project
Output [4]: [product#946316, plant#946317, _extract_code#958356, _extract_internalRefUUID#958357]
Input [6]: [product#946316, plant#946317, _extract_code#958356, _extract_internalRefUUID#958357, _extract_internalRefUUID#958359, _extract_internalRefUUID#958358]
(522) Scan parquet
Output [4]: [internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337, systemId#946330]
Batched: true
Location: PreparedDeltaFileIndex [hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.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>>>
(523) Filter
Input [4]: [internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337, systemId#946330]
Condition : isnotnull(internalUUID#946331)
(524) Project
Output [3]: [internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337]
Input [4]: [internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337, systemId#946330]
(525) Exchange
Input [3]: [internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572226]
(526) BroadcastExchange
Input [3]: [internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337]
Arguments: HashedRelationBroadcastMode(List(input[0, string, true]),false), [plan_id=1572539]
(527) BroadcastHashJoin
Left keys [1]: [product#946316]
Right keys [1]: [internalUUID#946331]
Join type: LeftOuter
Join condition: None
(528) Project
Output [2]: [plant#946317, filter(unitOfMeasureConversions#946337, lambdafunction((((lambda u#944410.measurementUnit1.code = _extract_code#958356) AND (lambda u#944410.measurementUnit1.internalRefUUID = _extract_internalRefUUID#958357)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946335.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946335.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946342]
Input [7]: [product#946316, plant#946317, _extract_code#958356, _extract_internalRefUUID#958357, internalUUID#946331, baseUnitOfMeasure#946335, unitOfMeasureConversions#946337]
(529) Generate
Input [2]: [plant#946317, filteredUnitOfMeasureConversions#946342]
Arguments: explode(filteredUnitOfMeasureConversions#946342.quantityNumerator), [plant#946317, filteredUnitOfMeasureConversions#946342], true, [quantityNumerator#946343]
(530) Project
Output [2]: [plant#946317, filteredUnitOfMeasureConversions#946342.quantityDenominator AS _extract_quantityDenominator#958247]
Input [3]: [plant#946317, filteredUnitOfMeasureConversions#946342, quantityNumerator#946343]
(531) Generate
Input [2]: [plant#946317, _extract_quantityDenominator#958247]
Arguments: explode(_extract_quantityDenominator#958247), [plant#946317], true, [quantityDenominator#946344]
(532) Project
Output [1]: [plant#946317]
Input [2]: [plant#946317, quantityDenominator#946344]
(533) HashAggregate
Input [1]: [plant#946317]
Keys [1]: [plant#946317]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946317]
(534) Exchange
Input [1]: [plant#946317]
Arguments: hashpartitioning(plant#946317, 37), ENSURE_REQUIREMENTS, [plan_id=1572548]
(535) HashAggregate
Input [1]: [plant#946317]
Keys [1]: [plant#946317]
Functions: []
Aggregate Attributes: []
Results [1]: [plant#946317]
(536) BroadcastHashJoin
Left keys [1]: [plantUuid#946313]
Right keys [1]: [plant#946317]
Join type: Inner
Join condition: None
(537) Project
Output [2]: [plantUuid#946313 AS plant#946288, storageLocUuid#946315]
Input [3]: [plantUuid#946313, storageLocUuid#946315, plant#946317]
(538) Sort
Input [2]: [plant#946288, storageLocUuid#946315]
Arguments: [plant#946288 ASC NULLS FIRST], false, 0
(539) SortMergeJoin
Left keys [1]: [plant#944306]
Right keys [1]: [plant#946288]
Join type: Inner
Join condition: None
(540) Project
Output [3]: [plant#944306, product#944305, storageLocUuid#946315]
Input [4]: [product#944305, plant#944306, plant#946288, storageLocUuid#946315]
(541) Filter
Input [5]: [internalUUID#946254, id#946255, isMarkedForDeletion#946260, items#946261, systemId#946253]
Condition : (((isnotnull(isMarkedForDeletion#946260) AND NOT isMarkedForDeletion#946260) AND (size(items#946261, true) > 0)) AND isnotnull(items#946261))
(542) Project
Output [3]: [internalUUID#946254, id#946255, items#946261]
Input [5]: [internalUUID#946254, id#946255, isMarkedForDeletion#946260, items#946261, systemId#946253]
(543) Exchange
Input [3]: [internalUUID#946254, id#946255, items#946261]
Arguments: RoundRobinPartitioning(37), REPARTITION_BY_NUM, [plan_id=1572242]
(544) Generate
Input [3]: [internalUUID#946254, id#946255, items#946261]
Arguments: explode(items#946261), [internalUUID#946254, id#946255], false, [item#946265]
(545) Filter
Input [3]: [internalUUID#946254, id#946255, item#946265]
Condition : ((((isnotnull(item#946265.deletionIndicator) AND isnotnull(item#946265.completeIndicator)) AND isnotnull(item#946265.returnIndicator)) AND ((NOT item#946265.deletionIndicator AND NOT item#946265.completeIndicator) AND NOT item#946265.returnIndicator)) AND ((isnotnull(item#946265.product.internalRefUUID) AND isnotnull(item#946265.plant.internalRefUUID)) AND isnotnull(item#946265.storageLocation.internalRefUUID)))
(546) Project
Output [11]: [id#946255, internalUUID#946254, item#946265.plant.internalRefUUID AS plant#946270, item#946265.product.internalRefUUID AS product#946271, item#946265.storageLocation.internalRefUUID AS storageLocUuid#946272, item#946265.quantityUnit.code AS quantityUom#946273, item#946265.quantityUnit.internalRefUUID AS quantityUomUuid#946274, item#946265.quantityNumerator AS quantityNumerator#946275, item#946265.quantityDenominator AS quantityDenominator#946276, item#946265.scheduleLines AS scheduleLines#946277, item#946265.confirmations AS confirmations#946278]
Input [3]: [internalUUID#946254, id#946255, item#946265]
(547) BroadcastExchange
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278]
Arguments: HashedRelationBroadcastMode(List(input[3, string, true], input[2, string, true], input[4, string, true]),false), [plan_id=1572562]
(548) BroadcastHashJoin
Left keys [3]: [product#944305, plant#944306, storageLocUuid#946315]
Right keys [3]: [product#946271, plant#946270, storageLocUuid#946272]
Join type: Inner
Join condition: None
(549) Project
Output [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, size(filter(confirmations#946278, lambdafunction(((NOT lambda x_140#946362.deletionIndicator AND lambda x_140#946362.isRelevantForConfirmation) AND isnotnull(lambda x_140#946362.confirmedDeliveryAt)), lambda x_140#946362, false)), false) AS _w0#946369]
Input [14]: [plant#944306, product#944305, storageLocUuid#946315, id#946255, internalUUID#946254, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278]
(550) Exchange
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: hashpartitioning(internalUUID#946254, 37), ENSURE_REQUIREMENTS, [plan_id=1572566]
(551) Sort
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: [internalUUID#946254 ASC NULLS FIRST], false, 0
(552) Window
Input [11]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369]
Arguments: [sum(_w0#946369) windowspecdefinition(internalUUID#946254, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#946370L], [internalUUID#946254]
(553) Project
Output [3]: [plant#946270, product#946271, filter(transform(CASE WHEN (_we0#946370L > 0) THEN transform(filter(confirmations#946278, lambdafunction(((NOT lambda x_140#946363.deletionIndicator AND lambda x_140#946363.isRelevantForConfirmation) AND isnotnull(lambda x_140#946363.confirmedDeliveryAt)), lambda x_140#946363, false)), lambdafunction(struct(openQty, greatest((lambda x_141#946366.confirmedQuantity - coalesce(lambda x_141#946366.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_141#946366.confirmedDeliveryAt), lambda x_141#946366, false)) ELSE transform(scheduleLines#946277, lambdafunction(struct(openQty, greatest((lambda x_139#946364.quantity - coalesce(lambda x_139#946364.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_139#946364.deliveryAt), lambda x_139#946364, false)) END, lambdafunction(struct(documentId, id#946255, documentUuid, internalUUID#946254, openQty, lambda x_142#946367.openQty, openQtyInBaseUnit, ((lambda x_142#946367.openQty * quantityNumerator#946275) / quantityDenominator#946276), qtyUom, quantityUom#946273, qtyUomUuid, quantityUomUuid#946274, availabilityDatetime, lambda x_142#946367.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_142#946367, false)), lambdafunction(NOT (lambda x_143#946368.openQty = 0.0), lambda x_143#946368, false)) AS openGoodsMovements#946361]
Input [12]: [id#946255, internalUUID#946254, plant#946270, product#946271, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, _w0#946369, _we0#946370L]
(554) ObjectHashAggregate
Input [3]: [plant#946270, product#946271, openGoodsMovements#946361]
Keys [2]: [product#946271, plant#946270]
Functions [1]: [partial_collect_list(openGoodsMovements#946361, 0, 0)]
Aggregate Attributes [1]: [buf#947901]
Results [3]: [product#946271, plant#946270, buf#947902]
(555) Exchange
Input [3]: [product#946271, plant#946270, buf#947902]
Arguments: hashpartitioning(product#946271, plant#946270, 37), ENSURE_REQUIREMENTS, [plan_id=1572572]
(556) ObjectHashAggregate
Input [3]: [product#946271, plant#946270, buf#947902]
Keys [2]: [product#946271, plant#946270]
Functions [1]: [collect_list(openGoodsMovements#946361, 0, 0)]
Aggregate Attributes [1]: [collect_list(openGoodsMovements#946361, 0, 0)#946386]
Results [1]: [flatten(collect_list(openGoodsMovements#946361, 0, 0)#946386) AS openGoodsMovements#946371]
(557) Filter
Input [1]: [openGoodsMovements#946371]
Condition : ((size(openGoodsMovements#946371, false) > 0) AND (size(transform(openGoodsMovements#946371, lambdafunction(struct(documentId, lambda x_148#958170.documentId, documentUuid, lambda x_148#958170.documentUuid, openQty, lambda x_148#958170.openQty, qtyUomUuid, lambda x_148#958170.qtyUomUuid, qtyUom, lambda x_148#958170.qtyUom, plannedDeliveryDatetime, lambda x_148#958170.availabilityDatetime), lambda x_148#958170, false)), false) > 0))
(558) Project
Output: []
Input [1]: [openGoodsMovements#946371]
(559) CollectLimit
Input: []
Arguments: 1
(560) AdaptiveSparkPlan
Output: []
Arguments: isFinalPlan=true