== Physical Plan ==
Execute SaveIntoDataSourceCommand (1)
+- SaveIntoDataSourceCommand (2)
+- Project (716)
+- Project (715)
+- Project (714)
+- Union (713)
:- Project (219)
: +- Project (218)
: +- Project (217)
: +- Project (216)
: +- Deduplicate (215)
: +- Project (214)
: +- Project (213)
: +- Project (212)
: +- Project (211)
: +- Project (210)
: +- Filter (209)
: +- Project (208)
: +- Join (207)
: :- Project (205)
: : +- Project (204)
: : +- Project (203)
: : +- Project (202)
: : +- Project (201)
: : +- Project (200)
: : +- Join (199)
: : :- Project (29)
: : : +- Project (28)
: : : +- Project (27)
: : : +- Project (26)
: : : +- Generate (25)
: : : +- Project (24)
: : : +- Generate (23)
: : : +- Project (22)
: : : +- Join (21)
: : : :- Project (18)
: : : : +- Project (17)
: : : : +- Join (16)
: : : : :- SubqueryAlias (12)
: : : : : +- Project (11)
: : : : : +- Join (10)
: : : : : :- Project (5)
: : : : : : +- RepartitionByExpression (4)
: : : : : : +- LogicalRelation (3)
: : : : : +- Project (9)
: : : : : +- Project (8)
: : : : : +- Repartition (7)
: : : : : +- LogicalRelation (6)
: : : : +- Project (15)
: : : : +- Repartition (14)
: : : : +- LogicalRelation (13)
: : : +- Repartition (20)
: : : +- LogicalRelation (19)
: : +- Project (198)
: : +- Aggregate (197)
: : +- Project (196)
: : +- Join (195)
: : :- Project (111)
: : : +- Filter (110)
: : : +- Join (109)
: : : :- Filter (81)
: : : : +- Project (80)
: : : : +- Project (79)
: : : : +- Generate (78)
: : : : +- Project (77)
: : : : +- Aggregate (76)
: : : : +- Project (75)
: : : : +- Generate (74)
: : : : +- Join (73)
: : : : :- Repartition (31)
: : : : : +- LogicalRelation (30)
: : : : +- Project (72)
: : : : +- Join (71)
: : : : :- Project (41)
: : : : : +- Project (40)
: : : : : +- Generate (39)
: : : : : +- Project (38)
: : : : : +- Generate (37)
: : : : : +- Project (36)
: : : : : +- Project (35)
: : : : : +- Filter (34)
: : : : : +- Repartition (33)
: : : : : +- LogicalRelation (32)
: : : : +- Deduplicate (70)
: : : : +- Project (69)
: : : : +- Project (68)
: : : : +- Project (67)
: : : : +- Project (66)
: : : : +- Project (65)
: : : : +- Generate (64)
: : : : +- Project (63)
: : : : +- Generate (62)
: : : : +- Project (61)
: : : : +- Join (60)
: : : : :- Project (57)
: : : : : +- Project (56)
: : : : : +- Join (55)
: : : : : :- SubqueryAlias (51)
: : : : : : +- Project (50)
: : : : : : +- Join (49)
: : : : : : :- Project (44)
: : : : : : : +- RepartitionByExpression (43)
: : : : : : : +- LogicalRelation (42)
: : : : : : +- Project (48)
: : : : : : +- Project (47)
: : : : : : +- Repartition (46)
: : : : : : +- LogicalRelation (45)
: : : : : +- Project (54)
: : : : : +- Repartition (53)
: : : : : +- LogicalRelation (52)
: : : : +- Repartition (59)
: : : : +- LogicalRelation (58)
: : : +- Project (108)
: : : +- Project (107)
: : : +- Project (106)
: : : +- Project (105)
: : : +- Generate (104)
: : : +- Project (103)
: : : +- Generate (102)
: : : +- Project (101)
: : : +- Join (100)
: : : :- Project (97)
: : : : +- Project (96)
: : : : +- Join (95)
: : : : :- SubqueryAlias (91)
: : : : : +- Project (90)
: : : : : +- Join (89)
: : : : : :- Project (84)
: : : : : : +- RepartitionByExpression (83)
: : : : : : +- LogicalRelation (82)
: : : : : +- Project (88)
: : : : : +- Project (87)
: : : : : +- Repartition (86)
: : : : : +- LogicalRelation (85)
: : : : +- Project (94)
: : : : +- Repartition (93)
: : : : +- LogicalRelation (92)
: : : +- Repartition (99)
: : : +- LogicalRelation (98)
: : +- Aggregate (194)
: : +- Project (193)
: : +- Filter (192)
: : +- Join (191)
: : :- Filter (163)
: : : +- Project (162)
: : : +- Project (161)
: : : +- Generate (160)
: : : +- Project (159)
: : : +- Aggregate (158)
: : : +- Project (157)
: : : +- Generate (156)
: : : +- Join (155)
: : : :- Repartition (113)
: : : : +- LogicalRelation (112)
: : : +- Project (154)
: : : +- Join (153)
: : : :- Project (123)
: : : : +- Project (122)
: : : : +- Generate (121)
: : : : +- Project (120)
: : : : +- Generate (119)
: : : : +- Project (118)
: : : : +- Project (117)
: : : : +- Filter (116)
: : : : +- Repartition (115)
: : : : +- LogicalRelation (114)
: : : +- Deduplicate (152)
: : : +- Project (151)
: : : +- Project (150)
: : : +- Project (149)
: : : +- Project (148)
: : : +- Project (147)
: : : +- Generate (146)
: : : +- Project (145)
: : : +- Generate (144)
: : : +- Project (143)
: : : +- Join (142)
: : : :- Project (139)
: : : : +- Project (138)
: : : : +- Join (137)
: : : : :- SubqueryAlias (133)
: : : : : +- Project (132)
: : : : : +- Join (131)
: : : : : :- Project (126)
: : : : : : +- RepartitionByExpression (125)
: : : : : : +- LogicalRelation (124)
: : : : : +- Project (130)
: : : : : +- Project (129)
: : : : : +- Repartition (128)
: : : : : +- LogicalRelation (127)
: : : : +- Project (136)
: : : : +- Repartition (135)
: : : : +- LogicalRelation (134)
: : : +- Repartition (141)
: : : +- LogicalRelation (140)
: : +- Project (190)
: : +- Project (189)
: : +- Project (188)
: : +- Project (187)
: : +- Generate (186)
: : +- Project (185)
: : +- Generate (184)
: : +- Project (183)
: : +- Join (182)
: : :- Project (179)
: : : +- Project (178)
: : : +- Join (177)
: : : :- SubqueryAlias (173)
: : : : +- Project (172)
: : : : +- Join (171)
: : : : :- Project (166)
: : : : : +- RepartitionByExpression (165)
: : : : : +- LogicalRelation (164)
: : : : +- Project (170)
: : : : +- Project (169)
: : : : +- Repartition (168)
: : : : +- LogicalRelation (167)
: : : +- Project (176)
: : : +- Repartition (175)
: : : +- LogicalRelation (174)
: : +- Repartition (181)
: : +- LogicalRelation (180)
: +- LogicalRelation (206)
+- Project (712)
+- Project (711)
+- Project (710)
+- Project (709)
+- Deduplicate (708)
+- Project (707)
+- Project (706)
+- Project (705)
+- Join (704)
:- SerializeFromObject (696)
: +- MapPartitions (695)
: +- DeserializeToObject (694)
: +- Project (693)
: +- Project (692)
: +- Project (691)
: +- Project (690)
: +- Project (689)
: +- Project (688)
: +- Join (687)
: :- Project (680)
: : +- Join (679)
: : :- Project (636)
: : : +- Project (635)
: : : +- Join (634)
: : : :- Project (422)
: : : : +- Project (421)
: : : : +- Project (420)
: : : : +- Project (419)
: : : : +- Project (418)
: : : : +- Project (417)
: : : : +- Join (416)
: : : : :- Project (246)
: : : : : +- Project (245)
: : : : : +- Project (244)
: : : : : +- Project (243)
: : : : : +- Generate (242)
: : : : : +- Project (241)
: : : : : +- Generate (240)
: : : : : +- Project (239)
: : : : : +- Join (238)
: : : : : :- Project (235)
: : : : : : +- Project (234)
: : : : : : +- Join (233)
: : : : : : :- SubqueryAlias (229)
: : : : : : : +- Project (228)
: : : : : : : +- Join (227)
: : : : : : : :- Project (222)
: : : : : : : : +- RepartitionByExpression (221)
: : : : : : : : +- LogicalRelation (220)
: : : : : : : +- Project (226)
: : : : : : : +- Project (225)
: : : : : : : +- Repartition (224)
: : : : : : : +- LogicalRelation (223)
: : : : : : +- Project (232)
: : : : : : +- Repartition (231)
: : : : : : +- LogicalRelation (230)
: : : : : +- Repartition (237)
: : : : : +- LogicalRelation (236)
: : : : +- Project (415)
: : : : +- Aggregate (414)
: : : : +- Project (413)
: : : : +- Join (412)
: : : : :- Project (328)
: : : : : +- Filter (327)
: : : : : +- Join (326)
: : : : : :- Filter (298)
: : : : : : +- Project (297)
: : : : : : +- Project (296)
: : : : : : +- Generate (295)
: : : : : : +- Project (294)
: : : : : : +- Aggregate (293)
: : : : : : +- Project (292)
: : : : : : +- Generate (291)
: : : : : : +- Join (290)
: : : : : : :- Repartition (248)
: : : : : : : +- LogicalRelation (247)
: : : : : : +- Project (289)
: : : : : : +- Join (288)
: : : : : : :- Project (258)
: : : : : : : +- Project (257)
: : : : : : : +- Generate (256)
: : : : : : : +- Project (255)
: : : : : : : +- Generate (254)
: : : : : : : +- Project (253)
: : : : : : : +- Project (252)
: : : : : : : +- Filter (251)
: : : : : : : +- Repartition (250)
: : : : : : : +- LogicalRelation (249)
: : : : : : +- Deduplicate (287)
: : : : : : +- Project (286)
: : : : : : +- Project (285)
: : : : : : +- Project (284)
: : : : : : +- Project (283)
: : : : : : +- Project (282)
: : : : : : +- Generate (281)
: : : : : : +- Project (280)
: : : : : : +- Generate (279)
: : : : : : +- Project (278)
: : : : : : +- Join (277)
: : : : : : :- Project (274)
: : : : : : : +- Project (273)
: : : : : : : +- Join (272)
: : : : : : : :- SubqueryAlias (268)
: : : : : : : : +- Project (267)
: : : : : : : : +- Join (266)
: : : : : : : : :- Project (261)
: : : : : : : : : +- RepartitionByExpression (260)
: : : : : : : : : +- LogicalRelation (259)
: : : : : : : : +- Project (265)
: : : : : : : : +- Project (264)
: : : : : : : : +- Repartition (263)
: : : : : : : : +- LogicalRelation (262)
: : : : : : : +- Project (271)
: : : : : : : +- Repartition (270)
: : : : : : : +- LogicalRelation (269)
: : : : : : +- Repartition (276)
: : : : : : +- LogicalRelation (275)
: : : : : +- Project (325)
: : : : : +- Project (324)
: : : : : +- Project (323)
: : : : : +- Project (322)
: : : : : +- Generate (321)
: : : : : +- Project (320)
: : : : : +- Generate (319)
: : : : : +- Project (318)
: : : : : +- Join (317)
: : : : : :- Project (314)
: : : : : : +- Project (313)
: : : : : : +- Join (312)
: : : : : : :- SubqueryAlias (308)
: : : : : : : +- Project (307)
: : : : : : : +- Join (306)
: : : : : : : :- Project (301)
: : : : : : : : +- RepartitionByExpression (300)
: : : : : : : : +- LogicalRelation (299)
: : : : : : : +- Project (305)
: : : : : : : +- Project (304)
: : : : : : : +- Repartition (303)
: : : : : : : +- LogicalRelation (302)
: : : : : : +- Project (311)
: : : : : : +- Repartition (310)
: : : : : : +- LogicalRelation (309)
: : : : : +- Repartition (316)
: : : : : +- LogicalRelation (315)
: : : : +- Aggregate (411)
: : : : +- Project (410)
: : : : +- Filter (409)
: : : : +- Join (408)
: : : : :- Filter (380)
: : : : : +- Project (379)
: : : : : +- Project (378)
: : : : : +- Generate (377)
: : : : : +- Project (376)
: : : : : +- Aggregate (375)
: : : : : +- Project (374)
: : : : : +- Generate (373)
: : : : : +- Join (372)
: : : : : :- Repartition (330)
: : : : : : +- LogicalRelation (329)
: : : : : +- Project (371)
: : : : : +- Join (370)
: : : : : :- Project (340)
: : : : : : +- Project (339)
: : : : : : +- Generate (338)
: : : : : : +- Project (337)
: : : : : : +- Generate (336)
: : : : : : +- Project (335)
: : : : : : +- Project (334)
: : : : : : +- Filter (333)
: : : : : : +- Repartition (332)
: : : : : : +- LogicalRelation (331)
: : : : : +- Deduplicate (369)
: : : : : +- Project (368)
: : : : : +- Project (367)
: : : : : +- Project (366)
: : : : : +- Project (365)
: : : : : +- Project (364)
: : : : : +- Generate (363)
: : : : : +- Project (362)
: : : : : +- Generate (361)
: : : : : +- Project (360)
: : : : : +- Join (359)
: : : : : :- Project (356)
: : : : : : +- Project (355)
: : : : : : +- Join (354)
: : : : : : :- SubqueryAlias (350)
: : : : : : : +- Project (349)
: : : : : : : +- Join (348)
: : : : : : : :- Project (343)
: : : : : : : : +- RepartitionByExpression (342)
: : : : : : : : +- LogicalRelation (341)
: : : : : : : +- Project (347)
: : : : : : : +- Project (346)
: : : : : : : +- Repartition (345)
: : : : : : : +- LogicalRelation (344)
: : : : : : +- Project (353)
: : : : : : +- Repartition (352)
: : : : : : +- LogicalRelation (351)
: : : : : +- Repartition (358)
: : : : : +- LogicalRelation (357)
: : : : +- Project (407)
: : : : +- Project (406)
: : : : +- Project (405)
: : : : +- Project (404)
: : : : +- Generate (403)
: : : : +- Project (402)
: : : : +- Generate (401)
: : : : +- Project (400)
: : : : +- Join (399)
: : : : :- Project (396)
: : : : : +- Project (395)
: : : : : +- Join (394)
: : : : : :- SubqueryAlias (390)
: : : : : : +- Project (389)
: : : : : : +- Join (388)
: : : : : : :- Project (383)
: : : : : : : +- RepartitionByExpression (382)
: : : : : : : +- LogicalRelation (381)
: : : : : : +- Project (387)
: : : : : : +- Project (386)
: : : : : : +- Repartition (385)
: : : : : : +- LogicalRelation (384)
: : : : : +- Project (393)
: : : : : +- Repartition (392)
: : : : : +- LogicalRelation (391)
: : : : +- Repartition (398)
: : : : +- LogicalRelation (397)
: : : +- SerializeFromObject (633)
: : : +- MapElements (632)
: : : +- DeserializeToObject (631)
: : : +- Aggregate (630)
: : : +- Project (629)
: : : +- Project (628)
: : : +- Join (627)
: : : :- Project (625)
: : : : +- Project (624)
: : : : +- Project (623)
: : : : +- Project (622)
: : : : +- Project (621)
: : : : +- Project (620)
: : : : +- Join (619)
: : : : :- Project (449)
: : : : : +- Project (448)
: : : : : +- Project (447)
: : : : : +- Project (446)
: : : : : +- Generate (445)
: : : : : +- Project (444)
: : : : : +- Generate (443)
: : : : : +- Project (442)
: : : : : +- Join (441)
: : : : : :- Project (438)
: : : : : : +- Project (437)
: : : : : : +- Join (436)
: : : : : : :- SubqueryAlias (432)
: : : : : : : +- Project (431)
: : : : : : : +- Join (430)
: : : : : : : :- Project (425)
: : : : : : : : +- RepartitionByExpression (424)
: : : : : : : : +- LogicalRelation (423)
: : : : : : : +- Project (429)
: : : : : : : +- Project (428)
: : : : : : : +- Repartition (427)
: : : : : : : +- LogicalRelation (426)
: : : : : : +- Project (435)
: : : : : : +- Repartition (434)
: : : : : : +- LogicalRelation (433)
: : : : : +- Repartition (440)
: : : : : +- LogicalRelation (439)
: : : : +- Project (618)
: : : : +- Aggregate (617)
: : : : +- Project (616)
: : : : +- Join (615)
: : : : :- Project (531)
: : : : : +- Filter (530)
: : : : : +- Join (529)
: : : : : :- Filter (501)
: : : : : : +- Project (500)
: : : : : : +- Project (499)
: : : : : : +- Generate (498)
: : : : : : +- Project (497)
: : : : : : +- Aggregate (496)
: : : : : : +- Project (495)
: : : : : : +- Generate (494)
: : : : : : +- Join (493)
: : : : : : :- Repartition (451)
: : : : : : : +- LogicalRelation (450)
: : : : : : +- Project (492)
: : : : : : +- Join (491)
: : : : : : :- Project (461)
: : : : : : : +- Project (460)
: : : : : : : +- Generate (459)
: : : : : : : +- Project (458)
: : : : : : : +- Generate (457)
: : : : : : : +- Project (456)
: : : : : : : +- Project (455)
: : : : : : : +- Filter (454)
: : : : : : : +- Repartition (453)
: : : : : : : +- LogicalRelation (452)
: : : : : : +- Deduplicate (490)
: : : : : : +- Project (489)
: : : : : : +- Project (488)
: : : : : : +- Project (487)
: : : : : : +- Project (486)
: : : : : : +- Project (485)
: : : : : : +- Generate (484)
: : : : : : +- Project (483)
: : : : : : +- Generate (482)
: : : : : : +- Project (481)
: : : : : : +- Join (480)
: : : : : : :- Project (477)
: : : : : : : +- Project (476)
: : : : : : : +- Join (475)
: : : : : : : :- SubqueryAlias (471)
: : : : : : : : +- Project (470)
: : : : : : : : +- Join (469)
: : : : : : : : :- Project (464)
: : : : : : : : : +- RepartitionByExpression (463)
: : : : : : : : : +- LogicalRelation (462)
: : : : : : : : +- Project (468)
: : : : : : : : +- Project (467)
: : : : : : : : +- Repartition (466)
: : : : : : : : +- LogicalRelation (465)
: : : : : : : +- Project (474)
: : : : : : : +- Repartition (473)
: : : : : : : +- LogicalRelation (472)
: : : : : : +- Repartition (479)
: : : : : : +- LogicalRelation (478)
: : : : : +- Project (528)
: : : : : +- Project (527)
: : : : : +- Project (526)
: : : : : +- Project (525)
: : : : : +- Generate (524)
: : : : : +- Project (523)
: : : : : +- Generate (522)
: : : : : +- Project (521)
: : : : : +- Join (520)
: : : : : :- Project (517)
: : : : : : +- Project (516)
: : : : : : +- Join (515)
: : : : : : :- SubqueryAlias (511)
: : : : : : : +- Project (510)
: : : : : : : +- Join (509)
: : : : : : : :- Project (504)
: : : : : : : : +- RepartitionByExpression (503)
: : : : : : : : +- LogicalRelation (502)
: : : : : : : +- Project (508)
: : : : : : : +- Project (507)
: : : : : : : +- Repartition (506)
: : : : : : : +- LogicalRelation (505)
: : : : : : +- Project (514)
: : : : : : +- Repartition (513)
: : : : : : +- LogicalRelation (512)
: : : : : +- Repartition (519)
: : : : : +- LogicalRelation (518)
: : : : +- Aggregate (614)
: : : : +- Project (613)
: : : : +- Filter (612)
: : : : +- Join (611)
: : : : :- Filter (583)
: : : : : +- Project (582)
: : : : : +- Project (581)
: : : : : +- Generate (580)
: : : : : +- Project (579)
: : : : : +- Aggregate (578)
: : : : : +- Project (577)
: : : : : +- Generate (576)
: : : : : +- Join (575)
: : : : : :- Repartition (533)
: : : : : : +- LogicalRelation (532)
: : : : : +- Project (574)
: : : : : +- Join (573)
: : : : : :- Project (543)
: : : : : : +- Project (542)
: : : : : : +- Generate (541)
: : : : : : +- Project (540)
: : : : : : +- Generate (539)
: : : : : : +- Project (538)
: : : : : : +- Project (537)
: : : : : : +- Filter (536)
: : : : : : +- Repartition (535)
: : : : : : +- LogicalRelation (534)
: : : : : +- Deduplicate (572)
: : : : : +- Project (571)
: : : : : +- Project (570)
: : : : : +- Project (569)
: : : : : +- Project (568)
: : : : : +- Project (567)
: : : : : +- Generate (566)
: : : : : +- Project (565)
: : : : : +- Generate (564)
: : : : : +- Project (563)
: : : : : +- Join (562)
: : : : : :- Project (559)
: : : : : : +- Project (558)
: : : : : : +- Join (557)
: : : : : : :- SubqueryAlias (553)
: : : : : : : +- Project (552)
: : : : : : : +- Join (551)
: : : : : : : :- Project (546)
: : : : : : : : +- RepartitionByExpression (545)
: : : : : : : : +- LogicalRelation (544)
: : : : : : : +- Project (550)
: : : : : : : +- Project (549)
: : : : : : : +- Repartition (548)
: : : : : : : +- LogicalRelation (547)
: : : : : : +- Project (556)
: : : : : : +- Repartition (555)
: : : : : : +- LogicalRelation (554)
: : : : : +- Repartition (561)
: : : : : +- LogicalRelation (560)
: : : : +- Project (610)
: : : : +- Project (609)
: : : : +- Project (608)
: : : : +- Project (607)
: : : : +- Generate (606)
: : : : +- Project (605)
: : : : +- Generate (604)
: : : : +- Project (603)
: : : : +- Join (602)
: : : : :- Project (599)
: : : : : +- Project (598)
: : : : : +- Join (597)
: : : : : :- SubqueryAlias (593)
: : : : : : +- Project (592)
: : : : : : +- Join (591)
: : : : : : :- Project (586)
: : : : : : : +- RepartitionByExpression (585)
: : : : : : : +- LogicalRelation (584)
: : : : : : +- Project (590)
: : : : : : +- Project (589)
: : : : : : +- Repartition (588)
: : : : : : +- LogicalRelation (587)
: : : : : +- Project (596)
: : : : : +- Repartition (595)
: : : : : +- LogicalRelation (594)
: : : : +- Repartition (601)
: : : : +- LogicalRelation (600)
: : : +- LogicalRelation (626)
: : +- Project (678)
: : +- Project (677)
: : +- Join (676)
: : :- Project (646)
: : : +- Project (645)
: : : +- Generate (644)
: : : +- Project (643)
: : : +- Generate (642)
: : : +- Project (641)
: : : +- Project (640)
: : : +- Filter (639)
: : : +- Repartition (638)
: : : +- LogicalRelation (637)
: : +- Deduplicate (675)
: : +- Project (674)
: : +- Project (673)
: : +- Project (672)
: : +- Project (671)
: : +- Project (670)
: : +- Generate (669)
: : +- Project (668)
: : +- Generate (667)
: : +- Project (666)
: : +- Join (665)
: : :- Project (662)
: : : +- Project (661)
: : : +- Join (660)
: : : :- SubqueryAlias (656)
: : : : +- Project (655)
: : : : +- Join (654)
: : : : :- Project (649)
: : : : : +- RepartitionByExpression (648)
: : : : : +- LogicalRelation (647)
: : : : +- Project (653)
: : : : +- Project (652)
: : : : +- Repartition (651)
: : : : +- LogicalRelation (650)
: : : +- Project (659)
: : : +- Repartition (658)
: : : +- LogicalRelation (657)
: : +- Repartition (664)
: : +- LogicalRelation (663)
: +- Project (686)
: +- Filter (685)
: +- Project (684)
: +- Generate (683)
: +- Repartition (682)
: +- LogicalRelation (681)
+- Project (703)
+- Filter (702)
+- Project (701)
+- Aggregate (700)
+- Filter (699)
+- Repartition (698)
+- LogicalRelation (697)
(1) Execute SaveIntoDataSourceCommand
Output: []
(2) SaveIntoDataSourceCommand
Arguments: org.apache.spark.sql.kafka010.KafkaSourceProvider@788ef176, [kafka.ssl.keystore.type=PEM, kafka.ssl.truststore.certificates=-----BEGIN CERTIFICATE-----
MIIGDzCCA/egAwIBAgIUJRTgKUjNpiA/y4yfE+RwMDi71fEwDQYJKoZIhvcNAQEL
BQAwgY4xCzAJBgNVBAYTAkRFMRswGQYDVQQIDBJCYWRlbi1XdWVydHRlbWJlcmcx
ETAPBgNVBAcMCFdhbGxkb3JmMQ8wDQYDVQQKDAZTQVAgU0UxHzAdBgNVBAsMFlNB
UCBDUCBEYXRhIE1hbmFnZW1lbnQxHTAbBgNVBAMMFFNBUCBTRSBLYWZrYSBSb290
IENBMB4XDTI0MDIwODEzMTY1NloXDTI3MDUyMzEzMTY1NlowgY4xCzAJBgNVBAYT
AkRFMRswGQYDVQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxETAPBgNVBAcMCFdhbGxk
b3JmMQ8wDQYDVQQKDAZTQVAgU0UxHzAdBgNVBAsMFlNBUCBDUCBEYXRhIE1hbmFn
ZW1lbnQxHTAbBgNVBAMMFFNBUCBTRSBLYWZrYSBSb290IENBMIICIjANBgkqhkiG
9w0BAQEFAAOCAg8AMIICCgKCAgEAoLH563sTndme/L5sUH/LggOO5sgRk6D6eYJi
YgPZFX/o8a0dctgMTBK574kPAZeniwvOIUUeGhKM/Ho4ou/B3XDD/8WtoOIZt4lj
QGyeSlZVFtCI3Ip/ENj5gIuFhO6N209mpw9wIgjhCdCTU+g6uaAe440aqCMhVO5I
54bHp4hSHwkLdNZnsRjSopufEKxWbJm52w7lKHwBwNc0cAckiagne6FbBTliF4K/
bgmfRRwP9fzjcmgno+GGgKastNkJVh6Ku/2NCpOKSzQiGNAQAvqbZbpQIkCt4/PK
Nj4c5pjbRSajwt8JWNHRJ9muJz2Db7ZceQF7H/vcAwlu/IK/ARHygfA72IY164du
QN1qJyi1DkPs1qm5cuA8WbfL8KSqIFeiKoInHL524zeK2Yt5b89sS00ydtLSYbri
1kd31McUCHcj66DDX5xBbNg7bgRx09DNpfwKlUnwC7tphz1DLJprJ9OvhjEZi0w7
TNrL21yETIKGG0qSgebIhLPWTG650i2hEM2dF1t9RfVB4qdhaxS194rkwQPZ2lQ8
74hWnuqiZ3L4XhMp1AO86UoFEWyeCbIFsZ4YHnCNfBOO4t8LSPpUiV9bTIwqG549
upI9tWMZMVV59GiuA4M9oit7vYa1eNxpUhKWpqAVCA66tETln04umAKsywt06pUn
0udI1OsCAwEAAaNjMGEwHQYDVR0OBBYEFGRMbSqCPP1qeNX3hEYn4YAClp/cMB8G
A1UdIwQYMBaAFGRMbSqCPP1qeNX3hEYn4YAClp/cMA8GA1UdEwEB/wQFMAMBAf8w
DgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBfn+8f1fmSSpUCe1ks
OB6A4KubhEDsQ3XUZ7myBU+nMhLAoPflra3+jcUcq3fqR/ybK2rfEK+Vngf8NBou
YP+1p/QaWJPgzzEEGEEAQx5U57HbnPw7DoDJaUkIoqT3gmLkWTw9R1t+AK+neHnL
tfUygvBkLevcXG4klLjFW1B5/8T9hIg7wK5httXgr+P6sic458tB2oImQWkUIaCh
3NkVAWtLjz81LiaM0fgiI0/kiufq0FZWqhazTTz8qY/qocdHbhEUmA4wSjL1XB/K
UrUC0yB7uN5vpCpunWC3EhkzCLgemIm+DPyREg7euGvg6URuP1VIsoaLstxX6caB
DROwWXY3P7kVZtzHXK6g6lrJAYxtP9tf6dyZhFHf0/XL7kwHVabU+s9MgvDvIaxA
V588fCGJbB9A+QrWxF2QKDzUrygHHd8y+EE6Oj6rbnNEgkxxuP+qDiza/46MVPVh
KzF6gepXlv9fgm2+v3Mu/HRKVAoHPOKefC3KeNv8wZkPn76dC4CEZHU+zB+YgvQ3
n1sgzPdcFfV+0wLOhLJkzbTWJ9znspJMZWYn6CR1VWbiWgDMfM9R18onHGxcAxn4
qfoGuXQDP5cnSOsIUVG75z6dfixzzn41hAaW0bQXP8nbMve5LcZhvmDQtxqNiFZu
/jpDfYNIFFeK2b96ea3PMzQYLg==
-----END CERTIFICATE-----, kafka.bootstrap.servers=132.220.198.208:50094,132.220.198.208:50194,132.220.198.208:50294, kafka.ssl.keystore.key=-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDZh6wkSCIlrWOg
Y/75q3QvxBmWBWMsUuQ/NTF5bbZBvmYZj2BhtYr6YPhWxcSGbj4wDugL7NBWlpjk
ESSuCKM67jlrDOzgu1dl2UCHaN4mXgo6CULIPemYX/6fEayZh7sCW3K0ETpuHtD1
1GVxsHh8xhqTcJGgb3sefec+KZ2CQJMyJOiq0q6kNhOEEUxWY5T7q/W6PFzWXuSd
oCKg+J0dIotz3ay61TPryYN8tzxbbgXXeutJD81UqCyGILoBzAzILHJsUE0P/h/K
YzMIY0j3E5jznnp/oT5ZKZXJC9cmEIX6XHxaRv92UJQ0x6GxSNsTZtJj7Lb/vn/8
wGfPJWCPAgMBAAECggEAMsxwoj5oHwVZPSTs79Aev2LbmMGkUb7/x1T8Oz+oLr0w
aaqmVtsG3AaWJ+liRgRrqFxqyxIf6wCbLrNkLfIdcE8egIXRsX9+Xu33mEegjTQr
zjbIbiurJ+bO9sWxWV8tiFTjufJGA15V7PqPQBf2Yyj+Hs1MbLtr9IhxXn5oZniQ
zym7ijt/BbUCLzeq7kX3oOGmBfd4z3GNbekS7/md4jkHfFFeBCDjN2mgVb0rYxvH
sWb+w6lOmvSQ0AaVq6BDWUoUWOFBfTr+RDUyZ67Brr+dZE6xIFag+BH4IQFjSZFT
1E/xDoqOa5aRvbyvTeVnsVm0GR5AgIpxOLDLDdB1FQKBgQDtddvXU4uWx8jUk83W
Btdok3zA32Tztv2SlIb8u8b17jVt7xNbOL6W9wfg5Gxdx+P8BBm8xuWL6i3ky2FF
5Et4SxUIH72+lh8mYM2ieZSGnJrcznwaGf5+GFU/qSLN2UpKhe17M9vUVkKXJKgg
XQqk0VKUUZ9GlmtM6EhWBvcMcwKBgQDqg3Z2MpYQ5Aug1qgj30bkNPpkaHhN1W6S
CLjJJIWZtDWS2oLFXlgYDd/wxXJ8SH+lU4GQBDm5QL2cVWqxrQN6eiPswSZ8IpBs
f/uBkobX32wLiqQuFNTI9NSzeqNJqqL3AVJNj03WjxS7fvdrAWG9JCfwgslTj4Wz
4F9IvtSQdQKBgG+ZBEieKuwh2HCPRh1f+bxcFDVQx9ECHwnUY9xDI65Q1StlQGOO
t4ObdUhsEcHBP5QhGTdvAlJPLGJqcry2HgHax3eZ80KuqtUOiZXiLbtVvjInmItr
y/7W0Lmqc4Dqrc94QbO1G4sfPwxpXdpX37i152ltMr2p06PBRr2naFOhAoGAVLtB
Dv3CCMJMjUVhpOxkUcnuel7gsMaf17W9Bjfi6aEaBkBbJXKsA6znr7e3YL5VGGfu
lRlhvdRtbdHS5fVsH1GIL1+uRwW6BunK9or5m3/HKvhhz6CJLT6Ap4R1AQXdMb/R
e+J+LjquM/xw6sGqDcvFfnnSwhVGKrKz2rXQWY0CgYBtcLIXQMjU22Wi1Qa6ie+/
abDmT9liC4uJXwPRvh5mHUgDyvMiaxscr/SmQfNQr7vyXJVjezEiSkRNaFsa6VtU
v2D99HWZ1H8gdJ6Bf+bFkxdnd7ZUf/RkObFG32sh3XUGhpirqTQOXi/I9X1sdl9a
HG1hbQINTMIJjtIDbm5j0g==
-----END PRIVATE KEY-----, topic=InsightsTopic, kafka.ssl.truststore.type=PEM, kafka.ssl.keystore.certificate.chain=-----BEGIN CERTIFICATE-----
MIIG+jCCBOKgAwIBAgIRAMueG7onFxFz1xcCi5wVLkIwDQYJKoZIhvcNAQELBQAw
eTELMAkGA1UEBhMCREUxDTALBgNVBAcMBEVVMTAxDzANBgNVBAoMBlNBUCBTRTEj
MCEGA1UECwwaU0FQIENsb3VkIFBsYXRmb3JtIENsaWVudHMxJTAjBgNVBAMMHFNB
UCBDbG91ZCBQbGF0Zm9ybSBDbGllbnQgQ0EwHhcNMjYwNTE5MDcwNzQ4WhcNMjcw
NTE5MDgwNzQ4WjCCAfExCzAJBgNVBAYTAkRFMQ8wDQYDVQQKDAZTQVAgU0UxIzAh
BgNVBAsMGlNBUCBDbG91ZCBQbGF0Zm9ybSBDbGllbnRzMRowGAYDVQQLDBFjZi1l
dTIwLXNhcC1rYWZrYTGCAWMwggFfBgNVBAcMggFWRnNPdzFqWm55V3dkVjVGRkxM
bDVEaXJCaTlGQTVLVTdmTHgxYklvSkVZVUZPaTE1OHRMRzk5RTNURU96Y1FzM2tu
aVlPdGdQNE1iaVVMWUhoak8yRVZQZ2hEQ09OOVRKSW5iRWRZeU53LUdBMGJnME1R
SFgxb2tSMnJwMlA1M05nYUp1Q09uaHkxc0wzYVFsS1ZBMmZvR21Dakxvc19vZnB4
cHRHOGxZZXdybzd4eTJIejBYT2E4WGZYdTJNMFBqOHoxRUUzUllldWJCSTFxYUdW
ZExxUGlYR0R6ZHE4RGktRkFyNy1wV0JGcDNhR0FPU2lxUzFjLXUzODFsZzg2NC1l
UlJrclNQVnRjTTh0MzVWSkI3YzNDb0VLb0Rzc3ozSHRraVBwNm5RNmdlcVV2VXZi
OHRoWGVIZWJJcXdkcjZITWFUVnVwMnlYbjV6ODZGUW1tOHNBMSkwJwYDVQQDDCBz
YnNzX2l2Z2V6N2ZodnRxYXk0b2tnMnRsYjJhdmgyeTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBANmHrCRIIiWtY6Bj/vmrdC/EGZYFYyxS5D81MXlttkG+
ZhmPYGG1ivpg+FbFxIZuPjAO6Avs0FaWmOQRJK4IozruOWsM7OC7V2XZQIdo3iZe
CjoJQsg96Zhf/p8RrJmHuwJbcrQROm4e0PXUZXGweHzGGpNwkaBvex595z4pnYJA
kzIk6KrSrqQ2E4QRTFZjlPur9bo8XNZe5J2gIqD4nR0ii3PdrLrVM+vJg3y3PFtu
Bdd660kPzVSoLIYgugHMDMgscmxQTQ/+H8pjMwhjSPcTmPOeen+hPlkplckL1yYQ
hfpcfFpG/3ZQlDTHobFI2xNm0mPstv++f/zAZ88lYI8CAwEAAaOCAQEwgf4wCQYD
VR0TBAIwADAfBgNVHSMEGDAWgBTtx8AzXhKk93kym3vuCviohXiMLzAdBgNVHQ4E
FgQUgdZcpxA5k3deyQbE+UCnuO2HgWUwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQM
MAoGCCsGAQUFBwMCMIGLBgNVHR8EgYMwgYAwfqB8oHqGeGh0dHA6Ly9zYXAtY2xv
dWQtcGxhdGZvcm0tY2xpZW50LWNhLWV1MTAtY3Jscy5zMy5ldS1jZW50cmFsLTEu
YW1hem9uYXdzLmNvbS9jcmwvMmExYjQ5YWMtZmMwMi00YTQ4LTk5M2EtOWE0ZDBk
ZmVjMzNlLmNybDANBgkqhkiG9w0BAQsFAAOCAgEALo/FgW8ViN4bjBBj9oHJsJ2Q
plCI5YBBFbHoHUQVZUG7sExYr+ZYmEd2OBmEX6G383Tm6alMSfgvuDaEvFk46brt
WQRYIIKl9qfNKCdeltsbSgkTrVByGeUJg3o+PCVTtkoYr5la83kvgZzwTpdI5xRU
OfNnmmHkH6qrBkg9ndksHcDcUVSiYX1q3Hnad/4sWKukcncfnUF9eMTNwDMG1f48
56rC36/JfHaWg3C3Wp9YCOF1du/AzT5/4OvtzM8P41odqnMJphs78bSn/xK86yca
/4clhGChyCRHiHIBXhHx7lvpmRBCDlCU8bSvtdywMlCobobAzGz6hFGHqWt10Pm2
kWXfUPVqfiS4gBPDQxhgfp5nni35UXYUBZH0pwBz6L6ReVtKa2TtPksYlbY0hK+q
0JmZBr4hWmTx02cbZ5ktI8AWfDQCzGExqb2fA789B5+pszaeskxk/EQXth915ZYD
NBkgcSYfhBXws0qwUNcrNztQSidM+p9pBiP/QLkVZ9YlsH34VKi59imbD/4CT/wT
1kcnfvWOwKhrc6ashj1HzupHjFJlKbIJCKDeEiUK/tEd7rLmPyYKaOeP6yjVLkvF
1chyqu8Qf2rQsDkUUlnPhmDlpCX49c+qAHdXy+nMsfpoVoOVldhun7rdUDBSsPiv
4oHoOCJwX+Gen9FfsT0=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGYDCCBEigAwIBAgITcAAAAA0Y1cDKQ147YwAAAAAADTANBgkqhkiG9w0BAQsF
ADBNMQswCQYDVQQGEwJERTERMA8GA1UEBwwIV2FsbGRvcmYxDzANBgNVBAoMBlNB
UCBTRTEaMBgGA1UEAwwRU0FQIENsb3VkIFJvb3QgQ0EwHhcNMjMxMTIxMTAzNjE1
WhcNMzMxMTIxMTA0NjE1WjB5MQswCQYDVQQGEwJERTENMAsGA1UEBwwERVUxMDEP
MA0GA1UECgwGU0FQIFNFMSMwIQYDVQQLDBpTQVAgQ2xvdWQgUGxhdGZvcm0gQ2xp
ZW50czElMCMGA1UEAwwcU0FQIENsb3VkIFBsYXRmb3JtIENsaWVudCBDQTCCAiIw
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAI8hpWjKK+OzKOPvXmlzD0EaWT9I
sINsnw7ek+BuxCtWnWWX1ILIqHjX+47dhD9IY/tUPiLFEI7WAFGoyzSmjY1qclx4
ZFkqvYhOoZe3r6LWL78TX/o1mRYLgg2SCDkDDsmnrT0l/X2fnW+2hb70s/d7q84M
mbrIC1gI0jtAJvFMZm0+82d+a0b3XYrUmmE6FTN0avFPcW4H83lFQJLJKwQ0HI72
Bno6ptle2k7QLZISkw0Mr76qJuHSi6DZxmGb0Ecp5g6X4Q++YdgmMu5gtQikkfIs
/qFnjPdRMKXblA0szRH2HlgNgmflpB3361oWz8jAwkujQz2VLeL+OGoVscAmLcUn
NYieXdUDnaAuUqgKYnc4QyGygVqMMx3g+1VTnXN+xwZ4oinaDucIWkolRZfuOIXo
g8gh50jAO2qy3Z+l783PCFA2RdncMThEuEctvSQXqQex2w/JpXKk+jkhnNOPYdWS
tbwOjofN/CRmlrOKNw8GRCT0YJCrQ/ZP6/C+yDlgAl617wbzjPNhfTi8T+7k1794
QPTKTRcPyJ6tBv6JOb0A7C6UfAA/pEVDhOX9NnB93mFYZxwEw6n2JLhRG/rNvEdf
7NKAs6M1EYhVNFD8iDWukpR2/jGJTgsxJvRk5nEPavgkIS2Mffv2zFnIpaPqv9ox
M01BXHJs6vK6rePfAgMBAAGjggELMIIBBzASBgNVHRMBAf8ECDAGAQH/AgEAMB0G
A1UdDgQWBBTtx8AzXhKk93kym3vuCviohXiMLzAfBgNVHSMEGDAWgBQcvGYrDsqN
S5+Nk3GpD8pnRmkTIjBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY2RwLnBraS5j
by5zYXAuY29tL2NkcC9TQVAlMjBDbG91ZCUyMFJvb3QlMjBDQS5jcmwwVQYIKwYB
BQUHAQEESTBHMEUGCCsGAQUFBzAChjlodHRwOi8vYWlhLnBraS5jby5zYXAuY29t
L2FpYS9TQVAlMjBDbG91ZCUyMFJvb3QlMjBDQS5jcnQwDgYDVR0PAQH/BAQDAgEG
MA0GCSqGSIb3DQEBCwUAA4ICAQBWP3oZa36jJ+4JakH1kEkCcoKffY9UYFwuBCAL
3jdBruhHH8aLGseI2Zhl5r7os1rkD0Sl55xrM4i1gyeRAyTM/Pe28cBIxFs2vbBC
+4mpIfKPSuTw61P3FOeaqHUgvVJsIiHgfKbMIDzrvwAUMTr453a77DrKZ/oAXW3K
xelNxhfjiCDsWIs++6NbSIwZsQjxPZp39HyN0XBh6BoxN5dmwT9AnlzkqyBiIPwi
TrNxcdCB4MDrwLRZlW21nRb/nTDCfavITqJNAjz1vzNXpSfda74MINstrOwsAcsX
gkYJpxPK7q9VV3vx2ZfZwRIBIxXlisUD/wIkz7zteStT2yfkV8uoh2pweedBgdX1
yah+dWl5LXvSRtmxgGL2CsxZcbQHbnh10OBS9qXBbeN3UswwoXKigYy9v0JkKmKg
knhhNG5+SYVUUzWBCy9DyM2TDMH2VtiZcu2dFqRuzRTi68GXaN9HCIr6gxjqbaPf
yjtQppmfobrrHpBpuI7jM8RPPg2N3Kmj/Wzmf4uPNJT00WUiCG3FdWO4cCX/UxJs
dxAXH+QhykGB1t28JbYpzO1NQohd2shlShkpgqn4ldS6kPC5VWSGUod3139KCrFO
HYFN+t5tRFJ5amXg7nzYf2tGFzsWfa8qMLtuKZWBo+2hvDaxreSSlfTQ6M8QHvS7
TG767A==
-----END CERTIFICATE-----, kafka.security.protocol=SSL], ErrorIfExists
(3) LogicalRelation
Arguments: parquet, [product#142980, plant#142981, orderDateTime#142982, planningStartDateTime#142983], false
(4) RepartitionByExpression
Arguments: [product#142980, plant#142981], 25
(5) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982]
(6) LogicalRelation
Arguments: parquet, [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992], false
(7) Repartition
Arguments: 25, true
(8) Project
Arguments: [systemId#142985, internalUUID#142986, plant#142987, product#142988, blockedForReplenishmentStartingFrom#142989, productionAspect#142990, salesPlant#142991, listing#142992, struct(systemId, systemId#142985, internalUUID, internalUUID#142986, plant, plant#142987, product, product#142988, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#142989, productionAspect, productionAspect#142990, salesPlant, salesPlant#142991, listing, listing#142992) AS productPlant#142994]
(9) Project
Arguments: [productPlant#142994]
(10) Join
Arguments: LeftOuter, ((product#142980 <=> productPlant#142994.product.internalRefUUID) AND (plant#142981 <=> productPlant#142994.plant.internalRefUUID))
(11) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994]
(12) SubqueryAlias
Arguments: wl
(13) LogicalRelation
Arguments: parquet, [systemId#142997, internalUUID#142998, id#142999, displayId#143000, name#143001, category#143002, companyCode#143003, address#143004, mainDistributionChain#143005, mainPurchasingOrganization#143006, validPurchasingOrganizations#143007, productGroup#143008], false
(14) Repartition
Arguments: 25, true
(15) Project
Arguments: [internalUUID#142998, address#143004.timeZone.code AS timezonecode#143009]
(16) Join
Arguments: LeftOuter, (plant#142981 <=> internalUUID#142998)
(17) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, internalUUID#142998, CASE WHEN isnotnull(timezonecode#143009) THEN timezonecode#143009 ELSE UTC END AS timezonecode#143012]
(18) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012]
(19) LogicalRelation
Arguments: parquet, [systemId#143013, internalUUID#143014, id#143015, displayId#143016, name#143017, baseUnitOfMeasure#143018, unitOfMeasures#143019, unitOfMeasureConversions#143020, productionAspect#143021, salesAspect#143022, procurementAspect#143023, productGroup#143024], false
(20) Repartition
Arguments: 25, true
(21) Join
Arguments: LeftOuter, (product#142980 = internalUUID#143014)
(22) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, systemId#143013, internalUUID#143014, id#143015, displayId#143016, name#143017, baseUnitOfMeasure#143018, unitOfMeasures#143019, unitOfMeasureConversions#143020, productionAspect#143021, salesAspect#143022, procurementAspect#143023, productGroup#143024, filter(unitOfMeasureConversions#143020, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#142994.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#142994.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143018.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143018.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143026]
(23) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143026.quantityNumerator), true, [quantityNumerator#143034]
(24) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, systemId#143013, internalUUID#143014, id#143015, displayId#143016, name#143017, baseUnitOfMeasure#143018, unitOfMeasures#143019, unitOfMeasureConversions#143020, productionAspect#143021, salesAspect#143022, procurementAspect#143023, productGroup#143024, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034]
(25) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143026.quantityDenominator), true, [quantityDenominator#143037]
(26) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, systemId#143013, internalUUID#143014, id#143015, displayId#143016, name#143017, baseUnitOfMeasure#143018, unitOfMeasures#143019, unitOfMeasureConversions#143020, productionAspect#143021, salesAspect#143022, procurementAspect#143023, productGroup#143024, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034, quantityDenominator#143037]
(27) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, systemId#143013, internalUUID#143014, id#143015, displayId#143016, name#143017, baseUnitOfMeasure#143018, unitOfMeasures#143019, unitOfMeasureConversions#143020, productionAspect#143021, salesAspect#143022, procurementAspect#143023, productGroup#143024, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034, quantityDenominator#143037, (cast(quantityNumerator#143034 as double) / cast(quantityDenominator#143037 as double)) AS outboundUnit#143038]
(28) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, systemId#143013, internalUUID#143014, id#143015, displayId#143016, name#143017, baseUnitOfMeasure#143018, unitOfMeasures#143019, unitOfMeasureConversions#143020, productionAspect#143021, salesAspect#143022, procurementAspect#143023, productGroup#143024, filteredUnitOfMeasureConversions#143026, quantityNumerator#143034, quantityDenominator#143037, CASE WHEN (isnull(outboundUnit#143038) OR (outboundUnit#143038 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143038 END AS outboundUnit#143039]
(29) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039]
(30) LogicalRelation
Arguments: parquet, [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081], false
(31) Repartition
Arguments: 25, true
(32) LogicalRelation
Arguments: parquet, [marketUnit#143040, description#143041, articleHierarchy#143042, defaultCurrency#143043, responsibilities#143044, replenishmentTypes#143045, distributionCenters#143046, assignedArticleHierarchyNodes#143047, minOrderQtySetting#143048, listingCheck#143049, odsSelection#143050, demandProfiles#143051, constraintProfiles#143052, optimizationProfiles#143053, orderGroupSplitProfiles#143054, supplierMinimumProfiles#143055, multipleRestrictionProfiles#143056, preferredUomSource#143057, handlingOfUnfulfilledDemands#143058, negligibleQuantitiesThreshold#143059, eventtype#143060, minOrderQtySettingInternal#143061], false
(33) Repartition
Arguments: 25, true
(34) Filter
Arguments: (marketUnit#143040 <=> Daily_grocery)
(35) Project
Arguments: [marketUnit#143040, description#143041, articleHierarchy#143042, defaultCurrency#143043, responsibilities#143044, replenishmentTypes#143045, distributionCenters#143046, assignedArticleHierarchyNodes#143047, minOrderQtySetting#143048, listingCheck#143049, odsSelection#143050, demandProfiles#143051, constraintProfiles#143052, optimizationProfiles#143053, orderGroupSplitProfiles#143054, supplierMinimumProfiles#143055, multipleRestrictionProfiles#143056, preferredUomSource#143057, handlingOfUnfulfilledDemands#143058, negligibleQuantitiesThreshold#143059, eventtype#143060, minOrderQtySettingInternal#143061]
(36) Project
Arguments: [distributionCenters#143046]
(37) Generate
Arguments: explode(distributionCenters#143046), false, [distributionCenters#143064]
(38) Project
Arguments: [distributionCenters#143064]
(39) Generate
Arguments: explode(distributionCenters#143064.storageLocations), false, [storageLocations#143071]
(40) Project
Arguments: [distributionCenters#143064.id AS plantId#143065, distributionCenters#143064.internalRefUUID AS plantUuid#143066, storageLocations#143071]
(41) Project
Arguments: [plantId#143065, plantUuid#143066, storageLocations#143071.id AS storageLocId#143072, storageLocations#143071.internalRefUUID AS storageLocUuid#143073]
(42) LogicalRelation
Arguments: parquet, [product#143336, plant#143337, orderDateTime#143338, planningStartDateTime#143339], false
(43) RepartitionByExpression
Arguments: [product#143336, plant#143337], 25
(44) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338]
(45) LogicalRelation
Arguments: parquet, [systemId#143340, internalUUID#143341, plant#143342, product#143343, blockedForReplenishmentStartingFrom#143344, productionAspect#143345, salesPlant#143346, listing#143347], false
(46) Repartition
Arguments: 25, true
(47) Project
Arguments: [systemId#143340, internalUUID#143341, plant#143342, product#143343, blockedForReplenishmentStartingFrom#143344, productionAspect#143345, salesPlant#143346, listing#143347, struct(systemId, systemId#143340, internalUUID, internalUUID#143341, plant, plant#143342, product, product#143343, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143344, productionAspect, productionAspect#143345, salesPlant, salesPlant#143346, listing, listing#143347) AS productPlant#143348]
(48) Project
Arguments: [productPlant#143348]
(49) Join
Arguments: LeftOuter, ((product#143336 <=> productPlant#143348.product.internalRefUUID) AND (plant#143337 <=> productPlant#143348.plant.internalRefUUID))
(50) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348]
(51) SubqueryAlias
Arguments: wl
(52) LogicalRelation
Arguments: parquet, [systemId#143349, internalUUID#143350, id#143351, displayId#143352, name#143353, category#143354, companyCode#143355, address#143356, mainDistributionChain#143357, mainPurchasingOrganization#143358, validPurchasingOrganizations#143359, productGroup#143360], false
(53) Repartition
Arguments: 25, true
(54) Project
Arguments: [internalUUID#143350, address#143356.timeZone.code AS timezonecode#143361]
(55) Join
Arguments: LeftOuter, (plant#143337 <=> internalUUID#143350)
(56) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, internalUUID#143350, CASE WHEN isnotnull(timezonecode#143361) THEN timezonecode#143361 ELSE UTC END AS timezonecode#143362]
(57) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362]
(58) LogicalRelation
Arguments: parquet, [systemId#143363, internalUUID#143364, id#143365, displayId#143366, name#143367, baseUnitOfMeasure#143368, unitOfMeasures#143369, unitOfMeasureConversions#143370, productionAspect#143371, salesAspect#143372, procurementAspect#143373, productGroup#143374], false
(59) Repartition
Arguments: 25, true
(60) Join
Arguments: LeftOuter, (product#143336 = internalUUID#143364)
(61) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362, systemId#143363, internalUUID#143364, id#143365, displayId#143366, name#143367, baseUnitOfMeasure#143368, unitOfMeasures#143369, unitOfMeasureConversions#143370, productionAspect#143371, salesAspect#143372, procurementAspect#143373, productGroup#143374, filter(unitOfMeasureConversions#143370, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143348.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143348.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143368.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143368.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143375]
(62) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143375.quantityNumerator), true, [quantityNumerator#143376]
(63) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362, systemId#143363, internalUUID#143364, id#143365, displayId#143366, name#143367, baseUnitOfMeasure#143368, unitOfMeasures#143369, unitOfMeasureConversions#143370, productionAspect#143371, salesAspect#143372, procurementAspect#143373, productGroup#143374, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376]
(64) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143375.quantityDenominator), true, [quantityDenominator#143377]
(65) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362, systemId#143363, internalUUID#143364, id#143365, displayId#143366, name#143367, baseUnitOfMeasure#143368, unitOfMeasures#143369, unitOfMeasureConversions#143370, productionAspect#143371, salesAspect#143372, procurementAspect#143373, productGroup#143374, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376, quantityDenominator#143377]
(66) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362, systemId#143363, internalUUID#143364, id#143365, displayId#143366, name#143367, baseUnitOfMeasure#143368, unitOfMeasures#143369, unitOfMeasureConversions#143370, productionAspect#143371, salesAspect#143372, procurementAspect#143373, productGroup#143374, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376, quantityDenominator#143377, (cast(quantityNumerator#143376 as double) / cast(quantityDenominator#143377 as double)) AS outboundUnit#143378]
(67) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362, systemId#143363, internalUUID#143364, id#143365, displayId#143366, name#143367, baseUnitOfMeasure#143368, unitOfMeasures#143369, unitOfMeasureConversions#143370, productionAspect#143371, salesAspect#143372, procurementAspect#143373, productGroup#143374, filteredUnitOfMeasureConversions#143375, quantityNumerator#143376, quantityDenominator#143377, CASE WHEN (isnull(outboundUnit#143378) OR (outboundUnit#143378 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143378 END AS outboundUnit#143379]
(68) Project
Arguments: [product#143336, plant#143337, orderDateTime#143338, productPlant#143348, timezonecode#143362, outboundUnit#143379]
(69) Project
Arguments: [plant#143337]
(70) Deduplicate
Arguments: [plant#143337]
(71) Join
Arguments: Inner, (plantUuid#143066 = plant#143337)
(72) Project
Arguments: [plantId#143065, plantUuid#143066, storageLocId#143072, storageLocUuid#143073]
(73) Join
Arguments: Inner, (plant#143079.internalRefUUID <=> plantUuid#143066)
(74) Generate
Arguments: explode(filter(stockQuantities#143081, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143073) AND (lambda x#143085.storageLocation.Id = storageLocId#143072)), lambda x#143085, false))), false, [stockQuantity#143086]
(75) Project
Arguments: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143080, stockQuantities#143081, plantId#143065, plantUuid#143066, storageLocId#143072, storageLocUuid#143073, stockQuantity#143086]
(76) Aggregate
Arguments: [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076], [plantUuid#143066, internalUUID#143077, plant#143079, product#143078, systemId#143076, first(calculationDateTime#143080, false) AS calculationDateTime#143087, collect_list(stockQuantity#143086, 0, 0) AS stockQuantities#143088]
(77) Project
Arguments: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088]
(78) Generate
Arguments: explode(stockQuantities#143088), false, [stockQuantity#143103]
(79) Project
Arguments: [systemId#143076, internalUUID#143077, product#143078, plant#143079, calculationDateTime#143087, stockQuantities#143088, stockQuantity#143103]
(80) Project
Arguments: [plant#143079.id AS plant#143104, plant#143079.internalRefUUID AS plantUuid#143105, product#143078.id AS product#143106, product#143078.internalRefUUID AS productUuid#143107, calculationDateTime#143087, stockQuantity#143103.storagelocation.id AS storageLocId#143108, stockQuantity#143103.storagelocation.internalRefUUID AS storageLocUuid#143109, stockQuantity#143103.quantity.measure AS quantity#143110, stockQuantity#143103.specialStockIndicator.code AS specialStockIndicator#143111, stockQuantity#143103.stockType.code AS stockType#143112]
(81) Filter
Arguments: ((specialStockIndicator#143111 = ) AND (stockType#143112 = 01))
(82) LogicalRelation
Arguments: parquet, [product#143122, plant#143123, orderDateTime#143124, planningStartDateTime#143125], false
(83) RepartitionByExpression
Arguments: [product#143122, plant#143123], 25
(84) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124]
(85) LogicalRelation
Arguments: parquet, [systemId#143126, internalUUID#143127, plant#143128, product#143129, blockedForReplenishmentStartingFrom#143130, productionAspect#143131, salesPlant#143132, listing#143133], false
(86) Repartition
Arguments: 25, true
(87) Project
Arguments: [systemId#143126, internalUUID#143127, plant#143128, product#143129, blockedForReplenishmentStartingFrom#143130, productionAspect#143131, salesPlant#143132, listing#143133, struct(systemId, systemId#143126, internalUUID, internalUUID#143127, plant, plant#143128, product, product#143129, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143130, productionAspect, productionAspect#143131, salesPlant, salesPlant#143132, listing, listing#143133) AS productPlant#143134]
(88) Project
Arguments: [productPlant#143134]
(89) Join
Arguments: LeftOuter, ((product#143122 <=> productPlant#143134.product.internalRefUUID) AND (plant#143123 <=> productPlant#143134.plant.internalRefUUID))
(90) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134]
(91) SubqueryAlias
Arguments: wl
(92) LogicalRelation
Arguments: parquet, [systemId#143135, internalUUID#143136, id#143137, displayId#143138, name#143139, category#143140, companyCode#143141, address#143142, mainDistributionChain#143143, mainPurchasingOrganization#143144, validPurchasingOrganizations#143145, productGroup#143146], false
(93) Repartition
Arguments: 25, true
(94) Project
Arguments: [internalUUID#143136, address#143142.timeZone.code AS timezonecode#143147]
(95) Join
Arguments: LeftOuter, (plant#143123 <=> internalUUID#143136)
(96) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, internalUUID#143136, CASE WHEN isnotnull(timezonecode#143147) THEN timezonecode#143147 ELSE UTC END AS timezonecode#143148]
(97) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148]
(98) LogicalRelation
Arguments: parquet, [systemId#143149, internalUUID#143150, id#143151, displayId#143152, name#143153, baseUnitOfMeasure#143154, unitOfMeasures#143155, unitOfMeasureConversions#143156, productionAspect#143157, salesAspect#143158, procurementAspect#143159, productGroup#143160], false
(99) Repartition
Arguments: 25, true
(100) Join
Arguments: LeftOuter, (product#143122 = internalUUID#143150)
(101) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148, systemId#143149, internalUUID#143150, id#143151, displayId#143152, name#143153, baseUnitOfMeasure#143154, unitOfMeasures#143155, unitOfMeasureConversions#143156, productionAspect#143157, salesAspect#143158, procurementAspect#143159, productGroup#143160, filter(unitOfMeasureConversions#143156, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143134.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143134.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143154.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143154.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143161]
(102) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143161.quantityNumerator), true, [quantityNumerator#143162]
(103) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148, systemId#143149, internalUUID#143150, id#143151, displayId#143152, name#143153, baseUnitOfMeasure#143154, unitOfMeasures#143155, unitOfMeasureConversions#143156, productionAspect#143157, salesAspect#143158, procurementAspect#143159, productGroup#143160, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162]
(104) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143161.quantityDenominator), true, [quantityDenominator#143163]
(105) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148, systemId#143149, internalUUID#143150, id#143151, displayId#143152, name#143153, baseUnitOfMeasure#143154, unitOfMeasures#143155, unitOfMeasureConversions#143156, productionAspect#143157, salesAspect#143158, procurementAspect#143159, productGroup#143160, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162, quantityDenominator#143163]
(106) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148, systemId#143149, internalUUID#143150, id#143151, displayId#143152, name#143153, baseUnitOfMeasure#143154, unitOfMeasures#143155, unitOfMeasureConversions#143156, productionAspect#143157, salesAspect#143158, procurementAspect#143159, productGroup#143160, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162, quantityDenominator#143163, (cast(quantityNumerator#143162 as double) / cast(quantityDenominator#143163 as double)) AS outboundUnit#143164]
(107) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148, systemId#143149, internalUUID#143150, id#143151, displayId#143152, name#143153, baseUnitOfMeasure#143154, unitOfMeasures#143155, unitOfMeasureConversions#143156, productionAspect#143157, salesAspect#143158, procurementAspect#143159, productGroup#143160, filteredUnitOfMeasureConversions#143161, quantityNumerator#143162, quantityDenominator#143163, CASE WHEN (isnull(outboundUnit#143164) OR (outboundUnit#143164 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143164 END AS outboundUnit#143165]
(108) Project
Arguments: [product#143122, plant#143123, orderDateTime#143124, productPlant#143134, timezonecode#143148, outboundUnit#143165]
(109) Join
Arguments: Inner, ((plantUuid#143105 = plant#143123) AND (productUuid#143107 = product#143122))
(110) Filter
Arguments: (calculationDateTime#143087 <= orderDateTime#143124)
(111) Project
Arguments: [plantUuid#143105 AS plant#143170, productUuid#143107 AS product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110]
(112) LogicalRelation
Arguments: parquet, [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184], false
(113) Repartition
Arguments: 25, true
(114) LogicalRelation
Arguments: parquet, [marketUnit#143185, description#143186, articleHierarchy#143187, defaultCurrency#143188, responsibilities#143189, replenishmentTypes#143190, distributionCenters#143191, assignedArticleHierarchyNodes#143192, minOrderQtySetting#143193, listingCheck#143194, odsSelection#143195, demandProfiles#143196, constraintProfiles#143197, optimizationProfiles#143198, orderGroupSplitProfiles#143199, supplierMinimumProfiles#143200, multipleRestrictionProfiles#143201, preferredUomSource#143202, handlingOfUnfulfilledDemands#143203, negligibleQuantitiesThreshold#143204, eventtype#143205, minOrderQtySettingInternal#143206], false
(115) Repartition
Arguments: 25, true
(116) Filter
Arguments: (marketUnit#143185 <=> Daily_grocery)
(117) Project
Arguments: [marketUnit#143185, description#143186, articleHierarchy#143187, defaultCurrency#143188, responsibilities#143189, replenishmentTypes#143190, distributionCenters#143191, assignedArticleHierarchyNodes#143192, minOrderQtySetting#143193, listingCheck#143194, odsSelection#143195, demandProfiles#143196, constraintProfiles#143197, optimizationProfiles#143198, orderGroupSplitProfiles#143199, supplierMinimumProfiles#143200, multipleRestrictionProfiles#143201, preferredUomSource#143202, handlingOfUnfulfilledDemands#143203, negligibleQuantitiesThreshold#143204, eventtype#143205, minOrderQtySettingInternal#143206]
(118) Project
Arguments: [distributionCenters#143191]
(119) Generate
Arguments: explode(distributionCenters#143191), false, [distributionCenters#143207]
(120) Project
Arguments: [distributionCenters#143207]
(121) Generate
Arguments: explode(distributionCenters#143207.storageLocations), false, [storageLocations#143208]
(122) Project
Arguments: [distributionCenters#143207.id AS plantId#143209, distributionCenters#143207.internalRefUUID AS plantUuid#143210, storageLocations#143208]
(123) Project
Arguments: [plantId#143209, plantUuid#143210, storageLocations#143208.id AS storageLocId#143211, storageLocations#143208.internalRefUUID AS storageLocUuid#143212]
(124) LogicalRelation
Arguments: parquet, [product#143213, plant#143214, orderDateTime#143215, planningStartDateTime#143216], false
(125) RepartitionByExpression
Arguments: [product#143213, plant#143214], 25
(126) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215]
(127) LogicalRelation
Arguments: parquet, [systemId#143217, internalUUID#143218, plant#143219, product#143220, blockedForReplenishmentStartingFrom#143221, productionAspect#143222, salesPlant#143223, listing#143224], false
(128) Repartition
Arguments: 25, true
(129) Project
Arguments: [systemId#143217, internalUUID#143218, plant#143219, product#143220, blockedForReplenishmentStartingFrom#143221, productionAspect#143222, salesPlant#143223, listing#143224, struct(systemId, systemId#143217, internalUUID, internalUUID#143218, plant, plant#143219, product, product#143220, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143221, productionAspect, productionAspect#143222, salesPlant, salesPlant#143223, listing, listing#143224) AS productPlant#143225]
(130) Project
Arguments: [productPlant#143225]
(131) Join
Arguments: LeftOuter, ((product#143213 <=> productPlant#143225.product.internalRefUUID) AND (plant#143214 <=> productPlant#143225.plant.internalRefUUID))
(132) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225]
(133) SubqueryAlias
Arguments: wl
(134) LogicalRelation
Arguments: parquet, [systemId#143226, internalUUID#143227, id#143228, displayId#143229, name#143230, category#143231, companyCode#143232, address#143233, mainDistributionChain#143234, mainPurchasingOrganization#143235, validPurchasingOrganizations#143236, productGroup#143237], false
(135) Repartition
Arguments: 25, true
(136) Project
Arguments: [internalUUID#143227, address#143233.timeZone.code AS timezonecode#143238]
(137) Join
Arguments: LeftOuter, (plant#143214 <=> internalUUID#143227)
(138) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, internalUUID#143227, CASE WHEN isnotnull(timezonecode#143238) THEN timezonecode#143238 ELSE UTC END AS timezonecode#143239]
(139) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239]
(140) LogicalRelation
Arguments: parquet, [systemId#143240, internalUUID#143241, id#143242, displayId#143243, name#143244, baseUnitOfMeasure#143245, unitOfMeasures#143246, unitOfMeasureConversions#143247, productionAspect#143248, salesAspect#143249, procurementAspect#143250, productGroup#143251], false
(141) Repartition
Arguments: 25, true
(142) Join
Arguments: LeftOuter, (product#143213 = internalUUID#143241)
(143) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239, systemId#143240, internalUUID#143241, id#143242, displayId#143243, name#143244, baseUnitOfMeasure#143245, unitOfMeasures#143246, unitOfMeasureConversions#143247, productionAspect#143248, salesAspect#143249, procurementAspect#143250, productGroup#143251, filter(unitOfMeasureConversions#143247, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143225.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143225.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143245.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143245.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143252]
(144) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143252.quantityNumerator), true, [quantityNumerator#143253]
(145) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239, systemId#143240, internalUUID#143241, id#143242, displayId#143243, name#143244, baseUnitOfMeasure#143245, unitOfMeasures#143246, unitOfMeasureConversions#143247, productionAspect#143248, salesAspect#143249, procurementAspect#143250, productGroup#143251, filteredUnitOfMeasureConversions#143252, quantityNumerator#143253]
(146) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143252.quantityDenominator), true, [quantityDenominator#143254]
(147) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239, systemId#143240, internalUUID#143241, id#143242, displayId#143243, name#143244, baseUnitOfMeasure#143245, unitOfMeasures#143246, unitOfMeasureConversions#143247, productionAspect#143248, salesAspect#143249, procurementAspect#143250, productGroup#143251, filteredUnitOfMeasureConversions#143252, quantityNumerator#143253, quantityDenominator#143254]
(148) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239, systemId#143240, internalUUID#143241, id#143242, displayId#143243, name#143244, baseUnitOfMeasure#143245, unitOfMeasures#143246, unitOfMeasureConversions#143247, productionAspect#143248, salesAspect#143249, procurementAspect#143250, productGroup#143251, filteredUnitOfMeasureConversions#143252, quantityNumerator#143253, quantityDenominator#143254, (cast(quantityNumerator#143253 as double) / cast(quantityDenominator#143254 as double)) AS outboundUnit#143255]
(149) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239, systemId#143240, internalUUID#143241, id#143242, displayId#143243, name#143244, baseUnitOfMeasure#143245, unitOfMeasures#143246, unitOfMeasureConversions#143247, productionAspect#143248, salesAspect#143249, procurementAspect#143250, productGroup#143251, filteredUnitOfMeasureConversions#143252, quantityNumerator#143253, quantityDenominator#143254, CASE WHEN (isnull(outboundUnit#143255) OR (outboundUnit#143255 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143255 END AS outboundUnit#143256]
(150) Project
Arguments: [product#143213, plant#143214, orderDateTime#143215, productPlant#143225, timezonecode#143239, outboundUnit#143256]
(151) Project
Arguments: [plant#143214]
(152) Deduplicate
Arguments: [plant#143214]
(153) Join
Arguments: Inner, (plantUuid#143210 = plant#143214)
(154) Project
Arguments: [plantId#143209, plantUuid#143210, storageLocId#143211, storageLocUuid#143212]
(155) Join
Arguments: Inner, (plant#143182.internalRefUUID <=> plantUuid#143210)
(156) Generate
Arguments: explode(filter(stockQuantities#143184, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143212) AND (lambda x#143085.storageLocation.Id = storageLocId#143211)), lambda x#143085, false))), false, [stockQuantity#143257]
(157) Project
Arguments: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143183, stockQuantities#143184, plantId#143209, plantUuid#143210, storageLocId#143211, storageLocUuid#143212, stockQuantity#143257]
(158) Aggregate
Arguments: [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179], [plantUuid#143210, internalUUID#143180, plant#143182, product#143181, systemId#143179, first(calculationDateTime#143183, false) AS calculationDateTime#143258, collect_list(stockQuantity#143257, 0, 0) AS stockQuantities#143259]
(159) Project
Arguments: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143258, stockQuantities#143259]
(160) Generate
Arguments: explode(stockQuantities#143259), false, [stockQuantity#143260]
(161) Project
Arguments: [systemId#143179, internalUUID#143180, product#143181, plant#143182, calculationDateTime#143258, stockQuantities#143259, stockQuantity#143260]
(162) Project
Arguments: [plant#143182.id AS plant#143261, plant#143182.internalRefUUID AS plantUuid#143262, product#143181.id AS product#143263, product#143181.internalRefUUID AS productUuid#143264, calculationDateTime#143258, stockQuantity#143260.storagelocation.id AS storageLocId#143265, stockQuantity#143260.storagelocation.internalRefUUID AS storageLocUuid#143266, stockQuantity#143260.quantity.measure AS quantity#143267, stockQuantity#143260.specialStockIndicator.code AS specialStockIndicator#143268, stockQuantity#143260.stockType.code AS stockType#143269]
(163) Filter
Arguments: ((specialStockIndicator#143268 = ) AND (stockType#143269 = 01))
(164) LogicalRelation
Arguments: parquet, [product#143270, plant#143271, orderDateTime#143272, planningStartDateTime#143273], false
(165) RepartitionByExpression
Arguments: [product#143270, plant#143271], 25
(166) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272]
(167) LogicalRelation
Arguments: parquet, [systemId#143274, internalUUID#143275, plant#143276, product#143277, blockedForReplenishmentStartingFrom#143278, productionAspect#143279, salesPlant#143280, listing#143281], false
(168) Repartition
Arguments: 25, true
(169) Project
Arguments: [systemId#143274, internalUUID#143275, plant#143276, product#143277, blockedForReplenishmentStartingFrom#143278, productionAspect#143279, salesPlant#143280, listing#143281, struct(systemId, systemId#143274, internalUUID, internalUUID#143275, plant, plant#143276, product, product#143277, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143278, productionAspect, productionAspect#143279, salesPlant, salesPlant#143280, listing, listing#143281) AS productPlant#143282]
(170) Project
Arguments: [productPlant#143282]
(171) Join
Arguments: LeftOuter, ((product#143270 <=> productPlant#143282.product.internalRefUUID) AND (plant#143271 <=> productPlant#143282.plant.internalRefUUID))
(172) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282]
(173) SubqueryAlias
Arguments: wl
(174) LogicalRelation
Arguments: parquet, [systemId#143283, internalUUID#143284, id#143285, displayId#143286, name#143287, category#143288, companyCode#143289, address#143290, mainDistributionChain#143291, mainPurchasingOrganization#143292, validPurchasingOrganizations#143293, productGroup#143294], false
(175) Repartition
Arguments: 25, true
(176) Project
Arguments: [internalUUID#143284, address#143290.timeZone.code AS timezonecode#143295]
(177) Join
Arguments: LeftOuter, (plant#143271 <=> internalUUID#143284)
(178) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, internalUUID#143284, CASE WHEN isnotnull(timezonecode#143295) THEN timezonecode#143295 ELSE UTC END AS timezonecode#143296]
(179) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296]
(180) LogicalRelation
Arguments: parquet, [systemId#143297, internalUUID#143298, id#143299, displayId#143300, name#143301, baseUnitOfMeasure#143302, unitOfMeasures#143303, unitOfMeasureConversions#143304, productionAspect#143305, salesAspect#143306, procurementAspect#143307, productGroup#143308], false
(181) Repartition
Arguments: 25, true
(182) Join
Arguments: LeftOuter, (product#143270 = internalUUID#143298)
(183) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296, systemId#143297, internalUUID#143298, id#143299, displayId#143300, name#143301, baseUnitOfMeasure#143302, unitOfMeasures#143303, unitOfMeasureConversions#143304, productionAspect#143305, salesAspect#143306, procurementAspect#143307, productGroup#143308, filter(unitOfMeasureConversions#143304, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143282.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143282.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143302.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143302.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143309]
(184) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143309.quantityNumerator), true, [quantityNumerator#143310]
(185) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296, systemId#143297, internalUUID#143298, id#143299, displayId#143300, name#143301, baseUnitOfMeasure#143302, unitOfMeasures#143303, unitOfMeasureConversions#143304, productionAspect#143305, salesAspect#143306, procurementAspect#143307, productGroup#143308, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310]
(186) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143309.quantityDenominator), true, [quantityDenominator#143311]
(187) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296, systemId#143297, internalUUID#143298, id#143299, displayId#143300, name#143301, baseUnitOfMeasure#143302, unitOfMeasures#143303, unitOfMeasureConversions#143304, productionAspect#143305, salesAspect#143306, procurementAspect#143307, productGroup#143308, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310, quantityDenominator#143311]
(188) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296, systemId#143297, internalUUID#143298, id#143299, displayId#143300, name#143301, baseUnitOfMeasure#143302, unitOfMeasures#143303, unitOfMeasureConversions#143304, productionAspect#143305, salesAspect#143306, procurementAspect#143307, productGroup#143308, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310, quantityDenominator#143311, (cast(quantityNumerator#143310 as double) / cast(quantityDenominator#143311 as double)) AS outboundUnit#143312]
(189) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296, systemId#143297, internalUUID#143298, id#143299, displayId#143300, name#143301, baseUnitOfMeasure#143302, unitOfMeasures#143303, unitOfMeasureConversions#143304, productionAspect#143305, salesAspect#143306, procurementAspect#143307, productGroup#143308, filteredUnitOfMeasureConversions#143309, quantityNumerator#143310, quantityDenominator#143311, CASE WHEN (isnull(outboundUnit#143312) OR (outboundUnit#143312 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143312 END AS outboundUnit#143313]
(190) Project
Arguments: [product#143270, plant#143271, orderDateTime#143272, productPlant#143282, timezonecode#143296, outboundUnit#143313]
(191) Join
Arguments: Inner, ((plantUuid#143262 = plant#143271) AND (productUuid#143264 = product#143270))
(192) Filter
Arguments: (calculationDateTime#143258 <= orderDateTime#143272)
(193) Project
Arguments: [plantUuid#143262 AS plant#143314, productUuid#143264 AS product#143315, storageLocId#143265, calculationDateTime#143258, quantity#143267]
(194) Aggregate
Arguments: [plant#143314, product#143315, storageLocId#143265], [plant#143314, product#143315, storageLocId#143265, max(calculationDateTime#143258) AS max_calc_datetime#143172]
(195) Join
Arguments: Inner, ((((plant#143170 <=> plant#143314) AND (product#143171 <=> product#143315)) AND (storageLocId#143108 <=> storageLocId#143265)) AND (calculationDateTime#143087 <=> max_calc_datetime#143172))
(196) Project
Arguments: [plant#143170, product#143171, storageLocId#143108, calculationDateTime#143087, quantity#143110]
(197) Aggregate
Arguments: [product#143171, plant#143170], [product#143171, plant#143170, sum(quantity#143110) AS quantitySum#143326, min(calculationDateTime#143087) AS minCalculationDateTime#143327]
(198) Project
Arguments: [product#143171, plant#143170, quantitySum#143326, minCalculationDateTime#143327, round(quantitySum#143326, 0) AS roundedQuantitySum#143335]
(199) Join
Arguments: LeftOuter, ((plant#142981 = plant#143170) AND (product#142980 = product#143171))
(200) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, roundedQuantitySum#143335, minCalculationDateTime#143327]
(201) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, roundedQuantitySum#143335, minCalculationDateTime#143327, CASE WHEN isnotnull(minCalculationDateTime#143327) THEN minCalculationDateTime#143327 ELSE orderDateTime#142982 END AS stockDatetime#143384]
(202) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, roundedQuantitySum#143335, minCalculationDateTime#143327, stockDatetime#143384, CASE WHEN isnotnull(roundedQuantitySum#143335) THEN array(roundedQuantitySum#143335) ELSE array(0.0) END AS stockBatchQuantities#143385]
(203) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, roundedQuantitySum#143335, minCalculationDateTime#143327, stockDatetime#143384, stockBatchQuantities#143385, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#143386]
(204) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, roundedQuantitySum#143335, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386]
(205) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386]
(206) LogicalRelation
Arguments: parquet, [product#143387, plant#143388, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395], false
(207) Join
Arguments: LeftOuter, ((product#142980 = product#143387) AND (plant#142981 = plant#143388))
(208) Project
Arguments: [product#142980, plant#142981, orderDateTime#142982, productPlant#142994, timezonecode#143012, outboundUnit#143039, stockDatetime#143384, stockBatchQuantities#143385, stockBatchShelfLifeEndDatetimes#143386, demandChannel#143389, demandStream#143390, considerVariance#143391, demandTimeBuckets#143392, demandPointInTimeStart#143393, demandPointInTimeEnd#143394, demandPointInTime#143395]
(209) Filter
Arguments: (((size(demandTimeBuckets#143392, true) = 0) OR isnull(demandTimeBuckets#143392)) AND ((size(demandPointInTime#143395, true) = 0) OR isnull(demandPointInTime#143395)))
(210) Project
Arguments: [productPlant#142994.product.id AS product#143397, productPlant#142994.plant.id AS plant#143398]
(211) Project
Arguments: [product#143397, plant#143398, 1 AS configurationVersion#143401]
(212) Project
Arguments: [product#143397, plant#143398, configurationVersion#143401, UNKNOWN_DEMAND_FOR_PRODUCT_LOCATION AS name#143402]
(213) Project
Arguments: [product#143397, plant#143398, configurationVersion#143401, name#143402, array(struct(name, PRODUCT, value, cast(product#143397 as string)), struct(name, PLANT, value, cast(plant#143398 as string))) AS businessContext#143407]
(214) Project
Arguments: [product#143397, plant#143398, configurationVersion#143401, name#143402, businessContext#143407, cast(array() as array<struct<variableName:string,variableValue:string>>) AS messageVariables#143408]
(215) Deduplicate
Arguments: [businessContext#143407, messageVariables#143408, configurationVersion#143401, product#143397, plant#143398, name#143402]
(216) Project
Arguments: [product#143397, plant#143398, configurationVersion#143401, name#143402, businessContext#143407, messageVariables#143408, 10000002108 AS executionId#143409]
(217) Project
Arguments: [product#143397, plant#143398, configurationVersion#143401, name#143402, businessContext#143407, messageVariables#143408, executionId#143409, Daily_grocery AS marketUnit#143410]
(218) Project
Arguments: [product#143397, plant#143398, configurationVersion#143401, name#143402, businessContext#143407, messageVariables#143408, executionId#143409, marketUnit#143410, 2026-08-10T09:37:10.891Z AS createdAt#143411]
(219) Project
Arguments: [name#143402, configurationVersion#143401, executionId#143409, createdAt#143411, marketUnit#143410, businessContext#143407, messageVariables#143408]
(220) LogicalRelation
Arguments: parquet, [product#145005, plant#145006, orderDateTime#145007, planningStartDateTime#145008], false
(221) RepartitionByExpression
Arguments: [product#145005, plant#145006], 25
(222) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007]
(223) LogicalRelation
Arguments: parquet, [systemId#145009, internalUUID#145010, plant#145011, product#145012, blockedForReplenishmentStartingFrom#145013, productionAspect#145014, salesPlant#145015, listing#145016], false
(224) Repartition
Arguments: 25, true
(225) Project
Arguments: [systemId#145009, internalUUID#145010, plant#145011, product#145012, blockedForReplenishmentStartingFrom#145013, productionAspect#145014, salesPlant#145015, listing#145016, struct(systemId, systemId#145009, internalUUID, internalUUID#145010, plant, plant#145011, product, product#145012, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#145013, productionAspect, productionAspect#145014, salesPlant, salesPlant#145015, listing, listing#145016) AS productPlant#145017]
(226) Project
Arguments: [productPlant#145017]
(227) Join
Arguments: LeftOuter, ((product#145005 <=> productPlant#145017.product.internalRefUUID) AND (plant#145006 <=> productPlant#145017.plant.internalRefUUID))
(228) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017]
(229) SubqueryAlias
Arguments: wl
(230) LogicalRelation
Arguments: parquet, [systemId#145018, internalUUID#145019, id#145020, displayId#145021, name#145022, category#145023, companyCode#145024, address#145025, mainDistributionChain#145026, mainPurchasingOrganization#145027, validPurchasingOrganizations#145028, productGroup#145029], false
(231) Repartition
Arguments: 25, true
(232) Project
Arguments: [internalUUID#145019, address#145025.timeZone.code AS timezonecode#145030]
(233) Join
Arguments: LeftOuter, (plant#145006 <=> internalUUID#145019)
(234) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, internalUUID#145019, CASE WHEN isnotnull(timezonecode#145030) THEN timezonecode#145030 ELSE UTC END AS timezonecode#145031]
(235) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031]
(236) LogicalRelation
Arguments: parquet, [systemId#145032, internalUUID#145033, id#145034, displayId#145035, name#145036, baseUnitOfMeasure#145037, unitOfMeasures#145038, unitOfMeasureConversions#145039, productionAspect#145040, salesAspect#145041, procurementAspect#145042, productGroup#145043], false
(237) Repartition
Arguments: 25, true
(238) Join
Arguments: LeftOuter, (product#145005 = internalUUID#145033)
(239) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, systemId#145032, internalUUID#145033, id#145034, displayId#145035, name#145036, baseUnitOfMeasure#145037, unitOfMeasures#145038, unitOfMeasureConversions#145039, productionAspect#145040, salesAspect#145041, procurementAspect#145042, productGroup#145043, filter(unitOfMeasureConversions#145039, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#145017.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#145017.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#145037.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#145037.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#145044]
(240) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145044.quantityNumerator), true, [quantityNumerator#145045]
(241) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, systemId#145032, internalUUID#145033, id#145034, displayId#145035, name#145036, baseUnitOfMeasure#145037, unitOfMeasures#145038, unitOfMeasureConversions#145039, productionAspect#145040, salesAspect#145041, procurementAspect#145042, productGroup#145043, filteredUnitOfMeasureConversions#145044, quantityNumerator#145045]
(242) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145044.quantityDenominator), true, [quantityDenominator#145046]
(243) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, systemId#145032, internalUUID#145033, id#145034, displayId#145035, name#145036, baseUnitOfMeasure#145037, unitOfMeasures#145038, unitOfMeasureConversions#145039, productionAspect#145040, salesAspect#145041, procurementAspect#145042, productGroup#145043, filteredUnitOfMeasureConversions#145044, quantityNumerator#145045, quantityDenominator#145046]
(244) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, systemId#145032, internalUUID#145033, id#145034, displayId#145035, name#145036, baseUnitOfMeasure#145037, unitOfMeasures#145038, unitOfMeasureConversions#145039, productionAspect#145040, salesAspect#145041, procurementAspect#145042, productGroup#145043, filteredUnitOfMeasureConversions#145044, quantityNumerator#145045, quantityDenominator#145046, (cast(quantityNumerator#145045 as double) / cast(quantityDenominator#145046 as double)) AS outboundUnit#145047]
(245) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, systemId#145032, internalUUID#145033, id#145034, displayId#145035, name#145036, baseUnitOfMeasure#145037, unitOfMeasures#145038, unitOfMeasureConversions#145039, productionAspect#145040, salesAspect#145041, procurementAspect#145042, productGroup#145043, filteredUnitOfMeasureConversions#145044, quantityNumerator#145045, quantityDenominator#145046, CASE WHEN (isnull(outboundUnit#145047) OR (outboundUnit#145047 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#145047 END AS outboundUnit#145048]
(246) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, outboundUnit#145048]
(247) LogicalRelation
Arguments: parquet, [systemId#145049, internalUUID#145050, product#145051, plant#145052, calculationDateTime#145053, stockQuantities#145054], false
(248) Repartition
Arguments: 25, true
(249) LogicalRelation
Arguments: parquet, [marketUnit#145055, description#145056, articleHierarchy#145057, defaultCurrency#145058, responsibilities#145059, replenishmentTypes#145060, distributionCenters#145061, assignedArticleHierarchyNodes#145062, minOrderQtySetting#145063, listingCheck#145064, odsSelection#145065, demandProfiles#145066, constraintProfiles#145067, optimizationProfiles#145068, orderGroupSplitProfiles#145069, supplierMinimumProfiles#145070, multipleRestrictionProfiles#145071, preferredUomSource#145072, handlingOfUnfulfilledDemands#145073, negligibleQuantitiesThreshold#145074, eventtype#145075, minOrderQtySettingInternal#145076], false
(250) Repartition
Arguments: 25, true
(251) Filter
Arguments: (marketUnit#145055 <=> Daily_grocery)
(252) Project
Arguments: [marketUnit#145055, description#145056, articleHierarchy#145057, defaultCurrency#145058, responsibilities#145059, replenishmentTypes#145060, distributionCenters#145061, assignedArticleHierarchyNodes#145062, minOrderQtySetting#145063, listingCheck#145064, odsSelection#145065, demandProfiles#145066, constraintProfiles#145067, optimizationProfiles#145068, orderGroupSplitProfiles#145069, supplierMinimumProfiles#145070, multipleRestrictionProfiles#145071, preferredUomSource#145072, handlingOfUnfulfilledDemands#145073, negligibleQuantitiesThreshold#145074, eventtype#145075, minOrderQtySettingInternal#145076]
(253) Project
Arguments: [distributionCenters#145061]
(254) Generate
Arguments: explode(distributionCenters#145061), false, [distributionCenters#145077]
(255) Project
Arguments: [distributionCenters#145077]
(256) Generate
Arguments: explode(distributionCenters#145077.storageLocations), false, [storageLocations#145078]
(257) Project
Arguments: [distributionCenters#145077.id AS plantId#145079, distributionCenters#145077.internalRefUUID AS plantUuid#145080, storageLocations#145078]
(258) Project
Arguments: [plantId#145079, plantUuid#145080, storageLocations#145078.id AS storageLocId#145081, storageLocations#145078.internalRefUUID AS storageLocUuid#145082]
(259) LogicalRelation
Arguments: parquet, [product#145083, plant#145084, orderDateTime#145085, planningStartDateTime#145086], false
(260) RepartitionByExpression
Arguments: [product#145083, plant#145084], 25
(261) Project
Arguments: [product#145083, plant#145084, orderDateTime#145085]
(262) LogicalRelation
Arguments: parquet, [systemId#145087, internalUUID#145088, plant#145089, product#145090, blockedForReplenishmentStartingFrom#145091, productionAspect#145092, salesPlant#145093, listing#145094], false
(263) Repartition
Arguments: 25, true
(264) Project
Arguments: [systemId#145087, internalUUID#145088, plant#145089, product#145090, blockedForReplenishmentStartingFrom#145091, productionAspect#145092, salesPlant#145093, listing#145094, struct(systemId, systemId#145087, internalUUID, internalUUID#145088, plant, plant#145089, product, product#145090, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#145091, productionAspect, productionAspect#145092, salesPlant, salesPlant#145093, listing, listing#145094) AS productPlant#145095]
(265) Project
Arguments: [productPlant#145095]
(266) Join
Arguments: LeftOuter, ((product#145083 <=> productPlant#145095.product.internalRefUUID) AND (plant#145084 <=> productPlant#145095.plant.internalRefUUID))
(267) Project
Arguments: [product#145083, plant#145084, orderDateTime#145085, productPlant#145095]
(268) SubqueryAlias
Arguments: wl
(269) LogicalRelation
Arguments: parquet, [systemId#145096, internalUUID#145097, id#145098, displayId#145099, name#145100, category#145101, companyCode#145102, address#145103, mainDistributionChain#145104, mainPurchasingOrganization#145105, validPurchasingOrganizations#145106, productGroup#145107], false
(270) Repartition
Arguments: 25, true
(271) Project
Arguments: [internalUUID#145097, address#145103.timeZone.code AS timezonecode#145108]
(272) Join
Arguments: LeftOuter, (plant#145084 <=> internalUUID#145097)
(273) Project
Arguments: [product#145083, plant#145084, orderDateTime#145085, productPlant#145095, internalUUID#145097, CASE WHEN isnotnull(timezonecode#145108) THEN timezonecode#145108 ELSE UTC END AS timezonecode#145109]
(274) Project
Arguments: [product#145083, plant#145084, orderDateTime#145085, productPlant#145095, timezonecode#145109]
(275) LogicalRelation
Arguments: parquet, [systemId#145110, internalUUID#145111, id#145112, displayId#145113, name#145114, baseUnitOfMeasure#145115, unitOfMeasures#145116, unitOfMeasureConversions#145117, productionAspect#145118, salesAspect#145119, procurementAspect#145120, productGroup#145121], false
(276) Repartition
Arguments: 25, true
(277) Join
Arguments: LeftOuter, (product#145083 = internalUUID#145111)
(278) Project
Arguments: [product#145083, plant#145084, orderDateTime#145085, productPlant#145095, timezonecode#145109, systemId#145110, internalUUID#145111, id#145112, displayId#145113, name#145114, baseUnitOfMeasure#145115, unitOfMeasures#145116, unitOfMeasureConversions#145117, productionAspect#145118, salesAspect#145119, procurementAspect#145120, productGroup#145121, filter(unitOfMeasureConversions#145117, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#145095.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#145095.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#145115.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#145115.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#145122]
(279) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145122.quantityNumerator), true, [quantityNumerator#145123]
(280) Project
Arguments: [product#145083, plant#145084, orderDateTime#145085, productPlant#145095, timezonecode#145109, systemId#145110, internalUUID#145111, id#145112, displayId#145113, name#145114, baseUnitOfMeasure#145115, unitOfMeasures#145116, unitOfMeasureConversions#145117, productionAspect#145118, salesAspect#145119, procurementAspect#145120, productGroup#145121, filteredUnitOfMeasureConversions#145122, quantityNumerator#145123]
(281) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145122.quantityDenominator), true, [quantityDenominator#145124]
(282) Project
Arguments: [product#145083, plant#145084, orderDateTime#145085, productPlant#145095, timezonecode#145109, systemId#145110, internalUUID#145111, id#145112, displayId#145113, name#145114, baseUnitOfMeasure#145115, unitOfMeasures#145116, unitOfMeasureConversions#145117, productionAspect#145118, salesAspect#145119, procurementAspect#145120, productGroup#145121, filteredUnitOfMeasureConversions#145122, quantityNumerator#145123, quantityDenominator#145124]
(283) Project
Arguments: [product#145083, plant#145084, orderDateTime#145085, productPlant#145095, timezonecode#145109, systemId#145110, internalUUID#145111, id#145112, displayId#145113, name#145114, baseUnitOfMeasure#145115, unitOfMeasures#145116, unitOfMeasureConversions#145117, productionAspect#145118, salesAspect#145119, procurementAspect#145120, productGroup#145121, filteredUnitOfMeasureConversions#145122, quantityNumerator#145123, quantityDenominator#145124, (cast(quantityNumerator#145123 as double) / cast(quantityDenominator#145124 as double)) AS outboundUnit#145125]
(284) Project
Arguments: [product#145083, plant#145084, orderDateTime#145085, productPlant#145095, timezonecode#145109, systemId#145110, internalUUID#145111, id#145112, displayId#145113, name#145114, baseUnitOfMeasure#145115, unitOfMeasures#145116, unitOfMeasureConversions#145117, productionAspect#145118, salesAspect#145119, procurementAspect#145120, productGroup#145121, filteredUnitOfMeasureConversions#145122, quantityNumerator#145123, quantityDenominator#145124, CASE WHEN (isnull(outboundUnit#145125) OR (outboundUnit#145125 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#145125 END AS outboundUnit#145126]
(285) Project
Arguments: [product#145083, plant#145084, orderDateTime#145085, productPlant#145095, timezonecode#145109, outboundUnit#145126]
(286) Project
Arguments: [plant#145084]
(287) Deduplicate
Arguments: [plant#145084]
(288) Join
Arguments: Inner, (plantUuid#145080 = plant#145084)
(289) Project
Arguments: [plantId#145079, plantUuid#145080, storageLocId#145081, storageLocUuid#145082]
(290) Join
Arguments: Inner, (plant#145052.internalRefUUID <=> plantUuid#145080)
(291) Generate
Arguments: explode(filter(stockQuantities#145054, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#145082) AND (lambda x#143085.storageLocation.Id = storageLocId#145081)), lambda x#143085, false))), false, [stockQuantity#145127]
(292) Project
Arguments: [systemId#145049, internalUUID#145050, product#145051, plant#145052, calculationDateTime#145053, stockQuantities#145054, plantId#145079, plantUuid#145080, storageLocId#145081, storageLocUuid#145082, stockQuantity#145127]
(293) Aggregate
Arguments: [plantUuid#145080, internalUUID#145050, plant#145052, product#145051, systemId#145049], [plantUuid#145080, internalUUID#145050, plant#145052, product#145051, systemId#145049, first(calculationDateTime#145053, false) AS calculationDateTime#145128, collect_list(stockQuantity#145127, 0, 0) AS stockQuantities#145129]
(294) Project
Arguments: [systemId#145049, internalUUID#145050, product#145051, plant#145052, calculationDateTime#145128, stockQuantities#145129]
(295) Generate
Arguments: explode(stockQuantities#145129), false, [stockQuantity#145130]
(296) Project
Arguments: [systemId#145049, internalUUID#145050, product#145051, plant#145052, calculationDateTime#145128, stockQuantities#145129, stockQuantity#145130]
(297) Project
Arguments: [plant#145052.id AS plant#145131, plant#145052.internalRefUUID AS plantUuid#145132, product#145051.id AS product#145133, product#145051.internalRefUUID AS productUuid#145134, calculationDateTime#145128, stockQuantity#145130.storagelocation.id AS storageLocId#145135, stockQuantity#145130.storagelocation.internalRefUUID AS storageLocUuid#145136, stockQuantity#145130.quantity.measure AS quantity#145137, stockQuantity#145130.specialStockIndicator.code AS specialStockIndicator#145138, stockQuantity#145130.stockType.code AS stockType#145139]
(298) Filter
Arguments: ((specialStockIndicator#145138 = ) AND (stockType#145139 = 01))
(299) LogicalRelation
Arguments: parquet, [product#145140, plant#145141, orderDateTime#145142, planningStartDateTime#145143], false
(300) RepartitionByExpression
Arguments: [product#145140, plant#145141], 25
(301) Project
Arguments: [product#145140, plant#145141, orderDateTime#145142]
(302) LogicalRelation
Arguments: parquet, [systemId#145144, internalUUID#145145, plant#145146, product#145147, blockedForReplenishmentStartingFrom#145148, productionAspect#145149, salesPlant#145150, listing#145151], false
(303) Repartition
Arguments: 25, true
(304) Project
Arguments: [systemId#145144, internalUUID#145145, plant#145146, product#145147, blockedForReplenishmentStartingFrom#145148, productionAspect#145149, salesPlant#145150, listing#145151, struct(systemId, systemId#145144, internalUUID, internalUUID#145145, plant, plant#145146, product, product#145147, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#145148, productionAspect, productionAspect#145149, salesPlant, salesPlant#145150, listing, listing#145151) AS productPlant#145152]
(305) Project
Arguments: [productPlant#145152]
(306) Join
Arguments: LeftOuter, ((product#145140 <=> productPlant#145152.product.internalRefUUID) AND (plant#145141 <=> productPlant#145152.plant.internalRefUUID))
(307) Project
Arguments: [product#145140, plant#145141, orderDateTime#145142, productPlant#145152]
(308) SubqueryAlias
Arguments: wl
(309) LogicalRelation
Arguments: parquet, [systemId#145153, internalUUID#145154, id#145155, displayId#145156, name#145157, category#145158, companyCode#145159, address#145160, mainDistributionChain#145161, mainPurchasingOrganization#145162, validPurchasingOrganizations#145163, productGroup#145164], false
(310) Repartition
Arguments: 25, true
(311) Project
Arguments: [internalUUID#145154, address#145160.timeZone.code AS timezonecode#145165]
(312) Join
Arguments: LeftOuter, (plant#145141 <=> internalUUID#145154)
(313) Project
Arguments: [product#145140, plant#145141, orderDateTime#145142, productPlant#145152, internalUUID#145154, CASE WHEN isnotnull(timezonecode#145165) THEN timezonecode#145165 ELSE UTC END AS timezonecode#145166]
(314) Project
Arguments: [product#145140, plant#145141, orderDateTime#145142, productPlant#145152, timezonecode#145166]
(315) LogicalRelation
Arguments: parquet, [systemId#145167, internalUUID#145168, id#145169, displayId#145170, name#145171, baseUnitOfMeasure#145172, unitOfMeasures#145173, unitOfMeasureConversions#145174, productionAspect#145175, salesAspect#145176, procurementAspect#145177, productGroup#145178], false
(316) Repartition
Arguments: 25, true
(317) Join
Arguments: LeftOuter, (product#145140 = internalUUID#145168)
(318) Project
Arguments: [product#145140, plant#145141, orderDateTime#145142, productPlant#145152, timezonecode#145166, systemId#145167, internalUUID#145168, id#145169, displayId#145170, name#145171, baseUnitOfMeasure#145172, unitOfMeasures#145173, unitOfMeasureConversions#145174, productionAspect#145175, salesAspect#145176, procurementAspect#145177, productGroup#145178, filter(unitOfMeasureConversions#145174, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#145152.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#145152.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#145172.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#145172.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#145179]
(319) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145179.quantityNumerator), true, [quantityNumerator#145180]
(320) Project
Arguments: [product#145140, plant#145141, orderDateTime#145142, productPlant#145152, timezonecode#145166, systemId#145167, internalUUID#145168, id#145169, displayId#145170, name#145171, baseUnitOfMeasure#145172, unitOfMeasures#145173, unitOfMeasureConversions#145174, productionAspect#145175, salesAspect#145176, procurementAspect#145177, productGroup#145178, filteredUnitOfMeasureConversions#145179, quantityNumerator#145180]
(321) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145179.quantityDenominator), true, [quantityDenominator#145181]
(322) Project
Arguments: [product#145140, plant#145141, orderDateTime#145142, productPlant#145152, timezonecode#145166, systemId#145167, internalUUID#145168, id#145169, displayId#145170, name#145171, baseUnitOfMeasure#145172, unitOfMeasures#145173, unitOfMeasureConversions#145174, productionAspect#145175, salesAspect#145176, procurementAspect#145177, productGroup#145178, filteredUnitOfMeasureConversions#145179, quantityNumerator#145180, quantityDenominator#145181]
(323) Project
Arguments: [product#145140, plant#145141, orderDateTime#145142, productPlant#145152, timezonecode#145166, systemId#145167, internalUUID#145168, id#145169, displayId#145170, name#145171, baseUnitOfMeasure#145172, unitOfMeasures#145173, unitOfMeasureConversions#145174, productionAspect#145175, salesAspect#145176, procurementAspect#145177, productGroup#145178, filteredUnitOfMeasureConversions#145179, quantityNumerator#145180, quantityDenominator#145181, (cast(quantityNumerator#145180 as double) / cast(quantityDenominator#145181 as double)) AS outboundUnit#145182]
(324) Project
Arguments: [product#145140, plant#145141, orderDateTime#145142, productPlant#145152, timezonecode#145166, systemId#145167, internalUUID#145168, id#145169, displayId#145170, name#145171, baseUnitOfMeasure#145172, unitOfMeasures#145173, unitOfMeasureConversions#145174, productionAspect#145175, salesAspect#145176, procurementAspect#145177, productGroup#145178, filteredUnitOfMeasureConversions#145179, quantityNumerator#145180, quantityDenominator#145181, CASE WHEN (isnull(outboundUnit#145182) OR (outboundUnit#145182 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#145182 END AS outboundUnit#145183]
(325) Project
Arguments: [product#145140, plant#145141, orderDateTime#145142, productPlant#145152, timezonecode#145166, outboundUnit#145183]
(326) Join
Arguments: Inner, ((plantUuid#145132 = plant#145141) AND (productUuid#145134 = product#145140))
(327) Filter
Arguments: (calculationDateTime#145128 <= orderDateTime#145142)
(328) Project
Arguments: [plantUuid#145132 AS plant#145184, productUuid#145134 AS product#145185, storageLocId#145135, calculationDateTime#145128, quantity#145137]
(329) LogicalRelation
Arguments: parquet, [systemId#145186, internalUUID#145187, product#145188, plant#145189, calculationDateTime#145190, stockQuantities#145191], false
(330) Repartition
Arguments: 25, true
(331) LogicalRelation
Arguments: parquet, [marketUnit#145192, description#145193, articleHierarchy#145194, defaultCurrency#145195, responsibilities#145196, replenishmentTypes#145197, distributionCenters#145198, assignedArticleHierarchyNodes#145199, minOrderQtySetting#145200, listingCheck#145201, odsSelection#145202, demandProfiles#145203, constraintProfiles#145204, optimizationProfiles#145205, orderGroupSplitProfiles#145206, supplierMinimumProfiles#145207, multipleRestrictionProfiles#145208, preferredUomSource#145209, handlingOfUnfulfilledDemands#145210, negligibleQuantitiesThreshold#145211, eventtype#145212, minOrderQtySettingInternal#145213], false
(332) Repartition
Arguments: 25, true
(333) Filter
Arguments: (marketUnit#145192 <=> Daily_grocery)
(334) Project
Arguments: [marketUnit#145192, description#145193, articleHierarchy#145194, defaultCurrency#145195, responsibilities#145196, replenishmentTypes#145197, distributionCenters#145198, assignedArticleHierarchyNodes#145199, minOrderQtySetting#145200, listingCheck#145201, odsSelection#145202, demandProfiles#145203, constraintProfiles#145204, optimizationProfiles#145205, orderGroupSplitProfiles#145206, supplierMinimumProfiles#145207, multipleRestrictionProfiles#145208, preferredUomSource#145209, handlingOfUnfulfilledDemands#145210, negligibleQuantitiesThreshold#145211, eventtype#145212, minOrderQtySettingInternal#145213]
(335) Project
Arguments: [distributionCenters#145198]
(336) Generate
Arguments: explode(distributionCenters#145198), false, [distributionCenters#145214]
(337) Project
Arguments: [distributionCenters#145214]
(338) Generate
Arguments: explode(distributionCenters#145214.storageLocations), false, [storageLocations#145215]
(339) Project
Arguments: [distributionCenters#145214.id AS plantId#145216, distributionCenters#145214.internalRefUUID AS plantUuid#145217, storageLocations#145215]
(340) Project
Arguments: [plantId#145216, plantUuid#145217, storageLocations#145215.id AS storageLocId#145218, storageLocations#145215.internalRefUUID AS storageLocUuid#145219]
(341) LogicalRelation
Arguments: parquet, [product#145220, plant#145221, orderDateTime#145222, planningStartDateTime#145223], false
(342) RepartitionByExpression
Arguments: [product#145220, plant#145221], 25
(343) Project
Arguments: [product#145220, plant#145221, orderDateTime#145222]
(344) LogicalRelation
Arguments: parquet, [systemId#145224, internalUUID#145225, plant#145226, product#145227, blockedForReplenishmentStartingFrom#145228, productionAspect#145229, salesPlant#145230, listing#145231], false
(345) Repartition
Arguments: 25, true
(346) Project
Arguments: [systemId#145224, internalUUID#145225, plant#145226, product#145227, blockedForReplenishmentStartingFrom#145228, productionAspect#145229, salesPlant#145230, listing#145231, struct(systemId, systemId#145224, internalUUID, internalUUID#145225, plant, plant#145226, product, product#145227, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#145228, productionAspect, productionAspect#145229, salesPlant, salesPlant#145230, listing, listing#145231) AS productPlant#145232]
(347) Project
Arguments: [productPlant#145232]
(348) Join
Arguments: LeftOuter, ((product#145220 <=> productPlant#145232.product.internalRefUUID) AND (plant#145221 <=> productPlant#145232.plant.internalRefUUID))
(349) Project
Arguments: [product#145220, plant#145221, orderDateTime#145222, productPlant#145232]
(350) SubqueryAlias
Arguments: wl
(351) LogicalRelation
Arguments: parquet, [systemId#145233, internalUUID#145234, id#145235, displayId#145236, name#145237, category#145238, companyCode#145239, address#145240, mainDistributionChain#145241, mainPurchasingOrganization#145242, validPurchasingOrganizations#145243, productGroup#145244], false
(352) Repartition
Arguments: 25, true
(353) Project
Arguments: [internalUUID#145234, address#145240.timeZone.code AS timezonecode#145245]
(354) Join
Arguments: LeftOuter, (plant#145221 <=> internalUUID#145234)
(355) Project
Arguments: [product#145220, plant#145221, orderDateTime#145222, productPlant#145232, internalUUID#145234, CASE WHEN isnotnull(timezonecode#145245) THEN timezonecode#145245 ELSE UTC END AS timezonecode#145246]
(356) Project
Arguments: [product#145220, plant#145221, orderDateTime#145222, productPlant#145232, timezonecode#145246]
(357) LogicalRelation
Arguments: parquet, [systemId#145247, internalUUID#145248, id#145249, displayId#145250, name#145251, baseUnitOfMeasure#145252, unitOfMeasures#145253, unitOfMeasureConversions#145254, productionAspect#145255, salesAspect#145256, procurementAspect#145257, productGroup#145258], false
(358) Repartition
Arguments: 25, true
(359) Join
Arguments: LeftOuter, (product#145220 = internalUUID#145248)
(360) Project
Arguments: [product#145220, plant#145221, orderDateTime#145222, productPlant#145232, timezonecode#145246, systemId#145247, internalUUID#145248, id#145249, displayId#145250, name#145251, baseUnitOfMeasure#145252, unitOfMeasures#145253, unitOfMeasureConversions#145254, productionAspect#145255, salesAspect#145256, procurementAspect#145257, productGroup#145258, filter(unitOfMeasureConversions#145254, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#145232.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#145232.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#145252.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#145252.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#145259]
(361) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145259.quantityNumerator), true, [quantityNumerator#145260]
(362) Project
Arguments: [product#145220, plant#145221, orderDateTime#145222, productPlant#145232, timezonecode#145246, systemId#145247, internalUUID#145248, id#145249, displayId#145250, name#145251, baseUnitOfMeasure#145252, unitOfMeasures#145253, unitOfMeasureConversions#145254, productionAspect#145255, salesAspect#145256, procurementAspect#145257, productGroup#145258, filteredUnitOfMeasureConversions#145259, quantityNumerator#145260]
(363) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145259.quantityDenominator), true, [quantityDenominator#145261]
(364) Project
Arguments: [product#145220, plant#145221, orderDateTime#145222, productPlant#145232, timezonecode#145246, systemId#145247, internalUUID#145248, id#145249, displayId#145250, name#145251, baseUnitOfMeasure#145252, unitOfMeasures#145253, unitOfMeasureConversions#145254, productionAspect#145255, salesAspect#145256, procurementAspect#145257, productGroup#145258, filteredUnitOfMeasureConversions#145259, quantityNumerator#145260, quantityDenominator#145261]
(365) Project
Arguments: [product#145220, plant#145221, orderDateTime#145222, productPlant#145232, timezonecode#145246, systemId#145247, internalUUID#145248, id#145249, displayId#145250, name#145251, baseUnitOfMeasure#145252, unitOfMeasures#145253, unitOfMeasureConversions#145254, productionAspect#145255, salesAspect#145256, procurementAspect#145257, productGroup#145258, filteredUnitOfMeasureConversions#145259, quantityNumerator#145260, quantityDenominator#145261, (cast(quantityNumerator#145260 as double) / cast(quantityDenominator#145261 as double)) AS outboundUnit#145262]
(366) Project
Arguments: [product#145220, plant#145221, orderDateTime#145222, productPlant#145232, timezonecode#145246, systemId#145247, internalUUID#145248, id#145249, displayId#145250, name#145251, baseUnitOfMeasure#145252, unitOfMeasures#145253, unitOfMeasureConversions#145254, productionAspect#145255, salesAspect#145256, procurementAspect#145257, productGroup#145258, filteredUnitOfMeasureConversions#145259, quantityNumerator#145260, quantityDenominator#145261, CASE WHEN (isnull(outboundUnit#145262) OR (outboundUnit#145262 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#145262 END AS outboundUnit#145263]
(367) Project
Arguments: [product#145220, plant#145221, orderDateTime#145222, productPlant#145232, timezonecode#145246, outboundUnit#145263]
(368) Project
Arguments: [plant#145221]
(369) Deduplicate
Arguments: [plant#145221]
(370) Join
Arguments: Inner, (plantUuid#145217 = plant#145221)
(371) Project
Arguments: [plantId#145216, plantUuid#145217, storageLocId#145218, storageLocUuid#145219]
(372) Join
Arguments: Inner, (plant#145189.internalRefUUID <=> plantUuid#145217)
(373) Generate
Arguments: explode(filter(stockQuantities#145191, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#145219) AND (lambda x#143085.storageLocation.Id = storageLocId#145218)), lambda x#143085, false))), false, [stockQuantity#145264]
(374) Project
Arguments: [systemId#145186, internalUUID#145187, product#145188, plant#145189, calculationDateTime#145190, stockQuantities#145191, plantId#145216, plantUuid#145217, storageLocId#145218, storageLocUuid#145219, stockQuantity#145264]
(375) Aggregate
Arguments: [plantUuid#145217, internalUUID#145187, plant#145189, product#145188, systemId#145186], [plantUuid#145217, internalUUID#145187, plant#145189, product#145188, systemId#145186, first(calculationDateTime#145190, false) AS calculationDateTime#145265, collect_list(stockQuantity#145264, 0, 0) AS stockQuantities#145266]
(376) Project
Arguments: [systemId#145186, internalUUID#145187, product#145188, plant#145189, calculationDateTime#145265, stockQuantities#145266]
(377) Generate
Arguments: explode(stockQuantities#145266), false, [stockQuantity#145267]
(378) Project
Arguments: [systemId#145186, internalUUID#145187, product#145188, plant#145189, calculationDateTime#145265, stockQuantities#145266, stockQuantity#145267]
(379) Project
Arguments: [plant#145189.id AS plant#145268, plant#145189.internalRefUUID AS plantUuid#145269, product#145188.id AS product#145270, product#145188.internalRefUUID AS productUuid#145271, calculationDateTime#145265, stockQuantity#145267.storagelocation.id AS storageLocId#145272, stockQuantity#145267.storagelocation.internalRefUUID AS storageLocUuid#145273, stockQuantity#145267.quantity.measure AS quantity#145274, stockQuantity#145267.specialStockIndicator.code AS specialStockIndicator#145275, stockQuantity#145267.stockType.code AS stockType#145276]
(380) Filter
Arguments: ((specialStockIndicator#145275 = ) AND (stockType#145276 = 01))
(381) LogicalRelation
Arguments: parquet, [product#145277, plant#145278, orderDateTime#145279, planningStartDateTime#145280], false
(382) RepartitionByExpression
Arguments: [product#145277, plant#145278], 25
(383) Project
Arguments: [product#145277, plant#145278, orderDateTime#145279]
(384) LogicalRelation
Arguments: parquet, [systemId#145281, internalUUID#145282, plant#145283, product#145284, blockedForReplenishmentStartingFrom#145285, productionAspect#145286, salesPlant#145287, listing#145288], false
(385) Repartition
Arguments: 25, true
(386) Project
Arguments: [systemId#145281, internalUUID#145282, plant#145283, product#145284, blockedForReplenishmentStartingFrom#145285, productionAspect#145286, salesPlant#145287, listing#145288, struct(systemId, systemId#145281, internalUUID, internalUUID#145282, plant, plant#145283, product, product#145284, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#145285, productionAspect, productionAspect#145286, salesPlant, salesPlant#145287, listing, listing#145288) AS productPlant#145289]
(387) Project
Arguments: [productPlant#145289]
(388) Join
Arguments: LeftOuter, ((product#145277 <=> productPlant#145289.product.internalRefUUID) AND (plant#145278 <=> productPlant#145289.plant.internalRefUUID))
(389) Project
Arguments: [product#145277, plant#145278, orderDateTime#145279, productPlant#145289]
(390) SubqueryAlias
Arguments: wl
(391) LogicalRelation
Arguments: parquet, [systemId#145290, internalUUID#145291, id#145292, displayId#145293, name#145294, category#145295, companyCode#145296, address#145297, mainDistributionChain#145298, mainPurchasingOrganization#145299, validPurchasingOrganizations#145300, productGroup#145301], false
(392) Repartition
Arguments: 25, true
(393) Project
Arguments: [internalUUID#145291, address#145297.timeZone.code AS timezonecode#145302]
(394) Join
Arguments: LeftOuter, (plant#145278 <=> internalUUID#145291)
(395) Project
Arguments: [product#145277, plant#145278, orderDateTime#145279, productPlant#145289, internalUUID#145291, CASE WHEN isnotnull(timezonecode#145302) THEN timezonecode#145302 ELSE UTC END AS timezonecode#145303]
(396) Project
Arguments: [product#145277, plant#145278, orderDateTime#145279, productPlant#145289, timezonecode#145303]
(397) LogicalRelation
Arguments: parquet, [systemId#145304, internalUUID#145305, id#145306, displayId#145307, name#145308, baseUnitOfMeasure#145309, unitOfMeasures#145310, unitOfMeasureConversions#145311, productionAspect#145312, salesAspect#145313, procurementAspect#145314, productGroup#145315], false
(398) Repartition
Arguments: 25, true
(399) Join
Arguments: LeftOuter, (product#145277 = internalUUID#145305)
(400) Project
Arguments: [product#145277, plant#145278, orderDateTime#145279, productPlant#145289, timezonecode#145303, systemId#145304, internalUUID#145305, id#145306, displayId#145307, name#145308, baseUnitOfMeasure#145309, unitOfMeasures#145310, unitOfMeasureConversions#145311, productionAspect#145312, salesAspect#145313, procurementAspect#145314, productGroup#145315, filter(unitOfMeasureConversions#145311, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#145289.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#145289.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#145309.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#145309.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#145316]
(401) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145316.quantityNumerator), true, [quantityNumerator#145317]
(402) Project
Arguments: [product#145277, plant#145278, orderDateTime#145279, productPlant#145289, timezonecode#145303, systemId#145304, internalUUID#145305, id#145306, displayId#145307, name#145308, baseUnitOfMeasure#145309, unitOfMeasures#145310, unitOfMeasureConversions#145311, productionAspect#145312, salesAspect#145313, procurementAspect#145314, productGroup#145315, filteredUnitOfMeasureConversions#145316, quantityNumerator#145317]
(403) Generate
Arguments: explode(filteredUnitOfMeasureConversions#145316.quantityDenominator), true, [quantityDenominator#145318]
(404) Project
Arguments: [product#145277, plant#145278, orderDateTime#145279, productPlant#145289, timezonecode#145303, systemId#145304, internalUUID#145305, id#145306, displayId#145307, name#145308, baseUnitOfMeasure#145309, unitOfMeasures#145310, unitOfMeasureConversions#145311, productionAspect#145312, salesAspect#145313, procurementAspect#145314, productGroup#145315, filteredUnitOfMeasureConversions#145316, quantityNumerator#145317, quantityDenominator#145318]
(405) Project
Arguments: [product#145277, plant#145278, orderDateTime#145279, productPlant#145289, timezonecode#145303, systemId#145304, internalUUID#145305, id#145306, displayId#145307, name#145308, baseUnitOfMeasure#145309, unitOfMeasures#145310, unitOfMeasureConversions#145311, productionAspect#145312, salesAspect#145313, procurementAspect#145314, productGroup#145315, filteredUnitOfMeasureConversions#145316, quantityNumerator#145317, quantityDenominator#145318, (cast(quantityNumerator#145317 as double) / cast(quantityDenominator#145318 as double)) AS outboundUnit#145319]
(406) Project
Arguments: [product#145277, plant#145278, orderDateTime#145279, productPlant#145289, timezonecode#145303, systemId#145304, internalUUID#145305, id#145306, displayId#145307, name#145308, baseUnitOfMeasure#145309, unitOfMeasures#145310, unitOfMeasureConversions#145311, productionAspect#145312, salesAspect#145313, procurementAspect#145314, productGroup#145315, filteredUnitOfMeasureConversions#145316, quantityNumerator#145317, quantityDenominator#145318, CASE WHEN (isnull(outboundUnit#145319) OR (outboundUnit#145319 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#145319 END AS outboundUnit#145320]
(407) Project
Arguments: [product#145277, plant#145278, orderDateTime#145279, productPlant#145289, timezonecode#145303, outboundUnit#145320]
(408) Join
Arguments: Inner, ((plantUuid#145269 = plant#145278) AND (productUuid#145271 = product#145277))
(409) Filter
Arguments: (calculationDateTime#145265 <= orderDateTime#145279)
(410) Project
Arguments: [plantUuid#145269 AS plant#145321, productUuid#145271 AS product#145322, storageLocId#145272, calculationDateTime#145265, quantity#145274]
(411) Aggregate
Arguments: [plant#145321, product#145322, storageLocId#145272], [plant#145321, product#145322, storageLocId#145272, max(calculationDateTime#145265) AS max_calc_datetime#145323]
(412) Join
Arguments: Inner, ((((plant#145184 <=> plant#145321) AND (product#145185 <=> product#145322)) AND (storageLocId#145135 <=> storageLocId#145272)) AND (calculationDateTime#145128 <=> max_calc_datetime#145323))
(413) Project
Arguments: [plant#145184, product#145185, storageLocId#145135, calculationDateTime#145128, quantity#145137]
(414) Aggregate
Arguments: [product#145185, plant#145184], [product#145185, plant#145184, sum(quantity#145137) AS quantitySum#145324, min(calculationDateTime#145128) AS minCalculationDateTime#145325]
(415) Project
Arguments: [product#145185, plant#145184, quantitySum#145324, minCalculationDateTime#145325, round(quantitySum#145324, 0) AS roundedQuantitySum#145326]
(416) Join
Arguments: LeftOuter, ((plant#145006 = plant#145184) AND (product#145005 = product#145185))
(417) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, outboundUnit#145048, roundedQuantitySum#145326, minCalculationDateTime#145325]
(418) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, outboundUnit#145048, roundedQuantitySum#145326, minCalculationDateTime#145325, CASE WHEN isnotnull(minCalculationDateTime#145325) THEN minCalculationDateTime#145325 ELSE orderDateTime#145007 END AS stockDatetime#145327]
(419) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, outboundUnit#145048, roundedQuantitySum#145326, minCalculationDateTime#145325, stockDatetime#145327, CASE WHEN isnotnull(roundedQuantitySum#145326) THEN array(roundedQuantitySum#145326) ELSE array(0.0) END AS stockBatchQuantities#145328]
(420) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, outboundUnit#145048, roundedQuantitySum#145326, minCalculationDateTime#145325, stockDatetime#145327, stockBatchQuantities#145328, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#145329]
(421) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, outboundUnit#145048, roundedQuantitySum#145326, stockDatetime#145327, stockBatchQuantities#145328, stockBatchShelfLifeEndDatetimes#145329]
(422) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, outboundUnit#145048, stockDatetime#145327, stockBatchQuantities#145328, stockBatchShelfLifeEndDatetimes#145329]
(423) LogicalRelation
Arguments: parquet, [product#143466, plant#143467, orderDateTime#143468, planningStartDateTime#143469], false
(424) RepartitionByExpression
Arguments: [product#143466, plant#143467], 25
(425) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468]
(426) LogicalRelation
Arguments: parquet, [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477], false
(427) Repartition
Arguments: 25, true
(428) Project
Arguments: [systemId#143470, internalUUID#143471, plant#143472, product#143473, blockedForReplenishmentStartingFrom#143474, productionAspect#143475, salesPlant#143476, listing#143477, struct(systemId, systemId#143470, internalUUID, internalUUID#143471, plant, plant#143472, product, product#143473, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143474, productionAspect, productionAspect#143475, salesPlant, salesPlant#143476, listing, listing#143477) AS productPlant#143478]
(429) Project
Arguments: [productPlant#143478]
(430) Join
Arguments: LeftOuter, ((product#143466 <=> productPlant#143478.product.internalRefUUID) AND (plant#143467 <=> productPlant#143478.plant.internalRefUUID))
(431) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478]
(432) SubqueryAlias
Arguments: wl
(433) LogicalRelation
Arguments: parquet, [systemId#143479, internalUUID#143480, id#143481, displayId#143482, name#143483, category#143484, companyCode#143485, address#143486, mainDistributionChain#143487, mainPurchasingOrganization#143488, validPurchasingOrganizations#143489, productGroup#143490], false
(434) Repartition
Arguments: 25, true
(435) Project
Arguments: [internalUUID#143480, address#143486.timeZone.code AS timezonecode#143491]
(436) Join
Arguments: LeftOuter, (plant#143467 <=> internalUUID#143480)
(437) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, internalUUID#143480, CASE WHEN isnotnull(timezonecode#143491) THEN timezonecode#143491 ELSE UTC END AS timezonecode#143492]
(438) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492]
(439) LogicalRelation
Arguments: parquet, [systemId#143493, internalUUID#143494, id#143495, displayId#143496, name#143497, baseUnitOfMeasure#143498, unitOfMeasures#143499, unitOfMeasureConversions#143500, productionAspect#143501, salesAspect#143502, procurementAspect#143503, productGroup#143504], false
(440) Repartition
Arguments: 25, true
(441) Join
Arguments: LeftOuter, (product#143466 = internalUUID#143494)
(442) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, systemId#143493, internalUUID#143494, id#143495, displayId#143496, name#143497, baseUnitOfMeasure#143498, unitOfMeasures#143499, unitOfMeasureConversions#143500, productionAspect#143501, salesAspect#143502, procurementAspect#143503, productGroup#143504, filter(unitOfMeasureConversions#143500, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143498.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143498.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143505]
(443) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143505.quantityNumerator), true, [quantityNumerator#143506]
(444) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, systemId#143493, internalUUID#143494, id#143495, displayId#143496, name#143497, baseUnitOfMeasure#143498, unitOfMeasures#143499, unitOfMeasureConversions#143500, productionAspect#143501, salesAspect#143502, procurementAspect#143503, productGroup#143504, filteredUnitOfMeasureConversions#143505, quantityNumerator#143506]
(445) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143505.quantityDenominator), true, [quantityDenominator#143507]
(446) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, systemId#143493, internalUUID#143494, id#143495, displayId#143496, name#143497, baseUnitOfMeasure#143498, unitOfMeasures#143499, unitOfMeasureConversions#143500, productionAspect#143501, salesAspect#143502, procurementAspect#143503, productGroup#143504, filteredUnitOfMeasureConversions#143505, quantityNumerator#143506, quantityDenominator#143507]
(447) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, systemId#143493, internalUUID#143494, id#143495, displayId#143496, name#143497, baseUnitOfMeasure#143498, unitOfMeasures#143499, unitOfMeasureConversions#143500, productionAspect#143501, salesAspect#143502, procurementAspect#143503, productGroup#143504, filteredUnitOfMeasureConversions#143505, quantityNumerator#143506, quantityDenominator#143507, (cast(quantityNumerator#143506 as double) / cast(quantityDenominator#143507 as double)) AS outboundUnit#143508]
(448) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, systemId#143493, internalUUID#143494, id#143495, displayId#143496, name#143497, baseUnitOfMeasure#143498, unitOfMeasures#143499, unitOfMeasureConversions#143500, productionAspect#143501, salesAspect#143502, procurementAspect#143503, productGroup#143504, filteredUnitOfMeasureConversions#143505, quantityNumerator#143506, quantityDenominator#143507, CASE WHEN (isnull(outboundUnit#143508) OR (outboundUnit#143508 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143508 END AS outboundUnit#143509]
(449) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509]
(450) LogicalRelation
Arguments: parquet, [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515], false
(451) Repartition
Arguments: 25, true
(452) LogicalRelation
Arguments: parquet, [marketUnit#143516, description#143517, articleHierarchy#143518, defaultCurrency#143519, responsibilities#143520, replenishmentTypes#143521, distributionCenters#143522, assignedArticleHierarchyNodes#143523, minOrderQtySetting#143524, listingCheck#143525, odsSelection#143526, demandProfiles#143527, constraintProfiles#143528, optimizationProfiles#143529, orderGroupSplitProfiles#143530, supplierMinimumProfiles#143531, multipleRestrictionProfiles#143532, preferredUomSource#143533, handlingOfUnfulfilledDemands#143534, negligibleQuantitiesThreshold#143535, eventtype#143536, minOrderQtySettingInternal#143537], false
(453) Repartition
Arguments: 25, true
(454) Filter
Arguments: (marketUnit#143516 <=> Daily_grocery)
(455) Project
Arguments: [marketUnit#143516, description#143517, articleHierarchy#143518, defaultCurrency#143519, responsibilities#143520, replenishmentTypes#143521, distributionCenters#143522, assignedArticleHierarchyNodes#143523, minOrderQtySetting#143524, listingCheck#143525, odsSelection#143526, demandProfiles#143527, constraintProfiles#143528, optimizationProfiles#143529, orderGroupSplitProfiles#143530, supplierMinimumProfiles#143531, multipleRestrictionProfiles#143532, preferredUomSource#143533, handlingOfUnfulfilledDemands#143534, negligibleQuantitiesThreshold#143535, eventtype#143536, minOrderQtySettingInternal#143537]
(456) Project
Arguments: [distributionCenters#143522]
(457) Generate
Arguments: explode(distributionCenters#143522), false, [distributionCenters#143538]
(458) Project
Arguments: [distributionCenters#143538]
(459) Generate
Arguments: explode(distributionCenters#143538.storageLocations), false, [storageLocations#143539]
(460) Project
Arguments: [distributionCenters#143538.id AS plantId#143540, distributionCenters#143538.internalRefUUID AS plantUuid#143541, storageLocations#143539]
(461) Project
Arguments: [plantId#143540, plantUuid#143541, storageLocations#143539.id AS storageLocId#143542, storageLocations#143539.internalRefUUID AS storageLocUuid#143543]
(462) LogicalRelation
Arguments: parquet, [product#143544, plant#143545, orderDateTime#143546, planningStartDateTime#143547], false
(463) RepartitionByExpression
Arguments: [product#143544, plant#143545], 25
(464) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546]
(465) LogicalRelation
Arguments: parquet, [systemId#143548, internalUUID#143549, plant#143550, product#143551, blockedForReplenishmentStartingFrom#143552, productionAspect#143553, salesPlant#143554, listing#143555], false
(466) Repartition
Arguments: 25, true
(467) Project
Arguments: [systemId#143548, internalUUID#143549, plant#143550, product#143551, blockedForReplenishmentStartingFrom#143552, productionAspect#143553, salesPlant#143554, listing#143555, struct(systemId, systemId#143548, internalUUID, internalUUID#143549, plant, plant#143550, product, product#143551, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143552, productionAspect, productionAspect#143553, salesPlant, salesPlant#143554, listing, listing#143555) AS productPlant#143556]
(468) Project
Arguments: [productPlant#143556]
(469) Join
Arguments: LeftOuter, ((product#143544 <=> productPlant#143556.product.internalRefUUID) AND (plant#143545 <=> productPlant#143556.plant.internalRefUUID))
(470) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556]
(471) SubqueryAlias
Arguments: wl
(472) LogicalRelation
Arguments: parquet, [systemId#143557, internalUUID#143558, id#143559, displayId#143560, name#143561, category#143562, companyCode#143563, address#143564, mainDistributionChain#143565, mainPurchasingOrganization#143566, validPurchasingOrganizations#143567, productGroup#143568], false
(473) Repartition
Arguments: 25, true
(474) Project
Arguments: [internalUUID#143558, address#143564.timeZone.code AS timezonecode#143569]
(475) Join
Arguments: LeftOuter, (plant#143545 <=> internalUUID#143558)
(476) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, internalUUID#143558, CASE WHEN isnotnull(timezonecode#143569) THEN timezonecode#143569 ELSE UTC END AS timezonecode#143570]
(477) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570]
(478) LogicalRelation
Arguments: parquet, [systemId#143571, internalUUID#143572, id#143573, displayId#143574, name#143575, baseUnitOfMeasure#143576, unitOfMeasures#143577, unitOfMeasureConversions#143578, productionAspect#143579, salesAspect#143580, procurementAspect#143581, productGroup#143582], false
(479) Repartition
Arguments: 25, true
(480) Join
Arguments: LeftOuter, (product#143544 = internalUUID#143572)
(481) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570, systemId#143571, internalUUID#143572, id#143573, displayId#143574, name#143575, baseUnitOfMeasure#143576, unitOfMeasures#143577, unitOfMeasureConversions#143578, productionAspect#143579, salesAspect#143580, procurementAspect#143581, productGroup#143582, filter(unitOfMeasureConversions#143578, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143556.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143556.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143576.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143576.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143583]
(482) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143583.quantityNumerator), true, [quantityNumerator#143584]
(483) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570, systemId#143571, internalUUID#143572, id#143573, displayId#143574, name#143575, baseUnitOfMeasure#143576, unitOfMeasures#143577, unitOfMeasureConversions#143578, productionAspect#143579, salesAspect#143580, procurementAspect#143581, productGroup#143582, filteredUnitOfMeasureConversions#143583, quantityNumerator#143584]
(484) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143583.quantityDenominator), true, [quantityDenominator#143585]
(485) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570, systemId#143571, internalUUID#143572, id#143573, displayId#143574, name#143575, baseUnitOfMeasure#143576, unitOfMeasures#143577, unitOfMeasureConversions#143578, productionAspect#143579, salesAspect#143580, procurementAspect#143581, productGroup#143582, filteredUnitOfMeasureConversions#143583, quantityNumerator#143584, quantityDenominator#143585]
(486) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570, systemId#143571, internalUUID#143572, id#143573, displayId#143574, name#143575, baseUnitOfMeasure#143576, unitOfMeasures#143577, unitOfMeasureConversions#143578, productionAspect#143579, salesAspect#143580, procurementAspect#143581, productGroup#143582, filteredUnitOfMeasureConversions#143583, quantityNumerator#143584, quantityDenominator#143585, (cast(quantityNumerator#143584 as double) / cast(quantityDenominator#143585 as double)) AS outboundUnit#143586]
(487) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570, systemId#143571, internalUUID#143572, id#143573, displayId#143574, name#143575, baseUnitOfMeasure#143576, unitOfMeasures#143577, unitOfMeasureConversions#143578, productionAspect#143579, salesAspect#143580, procurementAspect#143581, productGroup#143582, filteredUnitOfMeasureConversions#143583, quantityNumerator#143584, quantityDenominator#143585, CASE WHEN (isnull(outboundUnit#143586) OR (outboundUnit#143586 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143586 END AS outboundUnit#143587]
(488) Project
Arguments: [product#143544, plant#143545, orderDateTime#143546, productPlant#143556, timezonecode#143570, outboundUnit#143587]
(489) Project
Arguments: [plant#143545]
(490) Deduplicate
Arguments: [plant#143545]
(491) Join
Arguments: Inner, (plantUuid#143541 = plant#143545)
(492) Project
Arguments: [plantId#143540, plantUuid#143541, storageLocId#143542, storageLocUuid#143543]
(493) Join
Arguments: Inner, (plant#143513.internalRefUUID <=> plantUuid#143541)
(494) Generate
Arguments: explode(filter(stockQuantities#143515, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143543) AND (lambda x#143085.storageLocation.Id = storageLocId#143542)), lambda x#143085, false))), false, [stockQuantity#143588]
(495) Project
Arguments: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143514, stockQuantities#143515, plantId#143540, plantUuid#143541, storageLocId#143542, storageLocUuid#143543, stockQuantity#143588]
(496) Aggregate
Arguments: [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510], [plantUuid#143541, internalUUID#143511, plant#143513, product#143512, systemId#143510, first(calculationDateTime#143514, false) AS calculationDateTime#143589, collect_list(stockQuantity#143588, 0, 0) AS stockQuantities#143590]
(497) Project
Arguments: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590]
(498) Generate
Arguments: explode(stockQuantities#143590), false, [stockQuantity#143591]
(499) Project
Arguments: [systemId#143510, internalUUID#143511, product#143512, plant#143513, calculationDateTime#143589, stockQuantities#143590, stockQuantity#143591]
(500) Project
Arguments: [plant#143513.id AS plant#143592, plant#143513.internalRefUUID AS plantUuid#143593, product#143512.id AS product#143594, product#143512.internalRefUUID AS productUuid#143595, calculationDateTime#143589, stockQuantity#143591.storagelocation.id AS storageLocId#143596, stockQuantity#143591.storagelocation.internalRefUUID AS storageLocUuid#143597, stockQuantity#143591.quantity.measure AS quantity#143598, stockQuantity#143591.specialStockIndicator.code AS specialStockIndicator#143599, stockQuantity#143591.stockType.code AS stockType#143600]
(501) Filter
Arguments: ((specialStockIndicator#143599 = ) AND (stockType#143600 = 01))
(502) LogicalRelation
Arguments: parquet, [product#143601, plant#143602, orderDateTime#143603, planningStartDateTime#143604], false
(503) RepartitionByExpression
Arguments: [product#143601, plant#143602], 25
(504) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603]
(505) LogicalRelation
Arguments: parquet, [systemId#143605, internalUUID#143606, plant#143607, product#143608, blockedForReplenishmentStartingFrom#143609, productionAspect#143610, salesPlant#143611, listing#143612], false
(506) Repartition
Arguments: 25, true
(507) Project
Arguments: [systemId#143605, internalUUID#143606, plant#143607, product#143608, blockedForReplenishmentStartingFrom#143609, productionAspect#143610, salesPlant#143611, listing#143612, struct(systemId, systemId#143605, internalUUID, internalUUID#143606, plant, plant#143607, product, product#143608, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143609, productionAspect, productionAspect#143610, salesPlant, salesPlant#143611, listing, listing#143612) AS productPlant#143613]
(508) Project
Arguments: [productPlant#143613]
(509) Join
Arguments: LeftOuter, ((product#143601 <=> productPlant#143613.product.internalRefUUID) AND (plant#143602 <=> productPlant#143613.plant.internalRefUUID))
(510) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613]
(511) SubqueryAlias
Arguments: wl
(512) LogicalRelation
Arguments: parquet, [systemId#143614, internalUUID#143615, id#143616, displayId#143617, name#143618, category#143619, companyCode#143620, address#143621, mainDistributionChain#143622, mainPurchasingOrganization#143623, validPurchasingOrganizations#143624, productGroup#143625], false
(513) Repartition
Arguments: 25, true
(514) Project
Arguments: [internalUUID#143615, address#143621.timeZone.code AS timezonecode#143626]
(515) Join
Arguments: LeftOuter, (plant#143602 <=> internalUUID#143615)
(516) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, internalUUID#143615, CASE WHEN isnotnull(timezonecode#143626) THEN timezonecode#143626 ELSE UTC END AS timezonecode#143627]
(517) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627]
(518) LogicalRelation
Arguments: parquet, [systemId#143628, internalUUID#143629, id#143630, displayId#143631, name#143632, baseUnitOfMeasure#143633, unitOfMeasures#143634, unitOfMeasureConversions#143635, productionAspect#143636, salesAspect#143637, procurementAspect#143638, productGroup#143639], false
(519) Repartition
Arguments: 25, true
(520) Join
Arguments: LeftOuter, (product#143601 = internalUUID#143629)
(521) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627, systemId#143628, internalUUID#143629, id#143630, displayId#143631, name#143632, baseUnitOfMeasure#143633, unitOfMeasures#143634, unitOfMeasureConversions#143635, productionAspect#143636, salesAspect#143637, procurementAspect#143638, productGroup#143639, filter(unitOfMeasureConversions#143635, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143613.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143613.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143633.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143633.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143640]
(522) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143640.quantityNumerator), true, [quantityNumerator#143641]
(523) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627, systemId#143628, internalUUID#143629, id#143630, displayId#143631, name#143632, baseUnitOfMeasure#143633, unitOfMeasures#143634, unitOfMeasureConversions#143635, productionAspect#143636, salesAspect#143637, procurementAspect#143638, productGroup#143639, filteredUnitOfMeasureConversions#143640, quantityNumerator#143641]
(524) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143640.quantityDenominator), true, [quantityDenominator#143642]
(525) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627, systemId#143628, internalUUID#143629, id#143630, displayId#143631, name#143632, baseUnitOfMeasure#143633, unitOfMeasures#143634, unitOfMeasureConversions#143635, productionAspect#143636, salesAspect#143637, procurementAspect#143638, productGroup#143639, filteredUnitOfMeasureConversions#143640, quantityNumerator#143641, quantityDenominator#143642]
(526) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627, systemId#143628, internalUUID#143629, id#143630, displayId#143631, name#143632, baseUnitOfMeasure#143633, unitOfMeasures#143634, unitOfMeasureConversions#143635, productionAspect#143636, salesAspect#143637, procurementAspect#143638, productGroup#143639, filteredUnitOfMeasureConversions#143640, quantityNumerator#143641, quantityDenominator#143642, (cast(quantityNumerator#143641 as double) / cast(quantityDenominator#143642 as double)) AS outboundUnit#143643]
(527) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627, systemId#143628, internalUUID#143629, id#143630, displayId#143631, name#143632, baseUnitOfMeasure#143633, unitOfMeasures#143634, unitOfMeasureConversions#143635, productionAspect#143636, salesAspect#143637, procurementAspect#143638, productGroup#143639, filteredUnitOfMeasureConversions#143640, quantityNumerator#143641, quantityDenominator#143642, CASE WHEN (isnull(outboundUnit#143643) OR (outboundUnit#143643 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143643 END AS outboundUnit#143644]
(528) Project
Arguments: [product#143601, plant#143602, orderDateTime#143603, productPlant#143613, timezonecode#143627, outboundUnit#143644]
(529) Join
Arguments: Inner, ((plantUuid#143593 = plant#143602) AND (productUuid#143595 = product#143601))
(530) Filter
Arguments: (calculationDateTime#143589 <= orderDateTime#143603)
(531) Project
Arguments: [plantUuid#143593 AS plant#143645, productUuid#143595 AS product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
(532) LogicalRelation
Arguments: parquet, [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652], false
(533) Repartition
Arguments: 25, true
(534) LogicalRelation
Arguments: parquet, [marketUnit#143653, description#143654, articleHierarchy#143655, defaultCurrency#143656, responsibilities#143657, replenishmentTypes#143658, distributionCenters#143659, assignedArticleHierarchyNodes#143660, minOrderQtySetting#143661, listingCheck#143662, odsSelection#143663, demandProfiles#143664, constraintProfiles#143665, optimizationProfiles#143666, orderGroupSplitProfiles#143667, supplierMinimumProfiles#143668, multipleRestrictionProfiles#143669, preferredUomSource#143670, handlingOfUnfulfilledDemands#143671, negligibleQuantitiesThreshold#143672, eventtype#143673, minOrderQtySettingInternal#143674], false
(535) Repartition
Arguments: 25, true
(536) Filter
Arguments: (marketUnit#143653 <=> Daily_grocery)
(537) Project
Arguments: [marketUnit#143653, description#143654, articleHierarchy#143655, defaultCurrency#143656, responsibilities#143657, replenishmentTypes#143658, distributionCenters#143659, assignedArticleHierarchyNodes#143660, minOrderQtySetting#143661, listingCheck#143662, odsSelection#143663, demandProfiles#143664, constraintProfiles#143665, optimizationProfiles#143666, orderGroupSplitProfiles#143667, supplierMinimumProfiles#143668, multipleRestrictionProfiles#143669, preferredUomSource#143670, handlingOfUnfulfilledDemands#143671, negligibleQuantitiesThreshold#143672, eventtype#143673, minOrderQtySettingInternal#143674]
(538) Project
Arguments: [distributionCenters#143659]
(539) Generate
Arguments: explode(distributionCenters#143659), false, [distributionCenters#143675]
(540) Project
Arguments: [distributionCenters#143675]
(541) Generate
Arguments: explode(distributionCenters#143675.storageLocations), false, [storageLocations#143676]
(542) Project
Arguments: [distributionCenters#143675.id AS plantId#143677, distributionCenters#143675.internalRefUUID AS plantUuid#143678, storageLocations#143676]
(543) Project
Arguments: [plantId#143677, plantUuid#143678, storageLocations#143676.id AS storageLocId#143679, storageLocations#143676.internalRefUUID AS storageLocUuid#143680]
(544) LogicalRelation
Arguments: parquet, [product#143681, plant#143682, orderDateTime#143683, planningStartDateTime#143684], false
(545) RepartitionByExpression
Arguments: [product#143681, plant#143682], 25
(546) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683]
(547) LogicalRelation
Arguments: parquet, [systemId#143685, internalUUID#143686, plant#143687, product#143688, blockedForReplenishmentStartingFrom#143689, productionAspect#143690, salesPlant#143691, listing#143692], false
(548) Repartition
Arguments: 25, true
(549) Project
Arguments: [systemId#143685, internalUUID#143686, plant#143687, product#143688, blockedForReplenishmentStartingFrom#143689, productionAspect#143690, salesPlant#143691, listing#143692, struct(systemId, systemId#143685, internalUUID, internalUUID#143686, plant, plant#143687, product, product#143688, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143689, productionAspect, productionAspect#143690, salesPlant, salesPlant#143691, listing, listing#143692) AS productPlant#143693]
(550) Project
Arguments: [productPlant#143693]
(551) Join
Arguments: LeftOuter, ((product#143681 <=> productPlant#143693.product.internalRefUUID) AND (plant#143682 <=> productPlant#143693.plant.internalRefUUID))
(552) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693]
(553) SubqueryAlias
Arguments: wl
(554) LogicalRelation
Arguments: parquet, [systemId#143694, internalUUID#143695, id#143696, displayId#143697, name#143698, category#143699, companyCode#143700, address#143701, mainDistributionChain#143702, mainPurchasingOrganization#143703, validPurchasingOrganizations#143704, productGroup#143705], false
(555) Repartition
Arguments: 25, true
(556) Project
Arguments: [internalUUID#143695, address#143701.timeZone.code AS timezonecode#143706]
(557) Join
Arguments: LeftOuter, (plant#143682 <=> internalUUID#143695)
(558) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, internalUUID#143695, CASE WHEN isnotnull(timezonecode#143706) THEN timezonecode#143706 ELSE UTC END AS timezonecode#143707]
(559) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707]
(560) LogicalRelation
Arguments: parquet, [systemId#143708, internalUUID#143709, id#143710, displayId#143711, name#143712, baseUnitOfMeasure#143713, unitOfMeasures#143714, unitOfMeasureConversions#143715, productionAspect#143716, salesAspect#143717, procurementAspect#143718, productGroup#143719], false
(561) Repartition
Arguments: 25, true
(562) Join
Arguments: LeftOuter, (product#143681 = internalUUID#143709)
(563) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707, systemId#143708, internalUUID#143709, id#143710, displayId#143711, name#143712, baseUnitOfMeasure#143713, unitOfMeasures#143714, unitOfMeasureConversions#143715, productionAspect#143716, salesAspect#143717, procurementAspect#143718, productGroup#143719, filter(unitOfMeasureConversions#143715, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143693.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143693.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143713.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143713.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143720]
(564) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143720.quantityNumerator), true, [quantityNumerator#143721]
(565) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707, systemId#143708, internalUUID#143709, id#143710, displayId#143711, name#143712, baseUnitOfMeasure#143713, unitOfMeasures#143714, unitOfMeasureConversions#143715, productionAspect#143716, salesAspect#143717, procurementAspect#143718, productGroup#143719, filteredUnitOfMeasureConversions#143720, quantityNumerator#143721]
(566) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143720.quantityDenominator), true, [quantityDenominator#143722]
(567) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707, systemId#143708, internalUUID#143709, id#143710, displayId#143711, name#143712, baseUnitOfMeasure#143713, unitOfMeasures#143714, unitOfMeasureConversions#143715, productionAspect#143716, salesAspect#143717, procurementAspect#143718, productGroup#143719, filteredUnitOfMeasureConversions#143720, quantityNumerator#143721, quantityDenominator#143722]
(568) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707, systemId#143708, internalUUID#143709, id#143710, displayId#143711, name#143712, baseUnitOfMeasure#143713, unitOfMeasures#143714, unitOfMeasureConversions#143715, productionAspect#143716, salesAspect#143717, procurementAspect#143718, productGroup#143719, filteredUnitOfMeasureConversions#143720, quantityNumerator#143721, quantityDenominator#143722, (cast(quantityNumerator#143721 as double) / cast(quantityDenominator#143722 as double)) AS outboundUnit#143723]
(569) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707, systemId#143708, internalUUID#143709, id#143710, displayId#143711, name#143712, baseUnitOfMeasure#143713, unitOfMeasures#143714, unitOfMeasureConversions#143715, productionAspect#143716, salesAspect#143717, procurementAspect#143718, productGroup#143719, filteredUnitOfMeasureConversions#143720, quantityNumerator#143721, quantityDenominator#143722, CASE WHEN (isnull(outboundUnit#143723) OR (outboundUnit#143723 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143723 END AS outboundUnit#143724]
(570) Project
Arguments: [product#143681, plant#143682, orderDateTime#143683, productPlant#143693, timezonecode#143707, outboundUnit#143724]
(571) Project
Arguments: [plant#143682]
(572) Deduplicate
Arguments: [plant#143682]
(573) Join
Arguments: Inner, (plantUuid#143678 = plant#143682)
(574) Project
Arguments: [plantId#143677, plantUuid#143678, storageLocId#143679, storageLocUuid#143680]
(575) Join
Arguments: Inner, (plant#143650.internalRefUUID <=> plantUuid#143678)
(576) Generate
Arguments: explode(filter(stockQuantities#143652, lambdafunction(((lambda x#143085.storageLocation.internalRefUuid = storageLocUuid#143680) AND (lambda x#143085.storageLocation.Id = storageLocId#143679)), lambda x#143085, false))), false, [stockQuantity#143725]
(577) Project
Arguments: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143651, stockQuantities#143652, plantId#143677, plantUuid#143678, storageLocId#143679, storageLocUuid#143680, stockQuantity#143725]
(578) Aggregate
Arguments: [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647], [plantUuid#143678, internalUUID#143648, plant#143650, product#143649, systemId#143647, first(calculationDateTime#143651, false) AS calculationDateTime#143726, collect_list(stockQuantity#143725, 0, 0) AS stockQuantities#143727]
(579) Project
Arguments: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143726, stockQuantities#143727]
(580) Generate
Arguments: explode(stockQuantities#143727), false, [stockQuantity#143728]
(581) Project
Arguments: [systemId#143647, internalUUID#143648, product#143649, plant#143650, calculationDateTime#143726, stockQuantities#143727, stockQuantity#143728]
(582) Project
Arguments: [plant#143650.id AS plant#143729, plant#143650.internalRefUUID AS plantUuid#143730, product#143649.id AS product#143731, product#143649.internalRefUUID AS productUuid#143732, calculationDateTime#143726, stockQuantity#143728.storagelocation.id AS storageLocId#143733, stockQuantity#143728.storagelocation.internalRefUUID AS storageLocUuid#143734, stockQuantity#143728.quantity.measure AS quantity#143735, stockQuantity#143728.specialStockIndicator.code AS specialStockIndicator#143736, stockQuantity#143728.stockType.code AS stockType#143737]
(583) Filter
Arguments: ((specialStockIndicator#143736 = ) AND (stockType#143737 = 01))
(584) LogicalRelation
Arguments: parquet, [product#143738, plant#143739, orderDateTime#143740, planningStartDateTime#143741], false
(585) RepartitionByExpression
Arguments: [product#143738, plant#143739], 25
(586) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740]
(587) LogicalRelation
Arguments: parquet, [systemId#143742, internalUUID#143743, plant#143744, product#143745, blockedForReplenishmentStartingFrom#143746, productionAspect#143747, salesPlant#143748, listing#143749], false
(588) Repartition
Arguments: 25, true
(589) Project
Arguments: [systemId#143742, internalUUID#143743, plant#143744, product#143745, blockedForReplenishmentStartingFrom#143746, productionAspect#143747, salesPlant#143748, listing#143749, struct(systemId, systemId#143742, internalUUID, internalUUID#143743, plant, plant#143744, product, product#143745, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143746, productionAspect, productionAspect#143747, salesPlant, salesPlant#143748, listing, listing#143749) AS productPlant#143750]
(590) Project
Arguments: [productPlant#143750]
(591) Join
Arguments: LeftOuter, ((product#143738 <=> productPlant#143750.product.internalRefUUID) AND (plant#143739 <=> productPlant#143750.plant.internalRefUUID))
(592) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750]
(593) SubqueryAlias
Arguments: wl
(594) LogicalRelation
Arguments: parquet, [systemId#143751, internalUUID#143752, id#143753, displayId#143754, name#143755, category#143756, companyCode#143757, address#143758, mainDistributionChain#143759, mainPurchasingOrganization#143760, validPurchasingOrganizations#143761, productGroup#143762], false
(595) Repartition
Arguments: 25, true
(596) Project
Arguments: [internalUUID#143752, address#143758.timeZone.code AS timezonecode#143763]
(597) Join
Arguments: LeftOuter, (plant#143739 <=> internalUUID#143752)
(598) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, internalUUID#143752, CASE WHEN isnotnull(timezonecode#143763) THEN timezonecode#143763 ELSE UTC END AS timezonecode#143764]
(599) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764]
(600) LogicalRelation
Arguments: parquet, [systemId#143765, internalUUID#143766, id#143767, displayId#143768, name#143769, baseUnitOfMeasure#143770, unitOfMeasures#143771, unitOfMeasureConversions#143772, productionAspect#143773, salesAspect#143774, procurementAspect#143775, productGroup#143776], false
(601) Repartition
Arguments: 25, true
(602) Join
Arguments: LeftOuter, (product#143738 = internalUUID#143766)
(603) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764, systemId#143765, internalUUID#143766, id#143767, displayId#143768, name#143769, baseUnitOfMeasure#143770, unitOfMeasures#143771, unitOfMeasureConversions#143772, productionAspect#143773, salesAspect#143774, procurementAspect#143775, productGroup#143776, filter(unitOfMeasureConversions#143772, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143750.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143750.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143770.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143770.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143777]
(604) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143777.quantityNumerator), true, [quantityNumerator#143778]
(605) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764, systemId#143765, internalUUID#143766, id#143767, displayId#143768, name#143769, baseUnitOfMeasure#143770, unitOfMeasures#143771, unitOfMeasureConversions#143772, productionAspect#143773, salesAspect#143774, procurementAspect#143775, productGroup#143776, filteredUnitOfMeasureConversions#143777, quantityNumerator#143778]
(606) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143777.quantityDenominator), true, [quantityDenominator#143779]
(607) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764, systemId#143765, internalUUID#143766, id#143767, displayId#143768, name#143769, baseUnitOfMeasure#143770, unitOfMeasures#143771, unitOfMeasureConversions#143772, productionAspect#143773, salesAspect#143774, procurementAspect#143775, productGroup#143776, filteredUnitOfMeasureConversions#143777, quantityNumerator#143778, quantityDenominator#143779]
(608) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764, systemId#143765, internalUUID#143766, id#143767, displayId#143768, name#143769, baseUnitOfMeasure#143770, unitOfMeasures#143771, unitOfMeasureConversions#143772, productionAspect#143773, salesAspect#143774, procurementAspect#143775, productGroup#143776, filteredUnitOfMeasureConversions#143777, quantityNumerator#143778, quantityDenominator#143779, (cast(quantityNumerator#143778 as double) / cast(quantityDenominator#143779 as double)) AS outboundUnit#143780]
(609) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764, systemId#143765, internalUUID#143766, id#143767, displayId#143768, name#143769, baseUnitOfMeasure#143770, unitOfMeasures#143771, unitOfMeasureConversions#143772, productionAspect#143773, salesAspect#143774, procurementAspect#143775, productGroup#143776, filteredUnitOfMeasureConversions#143777, quantityNumerator#143778, quantityDenominator#143779, CASE WHEN (isnull(outboundUnit#143780) OR (outboundUnit#143780 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143780 END AS outboundUnit#143781]
(610) Project
Arguments: [product#143738, plant#143739, orderDateTime#143740, productPlant#143750, timezonecode#143764, outboundUnit#143781]
(611) Join
Arguments: Inner, ((plantUuid#143730 = plant#143739) AND (productUuid#143732 = product#143738))
(612) Filter
Arguments: (calculationDateTime#143726 <= orderDateTime#143740)
(613) Project
Arguments: [plantUuid#143730 AS plant#143782, productUuid#143732 AS product#143783, storageLocId#143733, calculationDateTime#143726, quantity#143735]
(614) Aggregate
Arguments: [plant#143782, product#143783, storageLocId#143733], [plant#143782, product#143783, storageLocId#143733, max(calculationDateTime#143726) AS max_calc_datetime#143784]
(615) Join
Arguments: Inner, ((((plant#143645 <=> plant#143782) AND (product#143646 <=> product#143783)) AND (storageLocId#143596 <=> storageLocId#143733)) AND (calculationDateTime#143589 <=> max_calc_datetime#143784))
(616) Project
Arguments: [plant#143645, product#143646, storageLocId#143596, calculationDateTime#143589, quantity#143598]
(617) Aggregate
Arguments: [product#143646, plant#143645], [product#143646, plant#143645, sum(quantity#143598) AS quantitySum#143785, min(calculationDateTime#143589) AS minCalculationDateTime#143786]
(618) Project
Arguments: [product#143646, plant#143645, quantitySum#143785, minCalculationDateTime#143786, round(quantitySum#143785, 0) AS roundedQuantitySum#143787]
(619) Join
Arguments: LeftOuter, ((plant#143467 = plant#143645) AND (product#143466 = product#143646))
(620) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, roundedQuantitySum#143787, minCalculationDateTime#143786]
(621) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, roundedQuantitySum#143787, minCalculationDateTime#143786, CASE WHEN isnotnull(minCalculationDateTime#143786) THEN minCalculationDateTime#143786 ELSE orderDateTime#143468 END AS stockDatetime#143788]
(622) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, roundedQuantitySum#143787, minCalculationDateTime#143786, stockDatetime#143788, CASE WHEN isnotnull(roundedQuantitySum#143787) THEN array(roundedQuantitySum#143787) ELSE array(0.0) END AS stockBatchQuantities#143789]
(623) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, roundedQuantitySum#143787, minCalculationDateTime#143786, stockDatetime#143788, stockBatchQuantities#143789, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#143790]
(624) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, roundedQuantitySum#143787, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790]
(625) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790]
(626) LogicalRelation
Arguments: parquet, [product#145330, plant#145331, demandChannel#145332, demandStream#145333, considerVariance#145334, demandTimeBuckets#145335, demandPointInTimeStart#145336, demandPointInTimeEnd#145337, demandPointInTime#145338], false
(627) Join
Arguments: LeftOuter, ((product#143466 = product#145330) AND (plant#143467 = plant#145331))
(628) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790, demandChannel#145332, demandStream#145333, considerVariance#145334, demandTimeBuckets#145335, demandPointInTimeStart#145336, demandPointInTimeEnd#145337, demandPointInTime#145338, product#145330, plant#145331]
(629) Project
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790, demandChannel#145332, demandStream#145333, considerVariance#145334, demandTimeBuckets#145335, demandPointInTimeStart#145336, demandPointInTimeEnd#145337, demandPointInTime#145338, CASE WHEN isnotnull(product#145330) THEN struct(demandChannel, demandChannel#145332, demandStream, demandStream#145333, considerVariance, considerVariance#145334, demandTimeBuckets, demandTimeBuckets#145335, demandPointInTimeStart, demandPointInTimeStart#145336, demandPointInTimeEnd, demandPointInTimeEnd#145337, demandPointInTime, demandPointInTime#145338) ELSE cast(null as struct<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>>>) END AS rawDemands#143412]
(630) Aggregate
Arguments: [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790], [product#143466, plant#143467, orderDateTime#143468, productPlant#143478, timezonecode#143492, outboundUnit#143509, stockDatetime#143788, stockBatchQuantities#143789, stockBatchShelfLifeEndDatetimes#143790, collect_list(rawDemands#143412, 0, 0) AS rawDemands#143413]
(631) DeserializeToObject
Arguments: createexternalrow(invoke(product#143466.toString()), invoke(plant#143467.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#143468)), if (isnull(productPlant#143478)) null else createexternalrow(invoke(productPlant#143478.systemId.toString()), invoke(productPlant#143478.internalUUID.toString()), if (isnull(productPlant#143478.plant)) null else createexternalrow(invoke(productPlant#143478.plant.internalRefUUID.toString()), invoke(productPlant#143478.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#143478.product)) null else createexternalrow(invoke(productPlant#143478.product.internalRefUUID.toString()), invoke(productPlant#143478.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#143478.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#143478.productionAspect)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#143478.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#143478.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#143478.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#143478.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(minimumSafetyStock,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#143478.salesPlant)) null else createexternalrow(if (isnull(productPlant#143478.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#143478.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#143478.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, 20030), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 20030).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#143478.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#143492.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#143509)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#143788)), mapobjects(lambdavariable(MapObject, DoubleType, true, 20031), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 20031) as double))), stockBatchQuantities#143789, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 20032), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 20032) as timestamp)))), stockBatchShelfLifeEndDatetimes#143790, 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, 20033), assertnotnull(if (isnull(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, 20033))) null else 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, 20033).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, 20033).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, 20033).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20034).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, 20033).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, 20033).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, 20033).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 20035).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, 20033).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#143413, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#143452: org.apache.spark.sql.Row
(632) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@2d5ca6d1, interface org.apache.spark.sql.Row, [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(minimumSafetyStock,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)], obj#143457: org.apache.spark.sql.Row
(633) SerializeFromObject
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#143462, 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#143463, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)))) null else named_struct(demandChannel, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 0, demandChannel), StringType, ObjectType(class java.lang.String)))), demandStream, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 1, demandStream), StringType, ObjectType(class java.lang.String)))), considerVariance, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(2))) null else invoke(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 2, considerVariance), BooleanType, ObjectType(class java.lang.Boolean)).booleanValue()), demandValues, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(3))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20021), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20021), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)), None), demandVariances, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(4))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20022), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20022), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None), anchorDatetimes, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(5))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20023), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20023), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 5, anchorDatetimes), ArrayType(TimestampType,false), ObjectType(class java.lang.Object)), None), anchorWeekdays, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(6))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20024), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20024), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 6, anchorWeekdays), ArrayType(StringType,false), ObjectType(class java.lang.Object)), None), anchorIndices, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(7))) null else if (invoke(class [I.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20025), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20025), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20020), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(anchorDatetimes,ArrayType(TimestampType,false),true), StructField(anchorWeekdays,ArrayType(StringType,false),true), StructField(anchorIndices,ArrayType(IntegerType,false),true), ObjectType(interface org.apache.spark.sql.Row)), 7, anchorIndices), ArrayType(IntegerType,false), ObjectType(class java.lang.Object)), None))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, dayBucketDemands), ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(anchorDatetimes,ArrayType(TimestampType,false),true),StructField(anchorWeekdays,ArrayType(StringType,false),true),StructField(anchorIndices,ArrayType(IntegerType,false),true)),false), ObjectType(class java.lang.Object)), None) AS dayBucketDemands#143464, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)))) null else named_struct(demandChannel, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 0, demandChannel), StringType, ObjectType(class java.lang.String)))), demandStream, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 1, demandStream), StringType, ObjectType(class java.lang.String)))), considerVariance, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(2))) null else invoke(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 2, considerVariance), BooleanType, ObjectType(class java.lang.Boolean)).booleanValue()), demandDatetimes, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20027), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20027), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 3, demandDatetimes), ArrayType(TimestampType,false), ObjectType(class java.lang.Object)), None), demandValues, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(4))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20028), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20028), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 4, demandValues), ArrayType(DoubleType,false), ObjectType(class java.lang.Object)), None), demandVariances, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(5))) null else if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20029), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20029), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 5, demandVariances), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None), horizonStartDatetime, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(6))) null else static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 6, horizonStartDatetime), TimestampType, ObjectType(class java.sql.Timestamp)))), horizonEndDatetime, if (invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)).isNullAt(7))) null else static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 20026), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(horizonStartDatetime,TimestampType,true), StructField(horizonEndDatetime,TimestampType,true), ObjectType(interface org.apache.spark.sql.Row)), 7, horizonEndDatetime), TimestampType, ObjectType(class java.sql.Timestamp)))))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, pointInTimeDemands), ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandDatetimes,ArrayType(TimestampType,false),true),StructField(demandValues,ArrayType(DoubleType,false),true),StructField(demandVariances,ArrayType(DoubleType,true),true),StructField(horizonStartDatetime,TimestampType,true),StructField(horizonEndDatetime,TimestampType,true)),false), ObjectType(class java.lang.Object)), None) AS pointInTimeDemands#143465]
(634) Join
Arguments: LeftOuter, ((plant#143463 <=> plant#145006) AND (product#143462 <=> product#145005))
(635) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, outboundUnit#145048, stockDatetime#145327, stockBatchQuantities#145328, stockBatchShelfLifeEndDatetimes#145329, plant#143463, dayBucketDemands#143464, pointInTimeDemands#143465]
(636) Project
Arguments: [product#145005, plant#145006, orderDateTime#145007, productPlant#145017, timezonecode#145031, outboundUnit#145048, stockDatetime#145327, stockBatchQuantities#145328, stockBatchShelfLifeEndDatetimes#145329, dayBucketDemands#143464, pointInTimeDemands#143465]
(637) LogicalRelation
Arguments: parquet, [marketUnit#143855, description#143856, articleHierarchy#143857, defaultCurrency#143858, responsibilities#143859, replenishmentTypes#143860, distributionCenters#143861, assignedArticleHierarchyNodes#143862, minOrderQtySetting#143863, listingCheck#143864, odsSelection#143865, demandProfiles#143866, constraintProfiles#143867, optimizationProfiles#143868, orderGroupSplitProfiles#143869, supplierMinimumProfiles#143870, multipleRestrictionProfiles#143871, preferredUomSource#143872, handlingOfUnfulfilledDemands#143873, negligibleQuantitiesThreshold#143874, eventtype#143875, minOrderQtySettingInternal#143876], false
(638) Repartition
Arguments: 25, true
(639) Filter
Arguments: (marketUnit#143855 <=> Daily_grocery)
(640) Project
Arguments: [marketUnit#143855, description#143856, articleHierarchy#143857, defaultCurrency#143858, responsibilities#143859, replenishmentTypes#143860, distributionCenters#143861, assignedArticleHierarchyNodes#143862, minOrderQtySetting#143863, listingCheck#143864, odsSelection#143865, demandProfiles#143866, constraintProfiles#143867, optimizationProfiles#143868, orderGroupSplitProfiles#143869, supplierMinimumProfiles#143870, multipleRestrictionProfiles#143871, preferredUomSource#143872, handlingOfUnfulfilledDemands#143873, negligibleQuantitiesThreshold#143874, eventtype#143875, minOrderQtySettingInternal#143876]
(641) Project
Arguments: [distributionCenters#143861]
(642) Generate
Arguments: explode(distributionCenters#143861), false, [distributionCenters#143877]
(643) Project
Arguments: [distributionCenters#143877]
(644) Generate
Arguments: explode(distributionCenters#143877.storageLocations), false, [storageLocations#143878]
(645) Project
Arguments: [distributionCenters#143877.id AS plantId#143879, distributionCenters#143877.internalRefUUID AS plantUuid#143880, storageLocations#143878]
(646) Project
Arguments: [plantId#143879, plantUuid#143880, storageLocations#143878.id AS storageLocId#143881, storageLocations#143878.internalRefUUID AS storageLocUuid#143882]
(647) LogicalRelation
Arguments: parquet, [product#143883, plant#143884, orderDateTime#143885, planningStartDateTime#143886], false
(648) RepartitionByExpression
Arguments: [product#143883, plant#143884], 25
(649) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885]
(650) LogicalRelation
Arguments: parquet, [systemId#143887, internalUUID#143888, plant#143889, product#143890, blockedForReplenishmentStartingFrom#143891, productionAspect#143892, salesPlant#143893, listing#143894], false
(651) Repartition
Arguments: 25, true
(652) Project
Arguments: [systemId#143887, internalUUID#143888, plant#143889, product#143890, blockedForReplenishmentStartingFrom#143891, productionAspect#143892, salesPlant#143893, listing#143894, struct(systemId, systemId#143887, internalUUID, internalUUID#143888, plant, plant#143889, product, product#143890, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#143891, productionAspect, productionAspect#143892, salesPlant, salesPlant#143893, listing, listing#143894) AS productPlant#143895]
(653) Project
Arguments: [productPlant#143895]
(654) Join
Arguments: LeftOuter, ((product#143883 <=> productPlant#143895.product.internalRefUUID) AND (plant#143884 <=> productPlant#143895.plant.internalRefUUID))
(655) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895]
(656) SubqueryAlias
Arguments: wl
(657) LogicalRelation
Arguments: parquet, [systemId#143896, internalUUID#143897, id#143898, displayId#143899, name#143900, category#143901, companyCode#143902, address#143903, mainDistributionChain#143904, mainPurchasingOrganization#143905, validPurchasingOrganizations#143906, productGroup#143907], false
(658) Repartition
Arguments: 25, true
(659) Project
Arguments: [internalUUID#143897, address#143903.timeZone.code AS timezonecode#143908]
(660) Join
Arguments: LeftOuter, (plant#143884 <=> internalUUID#143897)
(661) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, internalUUID#143897, CASE WHEN isnotnull(timezonecode#143908) THEN timezonecode#143908 ELSE UTC END AS timezonecode#143909]
(662) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909]
(663) LogicalRelation
Arguments: parquet, [systemId#143910, internalUUID#143911, id#143912, displayId#143913, name#143914, baseUnitOfMeasure#143915, unitOfMeasures#143916, unitOfMeasureConversions#143917, productionAspect#143918, salesAspect#143919, procurementAspect#143920, productGroup#143921], false
(664) Repartition
Arguments: 25, true
(665) Join
Arguments: LeftOuter, (product#143883 = internalUUID#143911)
(666) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909, systemId#143910, internalUUID#143911, id#143912, displayId#143913, name#143914, baseUnitOfMeasure#143915, unitOfMeasures#143916, unitOfMeasureConversions#143917, productionAspect#143918, salesAspect#143919, procurementAspect#143920, productGroup#143921, filter(unitOfMeasureConversions#143917, lambdafunction((((lambda u#143027.measurementUnit1.code = productPlant#143895.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#143027.measurementUnit1.internalRefUUID = productPlant#143895.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#143027.measurementUnit2.code = baseUnitOfMeasure#143915.code) AND (lambda u#143027.measurementUnit2.internalRefUUID = baseUnitOfMeasure#143915.internalRefUUID))), lambda u#143027, false)) AS filteredUnitOfMeasureConversions#143922]
(667) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143922.quantityNumerator), true, [quantityNumerator#143923]
(668) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909, systemId#143910, internalUUID#143911, id#143912, displayId#143913, name#143914, baseUnitOfMeasure#143915, unitOfMeasures#143916, unitOfMeasureConversions#143917, productionAspect#143918, salesAspect#143919, procurementAspect#143920, productGroup#143921, filteredUnitOfMeasureConversions#143922, quantityNumerator#143923]
(669) Generate
Arguments: explode(filteredUnitOfMeasureConversions#143922.quantityDenominator), true, [quantityDenominator#143924]
(670) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909, systemId#143910, internalUUID#143911, id#143912, displayId#143913, name#143914, baseUnitOfMeasure#143915, unitOfMeasures#143916, unitOfMeasureConversions#143917, productionAspect#143918, salesAspect#143919, procurementAspect#143920, productGroup#143921, filteredUnitOfMeasureConversions#143922, quantityNumerator#143923, quantityDenominator#143924]
(671) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909, systemId#143910, internalUUID#143911, id#143912, displayId#143913, name#143914, baseUnitOfMeasure#143915, unitOfMeasures#143916, unitOfMeasureConversions#143917, productionAspect#143918, salesAspect#143919, procurementAspect#143920, productGroup#143921, filteredUnitOfMeasureConversions#143922, quantityNumerator#143923, quantityDenominator#143924, (cast(quantityNumerator#143923 as double) / cast(quantityDenominator#143924 as double)) AS outboundUnit#143925]
(672) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909, systemId#143910, internalUUID#143911, id#143912, displayId#143913, name#143914, baseUnitOfMeasure#143915, unitOfMeasures#143916, unitOfMeasureConversions#143917, productionAspect#143918, salesAspect#143919, procurementAspect#143920, productGroup#143921, filteredUnitOfMeasureConversions#143922, quantityNumerator#143923, quantityDenominator#143924, CASE WHEN (isnull(outboundUnit#143925) OR (outboundUnit#143925 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#143925 END AS outboundUnit#143926]
(673) Project
Arguments: [product#143883, plant#143884, orderDateTime#143885, productPlant#143895, timezonecode#143909, outboundUnit#143926]
(674) Project
Arguments: [plant#143884]
(675) Deduplicate
Arguments: [plant#143884]
(676) Join
Arguments: Inner, (plantUuid#143880 = plant#143884)
(677) Project
Arguments: [plantId#143879, plantUuid#143880, storageLocId#143881, storageLocUuid#143882]
(678) Project
Arguments: [plantId#143879, plantUuid#143880 AS plant#143854, storageLocId#143881, storageLocUuid#143882]
(679) Join
Arguments: Inner, (plant#145006 = plant#143854)
(680) Project
Arguments: [plant#145006, product#145005, orderDateTime#145007, productPlant#145017, timezonecode#145031, outboundUnit#145048, stockDatetime#145327, stockBatchQuantities#145328, stockBatchShelfLifeEndDatetimes#145329, dayBucketDemands#143464, pointInTimeDemands#143465, plantId#143879, storageLocId#143881, storageLocUuid#143882, plant#143854]
(681) LogicalRelation
Arguments: parquet, [systemId#143815, internalUUID#143816, id#143817, displayId#143818, supplier#143819, type#143820, status#143821, isMarkedForDeletion#143822, items#143823], false
(682) Repartition
Arguments: 25, true
(683) Generate
Arguments: explode(items#143823), false, [item#143827]
(684) Project
Arguments: [id#143817, internalUUID#143816, isMarkedForDeletion#143822, supplier#143819.internalRefUUID AS supplierUuid#143824, item#143827]
(685) Filter
Arguments: (((NOT isMarkedForDeletion#143822 AND NOT item#143827.deletionIndicator) AND NOT item#143827.completeIndicator) AND NOT item#143827.returnIndicator)
(686) Project
Arguments: [id#143817, internalUUID#143816, supplierUuid#143824, item#143827.plant.internalRefUUID AS plant#143832, item#143827.product.internalRefUUID AS product#143833, item#143827.plant.id AS externalPlantId#143834, item#143827.product.id AS externalProductId#143835, item#143827.storageLocation.internalRefUUID AS storageLocUuid#143836, item#143827.quantityUnit.code AS quantityUom#143837, item#143827.quantityUnit.internalRefUUID AS quantityUomUuid#143838, item#143827.quantityNumerator AS quantityNumerator#143839, item#143827.quantityDenominator AS quantityDenominator#143840, item#143827.scheduleLines AS scheduleLines#143841, item#143827.confirmations AS confirmations#143842]
(687) Join
Arguments: Inner, (((product#145005 = product#143833) AND (plant#145006 = plant#143832)) AND (storageLocUuid#143882 = storageLocUuid#143836))
(688) Project
Arguments: [product#145005, plant#145006, storageLocUuid#143882, orderDateTime#145007, productPlant#145017, timezonecode#145031, outboundUnit#145048, stockDatetime#145327, stockBatchQuantities#145328, stockBatchShelfLifeEndDatetimes#145329, dayBucketDemands#143464, pointInTimeDemands#143465, plantId#143879, storageLocId#143881, id#143817, internalUUID#143816, supplierUuid#143824, externalPlantId#143834, externalProductId#143835, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, ... 4 more fields]
(689) Project
Arguments: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#145327, timezonecode#145031]
(690) Project
Arguments: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#145327, timezonecode#145031, filter(confirmations#143842, lambdafunction((((lambda x_29#143933.deletionIndicator = false) AND (lambda x_29#143933.isRelevantForConfirmation = true)) AND isnotnull(lambda x_29#143933.confirmedDeliveryAt)), lambda x_29#143933, false)) AS validConfirmations#143932]
(691) Project
Arguments: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#145327, timezonecode#145031, validConfirmations#143932, transform(filter(scheduleLines#143841, lambdafunction(isnotnull(lambda x_30#144936.deliveryAt), lambda x_30#144936, false)), lambdafunction(struct(scheduledDate, to_date(from_utc_timestamp(lambda x_31#144937.deliveryAt, timezonecode#145031), None, Some(UTC), false), scheduledQuantity, lambda x_31#144937.quantity), lambda x_31#144937, false)) AS scheds#144935]
(692) Project
Arguments: [id#143817, internalUUID#143816, supplierUuid#143824, plant#143832, product#143833, externalPlantId#143834, externalProductId#143835, storageLocUuid#143836, quantityUom#143837, quantityUomUuid#143838, quantityNumerator#143839, quantityDenominator#143840, scheduleLines#143841, confirmations#143842, stockDatetime#145327, timezonecode#145031, validConfirmations#143932, scheds#144935, transform(filter(validConfirmations#143932, lambdafunction(isnotnull(lambda x_32#144941.confirmedDeliveryAt), lambda x_32#144941, false)), lambdafunction(struct(confirmedDate, to_date(from_utc_timestamp(lambda x_33#144942.confirmedDeliveryAt, timezonecode#145031), None, Some(UTC), false), confirmedQuantity, lambda x_33#144942.confirmedQuantity), lambda x_33#144942, false)) AS confs#144940]
(693) Project
Arguments: [id#143817, externalProductId#143835, externalPlantId#143834, quantityUom#143837, scheds#144935, confs#144940]
(694) DeserializeToObject
Arguments: createexternalrow(invoke(id#143817.toString()), invoke(externalProductId#143835.toString()), invoke(externalPlantId#143834.toString()), invoke(quantityUom#143837.toString()), mapobjects(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, 20304), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, 20304))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaDate(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, 20304).scheduledDate)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true), false, 20304).scheduledQuantity)), StructField(scheduledDate,DateType,true), StructField(scheduledQuantity,DoubleType,true))), scheds#144935, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, 20305), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, 20305))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaDate(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, 20305).confirmedDate)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true), false, 20305).confirmedQuantity)), StructField(confirmedDate,DateType,true), StructField(confirmedQuantity,DoubleType,true))), confs#144940, Some(class scala.collection.mutable.ArraySeq)), StructField(id,StringType,true), StructField(externalProductId,StringType,true), StructField(externalPlantId,StringType,true), StructField(quantityUom,StringType,true), StructField(scheds,ArrayType(StructType(StructField(scheduledDate,DateType,true),StructField(scheduledQuantity,DoubleType,true)),false),true), StructField(confs,ArrayType(StructType(StructField(confirmedDate,DateType,true),StructField(confirmedQuantity,DoubleType,true)),false),true)), obj#144955: org.apache.spark.sql.Row
(695) MapPartitions
Arguments: org.apache.spark.sql.internal.UDFAdaptors$$$Lambda/0x00000008024c8f20@44839fc9, obj#144964: org.apache.spark.sql.Row
(696) SerializeFromObject
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, id), StringType, ObjectType(class java.lang.String)))) AS id#144973, 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, externalProductId), StringType, ObjectType(class java.lang.String)))) AS externalProductId#144974, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, externalPlantId), StringType, ObjectType(class java.lang.String)))) AS externalPlantId#144975, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, quantityUom), StringType, ObjectType(class java.lang.String)))) AS quantityUom#144976, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(4))) null else static_invoke(DateTimeUtils.fromJavaDate(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 4, scheduledDate), DateType, ObjectType(class java.sql.Date)))) AS scheduledDate#144977, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(5))) null else invoke(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, scheduledQuantity), DoubleType, ObjectType(class java.lang.Double)).doubleValue()) AS scheduledQuantity#144978, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(6))) null else static_invoke(DateTimeUtils.fromJavaDate(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 6, confirmedDate), DateType, ObjectType(class java.sql.Date)))) AS confirmedDate#144979, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(7))) null else invoke(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 7, confirmedQuantity), DoubleType, ObjectType(class java.lang.Double)).doubleValue()) AS confirmedQuantity#144980]
(697) LogicalRelation
Arguments: parquet, [name#142955, category#142956, status#142957, configurationVersion#142958, businessContext#142959, message#142960, settings#142961, eventtype#142962], false
(698) Repartition
Arguments: 25, true
(699) Filter
Arguments: (isnotnull(name#142955) AND isnotnull(configurationVersion#142958))
(700) Aggregate
Arguments: [name#142955], [name#142955, max(struct(configurationVersion, configurationVersion#142958, status, status#142957, settings, settings#142961)) AS latest#142964]
(701) Project
Arguments: [name#142955, latest#142964.configurationVersion AS configurationVersion#142974, latest#142964.status AS status#142975, latest#142964.settings AS settings#142976]
(702) Filter
Arguments: ((name#142955 = OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF) AND (status#142975 = ACTIVE))
(703) Project
Arguments: [configurationVersion#142974]
(704) Join
Arguments: Cross
(705) Project
Arguments: [id#144973, externalProductId#144974, externalPlantId#144975, quantityUom#144976, scheduledDate#144977, scheduledQuantity#144978, confirmedDate#144979, confirmedQuantity#144980, configurationVersion#142974, OP_CALC_ITEM_DEVIATION_OF_ORDER_CONF AS name#144981]
(706) Project
Arguments: [id#144973, externalProductId#144974, externalPlantId#144975, quantityUom#144976, scheduledDate#144977, scheduledQuantity#144978, confirmedDate#144979, confirmedQuantity#144980, configurationVersion#142974, name#144981, array(struct(name, PURCHASE_ORDER, value, cast(id#144973 as string)), struct(name, PRODUCT, value, externalProductId#144974), struct(name, PLANT, value, externalPlantId#144975)) AS businessContext#144988]
(707) Project
Arguments: [id#144973, externalProductId#144974, externalPlantId#144975, quantityUom#144976, scheduledDate#144977, scheduledQuantity#144978, confirmedDate#144979, confirmedQuantity#144980, configurationVersion#142974, name#144981, businessContext#144988, array(struct(variableName, PO_QTY, variableValue, cast(scheduledQuantity#144978 as string)), struct(variableName, PO_UOM, variableValue, cast(quantityUom#144976 as string)), struct(variableName, PO_DELIVERY_DATE, variableValue, cast(scheduledDate#144977 as string)), struct(variableName, CO_QTY, variableValue, cast(confirmedQuantity#144980 as string)), struct(variableName, CO_UOM, variableValue, cast(quantityUom#144976 as string)), struct(variableName, CO_DELIVERY_DATE, variableValue, cast(confirmedDate#144979 as string))) AS messageVariables#145001]
(708) Deduplicate
Arguments: [name#144981, quantityUom#144976, scheduledQuantity#144978, externalPlantId#144975, id#144973, configurationVersion#142974, confirmedQuantity#144980, confirmedDate#144979, scheduledDate#144977, businessContext#144988, messageVariables#145001, externalProductId#144974]
(709) Project
Arguments: [id#144973, externalProductId#144974, externalPlantId#144975, quantityUom#144976, scheduledDate#144977, scheduledQuantity#144978, confirmedDate#144979, confirmedQuantity#144980, configurationVersion#142974, name#144981, businessContext#144988, messageVariables#145001, 10000002108 AS executionId#145002]
(710) Project
Arguments: [id#144973, externalProductId#144974, externalPlantId#144975, quantityUom#144976, scheduledDate#144977, scheduledQuantity#144978, confirmedDate#144979, confirmedQuantity#144980, configurationVersion#142974, name#144981, businessContext#144988, messageVariables#145001, executionId#145002, Daily_grocery AS marketUnit#145003]
(711) Project
Arguments: [id#144973, externalProductId#144974, externalPlantId#144975, quantityUom#144976, scheduledDate#144977, scheduledQuantity#144978, confirmedDate#144979, confirmedQuantity#144980, configurationVersion#142974, name#144981, businessContext#144988, messageVariables#145001, executionId#145002, marketUnit#145003, 2026-08-10T09:37:13.804Z AS createdAt#145004]
(712) Project
Arguments: [name#144981, configurationVersion#142974, executionId#145002, createdAt#145004, marketUnit#145003, businessContext#144988, messageVariables#145001]
(713) Union
Arguments: false, false
(714) Project
Arguments: [to_json(struct(name, name#143402, configurationVersion, configurationVersion#143401, executionId, executionId#143409, createdAt, createdAt#143411, marketUnit, marketUnit#143410, businessContext, businessContext#143407, messageVariables, messageVariables#143408), Some(UTC)) AS value#153300]
(715) Project
Arguments: [cast(value#153300 as string) AS value#153301]
(716) Project
Arguments: [value#153301, array(struct(key, X-Tenant-ID, value, cast(6944346648028224943 as binary)), struct(key, X-Message-ID, value, cast(uuid(Some(6227850184876311409)) as binary)), struct(key, X-Event-Type, value, cast(com.sap.dip.insight.created as binary)), struct(key, X-Event-Source, value, cast(ORDER_PROPOSAL_OPTIMIZATION as binary)), struct(key, X-BTP-Tenant-ID, value, cast(0059d9b2-605f-467b-887c-9c65d0e59daf as binary))) AS headers#153312]