== Physical Plan ==
Execute SaveIntoDataSourceCommand (1)
+- SaveIntoDataSourceCommand (2)
+- Project (191)
+- Project (190)
+- Project (189)
+- Project (188)
+- Project (187)
+- Project (186)
+- Project (185)
+- Project (184)
+- Project (183)
+- Project (182)
+- Project (181)
+- Project (180)
+- Join (179)
:- Deduplicate (175)
: +- Project (174)
: +- Filter (173)
: +- Join (172)
: :- Project (170)
: : +- Project (169)
: : +- Project (168)
: : +- Project (167)
: : +- Project (166)
: : +- Project (165)
: : +- Join (164)
: : :- Project (22)
: : : +- Project (21)
: : : +- Project (20)
: : : +- Project (19)
: : : +- Generate (18)
: : : +- Project (17)
: : : +- Generate (16)
: : : +- Project (15)
: : : +- Join (14)
: : : :- Project (11)
: : : : +- Join (10)
: : : : :- Project (5)
: : : : : +- RepartitionByExpression (4)
: : : : : +- LogicalRelation (3)
: : : : +- Project (9)
: : : : +- Project (8)
: : : : +- Repartition (7)
: : : : +- LogicalRelation (6)
: : : +- Repartition (13)
: : : +- LogicalRelation (12)
: : +- Project (163)
: : +- Aggregate (162)
: : +- Project (161)
: : +- Join (160)
: : :- Project (90)
: : : +- Filter (89)
: : : +- Join (88)
: : : :- Filter (67)
: : : : +- Project (66)
: : : : +- Project (65)
: : : : +- Generate (64)
: : : : +- Project (63)
: : : : +- Aggregate (62)
: : : : +- Project (61)
: : : : +- Generate (60)
: : : : +- Join (59)
: : : : :- Repartition (24)
: : : : : +- LogicalRelation (23)
: : : : +- Project (58)
: : : : +- Join (57)
: : : : :- Project (34)
: : : : : +- Project (33)
: : : : : +- Generate (32)
: : : : : +- Project (31)
: : : : : +- Generate (30)
: : : : : +- Project (29)
: : : : : +- Project (28)
: : : : : +- Filter (27)
: : : : : +- Repartition (26)
: : : : : +- LogicalRelation (25)
: : : : +- Deduplicate (56)
: : : : +- Project (55)
: : : : +- Project (54)
: : : : +- Project (53)
: : : : +- Project (52)
: : : : +- Project (51)
: : : : +- Generate (50)
: : : : +- Project (49)
: : : : +- Generate (48)
: : : : +- Project (47)
: : : : +- Join (46)
: : : : :- Project (43)
: : : : : +- Join (42)
: : : : : :- Project (37)
: : : : : : +- RepartitionByExpression (36)
: : : : : : +- LogicalRelation (35)
: : : : : +- Project (41)
: : : : : +- Project (40)
: : : : : +- Repartition (39)
: : : : : +- LogicalRelation (38)
: : : : +- Repartition (45)
: : : : +- LogicalRelation (44)
: : : +- Project (87)
: : : +- Project (86)
: : : +- Project (85)
: : : +- Project (84)
: : : +- Generate (83)
: : : +- Project (82)
: : : +- Generate (81)
: : : +- Project (80)
: : : +- Join (79)
: : : :- Project (76)
: : : : +- Join (75)
: : : : :- Project (70)
: : : : : +- RepartitionByExpression (69)
: : : : : +- LogicalRelation (68)
: : : : +- Project (74)
: : : : +- Project (73)
: : : : +- Repartition (72)
: : : : +- LogicalRelation (71)
: : : +- Repartition (78)
: : : +- LogicalRelation (77)
: : +- Aggregate (159)
: : +- Project (158)
: : +- Filter (157)
: : +- Join (156)
: : :- Filter (135)
: : : +- Project (134)
: : : +- Project (133)
: : : +- Generate (132)
: : : +- Project (131)
: : : +- Aggregate (130)
: : : +- Project (129)
: : : +- Generate (128)
: : : +- Join (127)
: : : :- Repartition (92)
: : : : +- LogicalRelation (91)
: : : +- Project (126)
: : : +- Join (125)
: : : :- Project (102)
: : : : +- Project (101)
: : : : +- Generate (100)
: : : : +- Project (99)
: : : : +- Generate (98)
: : : : +- Project (97)
: : : : +- Project (96)
: : : : +- Filter (95)
: : : : +- Repartition (94)
: : : : +- LogicalRelation (93)
: : : +- Deduplicate (124)
: : : +- Project (123)
: : : +- Project (122)
: : : +- Project (121)
: : : +- Project (120)
: : : +- Project (119)
: : : +- Generate (118)
: : : +- Project (117)
: : : +- Generate (116)
: : : +- Project (115)
: : : +- Join (114)
: : : :- Project (111)
: : : : +- Join (110)
: : : : :- Project (105)
: : : : : +- RepartitionByExpression (104)
: : : : : +- LogicalRelation (103)
: : : : +- Project (109)
: : : : +- Project (108)
: : : : +- Repartition (107)
: : : : +- LogicalRelation (106)
: : : +- Repartition (113)
: : : +- LogicalRelation (112)
: : +- Project (155)
: : +- Project (154)
: : +- Project (153)
: : +- Project (152)
: : +- Generate (151)
: : +- Project (150)
: : +- Generate (149)
: : +- Project (148)
: : +- Join (147)
: : :- Project (144)
: : : +- Join (143)
: : : :- Project (138)
: : : : +- RepartitionByExpression (137)
: : : : +- LogicalRelation (136)
: : : +- Project (142)
: : : +- Project (141)
: : : +- Repartition (140)
: : : +- LogicalRelation (139)
: : +- Repartition (146)
: : +- LogicalRelation (145)
: +- LogicalRelation (171)
+- Project (178)
+- Repartition (177)
+- LogicalRelation (176)
(1) Execute SaveIntoDataSourceCommand
Output: []
(2) SaveIntoDataSourceCommand
Arguments: org.apache.spark.sql.kafka010.KafkaSourceProvider@c56c4a0, [kafka.ssl.keystore.type=PEM, kafka.ssl.truststore.certificates=-----BEGIN CERTIFICATE-----
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
/jpDfYNIFFeK2b96ea3PMzQYLg==
-----END CERTIFICATE-----, kafka.bootstrap.servers=20.56.198.7:50094,20.56.198.7:50194,20.56.198.7:50294, kafka.ssl.keystore.key=-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCjWXGaAOjLbw9J
Fhb3mB5QdPc8s03zBbv46HGfcd6w9sJB0mSmo5VKlUprLQisCmMt3NYdqvfOkGo4
ZOUL18j2uEmByUa8xAVQaOs4r+bfjPpTY3I8J4uxj05mpUCqlL2x6Gj0SObUEfUG
MxlFY/ccKqYStauZdGHbfzgL8C7a8qGj4UuSzYoRHOQpoyYjONvupEoQgpWJuQfM
m/KFqjbxk6gXUbG054ynJaz0ZStF/fHHBm47hJPMtQdOQVi2jb7inD30kfZsEMlJ
PKh/XMtRLEdrU9iI+Y3fmtzF6Xhk8usPc71KPhXLuQdVhrSqis+BC794k81HflLh
3zvjU5/VAgMBAAECggEAHqbfThR7God30RFb1HCfSZ41MZb82sw56lplzdNehAr9
xz+tYuah0knC2essrCnT1AyTQiRtlT2crQHjyA3hGEjbBEdqZmwLCjxx3SSG2G6a
H5Ey465RBIvdXJ4ITSoVkX+IyEQwyl0nQxdOF+sK+OZY3Pxpm6VO4pMUB4t1o2Bk
yKkUxagJElB+2/Qg76eRvvzZQ75vG3WLbABlwqa+Z6VQcNgkoOf9en+EmyuVF3U5
AKvR8ljaj3n7e9giW985Fn48u0xC+YJ7R0HnQRzVq4lDcolBZV8TwiSbJYRKfyq9
NNYjj69hvV0uusOPRAeUV77rl3ig228IZBMgiD07yQKBgQDZU+uZT8o1mcSHRiSg
mSUd2f7a0/0WHdRiYunvc+JbFWlVgQkt+ZsTZrx1gNlrGbgvhJ5arKems8JdBW2f
nEfxqvwaoKdb3P6rLWjedwnNrSjkh6Wlvtfy1ac18vqgAq+IZfUpKXf7lZ8+BX0t
oIZFzFZjY26HPQnOx3Nfx3ZGzQKBgQDAapurkxrBKLv5EAre87zq6ebx6tEI3zW+
6EVDwwvUa5laPTd+ADMtq9NqqCQP1orUcJz4L4gFgOVSij3OeJDg2Sbtaq4EFDCl
Cc/QHFZzbhwF+PTLenCaTO1v4BsrTvoLkXL0XinvqsPWRbDA6ck+bkOZY/AYbLkk
bp1UKDFtKQKBgEejTR8dWRdwF4NL0NkLglujt0mk5WE79f10g46GEZBar30a6s63
37F2hRrqnUCbmsY3Hgffr+fYi3IkTu11E5YK+c1BNcmnQF9muZHThWzB7p/eQvEu
xnpqiRLUhF7oY7o/eZ/W5pEM0hAcuRWoO3qYj8V1SkLUEP6TammhE1DlAoGBAKfr
IWktGnchPlHPzzzchqyXbYUHQF82tCejefb1u1gogo7+x3O9ZuxffEQi8j2kJEna
8RGiIVl0MCzFGcUa8IxY1aDxrWU/3WfZ1TKv2D4qBGit56u/cY8mvTsZ33v/EzWP
PDvIBV7zrq5K6UKhg49pGLM/RON71mLV6ZTs8p1pAoGAD6im2RuJ+KXWryj4lZ8V
jw1hhE0v+WoPNKuQ5HAky+UPVggijkYnz1q/ZCnqB/cHCYX7VBx06UDOIW40ZQpp
dH1mR5b2VzoI9JBxouIRhJAnQYsMCT/F1j34zeqBhrTqTGFwS2C9DayO+2x8kh51
2YGP38p/7X9IZJ2mLT7yFfA=
-----END PRIVATE KEY-----, topic=SituationsTopic, kafka.ssl.truststore.type=PEM, kafka.ssl.keystore.certificate.chain=-----BEGIN CERTIFICATE-----
MIIG+TCCBOGgAwIBAgIQSUOKIqlhUbE3cWqhmeYHMjANBgkqhkiG9w0BAQsFADB5
MQswCQYDVQQGEwJERTENMAsGA1UEBwwERVUxMDEPMA0GA1UECgwGU0FQIFNFMSMw
IQYDVQQLDBpTQVAgQ2xvdWQgUGxhdGZvcm0gQ2xpZW50czElMCMGA1UEAwwcU0FQ
IENsb3VkIFBsYXRmb3JtIENsaWVudCBDQTAeFw0yNjAzMTIwOTI0MDdaFw0yNzAz
MTIxMDI0MDdaMIIB8TELMAkGA1UEBhMCREUxDzANBgNVBAoMBlNBUCBTRTEjMCEG
A1UECwwaU0FQIENsb3VkIFBsYXRmb3JtIENsaWVudHMxGjAYBgNVBAsMEWNmLWV1
MjAtc2FwLWthZmthMYIBYzCCAV8GA1UEBwyCAVZEQjRkWjZ5NVRHSWI4bjU0V0Vl
b2hNWWp6eDVyWW9memdISWRieDViSTQtQ2NjSTBCSGt5anh0WE9Ea3F2aVVUZUp1
SFBHRi13QnYyMHlQTzFqdHJXMTB4YzZFUThkN05TS2k0VlZSc2ctaklYZFplTi0z
OTNjSGRESEUtdlRyb1dHcEpvRl90cFp5TmpYZGJ1MUd1aGU5bHQwd0NsUUpBUFpm
VktVSEloMDU1eW9MUEhrQVZQOVBGWkNXU1NCU0JWbkllOE1YMGVPYUlVMWpTQ1RM
cjUzaU44TkFmRy16YWctZXAxMkkxZjFieERkWldrYTJtRDM4VUxkWk9SbHNJeGRa
cEQwR2xucDdwUG1Ldk9NVlFuRnV2cUs4ZFhDemlEaTVfT1QyTVhnc090eGNmR3Bw
OHF6bmxXR3dmWTYwSFlvUUt0MnJ0amtLUkpRaGpNcVJiOGcxKTAnBgNVBAMMIHNi
c3NfdW11bXdiZXo4ZWg4bXR0YWZkX3lkY2xwYnppMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEAo1lxmgDoy28PSRYW95geUHT3PLNN8wW7+Ohxn3HesPbC
QdJkpqOVSpVKay0IrApjLdzWHar3zpBqOGTlC9fI9rhJgclGvMQFUGjrOK/m34z6
U2NyPCeLsY9OZqVAqpS9seho9Ejm1BH1BjMZRWP3HCqmErWrmXRh2384C/Au2vKh
o+FLks2KERzkKaMmIzjb7qRKEIKVibkHzJvyhao28ZOoF1GxtOeMpyWs9GUrRf3x
xwZuO4STzLUHTkFYto2+4pw99JH2bBDJSTyof1zLUSxHa1PYiPmN35rcxel4ZPLr
D3O9Sj4Vy7kHVYa0qorPgQu/eJPNR35S4d8741Of1QIDAQABo4IBATCB/jAJBgNV
HRMEAjAAMB8GA1UdIwQYMBaAFO3HwDNeEqT3eTKbe+4K+KiFeIwvMB0GA1UdDgQW
BBRyd6TXZsAywPikC5nAMLpj+txvzjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww
CgYIKwYBBQUHAwIwgYsGA1UdHwSBgzCBgDB+oHygeoZ4aHR0cDovL3NhcC1jbG91
ZC1wbGF0Zm9ybS1jbGllbnQtY2EtZXUxMC1jcmxzLnMzLmV1LWNlbnRyYWwtMS5h
bWF6b25hd3MuY29tL2NybC8yYTFiNDlhYy1mYzAyLTRhNDgtOTkzYS05YTRkMGRm
ZWMzM2UuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQBZh8PAhyNhWRNMJBajQEUhTs3+
Vauov6nmr4Lw55TGYWaH0Opk/HjQ9H4fMtwIremRORyK3HBgFkga5rlcX5UbwJU0
wWPMtsvXoqiXkJbEqdlbXnDhUZEFV+3uEq/YLIXISTbmK5/GDqt8IFhesKMxceOD
zZkXJ3nj/XqlfRRLw+f8/lOic5T+K6hC2AV9CIGtjd5Mm+aAc9N8isU75LEFK+9x
FezOLVmGZSAot0ELlno11PSJllr8jcN5LIHt710NROT03NfGxKnJ5iaYzEn/5is4
AE0zrjvP99BzOpkSV6DD0IegEBQGqvD9Urn59jF1cRBWoaP1ukQ0zPAXIDV2f29A
e1ZJPK1qDyT18eW66hQNTAZ9I155yUVrHW7Nljbi+EGF1Dvbz27d8NizoTYFOj7i
dWmazm6qIG7g3725XZ35K7x9+ecPsZmvv/k8EA9Rdv3BACtqWPw1Ch3W9Y2XP/r4
al1g7W3PeAam31HKuzYEsZzIv32LbWApsbccOmb8LLb0TpQDOuF1aaaL7pwtYrIF
tUZZ/VQKrxvohZtCA90xiR740xjnf32eFged9MIZtzBekbTSuTk4L+Efl6RioTuh
m1sXVQKxq2bNVBjeECzzrky6WNAvzympR9d0HyeODeA1JZikPHkuvcQEIuKYU/N0
bv9DuzSOeZzTIzxuyw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
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
TG767A==
-----END CERTIFICATE-----, kafka.security.protocol=SSL], ErrorIfExists
(3) LogicalRelation
Arguments: parquet, [product#1127, plant#1128, orderDateTime#1129, planningStartDateTime#1130], false
(4) RepartitionByExpression
Arguments: [product#1127, plant#1128], 37
(5) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129]
(6) LogicalRelation
Arguments: parquet, [systemId#1158, internalUUID#1159, plant#1160, product#1161, blockedForReplenishmentStartingFrom#1162, productionAspect#1163, salesPlant#1164, listing#1165, sourceOfSupplyCategory#1166], false
(7) Repartition
Arguments: 37, true
(8) Project
Arguments: [systemId#1158, internalUUID#1159, plant#1160, product#1161, blockedForReplenishmentStartingFrom#1162, productionAspect#1163, salesPlant#1164, listing#1165, sourceOfSupplyCategory#1166, struct(systemId, systemId#1158, internalUUID, internalUUID#1159, plant, plant#1160, product, product#1161, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1162, productionAspect, productionAspect#1163, salesPlant, salesPlant#1164, listing, listing#1165, sourceOfSupplyCategory, sourceOfSupplyCategory#1166) AS productPlant#1168]
(9) Project
Arguments: [productPlant#1168]
(10) Join
Arguments: LeftOuter, ((product#1127 <=> productPlant#1168.product.internalRefUUID) AND (plant#1128 <=> productPlant#1168.plant.internalRefUUID))
(11) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129, productPlant#1168]
(12) LogicalRelation
Arguments: parquet, [systemId#1193, internalUUID#1194, id#1195, displayId#1196, name#1197, baseUnitOfMeasure#1198, unitOfMeasures#1199, unitOfMeasureConversions#1200, productionAspect#1201, salesAspect#1202, procurementAspect#1203], false
(13) Repartition
Arguments: 37, true
(14) Join
Arguments: LeftOuter, (product#1127 = internalUUID#1194)
(15) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129, productPlant#1168, systemId#1193, internalUUID#1194, id#1195, displayId#1196, name#1197, baseUnitOfMeasure#1198, unitOfMeasures#1199, unitOfMeasureConversions#1200, productionAspect#1201, salesAspect#1202, procurementAspect#1203, filter(unitOfMeasureConversions#1200, lambdafunction((((lambda u#1206.measurementUnit1.code = productPlant#1168.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1206.measurementUnit1.internalRefUUID = productPlant#1168.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#1198.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1198.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#1205]
(16) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1205.quantityNumerator), true, [quantityNumerator#1213]
(17) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129, productPlant#1168, systemId#1193, internalUUID#1194, id#1195, displayId#1196, name#1197, baseUnitOfMeasure#1198, unitOfMeasures#1199, unitOfMeasureConversions#1200, productionAspect#1201, salesAspect#1202, procurementAspect#1203, filteredUnitOfMeasureConversions#1205, quantityNumerator#1213]
(18) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1205.quantityDenominator), true, [quantityDenominator#1216]
(19) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129, productPlant#1168, systemId#1193, internalUUID#1194, id#1195, displayId#1196, name#1197, baseUnitOfMeasure#1198, unitOfMeasures#1199, unitOfMeasureConversions#1200, productionAspect#1201, salesAspect#1202, procurementAspect#1203, filteredUnitOfMeasureConversions#1205, quantityNumerator#1213, quantityDenominator#1216]
(20) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129, productPlant#1168, systemId#1193, internalUUID#1194, id#1195, displayId#1196, name#1197, baseUnitOfMeasure#1198, unitOfMeasures#1199, unitOfMeasureConversions#1200, productionAspect#1201, salesAspect#1202, procurementAspect#1203, filteredUnitOfMeasureConversions#1205, quantityNumerator#1213, quantityDenominator#1216, (cast(quantityNumerator#1213 as double) / cast(quantityDenominator#1216 as double)) AS outboundUnit#1217]
(21) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129, productPlant#1168, systemId#1193, internalUUID#1194, id#1195, displayId#1196, name#1197, baseUnitOfMeasure#1198, unitOfMeasures#1199, unitOfMeasureConversions#1200, productionAspect#1201, salesAspect#1202, procurementAspect#1203, filteredUnitOfMeasureConversions#1205, quantityNumerator#1213, quantityDenominator#1216, CASE WHEN (isnull(outboundUnit#1217) OR (outboundUnit#1217 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1217 END AS outboundUnit#1218]
(22) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129, productPlant#1168, outboundUnit#1218]
(23) LogicalRelation
Arguments: parquet, [systemId#1321, internalUUID#1322, product#1323, plant#1324, calculationDateTime#1325, stockQuantities#1326], false
(24) Repartition
Arguments: 37, true
(25) LogicalRelation
Arguments: parquet, [marketUnit#1241, description#1242, articleHierarchy#1243, defaultCurrency#1244, responsibilities#1245, replenishmentTypes#1246, distributionCenters#1247, assignedArticleHierarchyNodes#1248, minOrderQtySetting#1249, minOrderQtySettingInternal#1250, listingCheck#1251, odsSelection#1252, demandProfiles#1253, constraintProfiles#1254, optimizationProfiles#1255, orderGroupSplitProfiles#1256, supplierMinimumProfiles#1257, multipleRestrictionProfiles#1258, preferredUomSource#1259, handlingOfUnfulfilledDemands#1260, negligibleQuantitiesThreshold#1261, eventtype#1262], false
(26) Repartition
Arguments: 37, true
(27) Filter
Arguments: (marketUnit#1241 <=> 10000_OP_PERF)
(28) Project
Arguments: [marketUnit#1241, description#1242, articleHierarchy#1243, defaultCurrency#1244, responsibilities#1245, replenishmentTypes#1246, distributionCenters#1247, assignedArticleHierarchyNodes#1248, minOrderQtySetting#1249, minOrderQtySettingInternal#1250, listingCheck#1251, odsSelection#1252, demandProfiles#1253, constraintProfiles#1254, optimizationProfiles#1255, orderGroupSplitProfiles#1256, supplierMinimumProfiles#1257, multipleRestrictionProfiles#1258, preferredUomSource#1259, handlingOfUnfulfilledDemands#1260, negligibleQuantitiesThreshold#1261, eventtype#1262]
(29) Project
Arguments: [distributionCenters#1247]
(30) Generate
Arguments: explode(distributionCenters#1247), false, [distributionCenters#1265]
(31) Project
Arguments: [distributionCenters#1265]
(32) Generate
Arguments: explode(distributionCenters#1265.storageLocations), false, [storageLocations#1272]
(33) Project
Arguments: [distributionCenters#1265.id AS plantId#1266, distributionCenters#1265.internalRefUUID AS plantUuid#1267, storageLocations#1272]
(34) Project
Arguments: [plantId#1266, plantUuid#1267, storageLocations#1272.id AS storageLocId#1273, storageLocations#1272.internalRefUUID AS storageLocUuid#1274]
(35) LogicalRelation
Arguments: parquet, [product#1536, plant#1537, orderDateTime#1538, planningStartDateTime#1539], false
(36) RepartitionByExpression
Arguments: [product#1536, plant#1537], 37
(37) Project
Arguments: [product#1536, plant#1537, orderDateTime#1538]
(38) LogicalRelation
Arguments: parquet, [systemId#1540, internalUUID#1541, plant#1542, product#1543, blockedForReplenishmentStartingFrom#1544, productionAspect#1545, salesPlant#1546, listing#1547, sourceOfSupplyCategory#1548], false
(39) Repartition
Arguments: 37, true
(40) Project
Arguments: [systemId#1540, internalUUID#1541, plant#1542, product#1543, blockedForReplenishmentStartingFrom#1544, productionAspect#1545, salesPlant#1546, listing#1547, sourceOfSupplyCategory#1548, struct(systemId, systemId#1540, internalUUID, internalUUID#1541, plant, plant#1542, product, product#1543, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1544, productionAspect, productionAspect#1545, salesPlant, salesPlant#1546, listing, listing#1547, sourceOfSupplyCategory, sourceOfSupplyCategory#1548) AS productPlant#1549]
(41) Project
Arguments: [productPlant#1549]
(42) Join
Arguments: LeftOuter, ((product#1536 <=> productPlant#1549.product.internalRefUUID) AND (plant#1537 <=> productPlant#1549.plant.internalRefUUID))
(43) Project
Arguments: [product#1536, plant#1537, orderDateTime#1538, productPlant#1549]
(44) LogicalRelation
Arguments: parquet, [systemId#1550, internalUUID#1551, id#1552, displayId#1553, name#1554, baseUnitOfMeasure#1555, unitOfMeasures#1556, unitOfMeasureConversions#1557, productionAspect#1558, salesAspect#1559, procurementAspect#1560], false
(45) Repartition
Arguments: 37, true
(46) Join
Arguments: LeftOuter, (product#1536 = internalUUID#1551)
(47) Project
Arguments: [product#1536, plant#1537, orderDateTime#1538, productPlant#1549, systemId#1550, internalUUID#1551, id#1552, displayId#1553, name#1554, baseUnitOfMeasure#1555, unitOfMeasures#1556, unitOfMeasureConversions#1557, productionAspect#1558, salesAspect#1559, procurementAspect#1560, filter(unitOfMeasureConversions#1557, lambdafunction((((lambda u#1206.measurementUnit1.code = productPlant#1549.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1206.measurementUnit1.internalRefUUID = productPlant#1549.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#1555.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1555.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#1561]
(48) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1561.quantityNumerator), true, [quantityNumerator#1562]
(49) Project
Arguments: [product#1536, plant#1537, orderDateTime#1538, productPlant#1549, systemId#1550, internalUUID#1551, id#1552, displayId#1553, name#1554, baseUnitOfMeasure#1555, unitOfMeasures#1556, unitOfMeasureConversions#1557, productionAspect#1558, salesAspect#1559, procurementAspect#1560, filteredUnitOfMeasureConversions#1561, quantityNumerator#1562]
(50) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1561.quantityDenominator), true, [quantityDenominator#1563]
(51) Project
Arguments: [product#1536, plant#1537, orderDateTime#1538, productPlant#1549, systemId#1550, internalUUID#1551, id#1552, displayId#1553, name#1554, baseUnitOfMeasure#1555, unitOfMeasures#1556, unitOfMeasureConversions#1557, productionAspect#1558, salesAspect#1559, procurementAspect#1560, filteredUnitOfMeasureConversions#1561, quantityNumerator#1562, quantityDenominator#1563]
(52) Project
Arguments: [product#1536, plant#1537, orderDateTime#1538, productPlant#1549, systemId#1550, internalUUID#1551, id#1552, displayId#1553, name#1554, baseUnitOfMeasure#1555, unitOfMeasures#1556, unitOfMeasureConversions#1557, productionAspect#1558, salesAspect#1559, procurementAspect#1560, filteredUnitOfMeasureConversions#1561, quantityNumerator#1562, quantityDenominator#1563, (cast(quantityNumerator#1562 as double) / cast(quantityDenominator#1563 as double)) AS outboundUnit#1564]
(53) Project
Arguments: [product#1536, plant#1537, orderDateTime#1538, productPlant#1549, systemId#1550, internalUUID#1551, id#1552, displayId#1553, name#1554, baseUnitOfMeasure#1555, unitOfMeasures#1556, unitOfMeasureConversions#1557, productionAspect#1558, salesAspect#1559, procurementAspect#1560, filteredUnitOfMeasureConversions#1561, quantityNumerator#1562, quantityDenominator#1563, CASE WHEN (isnull(outboundUnit#1564) OR (outboundUnit#1564 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1564 END AS outboundUnit#1565]
(54) Project
Arguments: [product#1536, plant#1537, orderDateTime#1538, productPlant#1549, outboundUnit#1565]
(55) Project
Arguments: [plant#1537]
(56) Deduplicate
Arguments: [plant#1537]
(57) Join
Arguments: Inner, (plantUuid#1267 = plant#1537)
(58) Project
Arguments: [plantId#1266, plantUuid#1267, storageLocId#1273, storageLocUuid#1274]
(59) Join
Arguments: Inner, (plant#1324.internalRefUUID <=> plantUuid#1267)
(60) Generate
Arguments: explode(filter(stockQuantities#1326, lambdafunction(((lambda x#1330.storageLocation.internalRefUuid = storageLocUuid#1274) AND (lambda x#1330.storageLocation.Id = storageLocId#1273)), lambda x#1330, false))), false, [stockQuantity#1331]
(61) Project
Arguments: [systemId#1321, internalUUID#1322, product#1323, plant#1324, calculationDateTime#1325, stockQuantities#1326, plantId#1266, plantUuid#1267, storageLocId#1273, storageLocUuid#1274, stockQuantity#1331]
(62) Aggregate
Arguments: [plantUuid#1267, internalUUID#1322, plant#1324, product#1323, systemId#1321], [plantUuid#1267, internalUUID#1322, plant#1324, product#1323, systemId#1321, first(calculationDateTime#1325, false) AS calculationDateTime#1332, collect_list(stockQuantity#1331, 0, 0) AS stockQuantities#1333]
(63) Project
Arguments: [systemId#1321, internalUUID#1322, product#1323, plant#1324, calculationDateTime#1332, stockQuantities#1333]
(64) Generate
Arguments: explode(stockQuantities#1333), false, [stockQuantity#1348]
(65) Project
Arguments: [systemId#1321, internalUUID#1322, product#1323, plant#1324, calculationDateTime#1332, stockQuantities#1333, stockQuantity#1348]
(66) Project
Arguments: [plant#1324.id AS plant#1349, plant#1324.internalRefUUID AS plantUuid#1350, product#1323.id AS product#1351, product#1323.internalRefUUID AS productUuid#1352, calculationDateTime#1332, stockQuantity#1348.storagelocation.id AS storageLocId#1353, stockQuantity#1348.storagelocation.internalRefUUID AS storageLocUuid#1354, stockQuantity#1348.quantity.measure AS quantity#1355, stockQuantity#1348.specialStockIndicator.code AS specialStockIndicator#1356, stockQuantity#1348.stockType.code AS stockType#1357]
(67) Filter
Arguments: ((specialStockIndicator#1356 = ) AND (stockType#1357 = 01))
(68) LogicalRelation
Arguments: parquet, [product#1367, plant#1368, orderDateTime#1369, planningStartDateTime#1370], false
(69) RepartitionByExpression
Arguments: [product#1367, plant#1368], 37
(70) Project
Arguments: [product#1367, plant#1368, orderDateTime#1369]
(71) LogicalRelation
Arguments: parquet, [systemId#1371, internalUUID#1372, plant#1373, product#1374, blockedForReplenishmentStartingFrom#1375, productionAspect#1376, salesPlant#1377, listing#1378, sourceOfSupplyCategory#1379], false
(72) Repartition
Arguments: 37, true
(73) Project
Arguments: [systemId#1371, internalUUID#1372, plant#1373, product#1374, blockedForReplenishmentStartingFrom#1375, productionAspect#1376, salesPlant#1377, listing#1378, sourceOfSupplyCategory#1379, struct(systemId, systemId#1371, internalUUID, internalUUID#1372, plant, plant#1373, product, product#1374, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1375, productionAspect, productionAspect#1376, salesPlant, salesPlant#1377, listing, listing#1378, sourceOfSupplyCategory, sourceOfSupplyCategory#1379) AS productPlant#1380]
(74) Project
Arguments: [productPlant#1380]
(75) Join
Arguments: LeftOuter, ((product#1367 <=> productPlant#1380.product.internalRefUUID) AND (plant#1368 <=> productPlant#1380.plant.internalRefUUID))
(76) Project
Arguments: [product#1367, plant#1368, orderDateTime#1369, productPlant#1380]
(77) LogicalRelation
Arguments: parquet, [systemId#1381, internalUUID#1382, id#1383, displayId#1384, name#1385, baseUnitOfMeasure#1386, unitOfMeasures#1387, unitOfMeasureConversions#1388, productionAspect#1389, salesAspect#1390, procurementAspect#1391], false
(78) Repartition
Arguments: 37, true
(79) Join
Arguments: LeftOuter, (product#1367 = internalUUID#1382)
(80) Project
Arguments: [product#1367, plant#1368, orderDateTime#1369, productPlant#1380, systemId#1381, internalUUID#1382, id#1383, displayId#1384, name#1385, baseUnitOfMeasure#1386, unitOfMeasures#1387, unitOfMeasureConversions#1388, productionAspect#1389, salesAspect#1390, procurementAspect#1391, filter(unitOfMeasureConversions#1388, lambdafunction((((lambda u#1206.measurementUnit1.code = productPlant#1380.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1206.measurementUnit1.internalRefUUID = productPlant#1380.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#1386.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1386.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#1392]
(81) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1392.quantityNumerator), true, [quantityNumerator#1393]
(82) Project
Arguments: [product#1367, plant#1368, orderDateTime#1369, productPlant#1380, systemId#1381, internalUUID#1382, id#1383, displayId#1384, name#1385, baseUnitOfMeasure#1386, unitOfMeasures#1387, unitOfMeasureConversions#1388, productionAspect#1389, salesAspect#1390, procurementAspect#1391, filteredUnitOfMeasureConversions#1392, quantityNumerator#1393]
(83) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1392.quantityDenominator), true, [quantityDenominator#1394]
(84) Project
Arguments: [product#1367, plant#1368, orderDateTime#1369, productPlant#1380, systemId#1381, internalUUID#1382, id#1383, displayId#1384, name#1385, baseUnitOfMeasure#1386, unitOfMeasures#1387, unitOfMeasureConversions#1388, productionAspect#1389, salesAspect#1390, procurementAspect#1391, filteredUnitOfMeasureConversions#1392, quantityNumerator#1393, quantityDenominator#1394]
(85) Project
Arguments: [product#1367, plant#1368, orderDateTime#1369, productPlant#1380, systemId#1381, internalUUID#1382, id#1383, displayId#1384, name#1385, baseUnitOfMeasure#1386, unitOfMeasures#1387, unitOfMeasureConversions#1388, productionAspect#1389, salesAspect#1390, procurementAspect#1391, filteredUnitOfMeasureConversions#1392, quantityNumerator#1393, quantityDenominator#1394, (cast(quantityNumerator#1393 as double) / cast(quantityDenominator#1394 as double)) AS outboundUnit#1395]
(86) Project
Arguments: [product#1367, plant#1368, orderDateTime#1369, productPlant#1380, systemId#1381, internalUUID#1382, id#1383, displayId#1384, name#1385, baseUnitOfMeasure#1386, unitOfMeasures#1387, unitOfMeasureConversions#1388, productionAspect#1389, salesAspect#1390, procurementAspect#1391, filteredUnitOfMeasureConversions#1392, quantityNumerator#1393, quantityDenominator#1394, CASE WHEN (isnull(outboundUnit#1395) OR (outboundUnit#1395 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1395 END AS outboundUnit#1396]
(87) Project
Arguments: [product#1367, plant#1368, orderDateTime#1369, productPlant#1380, outboundUnit#1396]
(88) Join
Arguments: Inner, ((plantUuid#1350 = plant#1368) AND (productUuid#1352 = product#1367))
(89) Filter
Arguments: (calculationDateTime#1332 <= orderDateTime#1369)
(90) Project
Arguments: [plantUuid#1350 AS plant#1400, productUuid#1352 AS product#1401, storageLocId#1353, calculationDateTime#1332, quantity#1355]
(91) LogicalRelation
Arguments: parquet, [systemId#1409, internalUUID#1410, product#1411, plant#1412, calculationDateTime#1413, stockQuantities#1414], false
(92) Repartition
Arguments: 37, true
(93) LogicalRelation
Arguments: parquet, [marketUnit#1415, description#1416, articleHierarchy#1417, defaultCurrency#1418, responsibilities#1419, replenishmentTypes#1420, distributionCenters#1421, assignedArticleHierarchyNodes#1422, minOrderQtySetting#1423, minOrderQtySettingInternal#1424, listingCheck#1425, odsSelection#1426, demandProfiles#1427, constraintProfiles#1428, optimizationProfiles#1429, orderGroupSplitProfiles#1430, supplierMinimumProfiles#1431, multipleRestrictionProfiles#1432, preferredUomSource#1433, handlingOfUnfulfilledDemands#1434, negligibleQuantitiesThreshold#1435, eventtype#1436], false
(94) Repartition
Arguments: 37, true
(95) Filter
Arguments: (marketUnit#1415 <=> 10000_OP_PERF)
(96) Project
Arguments: [marketUnit#1415, description#1416, articleHierarchy#1417, defaultCurrency#1418, responsibilities#1419, replenishmentTypes#1420, distributionCenters#1421, assignedArticleHierarchyNodes#1422, minOrderQtySetting#1423, minOrderQtySettingInternal#1424, listingCheck#1425, odsSelection#1426, demandProfiles#1427, constraintProfiles#1428, optimizationProfiles#1429, orderGroupSplitProfiles#1430, supplierMinimumProfiles#1431, multipleRestrictionProfiles#1432, preferredUomSource#1433, handlingOfUnfulfilledDemands#1434, negligibleQuantitiesThreshold#1435, eventtype#1436]
(97) Project
Arguments: [distributionCenters#1421]
(98) Generate
Arguments: explode(distributionCenters#1421), false, [distributionCenters#1437]
(99) Project
Arguments: [distributionCenters#1437]
(100) Generate
Arguments: explode(distributionCenters#1437.storageLocations), false, [storageLocations#1438]
(101) Project
Arguments: [distributionCenters#1437.id AS plantId#1439, distributionCenters#1437.internalRefUUID AS plantUuid#1440, storageLocations#1438]
(102) Project
Arguments: [plantId#1439, plantUuid#1440, storageLocations#1438.id AS storageLocId#1441, storageLocations#1438.internalRefUUID AS storageLocUuid#1442]
(103) LogicalRelation
Arguments: parquet, [product#1443, plant#1444, orderDateTime#1445, planningStartDateTime#1446], false
(104) RepartitionByExpression
Arguments: [product#1443, plant#1444], 37
(105) Project
Arguments: [product#1443, plant#1444, orderDateTime#1445]
(106) LogicalRelation
Arguments: parquet, [systemId#1447, internalUUID#1448, plant#1449, product#1450, blockedForReplenishmentStartingFrom#1451, productionAspect#1452, salesPlant#1453, listing#1454, sourceOfSupplyCategory#1455], false
(107) Repartition
Arguments: 37, true
(108) Project
Arguments: [systemId#1447, internalUUID#1448, plant#1449, product#1450, blockedForReplenishmentStartingFrom#1451, productionAspect#1452, salesPlant#1453, listing#1454, sourceOfSupplyCategory#1455, struct(systemId, systemId#1447, internalUUID, internalUUID#1448, plant, plant#1449, product, product#1450, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1451, productionAspect, productionAspect#1452, salesPlant, salesPlant#1453, listing, listing#1454, sourceOfSupplyCategory, sourceOfSupplyCategory#1455) AS productPlant#1456]
(109) Project
Arguments: [productPlant#1456]
(110) Join
Arguments: LeftOuter, ((product#1443 <=> productPlant#1456.product.internalRefUUID) AND (plant#1444 <=> productPlant#1456.plant.internalRefUUID))
(111) Project
Arguments: [product#1443, plant#1444, orderDateTime#1445, productPlant#1456]
(112) LogicalRelation
Arguments: parquet, [systemId#1457, internalUUID#1458, id#1459, displayId#1460, name#1461, baseUnitOfMeasure#1462, unitOfMeasures#1463, unitOfMeasureConversions#1464, productionAspect#1465, salesAspect#1466, procurementAspect#1467], false
(113) Repartition
Arguments: 37, true
(114) Join
Arguments: LeftOuter, (product#1443 = internalUUID#1458)
(115) Project
Arguments: [product#1443, plant#1444, orderDateTime#1445, productPlant#1456, systemId#1457, internalUUID#1458, id#1459, displayId#1460, name#1461, baseUnitOfMeasure#1462, unitOfMeasures#1463, unitOfMeasureConversions#1464, productionAspect#1465, salesAspect#1466, procurementAspect#1467, filter(unitOfMeasureConversions#1464, lambdafunction((((lambda u#1206.measurementUnit1.code = productPlant#1456.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1206.measurementUnit1.internalRefUUID = productPlant#1456.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#1462.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1462.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#1468]
(116) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1468.quantityNumerator), true, [quantityNumerator#1469]
(117) Project
Arguments: [product#1443, plant#1444, orderDateTime#1445, productPlant#1456, systemId#1457, internalUUID#1458, id#1459, displayId#1460, name#1461, baseUnitOfMeasure#1462, unitOfMeasures#1463, unitOfMeasureConversions#1464, productionAspect#1465, salesAspect#1466, procurementAspect#1467, filteredUnitOfMeasureConversions#1468, quantityNumerator#1469]
(118) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1468.quantityDenominator), true, [quantityDenominator#1470]
(119) Project
Arguments: [product#1443, plant#1444, orderDateTime#1445, productPlant#1456, systemId#1457, internalUUID#1458, id#1459, displayId#1460, name#1461, baseUnitOfMeasure#1462, unitOfMeasures#1463, unitOfMeasureConversions#1464, productionAspect#1465, salesAspect#1466, procurementAspect#1467, filteredUnitOfMeasureConversions#1468, quantityNumerator#1469, quantityDenominator#1470]
(120) Project
Arguments: [product#1443, plant#1444, orderDateTime#1445, productPlant#1456, systemId#1457, internalUUID#1458, id#1459, displayId#1460, name#1461, baseUnitOfMeasure#1462, unitOfMeasures#1463, unitOfMeasureConversions#1464, productionAspect#1465, salesAspect#1466, procurementAspect#1467, filteredUnitOfMeasureConversions#1468, quantityNumerator#1469, quantityDenominator#1470, (cast(quantityNumerator#1469 as double) / cast(quantityDenominator#1470 as double)) AS outboundUnit#1471]
(121) Project
Arguments: [product#1443, plant#1444, orderDateTime#1445, productPlant#1456, systemId#1457, internalUUID#1458, id#1459, displayId#1460, name#1461, baseUnitOfMeasure#1462, unitOfMeasures#1463, unitOfMeasureConversions#1464, productionAspect#1465, salesAspect#1466, procurementAspect#1467, filteredUnitOfMeasureConversions#1468, quantityNumerator#1469, quantityDenominator#1470, CASE WHEN (isnull(outboundUnit#1471) OR (outboundUnit#1471 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1471 END AS outboundUnit#1472]
(122) Project
Arguments: [product#1443, plant#1444, orderDateTime#1445, productPlant#1456, outboundUnit#1472]
(123) Project
Arguments: [plant#1444]
(124) Deduplicate
Arguments: [plant#1444]
(125) Join
Arguments: Inner, (plantUuid#1440 = plant#1444)
(126) Project
Arguments: [plantId#1439, plantUuid#1440, storageLocId#1441, storageLocUuid#1442]
(127) Join
Arguments: Inner, (plant#1412.internalRefUUID <=> plantUuid#1440)
(128) Generate
Arguments: explode(filter(stockQuantities#1414, lambdafunction(((lambda x#1330.storageLocation.internalRefUuid = storageLocUuid#1442) AND (lambda x#1330.storageLocation.Id = storageLocId#1441)), lambda x#1330, false))), false, [stockQuantity#1473]
(129) Project
Arguments: [systemId#1409, internalUUID#1410, product#1411, plant#1412, calculationDateTime#1413, stockQuantities#1414, plantId#1439, plantUuid#1440, storageLocId#1441, storageLocUuid#1442, stockQuantity#1473]
(130) Aggregate
Arguments: [plantUuid#1440, internalUUID#1410, plant#1412, product#1411, systemId#1409], [plantUuid#1440, internalUUID#1410, plant#1412, product#1411, systemId#1409, first(calculationDateTime#1413, false) AS calculationDateTime#1474, collect_list(stockQuantity#1473, 0, 0) AS stockQuantities#1475]
(131) Project
Arguments: [systemId#1409, internalUUID#1410, product#1411, plant#1412, calculationDateTime#1474, stockQuantities#1475]
(132) Generate
Arguments: explode(stockQuantities#1475), false, [stockQuantity#1476]
(133) Project
Arguments: [systemId#1409, internalUUID#1410, product#1411, plant#1412, calculationDateTime#1474, stockQuantities#1475, stockQuantity#1476]
(134) Project
Arguments: [plant#1412.id AS plant#1477, plant#1412.internalRefUUID AS plantUuid#1478, product#1411.id AS product#1479, product#1411.internalRefUUID AS productUuid#1480, calculationDateTime#1474, stockQuantity#1476.storagelocation.id AS storageLocId#1481, stockQuantity#1476.storagelocation.internalRefUUID AS storageLocUuid#1482, stockQuantity#1476.quantity.measure AS quantity#1483, stockQuantity#1476.specialStockIndicator.code AS specialStockIndicator#1484, stockQuantity#1476.stockType.code AS stockType#1485]
(135) Filter
Arguments: ((specialStockIndicator#1484 = ) AND (stockType#1485 = 01))
(136) LogicalRelation
Arguments: parquet, [product#1486, plant#1487, orderDateTime#1488, planningStartDateTime#1489], false
(137) RepartitionByExpression
Arguments: [product#1486, plant#1487], 37
(138) Project
Arguments: [product#1486, plant#1487, orderDateTime#1488]
(139) LogicalRelation
Arguments: parquet, [systemId#1490, internalUUID#1491, plant#1492, product#1493, blockedForReplenishmentStartingFrom#1494, productionAspect#1495, salesPlant#1496, listing#1497, sourceOfSupplyCategory#1498], false
(140) Repartition
Arguments: 37, true
(141) Project
Arguments: [systemId#1490, internalUUID#1491, plant#1492, product#1493, blockedForReplenishmentStartingFrom#1494, productionAspect#1495, salesPlant#1496, listing#1497, sourceOfSupplyCategory#1498, struct(systemId, systemId#1490, internalUUID, internalUUID#1491, plant, plant#1492, product, product#1493, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1494, productionAspect, productionAspect#1495, salesPlant, salesPlant#1496, listing, listing#1497, sourceOfSupplyCategory, sourceOfSupplyCategory#1498) AS productPlant#1499]
(142) Project
Arguments: [productPlant#1499]
(143) Join
Arguments: LeftOuter, ((product#1486 <=> productPlant#1499.product.internalRefUUID) AND (plant#1487 <=> productPlant#1499.plant.internalRefUUID))
(144) Project
Arguments: [product#1486, plant#1487, orderDateTime#1488, productPlant#1499]
(145) LogicalRelation
Arguments: parquet, [systemId#1500, internalUUID#1501, id#1502, displayId#1503, name#1504, baseUnitOfMeasure#1505, unitOfMeasures#1506, unitOfMeasureConversions#1507, productionAspect#1508, salesAspect#1509, procurementAspect#1510], false
(146) Repartition
Arguments: 37, true
(147) Join
Arguments: LeftOuter, (product#1486 = internalUUID#1501)
(148) Project
Arguments: [product#1486, plant#1487, orderDateTime#1488, productPlant#1499, systemId#1500, internalUUID#1501, id#1502, displayId#1503, name#1504, baseUnitOfMeasure#1505, unitOfMeasures#1506, unitOfMeasureConversions#1507, productionAspect#1508, salesAspect#1509, procurementAspect#1510, filter(unitOfMeasureConversions#1507, lambdafunction((((lambda u#1206.measurementUnit1.code = productPlant#1499.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1206.measurementUnit1.internalRefUUID = productPlant#1499.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1206.measurementUnit2.code = baseUnitOfMeasure#1505.code) AND (lambda u#1206.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1505.internalRefUUID))), lambda u#1206, false)) AS filteredUnitOfMeasureConversions#1511]
(149) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1511.quantityNumerator), true, [quantityNumerator#1512]
(150) Project
Arguments: [product#1486, plant#1487, orderDateTime#1488, productPlant#1499, systemId#1500, internalUUID#1501, id#1502, displayId#1503, name#1504, baseUnitOfMeasure#1505, unitOfMeasures#1506, unitOfMeasureConversions#1507, productionAspect#1508, salesAspect#1509, procurementAspect#1510, filteredUnitOfMeasureConversions#1511, quantityNumerator#1512]
(151) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1511.quantityDenominator), true, [quantityDenominator#1513]
(152) Project
Arguments: [product#1486, plant#1487, orderDateTime#1488, productPlant#1499, systemId#1500, internalUUID#1501, id#1502, displayId#1503, name#1504, baseUnitOfMeasure#1505, unitOfMeasures#1506, unitOfMeasureConversions#1507, productionAspect#1508, salesAspect#1509, procurementAspect#1510, filteredUnitOfMeasureConversions#1511, quantityNumerator#1512, quantityDenominator#1513]
(153) Project
Arguments: [product#1486, plant#1487, orderDateTime#1488, productPlant#1499, systemId#1500, internalUUID#1501, id#1502, displayId#1503, name#1504, baseUnitOfMeasure#1505, unitOfMeasures#1506, unitOfMeasureConversions#1507, productionAspect#1508, salesAspect#1509, procurementAspect#1510, filteredUnitOfMeasureConversions#1511, quantityNumerator#1512, quantityDenominator#1513, (cast(quantityNumerator#1512 as double) / cast(quantityDenominator#1513 as double)) AS outboundUnit#1514]
(154) Project
Arguments: [product#1486, plant#1487, orderDateTime#1488, productPlant#1499, systemId#1500, internalUUID#1501, id#1502, displayId#1503, name#1504, baseUnitOfMeasure#1505, unitOfMeasures#1506, unitOfMeasureConversions#1507, productionAspect#1508, salesAspect#1509, procurementAspect#1510, filteredUnitOfMeasureConversions#1511, quantityNumerator#1512, quantityDenominator#1513, CASE WHEN (isnull(outboundUnit#1514) OR (outboundUnit#1514 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1514 END AS outboundUnit#1515]
(155) Project
Arguments: [product#1486, plant#1487, orderDateTime#1488, productPlant#1499, outboundUnit#1515]
(156) Join
Arguments: Inner, ((plantUuid#1478 = plant#1487) AND (productUuid#1480 = product#1486))
(157) Filter
Arguments: (calculationDateTime#1474 <= orderDateTime#1488)
(158) Project
Arguments: [plantUuid#1478 AS plant#1516, productUuid#1480 AS product#1517, storageLocId#1481, calculationDateTime#1474, quantity#1483]
(159) Aggregate
Arguments: [plant#1516, product#1517, storageLocId#1481], [plant#1516, product#1517, storageLocId#1481, max(calculationDateTime#1474) AS max_calc_datetime#1402]
(160) Join
Arguments: Inner, ((((plant#1400 <=> plant#1516) AND (product#1401 <=> product#1517)) AND (storageLocId#1353 <=> storageLocId#1481)) AND (calculationDateTime#1332 <=> max_calc_datetime#1402))
(161) Project
Arguments: [plant#1400, product#1401, storageLocId#1353, calculationDateTime#1332, quantity#1355]
(162) Aggregate
Arguments: [product#1401, plant#1400], [product#1401, plant#1400, sum(quantity#1355) AS quantitySum#1526, min(calculationDateTime#1332) AS minCalculationDateTime#1527]
(163) Project
Arguments: [product#1401, plant#1400, quantitySum#1526, minCalculationDateTime#1527, round(quantitySum#1526, 0) AS roundedQuantitySum#1535]
(164) Join
Arguments: LeftOuter, ((plant#1128 = plant#1400) AND (product#1127 = product#1401))
(165) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129, productPlant#1168, outboundUnit#1218, roundedQuantitySum#1535, minCalculationDateTime#1527]
(166) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129, productPlant#1168, outboundUnit#1218, roundedQuantitySum#1535, minCalculationDateTime#1527, CASE WHEN isnotnull(minCalculationDateTime#1527) THEN minCalculationDateTime#1527 ELSE orderDateTime#1129 END AS stockDatetime#1569]
(167) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129, productPlant#1168, outboundUnit#1218, roundedQuantitySum#1535, minCalculationDateTime#1527, stockDatetime#1569, CASE WHEN isnotnull(roundedQuantitySum#1535) THEN array(roundedQuantitySum#1535) ELSE array(0.0) END AS stockBatchQuantities#1570]
(168) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129, productPlant#1168, outboundUnit#1218, roundedQuantitySum#1535, minCalculationDateTime#1527, stockDatetime#1569, stockBatchQuantities#1570, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1571]
(169) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129, productPlant#1168, outboundUnit#1218, roundedQuantitySum#1535, stockDatetime#1569, stockBatchQuantities#1570, stockBatchShelfLifeEndDatetimes#1571]
(170) Project
Arguments: [product#1127, plant#1128, orderDateTime#1129, productPlant#1168, outboundUnit#1218, stockDatetime#1569, stockBatchQuantities#1570, stockBatchShelfLifeEndDatetimes#1571]
(171) LogicalRelation
Arguments: parquet, [product#1572, plant#1573, demandChannel#1574, demandStream#1575, considerVariance#1576, demandTimeBuckets#1577, demandPointInTimeStart#1578, demandPointInTimeEnd#1579, demandPointInTime#1580], false
(172) Join
Arguments: LeftOuter, ((plant#1573 <=> plant#1128) AND (product#1572 <=> product#1127))
(173) Filter
Arguments: (((size(demandTimeBuckets#1577, true) = 0) OR isnull(demandTimeBuckets#1577)) AND ((size(demandPointInTime#1580, true) = 0) OR isnull(demandPointInTime#1580)))
(174) Project
Arguments: [product#1127, plant#1128]
(175) Deduplicate
Arguments: [product#1127, plant#1128]
(176) LogicalRelation
Arguments: parquet, [systemId#2313, internalUUID#2314, plant#2315, product#2316, blockedForReplenishmentStartingFrom#2317, productionAspect#2318, salesPlant#2319, listing#2320, sourceOfSupplyCategory#2321], false
(177) Repartition
Arguments: 37, true
(178) Project
Arguments: [product#2316.internalRefUUID AS product#2322, plant#2315.internalRefUUID AS plant#2323, product#2316.id AS productId#2324, plant#2315.id AS plantId#2325]
(179) Join
Arguments: Inner, ((product#1127 = product#2322) AND (plant#1128 = plant#2323))
(180) Project
Arguments: [product#1127, plant#1128, productId#2324, plantId#2325]
(181) Project
Arguments: [productId#2324 AS product#2331, plantId#2325 AS plant#2332]
(182) Project
Arguments: [product#2331, plant#2332, array(map(objectType, Product, objectId, product#2331), map(objectType, Plant, objectId, plant#2332)) AS anchorObject#2633]
(183) Project
Arguments: [product#2331, plant#2332, anchorObject#2633, cast(array() as array<map<string,string>>) AS messageVariables#2634]
(184) Project
Arguments: [product#2331, plant#2332, anchorObject#2633, messageVariables#2634, array(map(objectType, ReplenishmentRunId, objectId, 10000000004)) AS triggerObject#2635]
(185) Project
Arguments: [product#2331, plant#2332, anchorObject#2633, messageVariables#2634, triggerObject#2635, NEW AS situationStatus#2636]
(186) Project
Arguments: [product#2331, plant#2332, anchorObject#2633, messageVariables#2634, triggerObject#2635, situationStatus#2636, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS situationType#2637]
(187) Project
Arguments: [product#2331, plant#2332, anchorObject#2633, messageVariables#2634, triggerObject#2635, situationStatus#2636, situationType#2637, 10000_OP_PERF AS marketUnit#2638]
(188) Project
Arguments: [anchorObject#2633, messageVariables#2634, triggerObject#2635, situationStatus#2636, situationType#2637, marketUnit#2638]
(189) Project
Arguments: [to_json(struct(anchorObject, anchorObject#2633, messageVariables, messageVariables#2634, triggerObject, triggerObject#2635, situationStatus, situationStatus#2636, situationType, situationType#2637, marketUnit, marketUnit#2638), Some(UTC)) AS value#12011]
(190) Project
Arguments: [cast(value#12011 as string) AS value#12012]
(191) Project
Arguments: [value#12012, array(struct(key, X-Tenant-ID, value, cast(8793759653749352888 as binary)), struct(key, X-Message-ID, value, cast(f48760e4-41dd-4232-a024-9af3af6d1d53 as binary)), struct(key, X-Event-Type, value, cast(SituationCreate as binary)), struct(key, X-BTP-Tenant-ID, value, cast(eaa49c20-85f6-4a2f-8a5e-c8b6ae1b9648 as binary))) AS headers#12021]