== Physical Plan ==
Execute SaveIntoDataSourceCommand (1)
+- SaveIntoDataSourceCommand (2)
+- Project (1338)
+- Project (1337)
+- Project (1336)
+- Project (1335)
+- Project (1334)
+- Project (1333)
+- Project (1332)
+- Project (1331)
+- Project (1330)
+- Project (1329)
+- Join (1328)
:- Project (419)
: +- Project (418)
: +- Join (417)
: :- 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)
: +- SerializeFromObject (416)
: +- MapElements (415)
: +- DeserializeToObject (414)
: +- Aggregate (413)
: +- Project (412)
: +- Project (411)
: +- Join (410)
: :- Project (408)
: : +- Project (407)
: : +- Project (406)
: : +- Project (405)
: : +- Project (404)
: : +- Project (403)
: : +- Join (402)
: : :- Project (232)
: : : +- Project (231)
: : : +- Project (230)
: : : +- Project (229)
: : : +- Generate (228)
: : : +- Project (227)
: : : +- Generate (226)
: : : +- Project (225)
: : : +- Join (224)
: : : :- Project (221)
: : : : +- Project (220)
: : : : +- Join (219)
: : : : :- SubqueryAlias (215)
: : : : : +- Project (214)
: : : : : +- Join (213)
: : : : : :- Project (208)
: : : : : : +- RepartitionByExpression (207)
: : : : : : +- LogicalRelation (206)
: : : : : +- Project (212)
: : : : : +- Project (211)
: : : : : +- Repartition (210)
: : : : : +- LogicalRelation (209)
: : : : +- Project (218)
: : : : +- Repartition (217)
: : : : +- LogicalRelation (216)
: : : +- Repartition (223)
: : : +- LogicalRelation (222)
: : +- Project (401)
: : +- Aggregate (400)
: : +- Project (399)
: : +- Join (398)
: : :- Project (314)
: : : +- Filter (313)
: : : +- Join (312)
: : : :- Filter (284)
: : : : +- Project (283)
: : : : +- Project (282)
: : : : +- Generate (281)
: : : : +- Project (280)
: : : : +- Aggregate (279)
: : : : +- Project (278)
: : : : +- Generate (277)
: : : : +- Join (276)
: : : : :- Repartition (234)
: : : : : +- LogicalRelation (233)
: : : : +- Project (275)
: : : : +- Join (274)
: : : : :- Project (244)
: : : : : +- Project (243)
: : : : : +- Generate (242)
: : : : : +- Project (241)
: : : : : +- Generate (240)
: : : : : +- Project (239)
: : : : : +- Project (238)
: : : : : +- Filter (237)
: : : : : +- Repartition (236)
: : : : : +- LogicalRelation (235)
: : : : +- Deduplicate (273)
: : : : +- Project (272)
: : : : +- Project (271)
: : : : +- Project (270)
: : : : +- Project (269)
: : : : +- Project (268)
: : : : +- Generate (267)
: : : : +- Project (266)
: : : : +- Generate (265)
: : : : +- Project (264)
: : : : +- Join (263)
: : : : :- Project (260)
: : : : : +- Project (259)
: : : : : +- Join (258)
: : : : : :- SubqueryAlias (254)
: : : : : : +- Project (253)
: : : : : : +- Join (252)
: : : : : : :- Project (247)
: : : : : : : +- RepartitionByExpression (246)
: : : : : : : +- LogicalRelation (245)
: : : : : : +- Project (251)
: : : : : : +- Project (250)
: : : : : : +- Repartition (249)
: : : : : : +- LogicalRelation (248)
: : : : : +- Project (257)
: : : : : +- Repartition (256)
: : : : : +- LogicalRelation (255)
: : : : +- Repartition (262)
: : : : +- LogicalRelation (261)
: : : +- Project (311)
: : : +- Project (310)
: : : +- Project (309)
: : : +- Project (308)
: : : +- Generate (307)
: : : +- Project (306)
: : : +- Generate (305)
: : : +- Project (304)
: : : +- Join (303)
: : : :- Project (300)
: : : : +- Project (299)
: : : : +- Join (298)
: : : : :- SubqueryAlias (294)
: : : : : +- Project (293)
: : : : : +- Join (292)
: : : : : :- Project (287)
: : : : : : +- RepartitionByExpression (286)
: : : : : : +- LogicalRelation (285)
: : : : : +- Project (291)
: : : : : +- Project (290)
: : : : : +- Repartition (289)
: : : : : +- LogicalRelation (288)
: : : : +- Project (297)
: : : : +- Repartition (296)
: : : : +- LogicalRelation (295)
: : : +- Repartition (302)
: : : +- LogicalRelation (301)
: : +- Aggregate (397)
: : +- Project (396)
: : +- Filter (395)
: : +- Join (394)
: : :- Filter (366)
: : : +- Project (365)
: : : +- Project (364)
: : : +- Generate (363)
: : : +- Project (362)
: : : +- Aggregate (361)
: : : +- Project (360)
: : : +- Generate (359)
: : : +- Join (358)
: : : :- Repartition (316)
: : : : +- LogicalRelation (315)
: : : +- Project (357)
: : : +- Join (356)
: : : :- Project (326)
: : : : +- Project (325)
: : : : +- Generate (324)
: : : : +- Project (323)
: : : : +- Generate (322)
: : : : +- Project (321)
: : : : +- Project (320)
: : : : +- Filter (319)
: : : : +- Repartition (318)
: : : : +- LogicalRelation (317)
: : : +- Deduplicate (355)
: : : +- Project (354)
: : : +- Project (353)
: : : +- Project (352)
: : : +- Project (351)
: : : +- Project (350)
: : : +- Generate (349)
: : : +- Project (348)
: : : +- Generate (347)
: : : +- Project (346)
: : : +- Join (345)
: : : :- Project (342)
: : : : +- Project (341)
: : : : +- Join (340)
: : : : :- SubqueryAlias (336)
: : : : : +- Project (335)
: : : : : +- Join (334)
: : : : : :- Project (329)
: : : : : : +- RepartitionByExpression (328)
: : : : : : +- LogicalRelation (327)
: : : : : +- Project (333)
: : : : : +- Project (332)
: : : : : +- Repartition (331)
: : : : : +- LogicalRelation (330)
: : : : +- Project (339)
: : : : +- Repartition (338)
: : : : +- LogicalRelation (337)
: : : +- Repartition (344)
: : : +- LogicalRelation (343)
: : +- Project (393)
: : +- Project (392)
: : +- Project (391)
: : +- Project (390)
: : +- Generate (389)
: : +- Project (388)
: : +- Generate (387)
: : +- Project (386)
: : +- Join (385)
: : :- Project (382)
: : : +- Project (381)
: : : +- Join (380)
: : : :- SubqueryAlias (376)
: : : : +- Project (375)
: : : : +- Join (374)
: : : : :- Project (369)
: : : : : +- RepartitionByExpression (368)
: : : : : +- LogicalRelation (367)
: : : : +- Project (373)
: : : : +- Project (372)
: : : : +- Repartition (371)
: : : : +- LogicalRelation (370)
: : : +- Project (379)
: : : +- Repartition (378)
: : : +- LogicalRelation (377)
: : +- Repartition (384)
: : +- LogicalRelation (383)
: +- LogicalRelation (409)
+- Aggregate (1327)
+- Union (1326)
:- Filter (896)
: +- Aggregate (895)
: +- Project (894)
: +- Project (893)
: +- Window (892)
: +- Project (891)
: +- Project (890)
: +- Project (889)
: +- Project (888)
: +- Join (887)
: :- Project (880)
: : +- Join (879)
: : :- Project (836)
: : : +- Project (835)
: : : +- Join (834)
: : : :- Project (622)
: : : : +- Project (621)
: : : : +- Project (620)
: : : : +- Project (619)
: : : : +- Project (618)
: : : : +- Project (617)
: : : : +- Join (616)
: : : : :- Project (446)
: : : : : +- Project (445)
: : : : : +- Project (444)
: : : : : +- Project (443)
: : : : : +- Generate (442)
: : : : : +- Project (441)
: : : : : +- Generate (440)
: : : : : +- Project (439)
: : : : : +- Join (438)
: : : : : :- Project (435)
: : : : : : +- Project (434)
: : : : : : +- Join (433)
: : : : : : :- SubqueryAlias (429)
: : : : : : : +- Project (428)
: : : : : : : +- Join (427)
: : : : : : : :- Project (422)
: : : : : : : : +- RepartitionByExpression (421)
: : : : : : : : +- LogicalRelation (420)
: : : : : : : +- Project (426)
: : : : : : : +- Project (425)
: : : : : : : +- Repartition (424)
: : : : : : : +- LogicalRelation (423)
: : : : : : +- Project (432)
: : : : : : +- Repartition (431)
: : : : : : +- LogicalRelation (430)
: : : : : +- Repartition (437)
: : : : : +- LogicalRelation (436)
: : : : +- Project (615)
: : : : +- Aggregate (614)
: : : : +- Project (613)
: : : : +- Join (612)
: : : : :- Project (528)
: : : : : +- Filter (527)
: : : : : +- Join (526)
: : : : : :- Filter (498)
: : : : : : +- Project (497)
: : : : : : +- Project (496)
: : : : : : +- Generate (495)
: : : : : : +- Project (494)
: : : : : : +- Aggregate (493)
: : : : : : +- Project (492)
: : : : : : +- Generate (491)
: : : : : : +- Join (490)
: : : : : : :- Repartition (448)
: : : : : : : +- LogicalRelation (447)
: : : : : : +- Project (489)
: : : : : : +- Join (488)
: : : : : : :- Project (458)
: : : : : : : +- Project (457)
: : : : : : : +- Generate (456)
: : : : : : : +- Project (455)
: : : : : : : +- Generate (454)
: : : : : : : +- Project (453)
: : : : : : : +- Project (452)
: : : : : : : +- Filter (451)
: : : : : : : +- Repartition (450)
: : : : : : : +- LogicalRelation (449)
: : : : : : +- Deduplicate (487)
: : : : : : +- Project (486)
: : : : : : +- Project (485)
: : : : : : +- Project (484)
: : : : : : +- Project (483)
: : : : : : +- Project (482)
: : : : : : +- Generate (481)
: : : : : : +- Project (480)
: : : : : : +- Generate (479)
: : : : : : +- Project (478)
: : : : : : +- Join (477)
: : : : : : :- Project (474)
: : : : : : : +- Project (473)
: : : : : : : +- Join (472)
: : : : : : : :- SubqueryAlias (468)
: : : : : : : : +- Project (467)
: : : : : : : : +- Join (466)
: : : : : : : : :- Project (461)
: : : : : : : : : +- RepartitionByExpression (460)
: : : : : : : : : +- LogicalRelation (459)
: : : : : : : : +- Project (465)
: : : : : : : : +- Project (464)
: : : : : : : : +- Repartition (463)
: : : : : : : : +- LogicalRelation (462)
: : : : : : : +- Project (471)
: : : : : : : +- Repartition (470)
: : : : : : : +- LogicalRelation (469)
: : : : : : +- Repartition (476)
: : : : : : +- LogicalRelation (475)
: : : : : +- Project (525)
: : : : : +- Project (524)
: : : : : +- Project (523)
: : : : : +- Project (522)
: : : : : +- Generate (521)
: : : : : +- Project (520)
: : : : : +- Generate (519)
: : : : : +- Project (518)
: : : : : +- Join (517)
: : : : : :- Project (514)
: : : : : : +- Project (513)
: : : : : : +- Join (512)
: : : : : : :- SubqueryAlias (508)
: : : : : : : +- Project (507)
: : : : : : : +- Join (506)
: : : : : : : :- Project (501)
: : : : : : : : +- RepartitionByExpression (500)
: : : : : : : : +- LogicalRelation (499)
: : : : : : : +- Project (505)
: : : : : : : +- Project (504)
: : : : : : : +- Repartition (503)
: : : : : : : +- LogicalRelation (502)
: : : : : : +- Project (511)
: : : : : : +- Repartition (510)
: : : : : : +- LogicalRelation (509)
: : : : : +- Repartition (516)
: : : : : +- LogicalRelation (515)
: : : : +- Aggregate (611)
: : : : +- Project (610)
: : : : +- Filter (609)
: : : : +- Join (608)
: : : : :- Filter (580)
: : : : : +- Project (579)
: : : : : +- Project (578)
: : : : : +- Generate (577)
: : : : : +- Project (576)
: : : : : +- Aggregate (575)
: : : : : +- Project (574)
: : : : : +- Generate (573)
: : : : : +- Join (572)
: : : : : :- Repartition (530)
: : : : : : +- LogicalRelation (529)
: : : : : +- Project (571)
: : : : : +- Join (570)
: : : : : :- Project (540)
: : : : : : +- Project (539)
: : : : : : +- Generate (538)
: : : : : : +- Project (537)
: : : : : : +- Generate (536)
: : : : : : +- Project (535)
: : : : : : +- Project (534)
: : : : : : +- Filter (533)
: : : : : : +- Repartition (532)
: : : : : : +- LogicalRelation (531)
: : : : : +- Deduplicate (569)
: : : : : +- Project (568)
: : : : : +- Project (567)
: : : : : +- Project (566)
: : : : : +- Project (565)
: : : : : +- Project (564)
: : : : : +- Generate (563)
: : : : : +- Project (562)
: : : : : +- Generate (561)
: : : : : +- Project (560)
: : : : : +- Join (559)
: : : : : :- Project (556)
: : : : : : +- Project (555)
: : : : : : +- Join (554)
: : : : : : :- SubqueryAlias (550)
: : : : : : : +- Project (549)
: : : : : : : +- Join (548)
: : : : : : : :- Project (543)
: : : : : : : : +- RepartitionByExpression (542)
: : : : : : : : +- LogicalRelation (541)
: : : : : : : +- Project (547)
: : : : : : : +- Project (546)
: : : : : : : +- Repartition (545)
: : : : : : : +- LogicalRelation (544)
: : : : : : +- Project (553)
: : : : : : +- Repartition (552)
: : : : : : +- LogicalRelation (551)
: : : : : +- Repartition (558)
: : : : : +- LogicalRelation (557)
: : : : +- Project (607)
: : : : +- Project (606)
: : : : +- Project (605)
: : : : +- Project (604)
: : : : +- Generate (603)
: : : : +- Project (602)
: : : : +- Generate (601)
: : : : +- Project (600)
: : : : +- Join (599)
: : : : :- Project (596)
: : : : : +- Project (595)
: : : : : +- Join (594)
: : : : : :- SubqueryAlias (590)
: : : : : : +- Project (589)
: : : : : : +- Join (588)
: : : : : : :- Project (583)
: : : : : : : +- RepartitionByExpression (582)
: : : : : : : +- LogicalRelation (581)
: : : : : : +- Project (587)
: : : : : : +- Project (586)
: : : : : : +- Repartition (585)
: : : : : : +- LogicalRelation (584)
: : : : : +- Project (593)
: : : : : +- Repartition (592)
: : : : : +- LogicalRelation (591)
: : : : +- Repartition (598)
: : : : +- LogicalRelation (597)
: : : +- SerializeFromObject (833)
: : : +- MapElements (832)
: : : +- DeserializeToObject (831)
: : : +- Aggregate (830)
: : : +- Project (829)
: : : +- Project (828)
: : : +- Join (827)
: : : :- Project (825)
: : : : +- Project (824)
: : : : +- Project (823)
: : : : +- Project (822)
: : : : +- Project (821)
: : : : +- Project (820)
: : : : +- Join (819)
: : : : :- Project (649)
: : : : : +- Project (648)
: : : : : +- Project (647)
: : : : : +- Project (646)
: : : : : +- Generate (645)
: : : : : +- Project (644)
: : : : : +- Generate (643)
: : : : : +- Project (642)
: : : : : +- Join (641)
: : : : : :- Project (638)
: : : : : : +- Project (637)
: : : : : : +- Join (636)
: : : : : : :- SubqueryAlias (632)
: : : : : : : +- Project (631)
: : : : : : : +- Join (630)
: : : : : : : :- Project (625)
: : : : : : : : +- RepartitionByExpression (624)
: : : : : : : : +- LogicalRelation (623)
: : : : : : : +- Project (629)
: : : : : : : +- Project (628)
: : : : : : : +- Repartition (627)
: : : : : : : +- LogicalRelation (626)
: : : : : : +- Project (635)
: : : : : : +- Repartition (634)
: : : : : : +- LogicalRelation (633)
: : : : : +- Repartition (640)
: : : : : +- LogicalRelation (639)
: : : : +- Project (818)
: : : : +- Aggregate (817)
: : : : +- Project (816)
: : : : +- Join (815)
: : : : :- Project (731)
: : : : : +- Filter (730)
: : : : : +- Join (729)
: : : : : :- Filter (701)
: : : : : : +- Project (700)
: : : : : : +- Project (699)
: : : : : : +- Generate (698)
: : : : : : +- Project (697)
: : : : : : +- Aggregate (696)
: : : : : : +- Project (695)
: : : : : : +- Generate (694)
: : : : : : +- Join (693)
: : : : : : :- Repartition (651)
: : : : : : : +- LogicalRelation (650)
: : : : : : +- Project (692)
: : : : : : +- Join (691)
: : : : : : :- Project (661)
: : : : : : : +- Project (660)
: : : : : : : +- Generate (659)
: : : : : : : +- Project (658)
: : : : : : : +- Generate (657)
: : : : : : : +- Project (656)
: : : : : : : +- Project (655)
: : : : : : : +- Filter (654)
: : : : : : : +- Repartition (653)
: : : : : : : +- LogicalRelation (652)
: : : : : : +- Deduplicate (690)
: : : : : : +- Project (689)
: : : : : : +- Project (688)
: : : : : : +- Project (687)
: : : : : : +- Project (686)
: : : : : : +- Project (685)
: : : : : : +- Generate (684)
: : : : : : +- Project (683)
: : : : : : +- Generate (682)
: : : : : : +- Project (681)
: : : : : : +- Join (680)
: : : : : : :- Project (677)
: : : : : : : +- Project (676)
: : : : : : : +- Join (675)
: : : : : : : :- SubqueryAlias (671)
: : : : : : : : +- Project (670)
: : : : : : : : +- Join (669)
: : : : : : : : :- Project (664)
: : : : : : : : : +- RepartitionByExpression (663)
: : : : : : : : : +- LogicalRelation (662)
: : : : : : : : +- Project (668)
: : : : : : : : +- Project (667)
: : : : : : : : +- Repartition (666)
: : : : : : : : +- LogicalRelation (665)
: : : : : : : +- Project (674)
: : : : : : : +- Repartition (673)
: : : : : : : +- LogicalRelation (672)
: : : : : : +- Repartition (679)
: : : : : : +- LogicalRelation (678)
: : : : : +- Project (728)
: : : : : +- Project (727)
: : : : : +- Project (726)
: : : : : +- Project (725)
: : : : : +- Generate (724)
: : : : : +- Project (723)
: : : : : +- Generate (722)
: : : : : +- Project (721)
: : : : : +- Join (720)
: : : : : :- Project (717)
: : : : : : +- Project (716)
: : : : : : +- Join (715)
: : : : : : :- SubqueryAlias (711)
: : : : : : : +- Project (710)
: : : : : : : +- Join (709)
: : : : : : : :- Project (704)
: : : : : : : : +- RepartitionByExpression (703)
: : : : : : : : +- LogicalRelation (702)
: : : : : : : +- Project (708)
: : : : : : : +- Project (707)
: : : : : : : +- Repartition (706)
: : : : : : : +- LogicalRelation (705)
: : : : : : +- Project (714)
: : : : : : +- Repartition (713)
: : : : : : +- LogicalRelation (712)
: : : : : +- Repartition (719)
: : : : : +- LogicalRelation (718)
: : : : +- Aggregate (814)
: : : : +- Project (813)
: : : : +- Filter (812)
: : : : +- Join (811)
: : : : :- Filter (783)
: : : : : +- Project (782)
: : : : : +- Project (781)
: : : : : +- Generate (780)
: : : : : +- Project (779)
: : : : : +- Aggregate (778)
: : : : : +- Project (777)
: : : : : +- Generate (776)
: : : : : +- Join (775)
: : : : : :- Repartition (733)
: : : : : : +- LogicalRelation (732)
: : : : : +- Project (774)
: : : : : +- Join (773)
: : : : : :- Project (743)
: : : : : : +- Project (742)
: : : : : : +- Generate (741)
: : : : : : +- Project (740)
: : : : : : +- Generate (739)
: : : : : : +- Project (738)
: : : : : : +- Project (737)
: : : : : : +- Filter (736)
: : : : : : +- Repartition (735)
: : : : : : +- LogicalRelation (734)
: : : : : +- Deduplicate (772)
: : : : : +- Project (771)
: : : : : +- Project (770)
: : : : : +- Project (769)
: : : : : +- Project (768)
: : : : : +- Project (767)
: : : : : +- Generate (766)
: : : : : +- Project (765)
: : : : : +- Generate (764)
: : : : : +- Project (763)
: : : : : +- Join (762)
: : : : : :- Project (759)
: : : : : : +- Project (758)
: : : : : : +- Join (757)
: : : : : : :- SubqueryAlias (753)
: : : : : : : +- Project (752)
: : : : : : : +- Join (751)
: : : : : : : :- Project (746)
: : : : : : : : +- RepartitionByExpression (745)
: : : : : : : : +- LogicalRelation (744)
: : : : : : : +- Project (750)
: : : : : : : +- Project (749)
: : : : : : : +- Repartition (748)
: : : : : : : +- LogicalRelation (747)
: : : : : : +- Project (756)
: : : : : : +- Repartition (755)
: : : : : : +- LogicalRelation (754)
: : : : : +- Repartition (761)
: : : : : +- LogicalRelation (760)
: : : : +- Project (810)
: : : : +- Project (809)
: : : : +- Project (808)
: : : : +- Project (807)
: : : : +- Generate (806)
: : : : +- Project (805)
: : : : +- Generate (804)
: : : : +- Project (803)
: : : : +- Join (802)
: : : : :- Project (799)
: : : : : +- Project (798)
: : : : : +- Join (797)
: : : : : :- SubqueryAlias (793)
: : : : : : +- Project (792)
: : : : : : +- Join (791)
: : : : : : :- Project (786)
: : : : : : : +- RepartitionByExpression (785)
: : : : : : : +- LogicalRelation (784)
: : : : : : +- Project (790)
: : : : : : +- Project (789)
: : : : : : +- Repartition (788)
: : : : : : +- LogicalRelation (787)
: : : : : +- Project (796)
: : : : : +- Repartition (795)
: : : : : +- LogicalRelation (794)
: : : : +- Repartition (801)
: : : : +- LogicalRelation (800)
: : : +- LogicalRelation (826)
: : +- Project (878)
: : +- Project (877)
: : +- Join (876)
: : :- Project (846)
: : : +- Project (845)
: : : +- Generate (844)
: : : +- Project (843)
: : : +- Generate (842)
: : : +- Project (841)
: : : +- Project (840)
: : : +- Filter (839)
: : : +- Repartition (838)
: : : +- LogicalRelation (837)
: : +- Deduplicate (875)
: : +- Project (874)
: : +- Project (873)
: : +- Project (872)
: : +- Project (871)
: : +- Project (870)
: : +- Generate (869)
: : +- Project (868)
: : +- Generate (867)
: : +- Project (866)
: : +- Join (865)
: : :- Project (862)
: : : +- Project (861)
: : : +- Join (860)
: : : :- SubqueryAlias (856)
: : : : +- Project (855)
: : : : +- Join (854)
: : : : :- Project (849)
: : : : : +- RepartitionByExpression (848)
: : : : : +- LogicalRelation (847)
: : : : +- Project (853)
: : : : +- Project (852)
: : : : +- Repartition (851)
: : : : +- LogicalRelation (850)
: : : +- Project (859)
: : : +- Repartition (858)
: : : +- LogicalRelation (857)
: : +- Repartition (864)
: : +- LogicalRelation (863)
: +- Project (886)
: +- Filter (885)
: +- Project (884)
: +- Generate (883)
: +- Repartition (882)
: +- LogicalRelation (881)
+- Filter (1325)
+- Aggregate (1324)
+- Project (1323)
+- Project (1322)
+- Project (1321)
+- Join (1320)
:- Project (1313)
: +- Project (1312)
: +- Join (1311)
: :- Project (1099)
: : +- Project (1098)
: : +- Project (1097)
: : +- Project (1096)
: : +- Project (1095)
: : +- Project (1094)
: : +- Join (1093)
: : :- Project (923)
: : : +- Project (922)
: : : +- Project (921)
: : : +- Project (920)
: : : +- Generate (919)
: : : +- Project (918)
: : : +- Generate (917)
: : : +- Project (916)
: : : +- Join (915)
: : : :- Project (912)
: : : : +- Project (911)
: : : : +- Join (910)
: : : : :- SubqueryAlias (906)
: : : : : +- Project (905)
: : : : : +- Join (904)
: : : : : :- Project (899)
: : : : : : +- RepartitionByExpression (898)
: : : : : : +- LogicalRelation (897)
: : : : : +- Project (903)
: : : : : +- Project (902)
: : : : : +- Repartition (901)
: : : : : +- LogicalRelation (900)
: : : : +- Project (909)
: : : : +- Repartition (908)
: : : : +- LogicalRelation (907)
: : : +- Repartition (914)
: : : +- LogicalRelation (913)
: : +- Project (1092)
: : +- Aggregate (1091)
: : +- Project (1090)
: : +- Join (1089)
: : :- Project (1005)
: : : +- Filter (1004)
: : : +- Join (1003)
: : : :- Filter (975)
: : : : +- Project (974)
: : : : +- Project (973)
: : : : +- Generate (972)
: : : : +- Project (971)
: : : : +- Aggregate (970)
: : : : +- Project (969)
: : : : +- Generate (968)
: : : : +- Join (967)
: : : : :- Repartition (925)
: : : : : +- LogicalRelation (924)
: : : : +- Project (966)
: : : : +- Join (965)
: : : : :- Project (935)
: : : : : +- Project (934)
: : : : : +- Generate (933)
: : : : : +- Project (932)
: : : : : +- Generate (931)
: : : : : +- Project (930)
: : : : : +- Project (929)
: : : : : +- Filter (928)
: : : : : +- Repartition (927)
: : : : : +- LogicalRelation (926)
: : : : +- Deduplicate (964)
: : : : +- Project (963)
: : : : +- Project (962)
: : : : +- Project (961)
: : : : +- Project (960)
: : : : +- Project (959)
: : : : +- Generate (958)
: : : : +- Project (957)
: : : : +- Generate (956)
: : : : +- Project (955)
: : : : +- Join (954)
: : : : :- Project (951)
: : : : : +- Project (950)
: : : : : +- Join (949)
: : : : : :- SubqueryAlias (945)
: : : : : : +- Project (944)
: : : : : : +- Join (943)
: : : : : : :- Project (938)
: : : : : : : +- RepartitionByExpression (937)
: : : : : : : +- LogicalRelation (936)
: : : : : : +- Project (942)
: : : : : : +- Project (941)
: : : : : : +- Repartition (940)
: : : : : : +- LogicalRelation (939)
: : : : : +- Project (948)
: : : : : +- Repartition (947)
: : : : : +- LogicalRelation (946)
: : : : +- Repartition (953)
: : : : +- LogicalRelation (952)
: : : +- Project (1002)
: : : +- Project (1001)
: : : +- Project (1000)
: : : +- Project (999)
: : : +- Generate (998)
: : : +- Project (997)
: : : +- Generate (996)
: : : +- Project (995)
: : : +- Join (994)
: : : :- Project (991)
: : : : +- Project (990)
: : : : +- Join (989)
: : : : :- SubqueryAlias (985)
: : : : : +- Project (984)
: : : : : +- Join (983)
: : : : : :- Project (978)
: : : : : : +- RepartitionByExpression (977)
: : : : : : +- LogicalRelation (976)
: : : : : +- Project (982)
: : : : : +- Project (981)
: : : : : +- Repartition (980)
: : : : : +- LogicalRelation (979)
: : : : +- Project (988)
: : : : +- Repartition (987)
: : : : +- LogicalRelation (986)
: : : +- Repartition (993)
: : : +- LogicalRelation (992)
: : +- Aggregate (1088)
: : +- Project (1087)
: : +- Filter (1086)
: : +- Join (1085)
: : :- Filter (1057)
: : : +- Project (1056)
: : : +- Project (1055)
: : : +- Generate (1054)
: : : +- Project (1053)
: : : +- Aggregate (1052)
: : : +- Project (1051)
: : : +- Generate (1050)
: : : +- Join (1049)
: : : :- Repartition (1007)
: : : : +- LogicalRelation (1006)
: : : +- Project (1048)
: : : +- Join (1047)
: : : :- Project (1017)
: : : : +- Project (1016)
: : : : +- Generate (1015)
: : : : +- Project (1014)
: : : : +- Generate (1013)
: : : : +- Project (1012)
: : : : +- Project (1011)
: : : : +- Filter (1010)
: : : : +- Repartition (1009)
: : : : +- LogicalRelation (1008)
: : : +- Deduplicate (1046)
: : : +- Project (1045)
: : : +- Project (1044)
: : : +- Project (1043)
: : : +- Project (1042)
: : : +- Project (1041)
: : : +- Generate (1040)
: : : +- Project (1039)
: : : +- Generate (1038)
: : : +- Project (1037)
: : : +- Join (1036)
: : : :- Project (1033)
: : : : +- Project (1032)
: : : : +- Join (1031)
: : : : :- SubqueryAlias (1027)
: : : : : +- Project (1026)
: : : : : +- Join (1025)
: : : : : :- Project (1020)
: : : : : : +- RepartitionByExpression (1019)
: : : : : : +- LogicalRelation (1018)
: : : : : +- Project (1024)
: : : : : +- Project (1023)
: : : : : +- Repartition (1022)
: : : : : +- LogicalRelation (1021)
: : : : +- Project (1030)
: : : : +- Repartition (1029)
: : : : +- LogicalRelation (1028)
: : : +- Repartition (1035)
: : : +- LogicalRelation (1034)
: : +- Project (1084)
: : +- Project (1083)
: : +- Project (1082)
: : +- Project (1081)
: : +- Generate (1080)
: : +- Project (1079)
: : +- Generate (1078)
: : +- Project (1077)
: : +- Join (1076)
: : :- Project (1073)
: : : +- Project (1072)
: : : +- Join (1071)
: : : :- SubqueryAlias (1067)
: : : : +- Project (1066)
: : : : +- Join (1065)
: : : : :- Project (1060)
: : : : : +- RepartitionByExpression (1059)
: : : : : +- LogicalRelation (1058)
: : : : +- Project (1064)
: : : : +- Project (1063)
: : : : +- Repartition (1062)
: : : : +- LogicalRelation (1061)
: : : +- Project (1070)
: : : +- Repartition (1069)
: : : +- LogicalRelation (1068)
: : +- Repartition (1075)
: : +- LogicalRelation (1074)
: +- SerializeFromObject (1310)
: +- MapElements (1309)
: +- DeserializeToObject (1308)
: +- Aggregate (1307)
: +- Project (1306)
: +- Project (1305)
: +- Join (1304)
: :- Project (1302)
: : +- Project (1301)
: : +- Project (1300)
: : +- Project (1299)
: : +- Project (1298)
: : +- Project (1297)
: : +- Join (1296)
: : :- Project (1126)
: : : +- Project (1125)
: : : +- Project (1124)
: : : +- Project (1123)
: : : +- Generate (1122)
: : : +- Project (1121)
: : : +- Generate (1120)
: : : +- Project (1119)
: : : +- Join (1118)
: : : :- Project (1115)
: : : : +- Project (1114)
: : : : +- Join (1113)
: : : : :- SubqueryAlias (1109)
: : : : : +- Project (1108)
: : : : : +- Join (1107)
: : : : : :- Project (1102)
: : : : : : +- RepartitionByExpression (1101)
: : : : : : +- LogicalRelation (1100)
: : : : : +- Project (1106)
: : : : : +- Project (1105)
: : : : : +- Repartition (1104)
: : : : : +- LogicalRelation (1103)
: : : : +- Project (1112)
: : : : +- Repartition (1111)
: : : : +- LogicalRelation (1110)
: : : +- Repartition (1117)
: : : +- LogicalRelation (1116)
: : +- Project (1295)
: : +- Aggregate (1294)
: : +- Project (1293)
: : +- Join (1292)
: : :- Project (1208)
: : : +- Filter (1207)
: : : +- Join (1206)
: : : :- Filter (1178)
: : : : +- Project (1177)
: : : : +- Project (1176)
: : : : +- Generate (1175)
: : : : +- Project (1174)
: : : : +- Aggregate (1173)
: : : : +- Project (1172)
: : : : +- Generate (1171)
: : : : +- Join (1170)
: : : : :- Repartition (1128)
: : : : : +- LogicalRelation (1127)
: : : : +- Project (1169)
: : : : +- Join (1168)
: : : : :- Project (1138)
: : : : : +- Project (1137)
: : : : : +- Generate (1136)
: : : : : +- Project (1135)
: : : : : +- Generate (1134)
: : : : : +- Project (1133)
: : : : : +- Project (1132)
: : : : : +- Filter (1131)
: : : : : +- Repartition (1130)
: : : : : +- LogicalRelation (1129)
: : : : +- Deduplicate (1167)
: : : : +- Project (1166)
: : : : +- Project (1165)
: : : : +- Project (1164)
: : : : +- Project (1163)
: : : : +- Project (1162)
: : : : +- Generate (1161)
: : : : +- Project (1160)
: : : : +- Generate (1159)
: : : : +- Project (1158)
: : : : +- Join (1157)
: : : : :- Project (1154)
: : : : : +- Project (1153)
: : : : : +- Join (1152)
: : : : : :- SubqueryAlias (1148)
: : : : : : +- Project (1147)
: : : : : : +- Join (1146)
: : : : : : :- Project (1141)
: : : : : : : +- RepartitionByExpression (1140)
: : : : : : : +- LogicalRelation (1139)
: : : : : : +- Project (1145)
: : : : : : +- Project (1144)
: : : : : : +- Repartition (1143)
: : : : : : +- LogicalRelation (1142)
: : : : : +- Project (1151)
: : : : : +- Repartition (1150)
: : : : : +- LogicalRelation (1149)
: : : : +- Repartition (1156)
: : : : +- LogicalRelation (1155)
: : : +- Project (1205)
: : : +- Project (1204)
: : : +- Project (1203)
: : : +- Project (1202)
: : : +- Generate (1201)
: : : +- Project (1200)
: : : +- Generate (1199)
: : : +- Project (1198)
: : : +- Join (1197)
: : : :- Project (1194)
: : : : +- Project (1193)
: : : : +- Join (1192)
: : : : :- SubqueryAlias (1188)
: : : : : +- Project (1187)
: : : : : +- Join (1186)
: : : : : :- Project (1181)
: : : : : : +- RepartitionByExpression (1180)
: : : : : : +- LogicalRelation (1179)
: : : : : +- Project (1185)
: : : : : +- Project (1184)
: : : : : +- Repartition (1183)
: : : : : +- LogicalRelation (1182)
: : : : +- Project (1191)
: : : : +- Repartition (1190)
: : : : +- LogicalRelation (1189)
: : : +- Repartition (1196)
: : : +- LogicalRelation (1195)
: : +- Aggregate (1291)
: : +- Project (1290)
: : +- Filter (1289)
: : +- Join (1288)
: : :- Filter (1260)
: : : +- Project (1259)
: : : +- Project (1258)
: : : +- Generate (1257)
: : : +- Project (1256)
: : : +- Aggregate (1255)
: : : +- Project (1254)
: : : +- Generate (1253)
: : : +- Join (1252)
: : : :- Repartition (1210)
: : : : +- LogicalRelation (1209)
: : : +- Project (1251)
: : : +- Join (1250)
: : : :- Project (1220)
: : : : +- Project (1219)
: : : : +- Generate (1218)
: : : : +- Project (1217)
: : : : +- Generate (1216)
: : : : +- Project (1215)
: : : : +- Project (1214)
: : : : +- Filter (1213)
: : : : +- Repartition (1212)
: : : : +- LogicalRelation (1211)
: : : +- Deduplicate (1249)
: : : +- Project (1248)
: : : +- Project (1247)
: : : +- Project (1246)
: : : +- Project (1245)
: : : +- Project (1244)
: : : +- Generate (1243)
: : : +- Project (1242)
: : : +- Generate (1241)
: : : +- Project (1240)
: : : +- Join (1239)
: : : :- Project (1236)
: : : : +- Project (1235)
: : : : +- Join (1234)
: : : : :- SubqueryAlias (1230)
: : : : : +- Project (1229)
: : : : : +- Join (1228)
: : : : : :- Project (1223)
: : : : : : +- RepartitionByExpression (1222)
: : : : : : +- LogicalRelation (1221)
: : : : : +- Project (1227)
: : : : : +- Project (1226)
: : : : : +- Repartition (1225)
: : : : : +- LogicalRelation (1224)
: : : : +- Project (1233)
: : : : +- Repartition (1232)
: : : : +- LogicalRelation (1231)
: : : +- Repartition (1238)
: : : +- LogicalRelation (1237)
: : +- Project (1287)
: : +- Project (1286)
: : +- Project (1285)
: : +- Project (1284)
: : +- Generate (1283)
: : +- Project (1282)
: : +- Generate (1281)
: : +- Project (1280)
: : +- Join (1279)
: : :- Project (1276)
: : : +- Project (1275)
: : : +- Join (1274)
: : : :- SubqueryAlias (1270)
: : : : +- Project (1269)
: : : : +- Join (1268)
: : : : :- Project (1263)
: : : : : +- RepartitionByExpression (1262)
: : : : : +- LogicalRelation (1261)
: : : : +- Project (1267)
: : : : +- Project (1266)
: : : : +- Repartition (1265)
: : : : +- LogicalRelation (1264)
: : : +- Project (1273)
: : : +- Repartition (1272)
: : : +- LogicalRelation (1271)
: : +- Repartition (1278)
: : +- LogicalRelation (1277)
: +- LogicalRelation (1303)
+- Project (1319)
+- Filter (1318)
+- Project (1317)
+- Generate (1316)
+- Repartition (1315)
+- LogicalRelation (1314)
(1) Execute SaveIntoDataSourceCommand
Output: []
(2) SaveIntoDataSourceCommand
Arguments: org.apache.spark.sql.delta.sources.DeltaDataSource@40727ba4, [path=hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-quantity-kpi-service/internal/data-snapshot/10000001355/0_1_10000001355], Overwrite
(3) LogicalRelation
Arguments: parquet, [product#1199942, plant#1199943, orderDateTime#1199944, planningStartDateTime#1199945], false
(4) RepartitionByExpression
Arguments: [product#1199942, plant#1199943], 37
(5) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944]
(6) LogicalRelation
Arguments: parquet, [systemId#1199947, internalUUID#1199948, plant#1199949, product#1199950, blockedForReplenishmentStartingFrom#1199951, productionAspect#1199952, salesPlant#1199953, listing#1199954], false
(7) Repartition
Arguments: 37, true
(8) Project
Arguments: [systemId#1199947, internalUUID#1199948, plant#1199949, product#1199950, blockedForReplenishmentStartingFrom#1199951, productionAspect#1199952, salesPlant#1199953, listing#1199954, struct(systemId, systemId#1199947, internalUUID, internalUUID#1199948, plant, plant#1199949, product, product#1199950, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1199951, productionAspect, productionAspect#1199952, salesPlant, salesPlant#1199953, listing, listing#1199954) AS productPlant#1199956]
(9) Project
Arguments: [productPlant#1199956]
(10) Join
Arguments: LeftOuter, ((product#1199942 <=> productPlant#1199956.product.internalRefUUID) AND (plant#1199943 <=> productPlant#1199956.plant.internalRefUUID))
(11) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956]
(12) SubqueryAlias
Arguments: wl
(13) LogicalRelation
Arguments: parquet, [systemId#1199959, internalUUID#1199960, id#1199961, displayId#1199962, name#1199963, category#1199964, companyCode#1199965, address#1199966, mainDistributionChain#1199967, mainPurchasingOrganization#1199968, validPurchasingOrganizations#1199969, productGroup#1199970], false
(14) Repartition
Arguments: 37, true
(15) Project
Arguments: [internalUUID#1199960, address#1199966.timeZone.code AS timezonecode#1199971]
(16) Join
Arguments: LeftOuter, (plant#1199943 <=> internalUUID#1199960)
(17) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, internalUUID#1199960, CASE WHEN isnotnull(timezonecode#1199971) THEN timezonecode#1199971 ELSE UTC END AS timezonecode#1199974]
(18) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974]
(19) LogicalRelation
Arguments: parquet, [systemId#1199975, internalUUID#1199976, id#1199977, displayId#1199978, name#1199979, baseUnitOfMeasure#1199980, unitOfMeasures#1199981, unitOfMeasureConversions#1199982, productionAspect#1199983, salesAspect#1199984, procurementAspect#1199985, productGroup#1199986], false
(20) Repartition
Arguments: 37, true
(21) Join
Arguments: LeftOuter, (product#1199942 = internalUUID#1199976)
(22) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, systemId#1199975, internalUUID#1199976, id#1199977, displayId#1199978, name#1199979, baseUnitOfMeasure#1199980, unitOfMeasures#1199981, unitOfMeasureConversions#1199982, productionAspect#1199983, salesAspect#1199984, procurementAspect#1199985, productGroup#1199986, filter(unitOfMeasureConversions#1199982, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1199956.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1199956.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1199980.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1199980.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1199988]
(23) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1199988.quantityNumerator), true, [quantityNumerator#1199996]
(24) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, systemId#1199975, internalUUID#1199976, id#1199977, displayId#1199978, name#1199979, baseUnitOfMeasure#1199980, unitOfMeasures#1199981, unitOfMeasureConversions#1199982, productionAspect#1199983, salesAspect#1199984, procurementAspect#1199985, productGroup#1199986, filteredUnitOfMeasureConversions#1199988, quantityNumerator#1199996]
(25) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1199988.quantityDenominator), true, [quantityDenominator#1199999]
(26) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, systemId#1199975, internalUUID#1199976, id#1199977, displayId#1199978, name#1199979, baseUnitOfMeasure#1199980, unitOfMeasures#1199981, unitOfMeasureConversions#1199982, productionAspect#1199983, salesAspect#1199984, procurementAspect#1199985, productGroup#1199986, filteredUnitOfMeasureConversions#1199988, quantityNumerator#1199996, quantityDenominator#1199999]
(27) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, systemId#1199975, internalUUID#1199976, id#1199977, displayId#1199978, name#1199979, baseUnitOfMeasure#1199980, unitOfMeasures#1199981, unitOfMeasureConversions#1199982, productionAspect#1199983, salesAspect#1199984, procurementAspect#1199985, productGroup#1199986, filteredUnitOfMeasureConversions#1199988, quantityNumerator#1199996, quantityDenominator#1199999, (cast(quantityNumerator#1199996 as double) / cast(quantityDenominator#1199999 as double)) AS outboundUnit#1200000]
(28) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, systemId#1199975, internalUUID#1199976, id#1199977, displayId#1199978, name#1199979, baseUnitOfMeasure#1199980, unitOfMeasures#1199981, unitOfMeasureConversions#1199982, productionAspect#1199983, salesAspect#1199984, procurementAspect#1199985, productGroup#1199986, filteredUnitOfMeasureConversions#1199988, quantityNumerator#1199996, quantityDenominator#1199999, CASE WHEN (isnull(outboundUnit#1200000) OR (outboundUnit#1200000 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1200000 END AS outboundUnit#1200001]
(29) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001]
(30) LogicalRelation
Arguments: parquet, [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043], false
(31) Repartition
Arguments: 37, true
(32) LogicalRelation
Arguments: parquet, [marketUnit#1200002, description#1200003, articleHierarchy#1200004, defaultCurrency#1200005, responsibilities#1200006, replenishmentTypes#1200007, distributionCenters#1200008, assignedArticleHierarchyNodes#1200009, minOrderQtySetting#1200010, listingCheck#1200011, odsSelection#1200012, demandProfiles#1200013, constraintProfiles#1200014, optimizationProfiles#1200015, orderGroupSplitProfiles#1200016, supplierMinimumProfiles#1200017, multipleRestrictionProfiles#1200018, preferredUomSource#1200019, handlingOfUnfulfilledDemands#1200020, negligibleQuantitiesThreshold#1200021, eventtype#1200022, minOrderQtySettingInternal#1200023], false
(33) Repartition
Arguments: 37, true
(34) Filter
Arguments: (marketUnit#1200002 <=> Grocery_SS)
(35) Project
Arguments: [marketUnit#1200002, description#1200003, articleHierarchy#1200004, defaultCurrency#1200005, responsibilities#1200006, replenishmentTypes#1200007, distributionCenters#1200008, assignedArticleHierarchyNodes#1200009, minOrderQtySetting#1200010, listingCheck#1200011, odsSelection#1200012, demandProfiles#1200013, constraintProfiles#1200014, optimizationProfiles#1200015, orderGroupSplitProfiles#1200016, supplierMinimumProfiles#1200017, multipleRestrictionProfiles#1200018, preferredUomSource#1200019, handlingOfUnfulfilledDemands#1200020, negligibleQuantitiesThreshold#1200021, eventtype#1200022, minOrderQtySettingInternal#1200023]
(36) Project
Arguments: [distributionCenters#1200008]
(37) Generate
Arguments: explode(distributionCenters#1200008), false, [distributionCenters#1200026]
(38) Project
Arguments: [distributionCenters#1200026]
(39) Generate
Arguments: explode(distributionCenters#1200026.storageLocations), false, [storageLocations#1200033]
(40) Project
Arguments: [distributionCenters#1200026.id AS plantId#1200027, distributionCenters#1200026.internalRefUUID AS plantUuid#1200028, storageLocations#1200033]
(41) Project
Arguments: [plantId#1200027, plantUuid#1200028, storageLocations#1200033.id AS storageLocId#1200034, storageLocations#1200033.internalRefUUID AS storageLocUuid#1200035]
(42) LogicalRelation
Arguments: parquet, [product#1200298, plant#1200299, orderDateTime#1200300, planningStartDateTime#1200301], false
(43) RepartitionByExpression
Arguments: [product#1200298, plant#1200299], 37
(44) Project
Arguments: [product#1200298, plant#1200299, orderDateTime#1200300]
(45) LogicalRelation
Arguments: parquet, [systemId#1200302, internalUUID#1200303, plant#1200304, product#1200305, blockedForReplenishmentStartingFrom#1200306, productionAspect#1200307, salesPlant#1200308, listing#1200309], false
(46) Repartition
Arguments: 37, true
(47) Project
Arguments: [systemId#1200302, internalUUID#1200303, plant#1200304, product#1200305, blockedForReplenishmentStartingFrom#1200306, productionAspect#1200307, salesPlant#1200308, listing#1200309, struct(systemId, systemId#1200302, internalUUID, internalUUID#1200303, plant, plant#1200304, product, product#1200305, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200306, productionAspect, productionAspect#1200307, salesPlant, salesPlant#1200308, listing, listing#1200309) AS productPlant#1200310]
(48) Project
Arguments: [productPlant#1200310]
(49) Join
Arguments: LeftOuter, ((product#1200298 <=> productPlant#1200310.product.internalRefUUID) AND (plant#1200299 <=> productPlant#1200310.plant.internalRefUUID))
(50) Project
Arguments: [product#1200298, plant#1200299, orderDateTime#1200300, productPlant#1200310]
(51) SubqueryAlias
Arguments: wl
(52) LogicalRelation
Arguments: parquet, [systemId#1200311, internalUUID#1200312, id#1200313, displayId#1200314, name#1200315, category#1200316, companyCode#1200317, address#1200318, mainDistributionChain#1200319, mainPurchasingOrganization#1200320, validPurchasingOrganizations#1200321, productGroup#1200322], false
(53) Repartition
Arguments: 37, true
(54) Project
Arguments: [internalUUID#1200312, address#1200318.timeZone.code AS timezonecode#1200323]
(55) Join
Arguments: LeftOuter, (plant#1200299 <=> internalUUID#1200312)
(56) Project
Arguments: [product#1200298, plant#1200299, orderDateTime#1200300, productPlant#1200310, internalUUID#1200312, CASE WHEN isnotnull(timezonecode#1200323) THEN timezonecode#1200323 ELSE UTC END AS timezonecode#1200324]
(57) Project
Arguments: [product#1200298, plant#1200299, orderDateTime#1200300, productPlant#1200310, timezonecode#1200324]
(58) LogicalRelation
Arguments: parquet, [systemId#1200325, internalUUID#1200326, id#1200327, displayId#1200328, name#1200329, baseUnitOfMeasure#1200330, unitOfMeasures#1200331, unitOfMeasureConversions#1200332, productionAspect#1200333, salesAspect#1200334, procurementAspect#1200335, productGroup#1200336], false
(59) Repartition
Arguments: 37, true
(60) Join
Arguments: LeftOuter, (product#1200298 = internalUUID#1200326)
(61) Project
Arguments: [product#1200298, plant#1200299, orderDateTime#1200300, productPlant#1200310, timezonecode#1200324, systemId#1200325, internalUUID#1200326, id#1200327, displayId#1200328, name#1200329, baseUnitOfMeasure#1200330, unitOfMeasures#1200331, unitOfMeasureConversions#1200332, productionAspect#1200333, salesAspect#1200334, procurementAspect#1200335, productGroup#1200336, filter(unitOfMeasureConversions#1200332, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200310.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200310.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200330.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200330.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200337]
(62) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200337.quantityNumerator), true, [quantityNumerator#1200338]
(63) Project
Arguments: [product#1200298, plant#1200299, orderDateTime#1200300, productPlant#1200310, timezonecode#1200324, systemId#1200325, internalUUID#1200326, id#1200327, displayId#1200328, name#1200329, baseUnitOfMeasure#1200330, unitOfMeasures#1200331, unitOfMeasureConversions#1200332, productionAspect#1200333, salesAspect#1200334, procurementAspect#1200335, productGroup#1200336, filteredUnitOfMeasureConversions#1200337, quantityNumerator#1200338]
(64) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200337.quantityDenominator), true, [quantityDenominator#1200339]
(65) Project
Arguments: [product#1200298, plant#1200299, orderDateTime#1200300, productPlant#1200310, timezonecode#1200324, systemId#1200325, internalUUID#1200326, id#1200327, displayId#1200328, name#1200329, baseUnitOfMeasure#1200330, unitOfMeasures#1200331, unitOfMeasureConversions#1200332, productionAspect#1200333, salesAspect#1200334, procurementAspect#1200335, productGroup#1200336, filteredUnitOfMeasureConversions#1200337, quantityNumerator#1200338, quantityDenominator#1200339]
(66) Project
Arguments: [product#1200298, plant#1200299, orderDateTime#1200300, productPlant#1200310, timezonecode#1200324, systemId#1200325, internalUUID#1200326, id#1200327, displayId#1200328, name#1200329, baseUnitOfMeasure#1200330, unitOfMeasures#1200331, unitOfMeasureConversions#1200332, productionAspect#1200333, salesAspect#1200334, procurementAspect#1200335, productGroup#1200336, filteredUnitOfMeasureConversions#1200337, quantityNumerator#1200338, quantityDenominator#1200339, (cast(quantityNumerator#1200338 as double) / cast(quantityDenominator#1200339 as double)) AS outboundUnit#1200340]
(67) Project
Arguments: [product#1200298, plant#1200299, orderDateTime#1200300, productPlant#1200310, timezonecode#1200324, systemId#1200325, internalUUID#1200326, id#1200327, displayId#1200328, name#1200329, baseUnitOfMeasure#1200330, unitOfMeasures#1200331, unitOfMeasureConversions#1200332, productionAspect#1200333, salesAspect#1200334, procurementAspect#1200335, productGroup#1200336, filteredUnitOfMeasureConversions#1200337, quantityNumerator#1200338, quantityDenominator#1200339, CASE WHEN (isnull(outboundUnit#1200340) OR (outboundUnit#1200340 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1200340 END AS outboundUnit#1200341]
(68) Project
Arguments: [product#1200298, plant#1200299, orderDateTime#1200300, productPlant#1200310, timezonecode#1200324, outboundUnit#1200341]
(69) Project
Arguments: [plant#1200299]
(70) Deduplicate
Arguments: [plant#1200299]
(71) Join
Arguments: Inner, (plantUuid#1200028 = plant#1200299)
(72) Project
Arguments: [plantId#1200027, plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035]
(73) Join
Arguments: Inner, (plant#1200041.internalRefUUID <=> plantUuid#1200028)
(74) Generate
Arguments: explode(filter(stockQuantities#1200043, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200035) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200034)), lambda x#1200047, false))), false, [stockQuantity#1200048]
(75) Project
Arguments: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200042, stockQuantities#1200043, plantId#1200027, plantUuid#1200028, storageLocId#1200034, storageLocUuid#1200035, stockQuantity#1200048]
(76) Aggregate
Arguments: [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038], [plantUuid#1200028, internalUUID#1200039, plant#1200041, product#1200040, systemId#1200038, first(calculationDateTime#1200042, false) AS calculationDateTime#1200049, collect_list(stockQuantity#1200048, 0, 0) AS stockQuantities#1200050]
(77) Project
Arguments: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantities#1200050]
(78) Generate
Arguments: explode(stockQuantities#1200050), false, [stockQuantity#1200065]
(79) Project
Arguments: [systemId#1200038, internalUUID#1200039, product#1200040, plant#1200041, calculationDateTime#1200049, stockQuantities#1200050, stockQuantity#1200065]
(80) Project
Arguments: [plant#1200041.id AS plant#1200066, plant#1200041.internalRefUUID AS plantUuid#1200067, product#1200040.id AS product#1200068, product#1200040.internalRefUUID AS productUuid#1200069, calculationDateTime#1200049, stockQuantity#1200065.storagelocation.id AS storageLocId#1200070, stockQuantity#1200065.storagelocation.internalRefUUID AS storageLocUuid#1200071, stockQuantity#1200065.quantity.measure AS quantity#1200072, stockQuantity#1200065.specialStockIndicator.code AS specialStockIndicator#1200073, stockQuantity#1200065.stockType.code AS stockType#1200074]
(81) Filter
Arguments: ((specialStockIndicator#1200073 = ) AND (stockType#1200074 = 01))
(82) LogicalRelation
Arguments: parquet, [product#1200084, plant#1200085, orderDateTime#1200086, planningStartDateTime#1200087], false
(83) RepartitionByExpression
Arguments: [product#1200084, plant#1200085], 37
(84) Project
Arguments: [product#1200084, plant#1200085, orderDateTime#1200086]
(85) LogicalRelation
Arguments: parquet, [systemId#1200088, internalUUID#1200089, plant#1200090, product#1200091, blockedForReplenishmentStartingFrom#1200092, productionAspect#1200093, salesPlant#1200094, listing#1200095], false
(86) Repartition
Arguments: 37, true
(87) Project
Arguments: [systemId#1200088, internalUUID#1200089, plant#1200090, product#1200091, blockedForReplenishmentStartingFrom#1200092, productionAspect#1200093, salesPlant#1200094, listing#1200095, struct(systemId, systemId#1200088, internalUUID, internalUUID#1200089, plant, plant#1200090, product, product#1200091, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200092, productionAspect, productionAspect#1200093, salesPlant, salesPlant#1200094, listing, listing#1200095) AS productPlant#1200096]
(88) Project
Arguments: [productPlant#1200096]
(89) Join
Arguments: LeftOuter, ((product#1200084 <=> productPlant#1200096.product.internalRefUUID) AND (plant#1200085 <=> productPlant#1200096.plant.internalRefUUID))
(90) Project
Arguments: [product#1200084, plant#1200085, orderDateTime#1200086, productPlant#1200096]
(91) SubqueryAlias
Arguments: wl
(92) LogicalRelation
Arguments: parquet, [systemId#1200097, internalUUID#1200098, id#1200099, displayId#1200100, name#1200101, category#1200102, companyCode#1200103, address#1200104, mainDistributionChain#1200105, mainPurchasingOrganization#1200106, validPurchasingOrganizations#1200107, productGroup#1200108], false
(93) Repartition
Arguments: 37, true
(94) Project
Arguments: [internalUUID#1200098, address#1200104.timeZone.code AS timezonecode#1200109]
(95) Join
Arguments: LeftOuter, (plant#1200085 <=> internalUUID#1200098)
(96) Project
Arguments: [product#1200084, plant#1200085, orderDateTime#1200086, productPlant#1200096, internalUUID#1200098, CASE WHEN isnotnull(timezonecode#1200109) THEN timezonecode#1200109 ELSE UTC END AS timezonecode#1200110]
(97) Project
Arguments: [product#1200084, plant#1200085, orderDateTime#1200086, productPlant#1200096, timezonecode#1200110]
(98) LogicalRelation
Arguments: parquet, [systemId#1200111, internalUUID#1200112, id#1200113, displayId#1200114, name#1200115, baseUnitOfMeasure#1200116, unitOfMeasures#1200117, unitOfMeasureConversions#1200118, productionAspect#1200119, salesAspect#1200120, procurementAspect#1200121, productGroup#1200122], false
(99) Repartition
Arguments: 37, true
(100) Join
Arguments: LeftOuter, (product#1200084 = internalUUID#1200112)
(101) Project
Arguments: [product#1200084, plant#1200085, orderDateTime#1200086, productPlant#1200096, timezonecode#1200110, systemId#1200111, internalUUID#1200112, id#1200113, displayId#1200114, name#1200115, baseUnitOfMeasure#1200116, unitOfMeasures#1200117, unitOfMeasureConversions#1200118, productionAspect#1200119, salesAspect#1200120, procurementAspect#1200121, productGroup#1200122, filter(unitOfMeasureConversions#1200118, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200096.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200096.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200116.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200116.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200123]
(102) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200123.quantityNumerator), true, [quantityNumerator#1200124]
(103) Project
Arguments: [product#1200084, plant#1200085, orderDateTime#1200086, productPlant#1200096, timezonecode#1200110, systemId#1200111, internalUUID#1200112, id#1200113, displayId#1200114, name#1200115, baseUnitOfMeasure#1200116, unitOfMeasures#1200117, unitOfMeasureConversions#1200118, productionAspect#1200119, salesAspect#1200120, procurementAspect#1200121, productGroup#1200122, filteredUnitOfMeasureConversions#1200123, quantityNumerator#1200124]
(104) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200123.quantityDenominator), true, [quantityDenominator#1200125]
(105) Project
Arguments: [product#1200084, plant#1200085, orderDateTime#1200086, productPlant#1200096, timezonecode#1200110, systemId#1200111, internalUUID#1200112, id#1200113, displayId#1200114, name#1200115, baseUnitOfMeasure#1200116, unitOfMeasures#1200117, unitOfMeasureConversions#1200118, productionAspect#1200119, salesAspect#1200120, procurementAspect#1200121, productGroup#1200122, filteredUnitOfMeasureConversions#1200123, quantityNumerator#1200124, quantityDenominator#1200125]
(106) Project
Arguments: [product#1200084, plant#1200085, orderDateTime#1200086, productPlant#1200096, timezonecode#1200110, systemId#1200111, internalUUID#1200112, id#1200113, displayId#1200114, name#1200115, baseUnitOfMeasure#1200116, unitOfMeasures#1200117, unitOfMeasureConversions#1200118, productionAspect#1200119, salesAspect#1200120, procurementAspect#1200121, productGroup#1200122, filteredUnitOfMeasureConversions#1200123, quantityNumerator#1200124, quantityDenominator#1200125, (cast(quantityNumerator#1200124 as double) / cast(quantityDenominator#1200125 as double)) AS outboundUnit#1200126]
(107) Project
Arguments: [product#1200084, plant#1200085, orderDateTime#1200086, productPlant#1200096, timezonecode#1200110, systemId#1200111, internalUUID#1200112, id#1200113, displayId#1200114, name#1200115, baseUnitOfMeasure#1200116, unitOfMeasures#1200117, unitOfMeasureConversions#1200118, productionAspect#1200119, salesAspect#1200120, procurementAspect#1200121, productGroup#1200122, filteredUnitOfMeasureConversions#1200123, quantityNumerator#1200124, quantityDenominator#1200125, CASE WHEN (isnull(outboundUnit#1200126) OR (outboundUnit#1200126 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1200126 END AS outboundUnit#1200127]
(108) Project
Arguments: [product#1200084, plant#1200085, orderDateTime#1200086, productPlant#1200096, timezonecode#1200110, outboundUnit#1200127]
(109) Join
Arguments: Inner, ((plantUuid#1200067 = plant#1200085) AND (productUuid#1200069 = product#1200084))
(110) Filter
Arguments: (calculationDateTime#1200049 <= orderDateTime#1200086)
(111) Project
Arguments: [plantUuid#1200067 AS plant#1200132, productUuid#1200069 AS product#1200133, storageLocId#1200070, calculationDateTime#1200049, quantity#1200072]
(112) LogicalRelation
Arguments: parquet, [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146], false
(113) Repartition
Arguments: 37, true
(114) LogicalRelation
Arguments: parquet, [marketUnit#1200147, description#1200148, articleHierarchy#1200149, defaultCurrency#1200150, responsibilities#1200151, replenishmentTypes#1200152, distributionCenters#1200153, assignedArticleHierarchyNodes#1200154, minOrderQtySetting#1200155, listingCheck#1200156, odsSelection#1200157, demandProfiles#1200158, constraintProfiles#1200159, optimizationProfiles#1200160, orderGroupSplitProfiles#1200161, supplierMinimumProfiles#1200162, multipleRestrictionProfiles#1200163, preferredUomSource#1200164, handlingOfUnfulfilledDemands#1200165, negligibleQuantitiesThreshold#1200166, eventtype#1200167, minOrderQtySettingInternal#1200168], false
(115) Repartition
Arguments: 37, true
(116) Filter
Arguments: (marketUnit#1200147 <=> Grocery_SS)
(117) Project
Arguments: [marketUnit#1200147, description#1200148, articleHierarchy#1200149, defaultCurrency#1200150, responsibilities#1200151, replenishmentTypes#1200152, distributionCenters#1200153, assignedArticleHierarchyNodes#1200154, minOrderQtySetting#1200155, listingCheck#1200156, odsSelection#1200157, demandProfiles#1200158, constraintProfiles#1200159, optimizationProfiles#1200160, orderGroupSplitProfiles#1200161, supplierMinimumProfiles#1200162, multipleRestrictionProfiles#1200163, preferredUomSource#1200164, handlingOfUnfulfilledDemands#1200165, negligibleQuantitiesThreshold#1200166, eventtype#1200167, minOrderQtySettingInternal#1200168]
(118) Project
Arguments: [distributionCenters#1200153]
(119) Generate
Arguments: explode(distributionCenters#1200153), false, [distributionCenters#1200169]
(120) Project
Arguments: [distributionCenters#1200169]
(121) Generate
Arguments: explode(distributionCenters#1200169.storageLocations), false, [storageLocations#1200170]
(122) Project
Arguments: [distributionCenters#1200169.id AS plantId#1200171, distributionCenters#1200169.internalRefUUID AS plantUuid#1200172, storageLocations#1200170]
(123) Project
Arguments: [plantId#1200171, plantUuid#1200172, storageLocations#1200170.id AS storageLocId#1200173, storageLocations#1200170.internalRefUUID AS storageLocUuid#1200174]
(124) LogicalRelation
Arguments: parquet, [product#1200175, plant#1200176, orderDateTime#1200177, planningStartDateTime#1200178], false
(125) RepartitionByExpression
Arguments: [product#1200175, plant#1200176], 37
(126) Project
Arguments: [product#1200175, plant#1200176, orderDateTime#1200177]
(127) LogicalRelation
Arguments: parquet, [systemId#1200179, internalUUID#1200180, plant#1200181, product#1200182, blockedForReplenishmentStartingFrom#1200183, productionAspect#1200184, salesPlant#1200185, listing#1200186], false
(128) Repartition
Arguments: 37, true
(129) Project
Arguments: [systemId#1200179, internalUUID#1200180, plant#1200181, product#1200182, blockedForReplenishmentStartingFrom#1200183, productionAspect#1200184, salesPlant#1200185, listing#1200186, struct(systemId, systemId#1200179, internalUUID, internalUUID#1200180, plant, plant#1200181, product, product#1200182, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200183, productionAspect, productionAspect#1200184, salesPlant, salesPlant#1200185, listing, listing#1200186) AS productPlant#1200187]
(130) Project
Arguments: [productPlant#1200187]
(131) Join
Arguments: LeftOuter, ((product#1200175 <=> productPlant#1200187.product.internalRefUUID) AND (plant#1200176 <=> productPlant#1200187.plant.internalRefUUID))
(132) Project
Arguments: [product#1200175, plant#1200176, orderDateTime#1200177, productPlant#1200187]
(133) SubqueryAlias
Arguments: wl
(134) LogicalRelation
Arguments: parquet, [systemId#1200188, internalUUID#1200189, id#1200190, displayId#1200191, name#1200192, category#1200193, companyCode#1200194, address#1200195, mainDistributionChain#1200196, mainPurchasingOrganization#1200197, validPurchasingOrganizations#1200198, productGroup#1200199], false
(135) Repartition
Arguments: 37, true
(136) Project
Arguments: [internalUUID#1200189, address#1200195.timeZone.code AS timezonecode#1200200]
(137) Join
Arguments: LeftOuter, (plant#1200176 <=> internalUUID#1200189)
(138) Project
Arguments: [product#1200175, plant#1200176, orderDateTime#1200177, productPlant#1200187, internalUUID#1200189, CASE WHEN isnotnull(timezonecode#1200200) THEN timezonecode#1200200 ELSE UTC END AS timezonecode#1200201]
(139) Project
Arguments: [product#1200175, plant#1200176, orderDateTime#1200177, productPlant#1200187, timezonecode#1200201]
(140) LogicalRelation
Arguments: parquet, [systemId#1200202, internalUUID#1200203, id#1200204, displayId#1200205, name#1200206, baseUnitOfMeasure#1200207, unitOfMeasures#1200208, unitOfMeasureConversions#1200209, productionAspect#1200210, salesAspect#1200211, procurementAspect#1200212, productGroup#1200213], false
(141) Repartition
Arguments: 37, true
(142) Join
Arguments: LeftOuter, (product#1200175 = internalUUID#1200203)
(143) Project
Arguments: [product#1200175, plant#1200176, orderDateTime#1200177, productPlant#1200187, timezonecode#1200201, systemId#1200202, internalUUID#1200203, id#1200204, displayId#1200205, name#1200206, baseUnitOfMeasure#1200207, unitOfMeasures#1200208, unitOfMeasureConversions#1200209, productionAspect#1200210, salesAspect#1200211, procurementAspect#1200212, productGroup#1200213, filter(unitOfMeasureConversions#1200209, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200187.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200187.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200207.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200207.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200214]
(144) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200214.quantityNumerator), true, [quantityNumerator#1200215]
(145) Project
Arguments: [product#1200175, plant#1200176, orderDateTime#1200177, productPlant#1200187, timezonecode#1200201, systemId#1200202, internalUUID#1200203, id#1200204, displayId#1200205, name#1200206, baseUnitOfMeasure#1200207, unitOfMeasures#1200208, unitOfMeasureConversions#1200209, productionAspect#1200210, salesAspect#1200211, procurementAspect#1200212, productGroup#1200213, filteredUnitOfMeasureConversions#1200214, quantityNumerator#1200215]
(146) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200214.quantityDenominator), true, [quantityDenominator#1200216]
(147) Project
Arguments: [product#1200175, plant#1200176, orderDateTime#1200177, productPlant#1200187, timezonecode#1200201, systemId#1200202, internalUUID#1200203, id#1200204, displayId#1200205, name#1200206, baseUnitOfMeasure#1200207, unitOfMeasures#1200208, unitOfMeasureConversions#1200209, productionAspect#1200210, salesAspect#1200211, procurementAspect#1200212, productGroup#1200213, filteredUnitOfMeasureConversions#1200214, quantityNumerator#1200215, quantityDenominator#1200216]
(148) Project
Arguments: [product#1200175, plant#1200176, orderDateTime#1200177, productPlant#1200187, timezonecode#1200201, systemId#1200202, internalUUID#1200203, id#1200204, displayId#1200205, name#1200206, baseUnitOfMeasure#1200207, unitOfMeasures#1200208, unitOfMeasureConversions#1200209, productionAspect#1200210, salesAspect#1200211, procurementAspect#1200212, productGroup#1200213, filteredUnitOfMeasureConversions#1200214, quantityNumerator#1200215, quantityDenominator#1200216, (cast(quantityNumerator#1200215 as double) / cast(quantityDenominator#1200216 as double)) AS outboundUnit#1200217]
(149) Project
Arguments: [product#1200175, plant#1200176, orderDateTime#1200177, productPlant#1200187, timezonecode#1200201, systemId#1200202, internalUUID#1200203, id#1200204, displayId#1200205, name#1200206, baseUnitOfMeasure#1200207, unitOfMeasures#1200208, unitOfMeasureConversions#1200209, productionAspect#1200210, salesAspect#1200211, procurementAspect#1200212, productGroup#1200213, filteredUnitOfMeasureConversions#1200214, quantityNumerator#1200215, quantityDenominator#1200216, CASE WHEN (isnull(outboundUnit#1200217) OR (outboundUnit#1200217 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1200217 END AS outboundUnit#1200218]
(150) Project
Arguments: [product#1200175, plant#1200176, orderDateTime#1200177, productPlant#1200187, timezonecode#1200201, outboundUnit#1200218]
(151) Project
Arguments: [plant#1200176]
(152) Deduplicate
Arguments: [plant#1200176]
(153) Join
Arguments: Inner, (plantUuid#1200172 = plant#1200176)
(154) Project
Arguments: [plantId#1200171, plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174]
(155) Join
Arguments: Inner, (plant#1200144.internalRefUUID <=> plantUuid#1200172)
(156) Generate
Arguments: explode(filter(stockQuantities#1200146, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200174) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200173)), lambda x#1200047, false))), false, [stockQuantity#1200219]
(157) Project
Arguments: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200145, stockQuantities#1200146, plantId#1200171, plantUuid#1200172, storageLocId#1200173, storageLocUuid#1200174, stockQuantity#1200219]
(158) Aggregate
Arguments: [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141], [plantUuid#1200172, internalUUID#1200142, plant#1200144, product#1200143, systemId#1200141, first(calculationDateTime#1200145, false) AS calculationDateTime#1200220, collect_list(stockQuantity#1200219, 0, 0) AS stockQuantities#1200221]
(159) Project
Arguments: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantities#1200221]
(160) Generate
Arguments: explode(stockQuantities#1200221), false, [stockQuantity#1200222]
(161) Project
Arguments: [systemId#1200141, internalUUID#1200142, product#1200143, plant#1200144, calculationDateTime#1200220, stockQuantities#1200221, stockQuantity#1200222]
(162) Project
Arguments: [plant#1200144.id AS plant#1200223, plant#1200144.internalRefUUID AS plantUuid#1200224, product#1200143.id AS product#1200225, product#1200143.internalRefUUID AS productUuid#1200226, calculationDateTime#1200220, stockQuantity#1200222.storagelocation.id AS storageLocId#1200227, stockQuantity#1200222.storagelocation.internalRefUUID AS storageLocUuid#1200228, stockQuantity#1200222.quantity.measure AS quantity#1200229, stockQuantity#1200222.specialStockIndicator.code AS specialStockIndicator#1200230, stockQuantity#1200222.stockType.code AS stockType#1200231]
(163) Filter
Arguments: ((specialStockIndicator#1200230 = ) AND (stockType#1200231 = 01))
(164) LogicalRelation
Arguments: parquet, [product#1200232, plant#1200233, orderDateTime#1200234, planningStartDateTime#1200235], false
(165) RepartitionByExpression
Arguments: [product#1200232, plant#1200233], 37
(166) Project
Arguments: [product#1200232, plant#1200233, orderDateTime#1200234]
(167) LogicalRelation
Arguments: parquet, [systemId#1200236, internalUUID#1200237, plant#1200238, product#1200239, blockedForReplenishmentStartingFrom#1200240, productionAspect#1200241, salesPlant#1200242, listing#1200243], false
(168) Repartition
Arguments: 37, true
(169) Project
Arguments: [systemId#1200236, internalUUID#1200237, plant#1200238, product#1200239, blockedForReplenishmentStartingFrom#1200240, productionAspect#1200241, salesPlant#1200242, listing#1200243, struct(systemId, systemId#1200236, internalUUID, internalUUID#1200237, plant, plant#1200238, product, product#1200239, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200240, productionAspect, productionAspect#1200241, salesPlant, salesPlant#1200242, listing, listing#1200243) AS productPlant#1200244]
(170) Project
Arguments: [productPlant#1200244]
(171) Join
Arguments: LeftOuter, ((product#1200232 <=> productPlant#1200244.product.internalRefUUID) AND (plant#1200233 <=> productPlant#1200244.plant.internalRefUUID))
(172) Project
Arguments: [product#1200232, plant#1200233, orderDateTime#1200234, productPlant#1200244]
(173) SubqueryAlias
Arguments: wl
(174) LogicalRelation
Arguments: parquet, [systemId#1200245, internalUUID#1200246, id#1200247, displayId#1200248, name#1200249, category#1200250, companyCode#1200251, address#1200252, mainDistributionChain#1200253, mainPurchasingOrganization#1200254, validPurchasingOrganizations#1200255, productGroup#1200256], false
(175) Repartition
Arguments: 37, true
(176) Project
Arguments: [internalUUID#1200246, address#1200252.timeZone.code AS timezonecode#1200257]
(177) Join
Arguments: LeftOuter, (plant#1200233 <=> internalUUID#1200246)
(178) Project
Arguments: [product#1200232, plant#1200233, orderDateTime#1200234, productPlant#1200244, internalUUID#1200246, CASE WHEN isnotnull(timezonecode#1200257) THEN timezonecode#1200257 ELSE UTC END AS timezonecode#1200258]
(179) Project
Arguments: [product#1200232, plant#1200233, orderDateTime#1200234, productPlant#1200244, timezonecode#1200258]
(180) LogicalRelation
Arguments: parquet, [systemId#1200259, internalUUID#1200260, id#1200261, displayId#1200262, name#1200263, baseUnitOfMeasure#1200264, unitOfMeasures#1200265, unitOfMeasureConversions#1200266, productionAspect#1200267, salesAspect#1200268, procurementAspect#1200269, productGroup#1200270], false
(181) Repartition
Arguments: 37, true
(182) Join
Arguments: LeftOuter, (product#1200232 = internalUUID#1200260)
(183) Project
Arguments: [product#1200232, plant#1200233, orderDateTime#1200234, productPlant#1200244, timezonecode#1200258, systemId#1200259, internalUUID#1200260, id#1200261, displayId#1200262, name#1200263, baseUnitOfMeasure#1200264, unitOfMeasures#1200265, unitOfMeasureConversions#1200266, productionAspect#1200267, salesAspect#1200268, procurementAspect#1200269, productGroup#1200270, filter(unitOfMeasureConversions#1200266, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200244.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200244.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200264.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200264.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200271]
(184) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200271.quantityNumerator), true, [quantityNumerator#1200272]
(185) Project
Arguments: [product#1200232, plant#1200233, orderDateTime#1200234, productPlant#1200244, timezonecode#1200258, systemId#1200259, internalUUID#1200260, id#1200261, displayId#1200262, name#1200263, baseUnitOfMeasure#1200264, unitOfMeasures#1200265, unitOfMeasureConversions#1200266, productionAspect#1200267, salesAspect#1200268, procurementAspect#1200269, productGroup#1200270, filteredUnitOfMeasureConversions#1200271, quantityNumerator#1200272]
(186) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200271.quantityDenominator), true, [quantityDenominator#1200273]
(187) Project
Arguments: [product#1200232, plant#1200233, orderDateTime#1200234, productPlant#1200244, timezonecode#1200258, systemId#1200259, internalUUID#1200260, id#1200261, displayId#1200262, name#1200263, baseUnitOfMeasure#1200264, unitOfMeasures#1200265, unitOfMeasureConversions#1200266, productionAspect#1200267, salesAspect#1200268, procurementAspect#1200269, productGroup#1200270, filteredUnitOfMeasureConversions#1200271, quantityNumerator#1200272, quantityDenominator#1200273]
(188) Project
Arguments: [product#1200232, plant#1200233, orderDateTime#1200234, productPlant#1200244, timezonecode#1200258, systemId#1200259, internalUUID#1200260, id#1200261, displayId#1200262, name#1200263, baseUnitOfMeasure#1200264, unitOfMeasures#1200265, unitOfMeasureConversions#1200266, productionAspect#1200267, salesAspect#1200268, procurementAspect#1200269, productGroup#1200270, filteredUnitOfMeasureConversions#1200271, quantityNumerator#1200272, quantityDenominator#1200273, (cast(quantityNumerator#1200272 as double) / cast(quantityDenominator#1200273 as double)) AS outboundUnit#1200274]
(189) Project
Arguments: [product#1200232, plant#1200233, orderDateTime#1200234, productPlant#1200244, timezonecode#1200258, systemId#1200259, internalUUID#1200260, id#1200261, displayId#1200262, name#1200263, baseUnitOfMeasure#1200264, unitOfMeasures#1200265, unitOfMeasureConversions#1200266, productionAspect#1200267, salesAspect#1200268, procurementAspect#1200269, productGroup#1200270, filteredUnitOfMeasureConversions#1200271, quantityNumerator#1200272, quantityDenominator#1200273, CASE WHEN (isnull(outboundUnit#1200274) OR (outboundUnit#1200274 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1200274 END AS outboundUnit#1200275]
(190) Project
Arguments: [product#1200232, plant#1200233, orderDateTime#1200234, productPlant#1200244, timezonecode#1200258, outboundUnit#1200275]
(191) Join
Arguments: Inner, ((plantUuid#1200224 = plant#1200233) AND (productUuid#1200226 = product#1200232))
(192) Filter
Arguments: (calculationDateTime#1200220 <= orderDateTime#1200234)
(193) Project
Arguments: [plantUuid#1200224 AS plant#1200276, productUuid#1200226 AS product#1200277, storageLocId#1200227, calculationDateTime#1200220, quantity#1200229]
(194) Aggregate
Arguments: [plant#1200276, product#1200277, storageLocId#1200227], [plant#1200276, product#1200277, storageLocId#1200227, max(calculationDateTime#1200220) AS max_calc_datetime#1200134]
(195) Join
Arguments: Inner, ((((plant#1200132 <=> plant#1200276) AND (product#1200133 <=> product#1200277)) AND (storageLocId#1200070 <=> storageLocId#1200227)) AND (calculationDateTime#1200049 <=> max_calc_datetime#1200134))
(196) Project
Arguments: [plant#1200132, product#1200133, storageLocId#1200070, calculationDateTime#1200049, quantity#1200072]
(197) Aggregate
Arguments: [product#1200133, plant#1200132], [product#1200133, plant#1200132, sum(quantity#1200072) AS quantitySum#1200288, min(calculationDateTime#1200049) AS minCalculationDateTime#1200289]
(198) Project
Arguments: [product#1200133, plant#1200132, quantitySum#1200288, minCalculationDateTime#1200289, round(quantitySum#1200288, 0) AS roundedQuantitySum#1200297]
(199) Join
Arguments: LeftOuter, ((plant#1199943 = plant#1200132) AND (product#1199942 = product#1200133))
(200) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, roundedQuantitySum#1200297, minCalculationDateTime#1200289]
(201) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, roundedQuantitySum#1200297, minCalculationDateTime#1200289, CASE WHEN isnotnull(minCalculationDateTime#1200289) THEN minCalculationDateTime#1200289 ELSE orderDateTime#1199944 END AS stockDatetime#1200346]
(202) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, roundedQuantitySum#1200297, minCalculationDateTime#1200289, stockDatetime#1200346, CASE WHEN isnotnull(roundedQuantitySum#1200297) THEN array(roundedQuantitySum#1200297) ELSE array(0.0) END AS stockBatchQuantities#1200347]
(203) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, roundedQuantitySum#1200297, minCalculationDateTime#1200289, stockDatetime#1200346, stockBatchQuantities#1200347, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1200348]
(204) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, roundedQuantitySum#1200297, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348]
(205) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348]
(206) LogicalRelation
Arguments: parquet, [product#1200424, plant#1200425, orderDateTime#1200426, planningStartDateTime#1200427], false
(207) RepartitionByExpression
Arguments: [product#1200424, plant#1200425], 37
(208) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426]
(209) LogicalRelation
Arguments: parquet, [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435], false
(210) Repartition
Arguments: 37, true
(211) Project
Arguments: [systemId#1200428, internalUUID#1200429, plant#1200430, product#1200431, blockedForReplenishmentStartingFrom#1200432, productionAspect#1200433, salesPlant#1200434, listing#1200435, struct(systemId, systemId#1200428, internalUUID, internalUUID#1200429, plant, plant#1200430, product, product#1200431, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200432, productionAspect, productionAspect#1200433, salesPlant, salesPlant#1200434, listing, listing#1200435) AS productPlant#1200436]
(212) Project
Arguments: [productPlant#1200436]
(213) Join
Arguments: LeftOuter, ((product#1200424 <=> productPlant#1200436.product.internalRefUUID) AND (plant#1200425 <=> productPlant#1200436.plant.internalRefUUID))
(214) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436]
(215) SubqueryAlias
Arguments: wl
(216) LogicalRelation
Arguments: parquet, [systemId#1200437, internalUUID#1200438, id#1200439, displayId#1200440, name#1200441, category#1200442, companyCode#1200443, address#1200444, mainDistributionChain#1200445, mainPurchasingOrganization#1200446, validPurchasingOrganizations#1200447, productGroup#1200448], false
(217) Repartition
Arguments: 37, true
(218) Project
Arguments: [internalUUID#1200438, address#1200444.timeZone.code AS timezonecode#1200449]
(219) Join
Arguments: LeftOuter, (plant#1200425 <=> internalUUID#1200438)
(220) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, internalUUID#1200438, CASE WHEN isnotnull(timezonecode#1200449) THEN timezonecode#1200449 ELSE UTC END AS timezonecode#1200450]
(221) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450]
(222) LogicalRelation
Arguments: parquet, [systemId#1200451, internalUUID#1200452, id#1200453, displayId#1200454, name#1200455, baseUnitOfMeasure#1200456, unitOfMeasures#1200457, unitOfMeasureConversions#1200458, productionAspect#1200459, salesAspect#1200460, procurementAspect#1200461, productGroup#1200462], false
(223) Repartition
Arguments: 37, true
(224) Join
Arguments: LeftOuter, (product#1200424 = internalUUID#1200452)
(225) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, systemId#1200451, internalUUID#1200452, id#1200453, displayId#1200454, name#1200455, baseUnitOfMeasure#1200456, unitOfMeasures#1200457, unitOfMeasureConversions#1200458, productionAspect#1200459, salesAspect#1200460, procurementAspect#1200461, productGroup#1200462, filter(unitOfMeasureConversions#1200458, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200456.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200456.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200463]
(226) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200463.quantityNumerator), true, [quantityNumerator#1200464]
(227) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, systemId#1200451, internalUUID#1200452, id#1200453, displayId#1200454, name#1200455, baseUnitOfMeasure#1200456, unitOfMeasures#1200457, unitOfMeasureConversions#1200458, productionAspect#1200459, salesAspect#1200460, procurementAspect#1200461, productGroup#1200462, filteredUnitOfMeasureConversions#1200463, quantityNumerator#1200464]
(228) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200463.quantityDenominator), true, [quantityDenominator#1200465]
(229) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, systemId#1200451, internalUUID#1200452, id#1200453, displayId#1200454, name#1200455, baseUnitOfMeasure#1200456, unitOfMeasures#1200457, unitOfMeasureConversions#1200458, productionAspect#1200459, salesAspect#1200460, procurementAspect#1200461, productGroup#1200462, filteredUnitOfMeasureConversions#1200463, quantityNumerator#1200464, quantityDenominator#1200465]
(230) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, systemId#1200451, internalUUID#1200452, id#1200453, displayId#1200454, name#1200455, baseUnitOfMeasure#1200456, unitOfMeasures#1200457, unitOfMeasureConversions#1200458, productionAspect#1200459, salesAspect#1200460, procurementAspect#1200461, productGroup#1200462, filteredUnitOfMeasureConversions#1200463, quantityNumerator#1200464, quantityDenominator#1200465, (cast(quantityNumerator#1200464 as double) / cast(quantityDenominator#1200465 as double)) AS outboundUnit#1200466]
(231) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, systemId#1200451, internalUUID#1200452, id#1200453, displayId#1200454, name#1200455, baseUnitOfMeasure#1200456, unitOfMeasures#1200457, unitOfMeasureConversions#1200458, productionAspect#1200459, salesAspect#1200460, procurementAspect#1200461, productGroup#1200462, filteredUnitOfMeasureConversions#1200463, quantityNumerator#1200464, quantityDenominator#1200465, CASE WHEN (isnull(outboundUnit#1200466) OR (outboundUnit#1200466 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1200466 END AS outboundUnit#1200467]
(232) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467]
(233) LogicalRelation
Arguments: parquet, [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473], false
(234) Repartition
Arguments: 37, true
(235) LogicalRelation
Arguments: parquet, [marketUnit#1200474, description#1200475, articleHierarchy#1200476, defaultCurrency#1200477, responsibilities#1200478, replenishmentTypes#1200479, distributionCenters#1200480, assignedArticleHierarchyNodes#1200481, minOrderQtySetting#1200482, listingCheck#1200483, odsSelection#1200484, demandProfiles#1200485, constraintProfiles#1200486, optimizationProfiles#1200487, orderGroupSplitProfiles#1200488, supplierMinimumProfiles#1200489, multipleRestrictionProfiles#1200490, preferredUomSource#1200491, handlingOfUnfulfilledDemands#1200492, negligibleQuantitiesThreshold#1200493, eventtype#1200494, minOrderQtySettingInternal#1200495], false
(236) Repartition
Arguments: 37, true
(237) Filter
Arguments: (marketUnit#1200474 <=> Grocery_SS)
(238) Project
Arguments: [marketUnit#1200474, description#1200475, articleHierarchy#1200476, defaultCurrency#1200477, responsibilities#1200478, replenishmentTypes#1200479, distributionCenters#1200480, assignedArticleHierarchyNodes#1200481, minOrderQtySetting#1200482, listingCheck#1200483, odsSelection#1200484, demandProfiles#1200485, constraintProfiles#1200486, optimizationProfiles#1200487, orderGroupSplitProfiles#1200488, supplierMinimumProfiles#1200489, multipleRestrictionProfiles#1200490, preferredUomSource#1200491, handlingOfUnfulfilledDemands#1200492, negligibleQuantitiesThreshold#1200493, eventtype#1200494, minOrderQtySettingInternal#1200495]
(239) Project
Arguments: [distributionCenters#1200480]
(240) Generate
Arguments: explode(distributionCenters#1200480), false, [distributionCenters#1200496]
(241) Project
Arguments: [distributionCenters#1200496]
(242) Generate
Arguments: explode(distributionCenters#1200496.storageLocations), false, [storageLocations#1200497]
(243) Project
Arguments: [distributionCenters#1200496.id AS plantId#1200498, distributionCenters#1200496.internalRefUUID AS plantUuid#1200499, storageLocations#1200497]
(244) Project
Arguments: [plantId#1200498, plantUuid#1200499, storageLocations#1200497.id AS storageLocId#1200500, storageLocations#1200497.internalRefUUID AS storageLocUuid#1200501]
(245) LogicalRelation
Arguments: parquet, [product#1200502, plant#1200503, orderDateTime#1200504, planningStartDateTime#1200505], false
(246) RepartitionByExpression
Arguments: [product#1200502, plant#1200503], 37
(247) Project
Arguments: [product#1200502, plant#1200503, orderDateTime#1200504]
(248) LogicalRelation
Arguments: parquet, [systemId#1200506, internalUUID#1200507, plant#1200508, product#1200509, blockedForReplenishmentStartingFrom#1200510, productionAspect#1200511, salesPlant#1200512, listing#1200513], false
(249) Repartition
Arguments: 37, true
(250) Project
Arguments: [systemId#1200506, internalUUID#1200507, plant#1200508, product#1200509, blockedForReplenishmentStartingFrom#1200510, productionAspect#1200511, salesPlant#1200512, listing#1200513, struct(systemId, systemId#1200506, internalUUID, internalUUID#1200507, plant, plant#1200508, product, product#1200509, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200510, productionAspect, productionAspect#1200511, salesPlant, salesPlant#1200512, listing, listing#1200513) AS productPlant#1200514]
(251) Project
Arguments: [productPlant#1200514]
(252) Join
Arguments: LeftOuter, ((product#1200502 <=> productPlant#1200514.product.internalRefUUID) AND (plant#1200503 <=> productPlant#1200514.plant.internalRefUUID))
(253) Project
Arguments: [product#1200502, plant#1200503, orderDateTime#1200504, productPlant#1200514]
(254) SubqueryAlias
Arguments: wl
(255) LogicalRelation
Arguments: parquet, [systemId#1200515, internalUUID#1200516, id#1200517, displayId#1200518, name#1200519, category#1200520, companyCode#1200521, address#1200522, mainDistributionChain#1200523, mainPurchasingOrganization#1200524, validPurchasingOrganizations#1200525, productGroup#1200526], false
(256) Repartition
Arguments: 37, true
(257) Project
Arguments: [internalUUID#1200516, address#1200522.timeZone.code AS timezonecode#1200527]
(258) Join
Arguments: LeftOuter, (plant#1200503 <=> internalUUID#1200516)
(259) Project
Arguments: [product#1200502, plant#1200503, orderDateTime#1200504, productPlant#1200514, internalUUID#1200516, CASE WHEN isnotnull(timezonecode#1200527) THEN timezonecode#1200527 ELSE UTC END AS timezonecode#1200528]
(260) Project
Arguments: [product#1200502, plant#1200503, orderDateTime#1200504, productPlant#1200514, timezonecode#1200528]
(261) LogicalRelation
Arguments: parquet, [systemId#1200529, internalUUID#1200530, id#1200531, displayId#1200532, name#1200533, baseUnitOfMeasure#1200534, unitOfMeasures#1200535, unitOfMeasureConversions#1200536, productionAspect#1200537, salesAspect#1200538, procurementAspect#1200539, productGroup#1200540], false
(262) Repartition
Arguments: 37, true
(263) Join
Arguments: LeftOuter, (product#1200502 = internalUUID#1200530)
(264) Project
Arguments: [product#1200502, plant#1200503, orderDateTime#1200504, productPlant#1200514, timezonecode#1200528, systemId#1200529, internalUUID#1200530, id#1200531, displayId#1200532, name#1200533, baseUnitOfMeasure#1200534, unitOfMeasures#1200535, unitOfMeasureConversions#1200536, productionAspect#1200537, salesAspect#1200538, procurementAspect#1200539, productGroup#1200540, filter(unitOfMeasureConversions#1200536, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200514.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200514.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200534.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200534.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200541]
(265) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200541.quantityNumerator), true, [quantityNumerator#1200542]
(266) Project
Arguments: [product#1200502, plant#1200503, orderDateTime#1200504, productPlant#1200514, timezonecode#1200528, systemId#1200529, internalUUID#1200530, id#1200531, displayId#1200532, name#1200533, baseUnitOfMeasure#1200534, unitOfMeasures#1200535, unitOfMeasureConversions#1200536, productionAspect#1200537, salesAspect#1200538, procurementAspect#1200539, productGroup#1200540, filteredUnitOfMeasureConversions#1200541, quantityNumerator#1200542]
(267) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200541.quantityDenominator), true, [quantityDenominator#1200543]
(268) Project
Arguments: [product#1200502, plant#1200503, orderDateTime#1200504, productPlant#1200514, timezonecode#1200528, systemId#1200529, internalUUID#1200530, id#1200531, displayId#1200532, name#1200533, baseUnitOfMeasure#1200534, unitOfMeasures#1200535, unitOfMeasureConversions#1200536, productionAspect#1200537, salesAspect#1200538, procurementAspect#1200539, productGroup#1200540, filteredUnitOfMeasureConversions#1200541, quantityNumerator#1200542, quantityDenominator#1200543]
(269) Project
Arguments: [product#1200502, plant#1200503, orderDateTime#1200504, productPlant#1200514, timezonecode#1200528, systemId#1200529, internalUUID#1200530, id#1200531, displayId#1200532, name#1200533, baseUnitOfMeasure#1200534, unitOfMeasures#1200535, unitOfMeasureConversions#1200536, productionAspect#1200537, salesAspect#1200538, procurementAspect#1200539, productGroup#1200540, filteredUnitOfMeasureConversions#1200541, quantityNumerator#1200542, quantityDenominator#1200543, (cast(quantityNumerator#1200542 as double) / cast(quantityDenominator#1200543 as double)) AS outboundUnit#1200544]
(270) Project
Arguments: [product#1200502, plant#1200503, orderDateTime#1200504, productPlant#1200514, timezonecode#1200528, systemId#1200529, internalUUID#1200530, id#1200531, displayId#1200532, name#1200533, baseUnitOfMeasure#1200534, unitOfMeasures#1200535, unitOfMeasureConversions#1200536, productionAspect#1200537, salesAspect#1200538, procurementAspect#1200539, productGroup#1200540, filteredUnitOfMeasureConversions#1200541, quantityNumerator#1200542, quantityDenominator#1200543, CASE WHEN (isnull(outboundUnit#1200544) OR (outboundUnit#1200544 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1200544 END AS outboundUnit#1200545]
(271) Project
Arguments: [product#1200502, plant#1200503, orderDateTime#1200504, productPlant#1200514, timezonecode#1200528, outboundUnit#1200545]
(272) Project
Arguments: [plant#1200503]
(273) Deduplicate
Arguments: [plant#1200503]
(274) Join
Arguments: Inner, (plantUuid#1200499 = plant#1200503)
(275) Project
Arguments: [plantId#1200498, plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501]
(276) Join
Arguments: Inner, (plant#1200471.internalRefUUID <=> plantUuid#1200499)
(277) Generate
Arguments: explode(filter(stockQuantities#1200473, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200501) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200500)), lambda x#1200047, false))), false, [stockQuantity#1200546]
(278) Project
Arguments: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200472, stockQuantities#1200473, plantId#1200498, plantUuid#1200499, storageLocId#1200500, storageLocUuid#1200501, stockQuantity#1200546]
(279) Aggregate
Arguments: [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468], [plantUuid#1200499, internalUUID#1200469, plant#1200471, product#1200470, systemId#1200468, first(calculationDateTime#1200472, false) AS calculationDateTime#1200547, collect_list(stockQuantity#1200546, 0, 0) AS stockQuantities#1200548]
(280) Project
Arguments: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantities#1200548]
(281) Generate
Arguments: explode(stockQuantities#1200548), false, [stockQuantity#1200549]
(282) Project
Arguments: [systemId#1200468, internalUUID#1200469, product#1200470, plant#1200471, calculationDateTime#1200547, stockQuantities#1200548, stockQuantity#1200549]
(283) Project
Arguments: [plant#1200471.id AS plant#1200550, plant#1200471.internalRefUUID AS plantUuid#1200551, product#1200470.id AS product#1200552, product#1200470.internalRefUUID AS productUuid#1200553, calculationDateTime#1200547, stockQuantity#1200549.storagelocation.id AS storageLocId#1200554, stockQuantity#1200549.storagelocation.internalRefUUID AS storageLocUuid#1200555, stockQuantity#1200549.quantity.measure AS quantity#1200556, stockQuantity#1200549.specialStockIndicator.code AS specialStockIndicator#1200557, stockQuantity#1200549.stockType.code AS stockType#1200558]
(284) Filter
Arguments: ((specialStockIndicator#1200557 = ) AND (stockType#1200558 = 01))
(285) LogicalRelation
Arguments: parquet, [product#1200559, plant#1200560, orderDateTime#1200561, planningStartDateTime#1200562], false
(286) RepartitionByExpression
Arguments: [product#1200559, plant#1200560], 37
(287) Project
Arguments: [product#1200559, plant#1200560, orderDateTime#1200561]
(288) LogicalRelation
Arguments: parquet, [systemId#1200563, internalUUID#1200564, plant#1200565, product#1200566, blockedForReplenishmentStartingFrom#1200567, productionAspect#1200568, salesPlant#1200569, listing#1200570], false
(289) Repartition
Arguments: 37, true
(290) Project
Arguments: [systemId#1200563, internalUUID#1200564, plant#1200565, product#1200566, blockedForReplenishmentStartingFrom#1200567, productionAspect#1200568, salesPlant#1200569, listing#1200570, struct(systemId, systemId#1200563, internalUUID, internalUUID#1200564, plant, plant#1200565, product, product#1200566, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200567, productionAspect, productionAspect#1200568, salesPlant, salesPlant#1200569, listing, listing#1200570) AS productPlant#1200571]
(291) Project
Arguments: [productPlant#1200571]
(292) Join
Arguments: LeftOuter, ((product#1200559 <=> productPlant#1200571.product.internalRefUUID) AND (plant#1200560 <=> productPlant#1200571.plant.internalRefUUID))
(293) Project
Arguments: [product#1200559, plant#1200560, orderDateTime#1200561, productPlant#1200571]
(294) SubqueryAlias
Arguments: wl
(295) LogicalRelation
Arguments: parquet, [systemId#1200572, internalUUID#1200573, id#1200574, displayId#1200575, name#1200576, category#1200577, companyCode#1200578, address#1200579, mainDistributionChain#1200580, mainPurchasingOrganization#1200581, validPurchasingOrganizations#1200582, productGroup#1200583], false
(296) Repartition
Arguments: 37, true
(297) Project
Arguments: [internalUUID#1200573, address#1200579.timeZone.code AS timezonecode#1200584]
(298) Join
Arguments: LeftOuter, (plant#1200560 <=> internalUUID#1200573)
(299) Project
Arguments: [product#1200559, plant#1200560, orderDateTime#1200561, productPlant#1200571, internalUUID#1200573, CASE WHEN isnotnull(timezonecode#1200584) THEN timezonecode#1200584 ELSE UTC END AS timezonecode#1200585]
(300) Project
Arguments: [product#1200559, plant#1200560, orderDateTime#1200561, productPlant#1200571, timezonecode#1200585]
(301) LogicalRelation
Arguments: parquet, [systemId#1200586, internalUUID#1200587, id#1200588, displayId#1200589, name#1200590, baseUnitOfMeasure#1200591, unitOfMeasures#1200592, unitOfMeasureConversions#1200593, productionAspect#1200594, salesAspect#1200595, procurementAspect#1200596, productGroup#1200597], false
(302) Repartition
Arguments: 37, true
(303) Join
Arguments: LeftOuter, (product#1200559 = internalUUID#1200587)
(304) Project
Arguments: [product#1200559, plant#1200560, orderDateTime#1200561, productPlant#1200571, timezonecode#1200585, systemId#1200586, internalUUID#1200587, id#1200588, displayId#1200589, name#1200590, baseUnitOfMeasure#1200591, unitOfMeasures#1200592, unitOfMeasureConversions#1200593, productionAspect#1200594, salesAspect#1200595, procurementAspect#1200596, productGroup#1200597, filter(unitOfMeasureConversions#1200593, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200571.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200571.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200591.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200591.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200598]
(305) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200598.quantityNumerator), true, [quantityNumerator#1200599]
(306) Project
Arguments: [product#1200559, plant#1200560, orderDateTime#1200561, productPlant#1200571, timezonecode#1200585, systemId#1200586, internalUUID#1200587, id#1200588, displayId#1200589, name#1200590, baseUnitOfMeasure#1200591, unitOfMeasures#1200592, unitOfMeasureConversions#1200593, productionAspect#1200594, salesAspect#1200595, procurementAspect#1200596, productGroup#1200597, filteredUnitOfMeasureConversions#1200598, quantityNumerator#1200599]
(307) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200598.quantityDenominator), true, [quantityDenominator#1200600]
(308) Project
Arguments: [product#1200559, plant#1200560, orderDateTime#1200561, productPlant#1200571, timezonecode#1200585, systemId#1200586, internalUUID#1200587, id#1200588, displayId#1200589, name#1200590, baseUnitOfMeasure#1200591, unitOfMeasures#1200592, unitOfMeasureConversions#1200593, productionAspect#1200594, salesAspect#1200595, procurementAspect#1200596, productGroup#1200597, filteredUnitOfMeasureConversions#1200598, quantityNumerator#1200599, quantityDenominator#1200600]
(309) Project
Arguments: [product#1200559, plant#1200560, orderDateTime#1200561, productPlant#1200571, timezonecode#1200585, systemId#1200586, internalUUID#1200587, id#1200588, displayId#1200589, name#1200590, baseUnitOfMeasure#1200591, unitOfMeasures#1200592, unitOfMeasureConversions#1200593, productionAspect#1200594, salesAspect#1200595, procurementAspect#1200596, productGroup#1200597, filteredUnitOfMeasureConversions#1200598, quantityNumerator#1200599, quantityDenominator#1200600, (cast(quantityNumerator#1200599 as double) / cast(quantityDenominator#1200600 as double)) AS outboundUnit#1200601]
(310) Project
Arguments: [product#1200559, plant#1200560, orderDateTime#1200561, productPlant#1200571, timezonecode#1200585, systemId#1200586, internalUUID#1200587, id#1200588, displayId#1200589, name#1200590, baseUnitOfMeasure#1200591, unitOfMeasures#1200592, unitOfMeasureConversions#1200593, productionAspect#1200594, salesAspect#1200595, procurementAspect#1200596, productGroup#1200597, filteredUnitOfMeasureConversions#1200598, quantityNumerator#1200599, quantityDenominator#1200600, CASE WHEN (isnull(outboundUnit#1200601) OR (outboundUnit#1200601 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1200601 END AS outboundUnit#1200602]
(311) Project
Arguments: [product#1200559, plant#1200560, orderDateTime#1200561, productPlant#1200571, timezonecode#1200585, outboundUnit#1200602]
(312) Join
Arguments: Inner, ((plantUuid#1200551 = plant#1200560) AND (productUuid#1200553 = product#1200559))
(313) Filter
Arguments: (calculationDateTime#1200547 <= orderDateTime#1200561)
(314) Project
Arguments: [plantUuid#1200551 AS plant#1200603, productUuid#1200553 AS product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
(315) LogicalRelation
Arguments: parquet, [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610], false
(316) Repartition
Arguments: 37, true
(317) LogicalRelation
Arguments: parquet, [marketUnit#1200611, description#1200612, articleHierarchy#1200613, defaultCurrency#1200614, responsibilities#1200615, replenishmentTypes#1200616, distributionCenters#1200617, assignedArticleHierarchyNodes#1200618, minOrderQtySetting#1200619, listingCheck#1200620, odsSelection#1200621, demandProfiles#1200622, constraintProfiles#1200623, optimizationProfiles#1200624, orderGroupSplitProfiles#1200625, supplierMinimumProfiles#1200626, multipleRestrictionProfiles#1200627, preferredUomSource#1200628, handlingOfUnfulfilledDemands#1200629, negligibleQuantitiesThreshold#1200630, eventtype#1200631, minOrderQtySettingInternal#1200632], false
(318) Repartition
Arguments: 37, true
(319) Filter
Arguments: (marketUnit#1200611 <=> Grocery_SS)
(320) Project
Arguments: [marketUnit#1200611, description#1200612, articleHierarchy#1200613, defaultCurrency#1200614, responsibilities#1200615, replenishmentTypes#1200616, distributionCenters#1200617, assignedArticleHierarchyNodes#1200618, minOrderQtySetting#1200619, listingCheck#1200620, odsSelection#1200621, demandProfiles#1200622, constraintProfiles#1200623, optimizationProfiles#1200624, orderGroupSplitProfiles#1200625, supplierMinimumProfiles#1200626, multipleRestrictionProfiles#1200627, preferredUomSource#1200628, handlingOfUnfulfilledDemands#1200629, negligibleQuantitiesThreshold#1200630, eventtype#1200631, minOrderQtySettingInternal#1200632]
(321) Project
Arguments: [distributionCenters#1200617]
(322) Generate
Arguments: explode(distributionCenters#1200617), false, [distributionCenters#1200633]
(323) Project
Arguments: [distributionCenters#1200633]
(324) Generate
Arguments: explode(distributionCenters#1200633.storageLocations), false, [storageLocations#1200634]
(325) Project
Arguments: [distributionCenters#1200633.id AS plantId#1200635, distributionCenters#1200633.internalRefUUID AS plantUuid#1200636, storageLocations#1200634]
(326) Project
Arguments: [plantId#1200635, plantUuid#1200636, storageLocations#1200634.id AS storageLocId#1200637, storageLocations#1200634.internalRefUUID AS storageLocUuid#1200638]
(327) LogicalRelation
Arguments: parquet, [product#1200639, plant#1200640, orderDateTime#1200641, planningStartDateTime#1200642], false
(328) RepartitionByExpression
Arguments: [product#1200639, plant#1200640], 37
(329) Project
Arguments: [product#1200639, plant#1200640, orderDateTime#1200641]
(330) LogicalRelation
Arguments: parquet, [systemId#1200643, internalUUID#1200644, plant#1200645, product#1200646, blockedForReplenishmentStartingFrom#1200647, productionAspect#1200648, salesPlant#1200649, listing#1200650], false
(331) Repartition
Arguments: 37, true
(332) Project
Arguments: [systemId#1200643, internalUUID#1200644, plant#1200645, product#1200646, blockedForReplenishmentStartingFrom#1200647, productionAspect#1200648, salesPlant#1200649, listing#1200650, struct(systemId, systemId#1200643, internalUUID, internalUUID#1200644, plant, plant#1200645, product, product#1200646, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200647, productionAspect, productionAspect#1200648, salesPlant, salesPlant#1200649, listing, listing#1200650) AS productPlant#1200651]
(333) Project
Arguments: [productPlant#1200651]
(334) Join
Arguments: LeftOuter, ((product#1200639 <=> productPlant#1200651.product.internalRefUUID) AND (plant#1200640 <=> productPlant#1200651.plant.internalRefUUID))
(335) Project
Arguments: [product#1200639, plant#1200640, orderDateTime#1200641, productPlant#1200651]
(336) SubqueryAlias
Arguments: wl
(337) LogicalRelation
Arguments: parquet, [systemId#1200652, internalUUID#1200653, id#1200654, displayId#1200655, name#1200656, category#1200657, companyCode#1200658, address#1200659, mainDistributionChain#1200660, mainPurchasingOrganization#1200661, validPurchasingOrganizations#1200662, productGroup#1200663], false
(338) Repartition
Arguments: 37, true
(339) Project
Arguments: [internalUUID#1200653, address#1200659.timeZone.code AS timezonecode#1200664]
(340) Join
Arguments: LeftOuter, (plant#1200640 <=> internalUUID#1200653)
(341) Project
Arguments: [product#1200639, plant#1200640, orderDateTime#1200641, productPlant#1200651, internalUUID#1200653, CASE WHEN isnotnull(timezonecode#1200664) THEN timezonecode#1200664 ELSE UTC END AS timezonecode#1200665]
(342) Project
Arguments: [product#1200639, plant#1200640, orderDateTime#1200641, productPlant#1200651, timezonecode#1200665]
(343) LogicalRelation
Arguments: parquet, [systemId#1200666, internalUUID#1200667, id#1200668, displayId#1200669, name#1200670, baseUnitOfMeasure#1200671, unitOfMeasures#1200672, unitOfMeasureConversions#1200673, productionAspect#1200674, salesAspect#1200675, procurementAspect#1200676, productGroup#1200677], false
(344) Repartition
Arguments: 37, true
(345) Join
Arguments: LeftOuter, (product#1200639 = internalUUID#1200667)
(346) Project
Arguments: [product#1200639, plant#1200640, orderDateTime#1200641, productPlant#1200651, timezonecode#1200665, systemId#1200666, internalUUID#1200667, id#1200668, displayId#1200669, name#1200670, baseUnitOfMeasure#1200671, unitOfMeasures#1200672, unitOfMeasureConversions#1200673, productionAspect#1200674, salesAspect#1200675, procurementAspect#1200676, productGroup#1200677, filter(unitOfMeasureConversions#1200673, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200651.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200651.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200671.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200671.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200678]
(347) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200678.quantityNumerator), true, [quantityNumerator#1200679]
(348) Project
Arguments: [product#1200639, plant#1200640, orderDateTime#1200641, productPlant#1200651, timezonecode#1200665, systemId#1200666, internalUUID#1200667, id#1200668, displayId#1200669, name#1200670, baseUnitOfMeasure#1200671, unitOfMeasures#1200672, unitOfMeasureConversions#1200673, productionAspect#1200674, salesAspect#1200675, procurementAspect#1200676, productGroup#1200677, filteredUnitOfMeasureConversions#1200678, quantityNumerator#1200679]
(349) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200678.quantityDenominator), true, [quantityDenominator#1200680]
(350) Project
Arguments: [product#1200639, plant#1200640, orderDateTime#1200641, productPlant#1200651, timezonecode#1200665, systemId#1200666, internalUUID#1200667, id#1200668, displayId#1200669, name#1200670, baseUnitOfMeasure#1200671, unitOfMeasures#1200672, unitOfMeasureConversions#1200673, productionAspect#1200674, salesAspect#1200675, procurementAspect#1200676, productGroup#1200677, filteredUnitOfMeasureConversions#1200678, quantityNumerator#1200679, quantityDenominator#1200680]
(351) Project
Arguments: [product#1200639, plant#1200640, orderDateTime#1200641, productPlant#1200651, timezonecode#1200665, systemId#1200666, internalUUID#1200667, id#1200668, displayId#1200669, name#1200670, baseUnitOfMeasure#1200671, unitOfMeasures#1200672, unitOfMeasureConversions#1200673, productionAspect#1200674, salesAspect#1200675, procurementAspect#1200676, productGroup#1200677, filteredUnitOfMeasureConversions#1200678, quantityNumerator#1200679, quantityDenominator#1200680, (cast(quantityNumerator#1200679 as double) / cast(quantityDenominator#1200680 as double)) AS outboundUnit#1200681]
(352) Project
Arguments: [product#1200639, plant#1200640, orderDateTime#1200641, productPlant#1200651, timezonecode#1200665, systemId#1200666, internalUUID#1200667, id#1200668, displayId#1200669, name#1200670, baseUnitOfMeasure#1200671, unitOfMeasures#1200672, unitOfMeasureConversions#1200673, productionAspect#1200674, salesAspect#1200675, procurementAspect#1200676, productGroup#1200677, filteredUnitOfMeasureConversions#1200678, quantityNumerator#1200679, quantityDenominator#1200680, CASE WHEN (isnull(outboundUnit#1200681) OR (outboundUnit#1200681 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1200681 END AS outboundUnit#1200682]
(353) Project
Arguments: [product#1200639, plant#1200640, orderDateTime#1200641, productPlant#1200651, timezonecode#1200665, outboundUnit#1200682]
(354) Project
Arguments: [plant#1200640]
(355) Deduplicate
Arguments: [plant#1200640]
(356) Join
Arguments: Inner, (plantUuid#1200636 = plant#1200640)
(357) Project
Arguments: [plantId#1200635, plantUuid#1200636, storageLocId#1200637, storageLocUuid#1200638]
(358) Join
Arguments: Inner, (plant#1200608.internalRefUUID <=> plantUuid#1200636)
(359) Generate
Arguments: explode(filter(stockQuantities#1200610, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1200638) AND (lambda x#1200047.storageLocation.Id = storageLocId#1200637)), lambda x#1200047, false))), false, [stockQuantity#1200683]
(360) Project
Arguments: [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200609, stockQuantities#1200610, plantId#1200635, plantUuid#1200636, storageLocId#1200637, storageLocUuid#1200638, stockQuantity#1200683]
(361) Aggregate
Arguments: [plantUuid#1200636, internalUUID#1200606, plant#1200608, product#1200607, systemId#1200605], [plantUuid#1200636, internalUUID#1200606, plant#1200608, product#1200607, systemId#1200605, first(calculationDateTime#1200609, false) AS calculationDateTime#1200684, collect_list(stockQuantity#1200683, 0, 0) AS stockQuantities#1200685]
(362) Project
Arguments: [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200684, stockQuantities#1200685]
(363) Generate
Arguments: explode(stockQuantities#1200685), false, [stockQuantity#1200686]
(364) Project
Arguments: [systemId#1200605, internalUUID#1200606, product#1200607, plant#1200608, calculationDateTime#1200684, stockQuantities#1200685, stockQuantity#1200686]
(365) Project
Arguments: [plant#1200608.id AS plant#1200687, plant#1200608.internalRefUUID AS plantUuid#1200688, product#1200607.id AS product#1200689, product#1200607.internalRefUUID AS productUuid#1200690, calculationDateTime#1200684, stockQuantity#1200686.storagelocation.id AS storageLocId#1200691, stockQuantity#1200686.storagelocation.internalRefUUID AS storageLocUuid#1200692, stockQuantity#1200686.quantity.measure AS quantity#1200693, stockQuantity#1200686.specialStockIndicator.code AS specialStockIndicator#1200694, stockQuantity#1200686.stockType.code AS stockType#1200695]
(366) Filter
Arguments: ((specialStockIndicator#1200694 = ) AND (stockType#1200695 = 01))
(367) LogicalRelation
Arguments: parquet, [product#1200696, plant#1200697, orderDateTime#1200698, planningStartDateTime#1200699], false
(368) RepartitionByExpression
Arguments: [product#1200696, plant#1200697], 37
(369) Project
Arguments: [product#1200696, plant#1200697, orderDateTime#1200698]
(370) LogicalRelation
Arguments: parquet, [systemId#1200700, internalUUID#1200701, plant#1200702, product#1200703, blockedForReplenishmentStartingFrom#1200704, productionAspect#1200705, salesPlant#1200706, listing#1200707], false
(371) Repartition
Arguments: 37, true
(372) Project
Arguments: [systemId#1200700, internalUUID#1200701, plant#1200702, product#1200703, blockedForReplenishmentStartingFrom#1200704, productionAspect#1200705, salesPlant#1200706, listing#1200707, struct(systemId, systemId#1200700, internalUUID, internalUUID#1200701, plant, plant#1200702, product, product#1200703, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200704, productionAspect, productionAspect#1200705, salesPlant, salesPlant#1200706, listing, listing#1200707) AS productPlant#1200708]
(373) Project
Arguments: [productPlant#1200708]
(374) Join
Arguments: LeftOuter, ((product#1200696 <=> productPlant#1200708.product.internalRefUUID) AND (plant#1200697 <=> productPlant#1200708.plant.internalRefUUID))
(375) Project
Arguments: [product#1200696, plant#1200697, orderDateTime#1200698, productPlant#1200708]
(376) SubqueryAlias
Arguments: wl
(377) LogicalRelation
Arguments: parquet, [systemId#1200709, internalUUID#1200710, id#1200711, displayId#1200712, name#1200713, category#1200714, companyCode#1200715, address#1200716, mainDistributionChain#1200717, mainPurchasingOrganization#1200718, validPurchasingOrganizations#1200719, productGroup#1200720], false
(378) Repartition
Arguments: 37, true
(379) Project
Arguments: [internalUUID#1200710, address#1200716.timeZone.code AS timezonecode#1200721]
(380) Join
Arguments: LeftOuter, (plant#1200697 <=> internalUUID#1200710)
(381) Project
Arguments: [product#1200696, plant#1200697, orderDateTime#1200698, productPlant#1200708, internalUUID#1200710, CASE WHEN isnotnull(timezonecode#1200721) THEN timezonecode#1200721 ELSE UTC END AS timezonecode#1200722]
(382) Project
Arguments: [product#1200696, plant#1200697, orderDateTime#1200698, productPlant#1200708, timezonecode#1200722]
(383) LogicalRelation
Arguments: parquet, [systemId#1200723, internalUUID#1200724, id#1200725, displayId#1200726, name#1200727, baseUnitOfMeasure#1200728, unitOfMeasures#1200729, unitOfMeasureConversions#1200730, productionAspect#1200731, salesAspect#1200732, procurementAspect#1200733, productGroup#1200734], false
(384) Repartition
Arguments: 37, true
(385) Join
Arguments: LeftOuter, (product#1200696 = internalUUID#1200724)
(386) Project
Arguments: [product#1200696, plant#1200697, orderDateTime#1200698, productPlant#1200708, timezonecode#1200722, systemId#1200723, internalUUID#1200724, id#1200725, displayId#1200726, name#1200727, baseUnitOfMeasure#1200728, unitOfMeasures#1200729, unitOfMeasureConversions#1200730, productionAspect#1200731, salesAspect#1200732, procurementAspect#1200733, productGroup#1200734, filter(unitOfMeasureConversions#1200730, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200708.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200708.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200728.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200728.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200735]
(387) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200735.quantityNumerator), true, [quantityNumerator#1200736]
(388) Project
Arguments: [product#1200696, plant#1200697, orderDateTime#1200698, productPlant#1200708, timezonecode#1200722, systemId#1200723, internalUUID#1200724, id#1200725, displayId#1200726, name#1200727, baseUnitOfMeasure#1200728, unitOfMeasures#1200729, unitOfMeasureConversions#1200730, productionAspect#1200731, salesAspect#1200732, procurementAspect#1200733, productGroup#1200734, filteredUnitOfMeasureConversions#1200735, quantityNumerator#1200736]
(389) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200735.quantityDenominator), true, [quantityDenominator#1200737]
(390) Project
Arguments: [product#1200696, plant#1200697, orderDateTime#1200698, productPlant#1200708, timezonecode#1200722, systemId#1200723, internalUUID#1200724, id#1200725, displayId#1200726, name#1200727, baseUnitOfMeasure#1200728, unitOfMeasures#1200729, unitOfMeasureConversions#1200730, productionAspect#1200731, salesAspect#1200732, procurementAspect#1200733, productGroup#1200734, filteredUnitOfMeasureConversions#1200735, quantityNumerator#1200736, quantityDenominator#1200737]
(391) Project
Arguments: [product#1200696, plant#1200697, orderDateTime#1200698, productPlant#1200708, timezonecode#1200722, systemId#1200723, internalUUID#1200724, id#1200725, displayId#1200726, name#1200727, baseUnitOfMeasure#1200728, unitOfMeasures#1200729, unitOfMeasureConversions#1200730, productionAspect#1200731, salesAspect#1200732, procurementAspect#1200733, productGroup#1200734, filteredUnitOfMeasureConversions#1200735, quantityNumerator#1200736, quantityDenominator#1200737, (cast(quantityNumerator#1200736 as double) / cast(quantityDenominator#1200737 as double)) AS outboundUnit#1200738]
(392) Project
Arguments: [product#1200696, plant#1200697, orderDateTime#1200698, productPlant#1200708, timezonecode#1200722, systemId#1200723, internalUUID#1200724, id#1200725, displayId#1200726, name#1200727, baseUnitOfMeasure#1200728, unitOfMeasures#1200729, unitOfMeasureConversions#1200730, productionAspect#1200731, salesAspect#1200732, procurementAspect#1200733, productGroup#1200734, filteredUnitOfMeasureConversions#1200735, quantityNumerator#1200736, quantityDenominator#1200737, CASE WHEN (isnull(outboundUnit#1200738) OR (outboundUnit#1200738 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1200738 END AS outboundUnit#1200739]
(393) Project
Arguments: [product#1200696, plant#1200697, orderDateTime#1200698, productPlant#1200708, timezonecode#1200722, outboundUnit#1200739]
(394) Join
Arguments: Inner, ((plantUuid#1200688 = plant#1200697) AND (productUuid#1200690 = product#1200696))
(395) Filter
Arguments: (calculationDateTime#1200684 <= orderDateTime#1200698)
(396) Project
Arguments: [plantUuid#1200688 AS plant#1200740, productUuid#1200690 AS product#1200741, storageLocId#1200691, calculationDateTime#1200684, quantity#1200693]
(397) Aggregate
Arguments: [plant#1200740, product#1200741, storageLocId#1200691], [plant#1200740, product#1200741, storageLocId#1200691, max(calculationDateTime#1200684) AS max_calc_datetime#1200742]
(398) Join
Arguments: Inner, ((((plant#1200603 <=> plant#1200740) AND (product#1200604 <=> product#1200741)) AND (storageLocId#1200554 <=> storageLocId#1200691)) AND (calculationDateTime#1200547 <=> max_calc_datetime#1200742))
(399) Project
Arguments: [plant#1200603, product#1200604, storageLocId#1200554, calculationDateTime#1200547, quantity#1200556]
(400) Aggregate
Arguments: [product#1200604, plant#1200603], [product#1200604, plant#1200603, sum(quantity#1200556) AS quantitySum#1200743, min(calculationDateTime#1200547) AS minCalculationDateTime#1200744]
(401) Project
Arguments: [product#1200604, plant#1200603, quantitySum#1200743, minCalculationDateTime#1200744, round(quantitySum#1200743, 0) AS roundedQuantitySum#1200745]
(402) Join
Arguments: LeftOuter, ((plant#1200425 = plant#1200603) AND (product#1200424 = product#1200604))
(403) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, roundedQuantitySum#1200745, minCalculationDateTime#1200744]
(404) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, roundedQuantitySum#1200745, minCalculationDateTime#1200744, CASE WHEN isnotnull(minCalculationDateTime#1200744) THEN minCalculationDateTime#1200744 ELSE orderDateTime#1200426 END AS stockDatetime#1200746]
(405) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, roundedQuantitySum#1200745, minCalculationDateTime#1200744, stockDatetime#1200746, CASE WHEN isnotnull(roundedQuantitySum#1200745) THEN array(roundedQuantitySum#1200745) ELSE array(0.0) END AS stockBatchQuantities#1200747]
(406) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, roundedQuantitySum#1200745, minCalculationDateTime#1200744, stockDatetime#1200746, stockBatchQuantities#1200747, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1200748]
(407) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, roundedQuantitySum#1200745, stockDatetime#1200746, stockBatchQuantities#1200747, stockBatchShelfLifeEndDatetimes#1200748]
(408) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, stockBatchShelfLifeEndDatetimes#1200748]
(409) LogicalRelation
Arguments: parquet, [product#1200349, plant#1200350, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357], false
(410) Join
Arguments: LeftOuter, ((product#1200424 = product#1200349) AND (plant#1200425 = plant#1200350))
(411) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, stockBatchShelfLifeEndDatetimes#1200748, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357, product#1200349, plant#1200350]
(412) Project
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, stockBatchShelfLifeEndDatetimes#1200748, demandChannel#1200351, demandStream#1200352, considerVariance#1200353, demandTimeBuckets#1200354, demandPointInTimeStart#1200355, demandPointInTimeEnd#1200356, demandPointInTime#1200357, CASE WHEN isnotnull(product#1200349) THEN struct(demandChannel, demandChannel#1200351, demandStream, demandStream#1200352, considerVariance, considerVariance#1200353, demandTimeBuckets, demandTimeBuckets#1200354, demandPointInTimeStart, demandPointInTimeStart#1200355, demandPointInTimeEnd, demandPointInTimeEnd#1200356, demandPointInTime, demandPointInTime#1200357) 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#1200370]
(413) Aggregate
Arguments: [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, stockBatchShelfLifeEndDatetimes#1200748], [product#1200424, plant#1200425, orderDateTime#1200426, productPlant#1200436, timezonecode#1200450, outboundUnit#1200467, stockDatetime#1200746, stockBatchQuantities#1200747, stockBatchShelfLifeEndDatetimes#1200748, collect_list(rawDemands#1200370, 0, 0) AS rawDemands#1200371]
(414) DeserializeToObject
Arguments: createexternalrow(invoke(product#1200424.toString()), invoke(plant#1200425.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1200426)), if (isnull(productPlant#1200436)) null else createexternalrow(invoke(productPlant#1200436.systemId.toString()), invoke(productPlant#1200436.internalUUID.toString()), if (isnull(productPlant#1200436.plant)) null else createexternalrow(invoke(productPlant#1200436.plant.internalRefUUID.toString()), invoke(productPlant#1200436.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1200436.product)) null else createexternalrow(invoke(productPlant#1200436.product.internalRefUUID.toString()), invoke(productPlant#1200436.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1200436.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1200436.productionAspect)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1200436.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#1200436.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1200436.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1200436.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#1200436.salesPlant)) null else createexternalrow(if (isnull(productPlant#1200436.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1200436.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1200436.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, 159985), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 159985))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 159985).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 159985).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 159985).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#1200436.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#1200450.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1200467)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1200746)), mapobjects(lambdavariable(MapObject, DoubleType, true, 159986), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 159986) as double))), stockBatchQuantities#1200747, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 159987), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 159987) as timestamp)))), stockBatchShelfLifeEndDatetimes#1200748, 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, 159988), 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, 159988))) 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, 159988).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, 159988).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, 159988).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989).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, 159988).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, 159988).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, 159988).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990).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, 159988).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#1200371, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#1200410: org.apache.spark.sql.Row
(415) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008023bc120@783def9c, 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(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#1200415: org.apache.spark.sql.Row
(416) 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#1200420, 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#1200421, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159976), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159976), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159977), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159977), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159978), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159978), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159979), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159979), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159980), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159980), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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#1200422, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159982), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159982), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159983), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159983), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159984), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159984), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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#1200423]
(417) Join
Arguments: LeftOuter, ((plant#1200421 <=> plant#1199943) AND (product#1200420 <=> product#1199942))
(418) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, plant#1200421, dayBucketDemands#1200422, pointInTimeDemands#1200423]
(419) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423]
(420) LogicalRelation
Arguments: parquet, [product#1203165, plant#1203166, orderDateTime#1203167, planningStartDateTime#1203168], false
(421) RepartitionByExpression
Arguments: [product#1203165, plant#1203166], 37
(422) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167]
(423) LogicalRelation
Arguments: parquet, [systemId#1203169, internalUUID#1203170, plant#1203171, product#1203172, blockedForReplenishmentStartingFrom#1203173, productionAspect#1203174, salesPlant#1203175, listing#1203176], false
(424) Repartition
Arguments: 37, true
(425) Project
Arguments: [systemId#1203169, internalUUID#1203170, plant#1203171, product#1203172, blockedForReplenishmentStartingFrom#1203173, productionAspect#1203174, salesPlant#1203175, listing#1203176, struct(systemId, systemId#1203169, internalUUID, internalUUID#1203170, plant, plant#1203171, product, product#1203172, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1203173, productionAspect, productionAspect#1203174, salesPlant, salesPlant#1203175, listing, listing#1203176) AS productPlant#1203177]
(426) Project
Arguments: [productPlant#1203177]
(427) Join
Arguments: LeftOuter, ((product#1203165 <=> productPlant#1203177.product.internalRefUUID) AND (plant#1203166 <=> productPlant#1203177.plant.internalRefUUID))
(428) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177]
(429) SubqueryAlias
Arguments: wl
(430) LogicalRelation
Arguments: parquet, [systemId#1203178, internalUUID#1203179, id#1203180, displayId#1203181, name#1203182, category#1203183, companyCode#1203184, address#1203185, mainDistributionChain#1203186, mainPurchasingOrganization#1203187, validPurchasingOrganizations#1203188, productGroup#1203189], false
(431) Repartition
Arguments: 37, true
(432) Project
Arguments: [internalUUID#1203179, address#1203185.timeZone.code AS timezonecode#1203190]
(433) Join
Arguments: LeftOuter, (plant#1203166 <=> internalUUID#1203179)
(434) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, internalUUID#1203179, CASE WHEN isnotnull(timezonecode#1203190) THEN timezonecode#1203190 ELSE UTC END AS timezonecode#1203191]
(435) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191]
(436) LogicalRelation
Arguments: parquet, [systemId#1203192, internalUUID#1203193, id#1203194, displayId#1203195, name#1203196, baseUnitOfMeasure#1203197, unitOfMeasures#1203198, unitOfMeasureConversions#1203199, productionAspect#1203200, salesAspect#1203201, procurementAspect#1203202, productGroup#1203203], false
(437) Repartition
Arguments: 37, true
(438) Join
Arguments: LeftOuter, (product#1203165 = internalUUID#1203193)
(439) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, systemId#1203192, internalUUID#1203193, id#1203194, displayId#1203195, name#1203196, baseUnitOfMeasure#1203197, unitOfMeasures#1203198, unitOfMeasureConversions#1203199, productionAspect#1203200, salesAspect#1203201, procurementAspect#1203202, productGroup#1203203, filter(unitOfMeasureConversions#1203199, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1203177.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1203177.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1203197.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1203197.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203204]
(440) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203204.quantityNumerator), true, [quantityNumerator#1203205]
(441) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, systemId#1203192, internalUUID#1203193, id#1203194, displayId#1203195, name#1203196, baseUnitOfMeasure#1203197, unitOfMeasures#1203198, unitOfMeasureConversions#1203199, productionAspect#1203200, salesAspect#1203201, procurementAspect#1203202, productGroup#1203203, filteredUnitOfMeasureConversions#1203204, quantityNumerator#1203205]
(442) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203204.quantityDenominator), true, [quantityDenominator#1203206]
(443) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, systemId#1203192, internalUUID#1203193, id#1203194, displayId#1203195, name#1203196, baseUnitOfMeasure#1203197, unitOfMeasures#1203198, unitOfMeasureConversions#1203199, productionAspect#1203200, salesAspect#1203201, procurementAspect#1203202, productGroup#1203203, filteredUnitOfMeasureConversions#1203204, quantityNumerator#1203205, quantityDenominator#1203206]
(444) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, systemId#1203192, internalUUID#1203193, id#1203194, displayId#1203195, name#1203196, baseUnitOfMeasure#1203197, unitOfMeasures#1203198, unitOfMeasureConversions#1203199, productionAspect#1203200, salesAspect#1203201, procurementAspect#1203202, productGroup#1203203, filteredUnitOfMeasureConversions#1203204, quantityNumerator#1203205, quantityDenominator#1203206, (cast(quantityNumerator#1203205 as double) / cast(quantityDenominator#1203206 as double)) AS outboundUnit#1203207]
(445) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, systemId#1203192, internalUUID#1203193, id#1203194, displayId#1203195, name#1203196, baseUnitOfMeasure#1203197, unitOfMeasures#1203198, unitOfMeasureConversions#1203199, productionAspect#1203200, salesAspect#1203201, procurementAspect#1203202, productGroup#1203203, filteredUnitOfMeasureConversions#1203204, quantityNumerator#1203205, quantityDenominator#1203206, CASE WHEN (isnull(outboundUnit#1203207) OR (outboundUnit#1203207 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1203207 END AS outboundUnit#1203208]
(446) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, outboundUnit#1203208]
(447) LogicalRelation
Arguments: parquet, [systemId#1203209, internalUUID#1203210, product#1203211, plant#1203212, calculationDateTime#1203213, stockQuantities#1203214], false
(448) Repartition
Arguments: 37, true
(449) LogicalRelation
Arguments: parquet, [marketUnit#1203215, description#1203216, articleHierarchy#1203217, defaultCurrency#1203218, responsibilities#1203219, replenishmentTypes#1203220, distributionCenters#1203221, assignedArticleHierarchyNodes#1203222, minOrderQtySetting#1203223, listingCheck#1203224, odsSelection#1203225, demandProfiles#1203226, constraintProfiles#1203227, optimizationProfiles#1203228, orderGroupSplitProfiles#1203229, supplierMinimumProfiles#1203230, multipleRestrictionProfiles#1203231, preferredUomSource#1203232, handlingOfUnfulfilledDemands#1203233, negligibleQuantitiesThreshold#1203234, eventtype#1203235, minOrderQtySettingInternal#1203236], false
(450) Repartition
Arguments: 37, true
(451) Filter
Arguments: (marketUnit#1203215 <=> Grocery_SS)
(452) Project
Arguments: [marketUnit#1203215, description#1203216, articleHierarchy#1203217, defaultCurrency#1203218, responsibilities#1203219, replenishmentTypes#1203220, distributionCenters#1203221, assignedArticleHierarchyNodes#1203222, minOrderQtySetting#1203223, listingCheck#1203224, odsSelection#1203225, demandProfiles#1203226, constraintProfiles#1203227, optimizationProfiles#1203228, orderGroupSplitProfiles#1203229, supplierMinimumProfiles#1203230, multipleRestrictionProfiles#1203231, preferredUomSource#1203232, handlingOfUnfulfilledDemands#1203233, negligibleQuantitiesThreshold#1203234, eventtype#1203235, minOrderQtySettingInternal#1203236]
(453) Project
Arguments: [distributionCenters#1203221]
(454) Generate
Arguments: explode(distributionCenters#1203221), false, [distributionCenters#1203237]
(455) Project
Arguments: [distributionCenters#1203237]
(456) Generate
Arguments: explode(distributionCenters#1203237.storageLocations), false, [storageLocations#1203238]
(457) Project
Arguments: [distributionCenters#1203237.id AS plantId#1203239, distributionCenters#1203237.internalRefUUID AS plantUuid#1203240, storageLocations#1203238]
(458) Project
Arguments: [plantId#1203239, plantUuid#1203240, storageLocations#1203238.id AS storageLocId#1203241, storageLocations#1203238.internalRefUUID AS storageLocUuid#1203242]
(459) LogicalRelation
Arguments: parquet, [product#1203243, plant#1203244, orderDateTime#1203245, planningStartDateTime#1203246], false
(460) RepartitionByExpression
Arguments: [product#1203243, plant#1203244], 37
(461) Project
Arguments: [product#1203243, plant#1203244, orderDateTime#1203245]
(462) LogicalRelation
Arguments: parquet, [systemId#1203247, internalUUID#1203248, plant#1203249, product#1203250, blockedForReplenishmentStartingFrom#1203251, productionAspect#1203252, salesPlant#1203253, listing#1203254], false
(463) Repartition
Arguments: 37, true
(464) Project
Arguments: [systemId#1203247, internalUUID#1203248, plant#1203249, product#1203250, blockedForReplenishmentStartingFrom#1203251, productionAspect#1203252, salesPlant#1203253, listing#1203254, struct(systemId, systemId#1203247, internalUUID, internalUUID#1203248, plant, plant#1203249, product, product#1203250, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1203251, productionAspect, productionAspect#1203252, salesPlant, salesPlant#1203253, listing, listing#1203254) AS productPlant#1203255]
(465) Project
Arguments: [productPlant#1203255]
(466) Join
Arguments: LeftOuter, ((product#1203243 <=> productPlant#1203255.product.internalRefUUID) AND (plant#1203244 <=> productPlant#1203255.plant.internalRefUUID))
(467) Project
Arguments: [product#1203243, plant#1203244, orderDateTime#1203245, productPlant#1203255]
(468) SubqueryAlias
Arguments: wl
(469) LogicalRelation
Arguments: parquet, [systemId#1203256, internalUUID#1203257, id#1203258, displayId#1203259, name#1203260, category#1203261, companyCode#1203262, address#1203263, mainDistributionChain#1203264, mainPurchasingOrganization#1203265, validPurchasingOrganizations#1203266, productGroup#1203267], false
(470) Repartition
Arguments: 37, true
(471) Project
Arguments: [internalUUID#1203257, address#1203263.timeZone.code AS timezonecode#1203268]
(472) Join
Arguments: LeftOuter, (plant#1203244 <=> internalUUID#1203257)
(473) Project
Arguments: [product#1203243, plant#1203244, orderDateTime#1203245, productPlant#1203255, internalUUID#1203257, CASE WHEN isnotnull(timezonecode#1203268) THEN timezonecode#1203268 ELSE UTC END AS timezonecode#1203269]
(474) Project
Arguments: [product#1203243, plant#1203244, orderDateTime#1203245, productPlant#1203255, timezonecode#1203269]
(475) LogicalRelation
Arguments: parquet, [systemId#1203270, internalUUID#1203271, id#1203272, displayId#1203273, name#1203274, baseUnitOfMeasure#1203275, unitOfMeasures#1203276, unitOfMeasureConversions#1203277, productionAspect#1203278, salesAspect#1203279, procurementAspect#1203280, productGroup#1203281], false
(476) Repartition
Arguments: 37, true
(477) Join
Arguments: LeftOuter, (product#1203243 = internalUUID#1203271)
(478) Project
Arguments: [product#1203243, plant#1203244, orderDateTime#1203245, productPlant#1203255, timezonecode#1203269, systemId#1203270, internalUUID#1203271, id#1203272, displayId#1203273, name#1203274, baseUnitOfMeasure#1203275, unitOfMeasures#1203276, unitOfMeasureConversions#1203277, productionAspect#1203278, salesAspect#1203279, procurementAspect#1203280, productGroup#1203281, filter(unitOfMeasureConversions#1203277, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1203255.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1203255.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1203275.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1203275.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203282]
(479) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203282.quantityNumerator), true, [quantityNumerator#1203283]
(480) Project
Arguments: [product#1203243, plant#1203244, orderDateTime#1203245, productPlant#1203255, timezonecode#1203269, systemId#1203270, internalUUID#1203271, id#1203272, displayId#1203273, name#1203274, baseUnitOfMeasure#1203275, unitOfMeasures#1203276, unitOfMeasureConversions#1203277, productionAspect#1203278, salesAspect#1203279, procurementAspect#1203280, productGroup#1203281, filteredUnitOfMeasureConversions#1203282, quantityNumerator#1203283]
(481) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203282.quantityDenominator), true, [quantityDenominator#1203284]
(482) Project
Arguments: [product#1203243, plant#1203244, orderDateTime#1203245, productPlant#1203255, timezonecode#1203269, systemId#1203270, internalUUID#1203271, id#1203272, displayId#1203273, name#1203274, baseUnitOfMeasure#1203275, unitOfMeasures#1203276, unitOfMeasureConversions#1203277, productionAspect#1203278, salesAspect#1203279, procurementAspect#1203280, productGroup#1203281, filteredUnitOfMeasureConversions#1203282, quantityNumerator#1203283, quantityDenominator#1203284]
(483) Project
Arguments: [product#1203243, plant#1203244, orderDateTime#1203245, productPlant#1203255, timezonecode#1203269, systemId#1203270, internalUUID#1203271, id#1203272, displayId#1203273, name#1203274, baseUnitOfMeasure#1203275, unitOfMeasures#1203276, unitOfMeasureConversions#1203277, productionAspect#1203278, salesAspect#1203279, procurementAspect#1203280, productGroup#1203281, filteredUnitOfMeasureConversions#1203282, quantityNumerator#1203283, quantityDenominator#1203284, (cast(quantityNumerator#1203283 as double) / cast(quantityDenominator#1203284 as double)) AS outboundUnit#1203285]
(484) Project
Arguments: [product#1203243, plant#1203244, orderDateTime#1203245, productPlant#1203255, timezonecode#1203269, systemId#1203270, internalUUID#1203271, id#1203272, displayId#1203273, name#1203274, baseUnitOfMeasure#1203275, unitOfMeasures#1203276, unitOfMeasureConversions#1203277, productionAspect#1203278, salesAspect#1203279, procurementAspect#1203280, productGroup#1203281, filteredUnitOfMeasureConversions#1203282, quantityNumerator#1203283, quantityDenominator#1203284, CASE WHEN (isnull(outboundUnit#1203285) OR (outboundUnit#1203285 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1203285 END AS outboundUnit#1203286]
(485) Project
Arguments: [product#1203243, plant#1203244, orderDateTime#1203245, productPlant#1203255, timezonecode#1203269, outboundUnit#1203286]
(486) Project
Arguments: [plant#1203244]
(487) Deduplicate
Arguments: [plant#1203244]
(488) Join
Arguments: Inner, (plantUuid#1203240 = plant#1203244)
(489) Project
Arguments: [plantId#1203239, plantUuid#1203240, storageLocId#1203241, storageLocUuid#1203242]
(490) Join
Arguments: Inner, (plant#1203212.internalRefUUID <=> plantUuid#1203240)
(491) Generate
Arguments: explode(filter(stockQuantities#1203214, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1203242) AND (lambda x#1200047.storageLocation.Id = storageLocId#1203241)), lambda x#1200047, false))), false, [stockQuantity#1203287]
(492) Project
Arguments: [systemId#1203209, internalUUID#1203210, product#1203211, plant#1203212, calculationDateTime#1203213, stockQuantities#1203214, plantId#1203239, plantUuid#1203240, storageLocId#1203241, storageLocUuid#1203242, stockQuantity#1203287]
(493) Aggregate
Arguments: [plantUuid#1203240, internalUUID#1203210, plant#1203212, product#1203211, systemId#1203209], [plantUuid#1203240, internalUUID#1203210, plant#1203212, product#1203211, systemId#1203209, first(calculationDateTime#1203213, false) AS calculationDateTime#1203288, collect_list(stockQuantity#1203287, 0, 0) AS stockQuantities#1203289]
(494) Project
Arguments: [systemId#1203209, internalUUID#1203210, product#1203211, plant#1203212, calculationDateTime#1203288, stockQuantities#1203289]
(495) Generate
Arguments: explode(stockQuantities#1203289), false, [stockQuantity#1203290]
(496) Project
Arguments: [systemId#1203209, internalUUID#1203210, product#1203211, plant#1203212, calculationDateTime#1203288, stockQuantities#1203289, stockQuantity#1203290]
(497) Project
Arguments: [plant#1203212.id AS plant#1203291, plant#1203212.internalRefUUID AS plantUuid#1203292, product#1203211.id AS product#1203293, product#1203211.internalRefUUID AS productUuid#1203294, calculationDateTime#1203288, stockQuantity#1203290.storagelocation.id AS storageLocId#1203295, stockQuantity#1203290.storagelocation.internalRefUUID AS storageLocUuid#1203296, stockQuantity#1203290.quantity.measure AS quantity#1203297, stockQuantity#1203290.specialStockIndicator.code AS specialStockIndicator#1203298, stockQuantity#1203290.stockType.code AS stockType#1203299]
(498) Filter
Arguments: ((specialStockIndicator#1203298 = ) AND (stockType#1203299 = 01))
(499) LogicalRelation
Arguments: parquet, [product#1203300, plant#1203301, orderDateTime#1203302, planningStartDateTime#1203303], false
(500) RepartitionByExpression
Arguments: [product#1203300, plant#1203301], 37
(501) Project
Arguments: [product#1203300, plant#1203301, orderDateTime#1203302]
(502) LogicalRelation
Arguments: parquet, [systemId#1203304, internalUUID#1203305, plant#1203306, product#1203307, blockedForReplenishmentStartingFrom#1203308, productionAspect#1203309, salesPlant#1203310, listing#1203311], false
(503) Repartition
Arguments: 37, true
(504) Project
Arguments: [systemId#1203304, internalUUID#1203305, plant#1203306, product#1203307, blockedForReplenishmentStartingFrom#1203308, productionAspect#1203309, salesPlant#1203310, listing#1203311, struct(systemId, systemId#1203304, internalUUID, internalUUID#1203305, plant, plant#1203306, product, product#1203307, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1203308, productionAspect, productionAspect#1203309, salesPlant, salesPlant#1203310, listing, listing#1203311) AS productPlant#1203312]
(505) Project
Arguments: [productPlant#1203312]
(506) Join
Arguments: LeftOuter, ((product#1203300 <=> productPlant#1203312.product.internalRefUUID) AND (plant#1203301 <=> productPlant#1203312.plant.internalRefUUID))
(507) Project
Arguments: [product#1203300, plant#1203301, orderDateTime#1203302, productPlant#1203312]
(508) SubqueryAlias
Arguments: wl
(509) LogicalRelation
Arguments: parquet, [systemId#1203313, internalUUID#1203314, id#1203315, displayId#1203316, name#1203317, category#1203318, companyCode#1203319, address#1203320, mainDistributionChain#1203321, mainPurchasingOrganization#1203322, validPurchasingOrganizations#1203323, productGroup#1203324], false
(510) Repartition
Arguments: 37, true
(511) Project
Arguments: [internalUUID#1203314, address#1203320.timeZone.code AS timezonecode#1203325]
(512) Join
Arguments: LeftOuter, (plant#1203301 <=> internalUUID#1203314)
(513) Project
Arguments: [product#1203300, plant#1203301, orderDateTime#1203302, productPlant#1203312, internalUUID#1203314, CASE WHEN isnotnull(timezonecode#1203325) THEN timezonecode#1203325 ELSE UTC END AS timezonecode#1203326]
(514) Project
Arguments: [product#1203300, plant#1203301, orderDateTime#1203302, productPlant#1203312, timezonecode#1203326]
(515) LogicalRelation
Arguments: parquet, [systemId#1203327, internalUUID#1203328, id#1203329, displayId#1203330, name#1203331, baseUnitOfMeasure#1203332, unitOfMeasures#1203333, unitOfMeasureConversions#1203334, productionAspect#1203335, salesAspect#1203336, procurementAspect#1203337, productGroup#1203338], false
(516) Repartition
Arguments: 37, true
(517) Join
Arguments: LeftOuter, (product#1203300 = internalUUID#1203328)
(518) Project
Arguments: [product#1203300, plant#1203301, orderDateTime#1203302, productPlant#1203312, timezonecode#1203326, systemId#1203327, internalUUID#1203328, id#1203329, displayId#1203330, name#1203331, baseUnitOfMeasure#1203332, unitOfMeasures#1203333, unitOfMeasureConversions#1203334, productionAspect#1203335, salesAspect#1203336, procurementAspect#1203337, productGroup#1203338, filter(unitOfMeasureConversions#1203334, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1203312.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1203312.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1203332.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1203332.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203339]
(519) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203339.quantityNumerator), true, [quantityNumerator#1203340]
(520) Project
Arguments: [product#1203300, plant#1203301, orderDateTime#1203302, productPlant#1203312, timezonecode#1203326, systemId#1203327, internalUUID#1203328, id#1203329, displayId#1203330, name#1203331, baseUnitOfMeasure#1203332, unitOfMeasures#1203333, unitOfMeasureConversions#1203334, productionAspect#1203335, salesAspect#1203336, procurementAspect#1203337, productGroup#1203338, filteredUnitOfMeasureConversions#1203339, quantityNumerator#1203340]
(521) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203339.quantityDenominator), true, [quantityDenominator#1203341]
(522) Project
Arguments: [product#1203300, plant#1203301, orderDateTime#1203302, productPlant#1203312, timezonecode#1203326, systemId#1203327, internalUUID#1203328, id#1203329, displayId#1203330, name#1203331, baseUnitOfMeasure#1203332, unitOfMeasures#1203333, unitOfMeasureConversions#1203334, productionAspect#1203335, salesAspect#1203336, procurementAspect#1203337, productGroup#1203338, filteredUnitOfMeasureConversions#1203339, quantityNumerator#1203340, quantityDenominator#1203341]
(523) Project
Arguments: [product#1203300, plant#1203301, orderDateTime#1203302, productPlant#1203312, timezonecode#1203326, systemId#1203327, internalUUID#1203328, id#1203329, displayId#1203330, name#1203331, baseUnitOfMeasure#1203332, unitOfMeasures#1203333, unitOfMeasureConversions#1203334, productionAspect#1203335, salesAspect#1203336, procurementAspect#1203337, productGroup#1203338, filteredUnitOfMeasureConversions#1203339, quantityNumerator#1203340, quantityDenominator#1203341, (cast(quantityNumerator#1203340 as double) / cast(quantityDenominator#1203341 as double)) AS outboundUnit#1203342]
(524) Project
Arguments: [product#1203300, plant#1203301, orderDateTime#1203302, productPlant#1203312, timezonecode#1203326, systemId#1203327, internalUUID#1203328, id#1203329, displayId#1203330, name#1203331, baseUnitOfMeasure#1203332, unitOfMeasures#1203333, unitOfMeasureConversions#1203334, productionAspect#1203335, salesAspect#1203336, procurementAspect#1203337, productGroup#1203338, filteredUnitOfMeasureConversions#1203339, quantityNumerator#1203340, quantityDenominator#1203341, CASE WHEN (isnull(outboundUnit#1203342) OR (outboundUnit#1203342 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1203342 END AS outboundUnit#1203343]
(525) Project
Arguments: [product#1203300, plant#1203301, orderDateTime#1203302, productPlant#1203312, timezonecode#1203326, outboundUnit#1203343]
(526) Join
Arguments: Inner, ((plantUuid#1203292 = plant#1203301) AND (productUuid#1203294 = product#1203300))
(527) Filter
Arguments: (calculationDateTime#1203288 <= orderDateTime#1203302)
(528) Project
Arguments: [plantUuid#1203292 AS plant#1203344, productUuid#1203294 AS product#1203345, storageLocId#1203295, calculationDateTime#1203288, quantity#1203297]
(529) LogicalRelation
Arguments: parquet, [systemId#1203346, internalUUID#1203347, product#1203348, plant#1203349, calculationDateTime#1203350, stockQuantities#1203351], false
(530) Repartition
Arguments: 37, true
(531) LogicalRelation
Arguments: parquet, [marketUnit#1203352, description#1203353, articleHierarchy#1203354, defaultCurrency#1203355, responsibilities#1203356, replenishmentTypes#1203357, distributionCenters#1203358, assignedArticleHierarchyNodes#1203359, minOrderQtySetting#1203360, listingCheck#1203361, odsSelection#1203362, demandProfiles#1203363, constraintProfiles#1203364, optimizationProfiles#1203365, orderGroupSplitProfiles#1203366, supplierMinimumProfiles#1203367, multipleRestrictionProfiles#1203368, preferredUomSource#1203369, handlingOfUnfulfilledDemands#1203370, negligibleQuantitiesThreshold#1203371, eventtype#1203372, minOrderQtySettingInternal#1203373], false
(532) Repartition
Arguments: 37, true
(533) Filter
Arguments: (marketUnit#1203352 <=> Grocery_SS)
(534) Project
Arguments: [marketUnit#1203352, description#1203353, articleHierarchy#1203354, defaultCurrency#1203355, responsibilities#1203356, replenishmentTypes#1203357, distributionCenters#1203358, assignedArticleHierarchyNodes#1203359, minOrderQtySetting#1203360, listingCheck#1203361, odsSelection#1203362, demandProfiles#1203363, constraintProfiles#1203364, optimizationProfiles#1203365, orderGroupSplitProfiles#1203366, supplierMinimumProfiles#1203367, multipleRestrictionProfiles#1203368, preferredUomSource#1203369, handlingOfUnfulfilledDemands#1203370, negligibleQuantitiesThreshold#1203371, eventtype#1203372, minOrderQtySettingInternal#1203373]
(535) Project
Arguments: [distributionCenters#1203358]
(536) Generate
Arguments: explode(distributionCenters#1203358), false, [distributionCenters#1203374]
(537) Project
Arguments: [distributionCenters#1203374]
(538) Generate
Arguments: explode(distributionCenters#1203374.storageLocations), false, [storageLocations#1203375]
(539) Project
Arguments: [distributionCenters#1203374.id AS plantId#1203376, distributionCenters#1203374.internalRefUUID AS plantUuid#1203377, storageLocations#1203375]
(540) Project
Arguments: [plantId#1203376, plantUuid#1203377, storageLocations#1203375.id AS storageLocId#1203378, storageLocations#1203375.internalRefUUID AS storageLocUuid#1203379]
(541) LogicalRelation
Arguments: parquet, [product#1203380, plant#1203381, orderDateTime#1203382, planningStartDateTime#1203383], false
(542) RepartitionByExpression
Arguments: [product#1203380, plant#1203381], 37
(543) Project
Arguments: [product#1203380, plant#1203381, orderDateTime#1203382]
(544) LogicalRelation
Arguments: parquet, [systemId#1203384, internalUUID#1203385, plant#1203386, product#1203387, blockedForReplenishmentStartingFrom#1203388, productionAspect#1203389, salesPlant#1203390, listing#1203391], false
(545) Repartition
Arguments: 37, true
(546) Project
Arguments: [systemId#1203384, internalUUID#1203385, plant#1203386, product#1203387, blockedForReplenishmentStartingFrom#1203388, productionAspect#1203389, salesPlant#1203390, listing#1203391, struct(systemId, systemId#1203384, internalUUID, internalUUID#1203385, plant, plant#1203386, product, product#1203387, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1203388, productionAspect, productionAspect#1203389, salesPlant, salesPlant#1203390, listing, listing#1203391) AS productPlant#1203392]
(547) Project
Arguments: [productPlant#1203392]
(548) Join
Arguments: LeftOuter, ((product#1203380 <=> productPlant#1203392.product.internalRefUUID) AND (plant#1203381 <=> productPlant#1203392.plant.internalRefUUID))
(549) Project
Arguments: [product#1203380, plant#1203381, orderDateTime#1203382, productPlant#1203392]
(550) SubqueryAlias
Arguments: wl
(551) LogicalRelation
Arguments: parquet, [systemId#1203393, internalUUID#1203394, id#1203395, displayId#1203396, name#1203397, category#1203398, companyCode#1203399, address#1203400, mainDistributionChain#1203401, mainPurchasingOrganization#1203402, validPurchasingOrganizations#1203403, productGroup#1203404], false
(552) Repartition
Arguments: 37, true
(553) Project
Arguments: [internalUUID#1203394, address#1203400.timeZone.code AS timezonecode#1203405]
(554) Join
Arguments: LeftOuter, (plant#1203381 <=> internalUUID#1203394)
(555) Project
Arguments: [product#1203380, plant#1203381, orderDateTime#1203382, productPlant#1203392, internalUUID#1203394, CASE WHEN isnotnull(timezonecode#1203405) THEN timezonecode#1203405 ELSE UTC END AS timezonecode#1203406]
(556) Project
Arguments: [product#1203380, plant#1203381, orderDateTime#1203382, productPlant#1203392, timezonecode#1203406]
(557) LogicalRelation
Arguments: parquet, [systemId#1203407, internalUUID#1203408, id#1203409, displayId#1203410, name#1203411, baseUnitOfMeasure#1203412, unitOfMeasures#1203413, unitOfMeasureConversions#1203414, productionAspect#1203415, salesAspect#1203416, procurementAspect#1203417, productGroup#1203418], false
(558) Repartition
Arguments: 37, true
(559) Join
Arguments: LeftOuter, (product#1203380 = internalUUID#1203408)
(560) Project
Arguments: [product#1203380, plant#1203381, orderDateTime#1203382, productPlant#1203392, timezonecode#1203406, systemId#1203407, internalUUID#1203408, id#1203409, displayId#1203410, name#1203411, baseUnitOfMeasure#1203412, unitOfMeasures#1203413, unitOfMeasureConversions#1203414, productionAspect#1203415, salesAspect#1203416, procurementAspect#1203417, productGroup#1203418, filter(unitOfMeasureConversions#1203414, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1203392.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1203392.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1203412.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1203412.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203419]
(561) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203419.quantityNumerator), true, [quantityNumerator#1203420]
(562) Project
Arguments: [product#1203380, plant#1203381, orderDateTime#1203382, productPlant#1203392, timezonecode#1203406, systemId#1203407, internalUUID#1203408, id#1203409, displayId#1203410, name#1203411, baseUnitOfMeasure#1203412, unitOfMeasures#1203413, unitOfMeasureConversions#1203414, productionAspect#1203415, salesAspect#1203416, procurementAspect#1203417, productGroup#1203418, filteredUnitOfMeasureConversions#1203419, quantityNumerator#1203420]
(563) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203419.quantityDenominator), true, [quantityDenominator#1203421]
(564) Project
Arguments: [product#1203380, plant#1203381, orderDateTime#1203382, productPlant#1203392, timezonecode#1203406, systemId#1203407, internalUUID#1203408, id#1203409, displayId#1203410, name#1203411, baseUnitOfMeasure#1203412, unitOfMeasures#1203413, unitOfMeasureConversions#1203414, productionAspect#1203415, salesAspect#1203416, procurementAspect#1203417, productGroup#1203418, filteredUnitOfMeasureConversions#1203419, quantityNumerator#1203420, quantityDenominator#1203421]
(565) Project
Arguments: [product#1203380, plant#1203381, orderDateTime#1203382, productPlant#1203392, timezonecode#1203406, systemId#1203407, internalUUID#1203408, id#1203409, displayId#1203410, name#1203411, baseUnitOfMeasure#1203412, unitOfMeasures#1203413, unitOfMeasureConversions#1203414, productionAspect#1203415, salesAspect#1203416, procurementAspect#1203417, productGroup#1203418, filteredUnitOfMeasureConversions#1203419, quantityNumerator#1203420, quantityDenominator#1203421, (cast(quantityNumerator#1203420 as double) / cast(quantityDenominator#1203421 as double)) AS outboundUnit#1203422]
(566) Project
Arguments: [product#1203380, plant#1203381, orderDateTime#1203382, productPlant#1203392, timezonecode#1203406, systemId#1203407, internalUUID#1203408, id#1203409, displayId#1203410, name#1203411, baseUnitOfMeasure#1203412, unitOfMeasures#1203413, unitOfMeasureConversions#1203414, productionAspect#1203415, salesAspect#1203416, procurementAspect#1203417, productGroup#1203418, filteredUnitOfMeasureConversions#1203419, quantityNumerator#1203420, quantityDenominator#1203421, CASE WHEN (isnull(outboundUnit#1203422) OR (outboundUnit#1203422 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1203422 END AS outboundUnit#1203423]
(567) Project
Arguments: [product#1203380, plant#1203381, orderDateTime#1203382, productPlant#1203392, timezonecode#1203406, outboundUnit#1203423]
(568) Project
Arguments: [plant#1203381]
(569) Deduplicate
Arguments: [plant#1203381]
(570) Join
Arguments: Inner, (plantUuid#1203377 = plant#1203381)
(571) Project
Arguments: [plantId#1203376, plantUuid#1203377, storageLocId#1203378, storageLocUuid#1203379]
(572) Join
Arguments: Inner, (plant#1203349.internalRefUUID <=> plantUuid#1203377)
(573) Generate
Arguments: explode(filter(stockQuantities#1203351, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1203379) AND (lambda x#1200047.storageLocation.Id = storageLocId#1203378)), lambda x#1200047, false))), false, [stockQuantity#1203424]
(574) Project
Arguments: [systemId#1203346, internalUUID#1203347, product#1203348, plant#1203349, calculationDateTime#1203350, stockQuantities#1203351, plantId#1203376, plantUuid#1203377, storageLocId#1203378, storageLocUuid#1203379, stockQuantity#1203424]
(575) Aggregate
Arguments: [plantUuid#1203377, internalUUID#1203347, plant#1203349, product#1203348, systemId#1203346], [plantUuid#1203377, internalUUID#1203347, plant#1203349, product#1203348, systemId#1203346, first(calculationDateTime#1203350, false) AS calculationDateTime#1203425, collect_list(stockQuantity#1203424, 0, 0) AS stockQuantities#1203426]
(576) Project
Arguments: [systemId#1203346, internalUUID#1203347, product#1203348, plant#1203349, calculationDateTime#1203425, stockQuantities#1203426]
(577) Generate
Arguments: explode(stockQuantities#1203426), false, [stockQuantity#1203427]
(578) Project
Arguments: [systemId#1203346, internalUUID#1203347, product#1203348, plant#1203349, calculationDateTime#1203425, stockQuantities#1203426, stockQuantity#1203427]
(579) Project
Arguments: [plant#1203349.id AS plant#1203428, plant#1203349.internalRefUUID AS plantUuid#1203429, product#1203348.id AS product#1203430, product#1203348.internalRefUUID AS productUuid#1203431, calculationDateTime#1203425, stockQuantity#1203427.storagelocation.id AS storageLocId#1203432, stockQuantity#1203427.storagelocation.internalRefUUID AS storageLocUuid#1203433, stockQuantity#1203427.quantity.measure AS quantity#1203434, stockQuantity#1203427.specialStockIndicator.code AS specialStockIndicator#1203435, stockQuantity#1203427.stockType.code AS stockType#1203436]
(580) Filter
Arguments: ((specialStockIndicator#1203435 = ) AND (stockType#1203436 = 01))
(581) LogicalRelation
Arguments: parquet, [product#1203437, plant#1203438, orderDateTime#1203439, planningStartDateTime#1203440], false
(582) RepartitionByExpression
Arguments: [product#1203437, plant#1203438], 37
(583) Project
Arguments: [product#1203437, plant#1203438, orderDateTime#1203439]
(584) LogicalRelation
Arguments: parquet, [systemId#1203441, internalUUID#1203442, plant#1203443, product#1203444, blockedForReplenishmentStartingFrom#1203445, productionAspect#1203446, salesPlant#1203447, listing#1203448], false
(585) Repartition
Arguments: 37, true
(586) Project
Arguments: [systemId#1203441, internalUUID#1203442, plant#1203443, product#1203444, blockedForReplenishmentStartingFrom#1203445, productionAspect#1203446, salesPlant#1203447, listing#1203448, struct(systemId, systemId#1203441, internalUUID, internalUUID#1203442, plant, plant#1203443, product, product#1203444, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1203445, productionAspect, productionAspect#1203446, salesPlant, salesPlant#1203447, listing, listing#1203448) AS productPlant#1203449]
(587) Project
Arguments: [productPlant#1203449]
(588) Join
Arguments: LeftOuter, ((product#1203437 <=> productPlant#1203449.product.internalRefUUID) AND (plant#1203438 <=> productPlant#1203449.plant.internalRefUUID))
(589) Project
Arguments: [product#1203437, plant#1203438, orderDateTime#1203439, productPlant#1203449]
(590) SubqueryAlias
Arguments: wl
(591) LogicalRelation
Arguments: parquet, [systemId#1203450, internalUUID#1203451, id#1203452, displayId#1203453, name#1203454, category#1203455, companyCode#1203456, address#1203457, mainDistributionChain#1203458, mainPurchasingOrganization#1203459, validPurchasingOrganizations#1203460, productGroup#1203461], false
(592) Repartition
Arguments: 37, true
(593) Project
Arguments: [internalUUID#1203451, address#1203457.timeZone.code AS timezonecode#1203462]
(594) Join
Arguments: LeftOuter, (plant#1203438 <=> internalUUID#1203451)
(595) Project
Arguments: [product#1203437, plant#1203438, orderDateTime#1203439, productPlant#1203449, internalUUID#1203451, CASE WHEN isnotnull(timezonecode#1203462) THEN timezonecode#1203462 ELSE UTC END AS timezonecode#1203463]
(596) Project
Arguments: [product#1203437, plant#1203438, orderDateTime#1203439, productPlant#1203449, timezonecode#1203463]
(597) LogicalRelation
Arguments: parquet, [systemId#1203464, internalUUID#1203465, id#1203466, displayId#1203467, name#1203468, baseUnitOfMeasure#1203469, unitOfMeasures#1203470, unitOfMeasureConversions#1203471, productionAspect#1203472, salesAspect#1203473, procurementAspect#1203474, productGroup#1203475], false
(598) Repartition
Arguments: 37, true
(599) Join
Arguments: LeftOuter, (product#1203437 = internalUUID#1203465)
(600) Project
Arguments: [product#1203437, plant#1203438, orderDateTime#1203439, productPlant#1203449, timezonecode#1203463, systemId#1203464, internalUUID#1203465, id#1203466, displayId#1203467, name#1203468, baseUnitOfMeasure#1203469, unitOfMeasures#1203470, unitOfMeasureConversions#1203471, productionAspect#1203472, salesAspect#1203473, procurementAspect#1203474, productGroup#1203475, filter(unitOfMeasureConversions#1203471, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1203449.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1203449.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1203469.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1203469.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203476]
(601) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203476.quantityNumerator), true, [quantityNumerator#1203477]
(602) Project
Arguments: [product#1203437, plant#1203438, orderDateTime#1203439, productPlant#1203449, timezonecode#1203463, systemId#1203464, internalUUID#1203465, id#1203466, displayId#1203467, name#1203468, baseUnitOfMeasure#1203469, unitOfMeasures#1203470, unitOfMeasureConversions#1203471, productionAspect#1203472, salesAspect#1203473, procurementAspect#1203474, productGroup#1203475, filteredUnitOfMeasureConversions#1203476, quantityNumerator#1203477]
(603) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203476.quantityDenominator), true, [quantityDenominator#1203478]
(604) Project
Arguments: [product#1203437, plant#1203438, orderDateTime#1203439, productPlant#1203449, timezonecode#1203463, systemId#1203464, internalUUID#1203465, id#1203466, displayId#1203467, name#1203468, baseUnitOfMeasure#1203469, unitOfMeasures#1203470, unitOfMeasureConversions#1203471, productionAspect#1203472, salesAspect#1203473, procurementAspect#1203474, productGroup#1203475, filteredUnitOfMeasureConversions#1203476, quantityNumerator#1203477, quantityDenominator#1203478]
(605) Project
Arguments: [product#1203437, plant#1203438, orderDateTime#1203439, productPlant#1203449, timezonecode#1203463, systemId#1203464, internalUUID#1203465, id#1203466, displayId#1203467, name#1203468, baseUnitOfMeasure#1203469, unitOfMeasures#1203470, unitOfMeasureConversions#1203471, productionAspect#1203472, salesAspect#1203473, procurementAspect#1203474, productGroup#1203475, filteredUnitOfMeasureConversions#1203476, quantityNumerator#1203477, quantityDenominator#1203478, (cast(quantityNumerator#1203477 as double) / cast(quantityDenominator#1203478 as double)) AS outboundUnit#1203479]
(606) Project
Arguments: [product#1203437, plant#1203438, orderDateTime#1203439, productPlant#1203449, timezonecode#1203463, systemId#1203464, internalUUID#1203465, id#1203466, displayId#1203467, name#1203468, baseUnitOfMeasure#1203469, unitOfMeasures#1203470, unitOfMeasureConversions#1203471, productionAspect#1203472, salesAspect#1203473, procurementAspect#1203474, productGroup#1203475, filteredUnitOfMeasureConversions#1203476, quantityNumerator#1203477, quantityDenominator#1203478, CASE WHEN (isnull(outboundUnit#1203479) OR (outboundUnit#1203479 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1203479 END AS outboundUnit#1203480]
(607) Project
Arguments: [product#1203437, plant#1203438, orderDateTime#1203439, productPlant#1203449, timezonecode#1203463, outboundUnit#1203480]
(608) Join
Arguments: Inner, ((plantUuid#1203429 = plant#1203438) AND (productUuid#1203431 = product#1203437))
(609) Filter
Arguments: (calculationDateTime#1203425 <= orderDateTime#1203439)
(610) Project
Arguments: [plantUuid#1203429 AS plant#1203481, productUuid#1203431 AS product#1203482, storageLocId#1203432, calculationDateTime#1203425, quantity#1203434]
(611) Aggregate
Arguments: [plant#1203481, product#1203482, storageLocId#1203432], [plant#1203481, product#1203482, storageLocId#1203432, max(calculationDateTime#1203425) AS max_calc_datetime#1203483]
(612) Join
Arguments: Inner, ((((plant#1203344 <=> plant#1203481) AND (product#1203345 <=> product#1203482)) AND (storageLocId#1203295 <=> storageLocId#1203432)) AND (calculationDateTime#1203288 <=> max_calc_datetime#1203483))
(613) Project
Arguments: [plant#1203344, product#1203345, storageLocId#1203295, calculationDateTime#1203288, quantity#1203297]
(614) Aggregate
Arguments: [product#1203345, plant#1203344], [product#1203345, plant#1203344, sum(quantity#1203297) AS quantitySum#1203484, min(calculationDateTime#1203288) AS minCalculationDateTime#1203485]
(615) Project
Arguments: [product#1203345, plant#1203344, quantitySum#1203484, minCalculationDateTime#1203485, round(quantitySum#1203484, 0) AS roundedQuantitySum#1203486]
(616) Join
Arguments: LeftOuter, ((plant#1203166 = plant#1203344) AND (product#1203165 = product#1203345))
(617) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, outboundUnit#1203208, roundedQuantitySum#1203486, minCalculationDateTime#1203485]
(618) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, outboundUnit#1203208, roundedQuantitySum#1203486, minCalculationDateTime#1203485, CASE WHEN isnotnull(minCalculationDateTime#1203485) THEN minCalculationDateTime#1203485 ELSE orderDateTime#1203167 END AS stockDatetime#1203487]
(619) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, outboundUnit#1203208, roundedQuantitySum#1203486, minCalculationDateTime#1203485, stockDatetime#1203487, CASE WHEN isnotnull(roundedQuantitySum#1203486) THEN array(roundedQuantitySum#1203486) ELSE array(0.0) END AS stockBatchQuantities#1203488]
(620) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, outboundUnit#1203208, roundedQuantitySum#1203486, minCalculationDateTime#1203485, stockDatetime#1203487, stockBatchQuantities#1203488, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1203489]
(621) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, outboundUnit#1203208, roundedQuantitySum#1203486, stockDatetime#1203487, stockBatchQuantities#1203488, stockBatchShelfLifeEndDatetimes#1203489]
(622) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, outboundUnit#1203208, stockDatetime#1203487, stockBatchQuantities#1203488, stockBatchShelfLifeEndDatetimes#1203489]
(623) LogicalRelation
Arguments: parquet, [product#1203490, plant#1203491, orderDateTime#1203492, planningStartDateTime#1203493], false
(624) RepartitionByExpression
Arguments: [product#1203490, plant#1203491], 37
(625) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492]
(626) LogicalRelation
Arguments: parquet, [systemId#1203494, internalUUID#1203495, plant#1203496, product#1203497, blockedForReplenishmentStartingFrom#1203498, productionAspect#1203499, salesPlant#1203500, listing#1203501], false
(627) Repartition
Arguments: 37, true
(628) Project
Arguments: [systemId#1203494, internalUUID#1203495, plant#1203496, product#1203497, blockedForReplenishmentStartingFrom#1203498, productionAspect#1203499, salesPlant#1203500, listing#1203501, struct(systemId, systemId#1203494, internalUUID, internalUUID#1203495, plant, plant#1203496, product, product#1203497, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1203498, productionAspect, productionAspect#1203499, salesPlant, salesPlant#1203500, listing, listing#1203501) AS productPlant#1203502]
(629) Project
Arguments: [productPlant#1203502]
(630) Join
Arguments: LeftOuter, ((product#1203490 <=> productPlant#1203502.product.internalRefUUID) AND (plant#1203491 <=> productPlant#1203502.plant.internalRefUUID))
(631) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502]
(632) SubqueryAlias
Arguments: wl
(633) LogicalRelation
Arguments: parquet, [systemId#1203503, internalUUID#1203504, id#1203505, displayId#1203506, name#1203507, category#1203508, companyCode#1203509, address#1203510, mainDistributionChain#1203511, mainPurchasingOrganization#1203512, validPurchasingOrganizations#1203513, productGroup#1203514], false
(634) Repartition
Arguments: 37, true
(635) Project
Arguments: [internalUUID#1203504, address#1203510.timeZone.code AS timezonecode#1203515]
(636) Join
Arguments: LeftOuter, (plant#1203491 <=> internalUUID#1203504)
(637) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, internalUUID#1203504, CASE WHEN isnotnull(timezonecode#1203515) THEN timezonecode#1203515 ELSE UTC END AS timezonecode#1203516]
(638) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516]
(639) LogicalRelation
Arguments: parquet, [systemId#1203517, internalUUID#1203518, id#1203519, displayId#1203520, name#1203521, baseUnitOfMeasure#1203522, unitOfMeasures#1203523, unitOfMeasureConversions#1203524, productionAspect#1203525, salesAspect#1203526, procurementAspect#1203527, productGroup#1203528], false
(640) Repartition
Arguments: 37, true
(641) Join
Arguments: LeftOuter, (product#1203490 = internalUUID#1203518)
(642) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, systemId#1203517, internalUUID#1203518, id#1203519, displayId#1203520, name#1203521, baseUnitOfMeasure#1203522, unitOfMeasures#1203523, unitOfMeasureConversions#1203524, productionAspect#1203525, salesAspect#1203526, procurementAspect#1203527, productGroup#1203528, filter(unitOfMeasureConversions#1203524, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1203502.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1203502.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1203522.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1203522.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203529]
(643) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203529.quantityNumerator), true, [quantityNumerator#1203530]
(644) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, systemId#1203517, internalUUID#1203518, id#1203519, displayId#1203520, name#1203521, baseUnitOfMeasure#1203522, unitOfMeasures#1203523, unitOfMeasureConversions#1203524, productionAspect#1203525, salesAspect#1203526, procurementAspect#1203527, productGroup#1203528, filteredUnitOfMeasureConversions#1203529, quantityNumerator#1203530]
(645) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203529.quantityDenominator), true, [quantityDenominator#1203531]
(646) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, systemId#1203517, internalUUID#1203518, id#1203519, displayId#1203520, name#1203521, baseUnitOfMeasure#1203522, unitOfMeasures#1203523, unitOfMeasureConversions#1203524, productionAspect#1203525, salesAspect#1203526, procurementAspect#1203527, productGroup#1203528, filteredUnitOfMeasureConversions#1203529, quantityNumerator#1203530, quantityDenominator#1203531]
(647) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, systemId#1203517, internalUUID#1203518, id#1203519, displayId#1203520, name#1203521, baseUnitOfMeasure#1203522, unitOfMeasures#1203523, unitOfMeasureConversions#1203524, productionAspect#1203525, salesAspect#1203526, procurementAspect#1203527, productGroup#1203528, filteredUnitOfMeasureConversions#1203529, quantityNumerator#1203530, quantityDenominator#1203531, (cast(quantityNumerator#1203530 as double) / cast(quantityDenominator#1203531 as double)) AS outboundUnit#1203532]
(648) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, systemId#1203517, internalUUID#1203518, id#1203519, displayId#1203520, name#1203521, baseUnitOfMeasure#1203522, unitOfMeasures#1203523, unitOfMeasureConversions#1203524, productionAspect#1203525, salesAspect#1203526, procurementAspect#1203527, productGroup#1203528, filteredUnitOfMeasureConversions#1203529, quantityNumerator#1203530, quantityDenominator#1203531, CASE WHEN (isnull(outboundUnit#1203532) OR (outboundUnit#1203532 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1203532 END AS outboundUnit#1203533]
(649) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, outboundUnit#1203533]
(650) LogicalRelation
Arguments: parquet, [systemId#1203534, internalUUID#1203535, product#1203536, plant#1203537, calculationDateTime#1203538, stockQuantities#1203539], false
(651) Repartition
Arguments: 37, true
(652) LogicalRelation
Arguments: parquet, [marketUnit#1203540, description#1203541, articleHierarchy#1203542, defaultCurrency#1203543, responsibilities#1203544, replenishmentTypes#1203545, distributionCenters#1203546, assignedArticleHierarchyNodes#1203547, minOrderQtySetting#1203548, listingCheck#1203549, odsSelection#1203550, demandProfiles#1203551, constraintProfiles#1203552, optimizationProfiles#1203553, orderGroupSplitProfiles#1203554, supplierMinimumProfiles#1203555, multipleRestrictionProfiles#1203556, preferredUomSource#1203557, handlingOfUnfulfilledDemands#1203558, negligibleQuantitiesThreshold#1203559, eventtype#1203560, minOrderQtySettingInternal#1203561], false
(653) Repartition
Arguments: 37, true
(654) Filter
Arguments: (marketUnit#1203540 <=> Grocery_SS)
(655) Project
Arguments: [marketUnit#1203540, description#1203541, articleHierarchy#1203542, defaultCurrency#1203543, responsibilities#1203544, replenishmentTypes#1203545, distributionCenters#1203546, assignedArticleHierarchyNodes#1203547, minOrderQtySetting#1203548, listingCheck#1203549, odsSelection#1203550, demandProfiles#1203551, constraintProfiles#1203552, optimizationProfiles#1203553, orderGroupSplitProfiles#1203554, supplierMinimumProfiles#1203555, multipleRestrictionProfiles#1203556, preferredUomSource#1203557, handlingOfUnfulfilledDemands#1203558, negligibleQuantitiesThreshold#1203559, eventtype#1203560, minOrderQtySettingInternal#1203561]
(656) Project
Arguments: [distributionCenters#1203546]
(657) Generate
Arguments: explode(distributionCenters#1203546), false, [distributionCenters#1203562]
(658) Project
Arguments: [distributionCenters#1203562]
(659) Generate
Arguments: explode(distributionCenters#1203562.storageLocations), false, [storageLocations#1203563]
(660) Project
Arguments: [distributionCenters#1203562.id AS plantId#1203564, distributionCenters#1203562.internalRefUUID AS plantUuid#1203565, storageLocations#1203563]
(661) Project
Arguments: [plantId#1203564, plantUuid#1203565, storageLocations#1203563.id AS storageLocId#1203566, storageLocations#1203563.internalRefUUID AS storageLocUuid#1203567]
(662) LogicalRelation
Arguments: parquet, [product#1203568, plant#1203569, orderDateTime#1203570, planningStartDateTime#1203571], false
(663) RepartitionByExpression
Arguments: [product#1203568, plant#1203569], 37
(664) Project
Arguments: [product#1203568, plant#1203569, orderDateTime#1203570]
(665) LogicalRelation
Arguments: parquet, [systemId#1203572, internalUUID#1203573, plant#1203574, product#1203575, blockedForReplenishmentStartingFrom#1203576, productionAspect#1203577, salesPlant#1203578, listing#1203579], false
(666) Repartition
Arguments: 37, true
(667) Project
Arguments: [systemId#1203572, internalUUID#1203573, plant#1203574, product#1203575, blockedForReplenishmentStartingFrom#1203576, productionAspect#1203577, salesPlant#1203578, listing#1203579, struct(systemId, systemId#1203572, internalUUID, internalUUID#1203573, plant, plant#1203574, product, product#1203575, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1203576, productionAspect, productionAspect#1203577, salesPlant, salesPlant#1203578, listing, listing#1203579) AS productPlant#1203580]
(668) Project
Arguments: [productPlant#1203580]
(669) Join
Arguments: LeftOuter, ((product#1203568 <=> productPlant#1203580.product.internalRefUUID) AND (plant#1203569 <=> productPlant#1203580.plant.internalRefUUID))
(670) Project
Arguments: [product#1203568, plant#1203569, orderDateTime#1203570, productPlant#1203580]
(671) SubqueryAlias
Arguments: wl
(672) LogicalRelation
Arguments: parquet, [systemId#1203581, internalUUID#1203582, id#1203583, displayId#1203584, name#1203585, category#1203586, companyCode#1203587, address#1203588, mainDistributionChain#1203589, mainPurchasingOrganization#1203590, validPurchasingOrganizations#1203591, productGroup#1203592], false
(673) Repartition
Arguments: 37, true
(674) Project
Arguments: [internalUUID#1203582, address#1203588.timeZone.code AS timezonecode#1203593]
(675) Join
Arguments: LeftOuter, (plant#1203569 <=> internalUUID#1203582)
(676) Project
Arguments: [product#1203568, plant#1203569, orderDateTime#1203570, productPlant#1203580, internalUUID#1203582, CASE WHEN isnotnull(timezonecode#1203593) THEN timezonecode#1203593 ELSE UTC END AS timezonecode#1203594]
(677) Project
Arguments: [product#1203568, plant#1203569, orderDateTime#1203570, productPlant#1203580, timezonecode#1203594]
(678) LogicalRelation
Arguments: parquet, [systemId#1203595, internalUUID#1203596, id#1203597, displayId#1203598, name#1203599, baseUnitOfMeasure#1203600, unitOfMeasures#1203601, unitOfMeasureConversions#1203602, productionAspect#1203603, salesAspect#1203604, procurementAspect#1203605, productGroup#1203606], false
(679) Repartition
Arguments: 37, true
(680) Join
Arguments: LeftOuter, (product#1203568 = internalUUID#1203596)
(681) Project
Arguments: [product#1203568, plant#1203569, orderDateTime#1203570, productPlant#1203580, timezonecode#1203594, systemId#1203595, internalUUID#1203596, id#1203597, displayId#1203598, name#1203599, baseUnitOfMeasure#1203600, unitOfMeasures#1203601, unitOfMeasureConversions#1203602, productionAspect#1203603, salesAspect#1203604, procurementAspect#1203605, productGroup#1203606, filter(unitOfMeasureConversions#1203602, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1203580.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1203580.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1203600.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1203600.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203607]
(682) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203607.quantityNumerator), true, [quantityNumerator#1203608]
(683) Project
Arguments: [product#1203568, plant#1203569, orderDateTime#1203570, productPlant#1203580, timezonecode#1203594, systemId#1203595, internalUUID#1203596, id#1203597, displayId#1203598, name#1203599, baseUnitOfMeasure#1203600, unitOfMeasures#1203601, unitOfMeasureConversions#1203602, productionAspect#1203603, salesAspect#1203604, procurementAspect#1203605, productGroup#1203606, filteredUnitOfMeasureConversions#1203607, quantityNumerator#1203608]
(684) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203607.quantityDenominator), true, [quantityDenominator#1203609]
(685) Project
Arguments: [product#1203568, plant#1203569, orderDateTime#1203570, productPlant#1203580, timezonecode#1203594, systemId#1203595, internalUUID#1203596, id#1203597, displayId#1203598, name#1203599, baseUnitOfMeasure#1203600, unitOfMeasures#1203601, unitOfMeasureConversions#1203602, productionAspect#1203603, salesAspect#1203604, procurementAspect#1203605, productGroup#1203606, filteredUnitOfMeasureConversions#1203607, quantityNumerator#1203608, quantityDenominator#1203609]
(686) Project
Arguments: [product#1203568, plant#1203569, orderDateTime#1203570, productPlant#1203580, timezonecode#1203594, systemId#1203595, internalUUID#1203596, id#1203597, displayId#1203598, name#1203599, baseUnitOfMeasure#1203600, unitOfMeasures#1203601, unitOfMeasureConversions#1203602, productionAspect#1203603, salesAspect#1203604, procurementAspect#1203605, productGroup#1203606, filteredUnitOfMeasureConversions#1203607, quantityNumerator#1203608, quantityDenominator#1203609, (cast(quantityNumerator#1203608 as double) / cast(quantityDenominator#1203609 as double)) AS outboundUnit#1203610]
(687) Project
Arguments: [product#1203568, plant#1203569, orderDateTime#1203570, productPlant#1203580, timezonecode#1203594, systemId#1203595, internalUUID#1203596, id#1203597, displayId#1203598, name#1203599, baseUnitOfMeasure#1203600, unitOfMeasures#1203601, unitOfMeasureConversions#1203602, productionAspect#1203603, salesAspect#1203604, procurementAspect#1203605, productGroup#1203606, filteredUnitOfMeasureConversions#1203607, quantityNumerator#1203608, quantityDenominator#1203609, CASE WHEN (isnull(outboundUnit#1203610) OR (outboundUnit#1203610 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1203610 END AS outboundUnit#1203611]
(688) Project
Arguments: [product#1203568, plant#1203569, orderDateTime#1203570, productPlant#1203580, timezonecode#1203594, outboundUnit#1203611]
(689) Project
Arguments: [plant#1203569]
(690) Deduplicate
Arguments: [plant#1203569]
(691) Join
Arguments: Inner, (plantUuid#1203565 = plant#1203569)
(692) Project
Arguments: [plantId#1203564, plantUuid#1203565, storageLocId#1203566, storageLocUuid#1203567]
(693) Join
Arguments: Inner, (plant#1203537.internalRefUUID <=> plantUuid#1203565)
(694) Generate
Arguments: explode(filter(stockQuantities#1203539, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1203567) AND (lambda x#1200047.storageLocation.Id = storageLocId#1203566)), lambda x#1200047, false))), false, [stockQuantity#1203612]
(695) Project
Arguments: [systemId#1203534, internalUUID#1203535, product#1203536, plant#1203537, calculationDateTime#1203538, stockQuantities#1203539, plantId#1203564, plantUuid#1203565, storageLocId#1203566, storageLocUuid#1203567, stockQuantity#1203612]
(696) Aggregate
Arguments: [plantUuid#1203565, internalUUID#1203535, plant#1203537, product#1203536, systemId#1203534], [plantUuid#1203565, internalUUID#1203535, plant#1203537, product#1203536, systemId#1203534, first(calculationDateTime#1203538, false) AS calculationDateTime#1203613, collect_list(stockQuantity#1203612, 0, 0) AS stockQuantities#1203614]
(697) Project
Arguments: [systemId#1203534, internalUUID#1203535, product#1203536, plant#1203537, calculationDateTime#1203613, stockQuantities#1203614]
(698) Generate
Arguments: explode(stockQuantities#1203614), false, [stockQuantity#1203615]
(699) Project
Arguments: [systemId#1203534, internalUUID#1203535, product#1203536, plant#1203537, calculationDateTime#1203613, stockQuantities#1203614, stockQuantity#1203615]
(700) Project
Arguments: [plant#1203537.id AS plant#1203616, plant#1203537.internalRefUUID AS plantUuid#1203617, product#1203536.id AS product#1203618, product#1203536.internalRefUUID AS productUuid#1203619, calculationDateTime#1203613, stockQuantity#1203615.storagelocation.id AS storageLocId#1203620, stockQuantity#1203615.storagelocation.internalRefUUID AS storageLocUuid#1203621, stockQuantity#1203615.quantity.measure AS quantity#1203622, stockQuantity#1203615.specialStockIndicator.code AS specialStockIndicator#1203623, stockQuantity#1203615.stockType.code AS stockType#1203624]
(701) Filter
Arguments: ((specialStockIndicator#1203623 = ) AND (stockType#1203624 = 01))
(702) LogicalRelation
Arguments: parquet, [product#1203625, plant#1203626, orderDateTime#1203627, planningStartDateTime#1203628], false
(703) RepartitionByExpression
Arguments: [product#1203625, plant#1203626], 37
(704) Project
Arguments: [product#1203625, plant#1203626, orderDateTime#1203627]
(705) LogicalRelation
Arguments: parquet, [systemId#1203629, internalUUID#1203630, plant#1203631, product#1203632, blockedForReplenishmentStartingFrom#1203633, productionAspect#1203634, salesPlant#1203635, listing#1203636], false
(706) Repartition
Arguments: 37, true
(707) Project
Arguments: [systemId#1203629, internalUUID#1203630, plant#1203631, product#1203632, blockedForReplenishmentStartingFrom#1203633, productionAspect#1203634, salesPlant#1203635, listing#1203636, struct(systemId, systemId#1203629, internalUUID, internalUUID#1203630, plant, plant#1203631, product, product#1203632, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1203633, productionAspect, productionAspect#1203634, salesPlant, salesPlant#1203635, listing, listing#1203636) AS productPlant#1203637]
(708) Project
Arguments: [productPlant#1203637]
(709) Join
Arguments: LeftOuter, ((product#1203625 <=> productPlant#1203637.product.internalRefUUID) AND (plant#1203626 <=> productPlant#1203637.plant.internalRefUUID))
(710) Project
Arguments: [product#1203625, plant#1203626, orderDateTime#1203627, productPlant#1203637]
(711) SubqueryAlias
Arguments: wl
(712) LogicalRelation
Arguments: parquet, [systemId#1203638, internalUUID#1203639, id#1203640, displayId#1203641, name#1203642, category#1203643, companyCode#1203644, address#1203645, mainDistributionChain#1203646, mainPurchasingOrganization#1203647, validPurchasingOrganizations#1203648, productGroup#1203649], false
(713) Repartition
Arguments: 37, true
(714) Project
Arguments: [internalUUID#1203639, address#1203645.timeZone.code AS timezonecode#1203650]
(715) Join
Arguments: LeftOuter, (plant#1203626 <=> internalUUID#1203639)
(716) Project
Arguments: [product#1203625, plant#1203626, orderDateTime#1203627, productPlant#1203637, internalUUID#1203639, CASE WHEN isnotnull(timezonecode#1203650) THEN timezonecode#1203650 ELSE UTC END AS timezonecode#1203651]
(717) Project
Arguments: [product#1203625, plant#1203626, orderDateTime#1203627, productPlant#1203637, timezonecode#1203651]
(718) LogicalRelation
Arguments: parquet, [systemId#1203652, internalUUID#1203653, id#1203654, displayId#1203655, name#1203656, baseUnitOfMeasure#1203657, unitOfMeasures#1203658, unitOfMeasureConversions#1203659, productionAspect#1203660, salesAspect#1203661, procurementAspect#1203662, productGroup#1203663], false
(719) Repartition
Arguments: 37, true
(720) Join
Arguments: LeftOuter, (product#1203625 = internalUUID#1203653)
(721) Project
Arguments: [product#1203625, plant#1203626, orderDateTime#1203627, productPlant#1203637, timezonecode#1203651, systemId#1203652, internalUUID#1203653, id#1203654, displayId#1203655, name#1203656, baseUnitOfMeasure#1203657, unitOfMeasures#1203658, unitOfMeasureConversions#1203659, productionAspect#1203660, salesAspect#1203661, procurementAspect#1203662, productGroup#1203663, filter(unitOfMeasureConversions#1203659, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1203637.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1203637.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1203657.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1203657.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203664]
(722) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203664.quantityNumerator), true, [quantityNumerator#1203665]
(723) Project
Arguments: [product#1203625, plant#1203626, orderDateTime#1203627, productPlant#1203637, timezonecode#1203651, systemId#1203652, internalUUID#1203653, id#1203654, displayId#1203655, name#1203656, baseUnitOfMeasure#1203657, unitOfMeasures#1203658, unitOfMeasureConversions#1203659, productionAspect#1203660, salesAspect#1203661, procurementAspect#1203662, productGroup#1203663, filteredUnitOfMeasureConversions#1203664, quantityNumerator#1203665]
(724) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203664.quantityDenominator), true, [quantityDenominator#1203666]
(725) Project
Arguments: [product#1203625, plant#1203626, orderDateTime#1203627, productPlant#1203637, timezonecode#1203651, systemId#1203652, internalUUID#1203653, id#1203654, displayId#1203655, name#1203656, baseUnitOfMeasure#1203657, unitOfMeasures#1203658, unitOfMeasureConversions#1203659, productionAspect#1203660, salesAspect#1203661, procurementAspect#1203662, productGroup#1203663, filteredUnitOfMeasureConversions#1203664, quantityNumerator#1203665, quantityDenominator#1203666]
(726) Project
Arguments: [product#1203625, plant#1203626, orderDateTime#1203627, productPlant#1203637, timezonecode#1203651, systemId#1203652, internalUUID#1203653, id#1203654, displayId#1203655, name#1203656, baseUnitOfMeasure#1203657, unitOfMeasures#1203658, unitOfMeasureConversions#1203659, productionAspect#1203660, salesAspect#1203661, procurementAspect#1203662, productGroup#1203663, filteredUnitOfMeasureConversions#1203664, quantityNumerator#1203665, quantityDenominator#1203666, (cast(quantityNumerator#1203665 as double) / cast(quantityDenominator#1203666 as double)) AS outboundUnit#1203667]
(727) Project
Arguments: [product#1203625, plant#1203626, orderDateTime#1203627, productPlant#1203637, timezonecode#1203651, systemId#1203652, internalUUID#1203653, id#1203654, displayId#1203655, name#1203656, baseUnitOfMeasure#1203657, unitOfMeasures#1203658, unitOfMeasureConversions#1203659, productionAspect#1203660, salesAspect#1203661, procurementAspect#1203662, productGroup#1203663, filteredUnitOfMeasureConversions#1203664, quantityNumerator#1203665, quantityDenominator#1203666, CASE WHEN (isnull(outboundUnit#1203667) OR (outboundUnit#1203667 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1203667 END AS outboundUnit#1203668]
(728) Project
Arguments: [product#1203625, plant#1203626, orderDateTime#1203627, productPlant#1203637, timezonecode#1203651, outboundUnit#1203668]
(729) Join
Arguments: Inner, ((plantUuid#1203617 = plant#1203626) AND (productUuid#1203619 = product#1203625))
(730) Filter
Arguments: (calculationDateTime#1203613 <= orderDateTime#1203627)
(731) Project
Arguments: [plantUuid#1203617 AS plant#1203669, productUuid#1203619 AS product#1203670, storageLocId#1203620, calculationDateTime#1203613, quantity#1203622]
(732) LogicalRelation
Arguments: parquet, [systemId#1203671, internalUUID#1203672, product#1203673, plant#1203674, calculationDateTime#1203675, stockQuantities#1203676], false
(733) Repartition
Arguments: 37, true
(734) LogicalRelation
Arguments: parquet, [marketUnit#1203677, description#1203678, articleHierarchy#1203679, defaultCurrency#1203680, responsibilities#1203681, replenishmentTypes#1203682, distributionCenters#1203683, assignedArticleHierarchyNodes#1203684, minOrderQtySetting#1203685, listingCheck#1203686, odsSelection#1203687, demandProfiles#1203688, constraintProfiles#1203689, optimizationProfiles#1203690, orderGroupSplitProfiles#1203691, supplierMinimumProfiles#1203692, multipleRestrictionProfiles#1203693, preferredUomSource#1203694, handlingOfUnfulfilledDemands#1203695, negligibleQuantitiesThreshold#1203696, eventtype#1203697, minOrderQtySettingInternal#1203698], false
(735) Repartition
Arguments: 37, true
(736) Filter
Arguments: (marketUnit#1203677 <=> Grocery_SS)
(737) Project
Arguments: [marketUnit#1203677, description#1203678, articleHierarchy#1203679, defaultCurrency#1203680, responsibilities#1203681, replenishmentTypes#1203682, distributionCenters#1203683, assignedArticleHierarchyNodes#1203684, minOrderQtySetting#1203685, listingCheck#1203686, odsSelection#1203687, demandProfiles#1203688, constraintProfiles#1203689, optimizationProfiles#1203690, orderGroupSplitProfiles#1203691, supplierMinimumProfiles#1203692, multipleRestrictionProfiles#1203693, preferredUomSource#1203694, handlingOfUnfulfilledDemands#1203695, negligibleQuantitiesThreshold#1203696, eventtype#1203697, minOrderQtySettingInternal#1203698]
(738) Project
Arguments: [distributionCenters#1203683]
(739) Generate
Arguments: explode(distributionCenters#1203683), false, [distributionCenters#1203699]
(740) Project
Arguments: [distributionCenters#1203699]
(741) Generate
Arguments: explode(distributionCenters#1203699.storageLocations), false, [storageLocations#1203700]
(742) Project
Arguments: [distributionCenters#1203699.id AS plantId#1203701, distributionCenters#1203699.internalRefUUID AS plantUuid#1203702, storageLocations#1203700]
(743) Project
Arguments: [plantId#1203701, plantUuid#1203702, storageLocations#1203700.id AS storageLocId#1203703, storageLocations#1203700.internalRefUUID AS storageLocUuid#1203704]
(744) LogicalRelation
Arguments: parquet, [product#1203705, plant#1203706, orderDateTime#1203707, planningStartDateTime#1203708], false
(745) RepartitionByExpression
Arguments: [product#1203705, plant#1203706], 37
(746) Project
Arguments: [product#1203705, plant#1203706, orderDateTime#1203707]
(747) LogicalRelation
Arguments: parquet, [systemId#1203709, internalUUID#1203710, plant#1203711, product#1203712, blockedForReplenishmentStartingFrom#1203713, productionAspect#1203714, salesPlant#1203715, listing#1203716], false
(748) Repartition
Arguments: 37, true
(749) Project
Arguments: [systemId#1203709, internalUUID#1203710, plant#1203711, product#1203712, blockedForReplenishmentStartingFrom#1203713, productionAspect#1203714, salesPlant#1203715, listing#1203716, struct(systemId, systemId#1203709, internalUUID, internalUUID#1203710, plant, plant#1203711, product, product#1203712, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1203713, productionAspect, productionAspect#1203714, salesPlant, salesPlant#1203715, listing, listing#1203716) AS productPlant#1203717]
(750) Project
Arguments: [productPlant#1203717]
(751) Join
Arguments: LeftOuter, ((product#1203705 <=> productPlant#1203717.product.internalRefUUID) AND (plant#1203706 <=> productPlant#1203717.plant.internalRefUUID))
(752) Project
Arguments: [product#1203705, plant#1203706, orderDateTime#1203707, productPlant#1203717]
(753) SubqueryAlias
Arguments: wl
(754) LogicalRelation
Arguments: parquet, [systemId#1203718, internalUUID#1203719, id#1203720, displayId#1203721, name#1203722, category#1203723, companyCode#1203724, address#1203725, mainDistributionChain#1203726, mainPurchasingOrganization#1203727, validPurchasingOrganizations#1203728, productGroup#1203729], false
(755) Repartition
Arguments: 37, true
(756) Project
Arguments: [internalUUID#1203719, address#1203725.timeZone.code AS timezonecode#1203730]
(757) Join
Arguments: LeftOuter, (plant#1203706 <=> internalUUID#1203719)
(758) Project
Arguments: [product#1203705, plant#1203706, orderDateTime#1203707, productPlant#1203717, internalUUID#1203719, CASE WHEN isnotnull(timezonecode#1203730) THEN timezonecode#1203730 ELSE UTC END AS timezonecode#1203731]
(759) Project
Arguments: [product#1203705, plant#1203706, orderDateTime#1203707, productPlant#1203717, timezonecode#1203731]
(760) LogicalRelation
Arguments: parquet, [systemId#1203732, internalUUID#1203733, id#1203734, displayId#1203735, name#1203736, baseUnitOfMeasure#1203737, unitOfMeasures#1203738, unitOfMeasureConversions#1203739, productionAspect#1203740, salesAspect#1203741, procurementAspect#1203742, productGroup#1203743], false
(761) Repartition
Arguments: 37, true
(762) Join
Arguments: LeftOuter, (product#1203705 = internalUUID#1203733)
(763) Project
Arguments: [product#1203705, plant#1203706, orderDateTime#1203707, productPlant#1203717, timezonecode#1203731, systemId#1203732, internalUUID#1203733, id#1203734, displayId#1203735, name#1203736, baseUnitOfMeasure#1203737, unitOfMeasures#1203738, unitOfMeasureConversions#1203739, productionAspect#1203740, salesAspect#1203741, procurementAspect#1203742, productGroup#1203743, filter(unitOfMeasureConversions#1203739, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1203717.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1203717.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1203737.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1203737.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203744]
(764) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203744.quantityNumerator), true, [quantityNumerator#1203745]
(765) Project
Arguments: [product#1203705, plant#1203706, orderDateTime#1203707, productPlant#1203717, timezonecode#1203731, systemId#1203732, internalUUID#1203733, id#1203734, displayId#1203735, name#1203736, baseUnitOfMeasure#1203737, unitOfMeasures#1203738, unitOfMeasureConversions#1203739, productionAspect#1203740, salesAspect#1203741, procurementAspect#1203742, productGroup#1203743, filteredUnitOfMeasureConversions#1203744, quantityNumerator#1203745]
(766) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203744.quantityDenominator), true, [quantityDenominator#1203746]
(767) Project
Arguments: [product#1203705, plant#1203706, orderDateTime#1203707, productPlant#1203717, timezonecode#1203731, systemId#1203732, internalUUID#1203733, id#1203734, displayId#1203735, name#1203736, baseUnitOfMeasure#1203737, unitOfMeasures#1203738, unitOfMeasureConversions#1203739, productionAspect#1203740, salesAspect#1203741, procurementAspect#1203742, productGroup#1203743, filteredUnitOfMeasureConversions#1203744, quantityNumerator#1203745, quantityDenominator#1203746]
(768) Project
Arguments: [product#1203705, plant#1203706, orderDateTime#1203707, productPlant#1203717, timezonecode#1203731, systemId#1203732, internalUUID#1203733, id#1203734, displayId#1203735, name#1203736, baseUnitOfMeasure#1203737, unitOfMeasures#1203738, unitOfMeasureConversions#1203739, productionAspect#1203740, salesAspect#1203741, procurementAspect#1203742, productGroup#1203743, filteredUnitOfMeasureConversions#1203744, quantityNumerator#1203745, quantityDenominator#1203746, (cast(quantityNumerator#1203745 as double) / cast(quantityDenominator#1203746 as double)) AS outboundUnit#1203747]
(769) Project
Arguments: [product#1203705, plant#1203706, orderDateTime#1203707, productPlant#1203717, timezonecode#1203731, systemId#1203732, internalUUID#1203733, id#1203734, displayId#1203735, name#1203736, baseUnitOfMeasure#1203737, unitOfMeasures#1203738, unitOfMeasureConversions#1203739, productionAspect#1203740, salesAspect#1203741, procurementAspect#1203742, productGroup#1203743, filteredUnitOfMeasureConversions#1203744, quantityNumerator#1203745, quantityDenominator#1203746, CASE WHEN (isnull(outboundUnit#1203747) OR (outboundUnit#1203747 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1203747 END AS outboundUnit#1203748]
(770) Project
Arguments: [product#1203705, plant#1203706, orderDateTime#1203707, productPlant#1203717, timezonecode#1203731, outboundUnit#1203748]
(771) Project
Arguments: [plant#1203706]
(772) Deduplicate
Arguments: [plant#1203706]
(773) Join
Arguments: Inner, (plantUuid#1203702 = plant#1203706)
(774) Project
Arguments: [plantId#1203701, plantUuid#1203702, storageLocId#1203703, storageLocUuid#1203704]
(775) Join
Arguments: Inner, (plant#1203674.internalRefUUID <=> plantUuid#1203702)
(776) Generate
Arguments: explode(filter(stockQuantities#1203676, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1203704) AND (lambda x#1200047.storageLocation.Id = storageLocId#1203703)), lambda x#1200047, false))), false, [stockQuantity#1203749]
(777) Project
Arguments: [systemId#1203671, internalUUID#1203672, product#1203673, plant#1203674, calculationDateTime#1203675, stockQuantities#1203676, plantId#1203701, plantUuid#1203702, storageLocId#1203703, storageLocUuid#1203704, stockQuantity#1203749]
(778) Aggregate
Arguments: [plantUuid#1203702, internalUUID#1203672, plant#1203674, product#1203673, systemId#1203671], [plantUuid#1203702, internalUUID#1203672, plant#1203674, product#1203673, systemId#1203671, first(calculationDateTime#1203675, false) AS calculationDateTime#1203750, collect_list(stockQuantity#1203749, 0, 0) AS stockQuantities#1203751]
(779) Project
Arguments: [systemId#1203671, internalUUID#1203672, product#1203673, plant#1203674, calculationDateTime#1203750, stockQuantities#1203751]
(780) Generate
Arguments: explode(stockQuantities#1203751), false, [stockQuantity#1203752]
(781) Project
Arguments: [systemId#1203671, internalUUID#1203672, product#1203673, plant#1203674, calculationDateTime#1203750, stockQuantities#1203751, stockQuantity#1203752]
(782) Project
Arguments: [plant#1203674.id AS plant#1203753, plant#1203674.internalRefUUID AS plantUuid#1203754, product#1203673.id AS product#1203755, product#1203673.internalRefUUID AS productUuid#1203756, calculationDateTime#1203750, stockQuantity#1203752.storagelocation.id AS storageLocId#1203757, stockQuantity#1203752.storagelocation.internalRefUUID AS storageLocUuid#1203758, stockQuantity#1203752.quantity.measure AS quantity#1203759, stockQuantity#1203752.specialStockIndicator.code AS specialStockIndicator#1203760, stockQuantity#1203752.stockType.code AS stockType#1203761]
(783) Filter
Arguments: ((specialStockIndicator#1203760 = ) AND (stockType#1203761 = 01))
(784) LogicalRelation
Arguments: parquet, [product#1203762, plant#1203763, orderDateTime#1203764, planningStartDateTime#1203765], false
(785) RepartitionByExpression
Arguments: [product#1203762, plant#1203763], 37
(786) Project
Arguments: [product#1203762, plant#1203763, orderDateTime#1203764]
(787) LogicalRelation
Arguments: parquet, [systemId#1203766, internalUUID#1203767, plant#1203768, product#1203769, blockedForReplenishmentStartingFrom#1203770, productionAspect#1203771, salesPlant#1203772, listing#1203773], false
(788) Repartition
Arguments: 37, true
(789) Project
Arguments: [systemId#1203766, internalUUID#1203767, plant#1203768, product#1203769, blockedForReplenishmentStartingFrom#1203770, productionAspect#1203771, salesPlant#1203772, listing#1203773, struct(systemId, systemId#1203766, internalUUID, internalUUID#1203767, plant, plant#1203768, product, product#1203769, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1203770, productionAspect, productionAspect#1203771, salesPlant, salesPlant#1203772, listing, listing#1203773) AS productPlant#1203774]
(790) Project
Arguments: [productPlant#1203774]
(791) Join
Arguments: LeftOuter, ((product#1203762 <=> productPlant#1203774.product.internalRefUUID) AND (plant#1203763 <=> productPlant#1203774.plant.internalRefUUID))
(792) Project
Arguments: [product#1203762, plant#1203763, orderDateTime#1203764, productPlant#1203774]
(793) SubqueryAlias
Arguments: wl
(794) LogicalRelation
Arguments: parquet, [systemId#1203775, internalUUID#1203776, id#1203777, displayId#1203778, name#1203779, category#1203780, companyCode#1203781, address#1203782, mainDistributionChain#1203783, mainPurchasingOrganization#1203784, validPurchasingOrganizations#1203785, productGroup#1203786], false
(795) Repartition
Arguments: 37, true
(796) Project
Arguments: [internalUUID#1203776, address#1203782.timeZone.code AS timezonecode#1203787]
(797) Join
Arguments: LeftOuter, (plant#1203763 <=> internalUUID#1203776)
(798) Project
Arguments: [product#1203762, plant#1203763, orderDateTime#1203764, productPlant#1203774, internalUUID#1203776, CASE WHEN isnotnull(timezonecode#1203787) THEN timezonecode#1203787 ELSE UTC END AS timezonecode#1203788]
(799) Project
Arguments: [product#1203762, plant#1203763, orderDateTime#1203764, productPlant#1203774, timezonecode#1203788]
(800) LogicalRelation
Arguments: parquet, [systemId#1203789, internalUUID#1203790, id#1203791, displayId#1203792, name#1203793, baseUnitOfMeasure#1203794, unitOfMeasures#1203795, unitOfMeasureConversions#1203796, productionAspect#1203797, salesAspect#1203798, procurementAspect#1203799, productGroup#1203800], false
(801) Repartition
Arguments: 37, true
(802) Join
Arguments: LeftOuter, (product#1203762 = internalUUID#1203790)
(803) Project
Arguments: [product#1203762, plant#1203763, orderDateTime#1203764, productPlant#1203774, timezonecode#1203788, systemId#1203789, internalUUID#1203790, id#1203791, displayId#1203792, name#1203793, baseUnitOfMeasure#1203794, unitOfMeasures#1203795, unitOfMeasureConversions#1203796, productionAspect#1203797, salesAspect#1203798, procurementAspect#1203799, productGroup#1203800, filter(unitOfMeasureConversions#1203796, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1203774.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1203774.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1203794.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1203794.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203801]
(804) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203801.quantityNumerator), true, [quantityNumerator#1203802]
(805) Project
Arguments: [product#1203762, plant#1203763, orderDateTime#1203764, productPlant#1203774, timezonecode#1203788, systemId#1203789, internalUUID#1203790, id#1203791, displayId#1203792, name#1203793, baseUnitOfMeasure#1203794, unitOfMeasures#1203795, unitOfMeasureConversions#1203796, productionAspect#1203797, salesAspect#1203798, procurementAspect#1203799, productGroup#1203800, filteredUnitOfMeasureConversions#1203801, quantityNumerator#1203802]
(806) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203801.quantityDenominator), true, [quantityDenominator#1203803]
(807) Project
Arguments: [product#1203762, plant#1203763, orderDateTime#1203764, productPlant#1203774, timezonecode#1203788, systemId#1203789, internalUUID#1203790, id#1203791, displayId#1203792, name#1203793, baseUnitOfMeasure#1203794, unitOfMeasures#1203795, unitOfMeasureConversions#1203796, productionAspect#1203797, salesAspect#1203798, procurementAspect#1203799, productGroup#1203800, filteredUnitOfMeasureConversions#1203801, quantityNumerator#1203802, quantityDenominator#1203803]
(808) Project
Arguments: [product#1203762, plant#1203763, orderDateTime#1203764, productPlant#1203774, timezonecode#1203788, systemId#1203789, internalUUID#1203790, id#1203791, displayId#1203792, name#1203793, baseUnitOfMeasure#1203794, unitOfMeasures#1203795, unitOfMeasureConversions#1203796, productionAspect#1203797, salesAspect#1203798, procurementAspect#1203799, productGroup#1203800, filteredUnitOfMeasureConversions#1203801, quantityNumerator#1203802, quantityDenominator#1203803, (cast(quantityNumerator#1203802 as double) / cast(quantityDenominator#1203803 as double)) AS outboundUnit#1203804]
(809) Project
Arguments: [product#1203762, plant#1203763, orderDateTime#1203764, productPlant#1203774, timezonecode#1203788, systemId#1203789, internalUUID#1203790, id#1203791, displayId#1203792, name#1203793, baseUnitOfMeasure#1203794, unitOfMeasures#1203795, unitOfMeasureConversions#1203796, productionAspect#1203797, salesAspect#1203798, procurementAspect#1203799, productGroup#1203800, filteredUnitOfMeasureConversions#1203801, quantityNumerator#1203802, quantityDenominator#1203803, CASE WHEN (isnull(outboundUnit#1203804) OR (outboundUnit#1203804 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1203804 END AS outboundUnit#1203805]
(810) Project
Arguments: [product#1203762, plant#1203763, orderDateTime#1203764, productPlant#1203774, timezonecode#1203788, outboundUnit#1203805]
(811) Join
Arguments: Inner, ((plantUuid#1203754 = plant#1203763) AND (productUuid#1203756 = product#1203762))
(812) Filter
Arguments: (calculationDateTime#1203750 <= orderDateTime#1203764)
(813) Project
Arguments: [plantUuid#1203754 AS plant#1203806, productUuid#1203756 AS product#1203807, storageLocId#1203757, calculationDateTime#1203750, quantity#1203759]
(814) Aggregate
Arguments: [plant#1203806, product#1203807, storageLocId#1203757], [plant#1203806, product#1203807, storageLocId#1203757, max(calculationDateTime#1203750) AS max_calc_datetime#1203808]
(815) Join
Arguments: Inner, ((((plant#1203669 <=> plant#1203806) AND (product#1203670 <=> product#1203807)) AND (storageLocId#1203620 <=> storageLocId#1203757)) AND (calculationDateTime#1203613 <=> max_calc_datetime#1203808))
(816) Project
Arguments: [plant#1203669, product#1203670, storageLocId#1203620, calculationDateTime#1203613, quantity#1203622]
(817) Aggregate
Arguments: [product#1203670, plant#1203669], [product#1203670, plant#1203669, sum(quantity#1203622) AS quantitySum#1203809, min(calculationDateTime#1203613) AS minCalculationDateTime#1203810]
(818) Project
Arguments: [product#1203670, plant#1203669, quantitySum#1203809, minCalculationDateTime#1203810, round(quantitySum#1203809, 0) AS roundedQuantitySum#1203811]
(819) Join
Arguments: LeftOuter, ((plant#1203491 = plant#1203669) AND (product#1203490 = product#1203670))
(820) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, outboundUnit#1203533, roundedQuantitySum#1203811, minCalculationDateTime#1203810]
(821) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, outboundUnit#1203533, roundedQuantitySum#1203811, minCalculationDateTime#1203810, CASE WHEN isnotnull(minCalculationDateTime#1203810) THEN minCalculationDateTime#1203810 ELSE orderDateTime#1203492 END AS stockDatetime#1203812]
(822) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, outboundUnit#1203533, roundedQuantitySum#1203811, minCalculationDateTime#1203810, stockDatetime#1203812, CASE WHEN isnotnull(roundedQuantitySum#1203811) THEN array(roundedQuantitySum#1203811) ELSE array(0.0) END AS stockBatchQuantities#1203813]
(823) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, outboundUnit#1203533, roundedQuantitySum#1203811, minCalculationDateTime#1203810, stockDatetime#1203812, stockBatchQuantities#1203813, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1203814]
(824) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, outboundUnit#1203533, roundedQuantitySum#1203811, stockDatetime#1203812, stockBatchQuantities#1203813, stockBatchShelfLifeEndDatetimes#1203814]
(825) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, outboundUnit#1203533, stockDatetime#1203812, stockBatchQuantities#1203813, stockBatchShelfLifeEndDatetimes#1203814]
(826) LogicalRelation
Arguments: parquet, [product#1203815, plant#1203816, demandChannel#1203817, demandStream#1203818, considerVariance#1203819, demandTimeBuckets#1203820, demandPointInTimeStart#1203821, demandPointInTimeEnd#1203822, demandPointInTime#1203823], false
(827) Join
Arguments: LeftOuter, ((product#1203490 = product#1203815) AND (plant#1203491 = plant#1203816))
(828) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, outboundUnit#1203533, stockDatetime#1203812, stockBatchQuantities#1203813, stockBatchShelfLifeEndDatetimes#1203814, demandChannel#1203817, demandStream#1203818, considerVariance#1203819, demandTimeBuckets#1203820, demandPointInTimeStart#1203821, demandPointInTimeEnd#1203822, demandPointInTime#1203823, product#1203815, plant#1203816]
(829) Project
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, outboundUnit#1203533, stockDatetime#1203812, stockBatchQuantities#1203813, stockBatchShelfLifeEndDatetimes#1203814, demandChannel#1203817, demandStream#1203818, considerVariance#1203819, demandTimeBuckets#1203820, demandPointInTimeStart#1203821, demandPointInTimeEnd#1203822, demandPointInTime#1203823, CASE WHEN isnotnull(product#1203815) THEN struct(demandChannel, demandChannel#1203817, demandStream, demandStream#1203818, considerVariance, considerVariance#1203819, demandTimeBuckets, demandTimeBuckets#1203820, demandPointInTimeStart, demandPointInTimeStart#1203821, demandPointInTimeEnd, demandPointInTimeEnd#1203822, demandPointInTime, demandPointInTime#1203823) 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#1203824]
(830) Aggregate
Arguments: [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, outboundUnit#1203533, stockDatetime#1203812, stockBatchQuantities#1203813, stockBatchShelfLifeEndDatetimes#1203814], [product#1203490, plant#1203491, orderDateTime#1203492, productPlant#1203502, timezonecode#1203516, outboundUnit#1203533, stockDatetime#1203812, stockBatchQuantities#1203813, stockBatchShelfLifeEndDatetimes#1203814, collect_list(rawDemands#1203824, 0, 0) AS rawDemands#1203825]
(831) DeserializeToObject
Arguments: createexternalrow(invoke(product#1203490.toString()), invoke(plant#1203491.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1203492)), if (isnull(productPlant#1203502)) null else createexternalrow(invoke(productPlant#1203502.systemId.toString()), invoke(productPlant#1203502.internalUUID.toString()), if (isnull(productPlant#1203502.plant)) null else createexternalrow(invoke(productPlant#1203502.plant.internalRefUUID.toString()), invoke(productPlant#1203502.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1203502.product)) null else createexternalrow(invoke(productPlant#1203502.product.internalRefUUID.toString()), invoke(productPlant#1203502.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1203502.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1203502.productionAspect)) null else createexternalrow(if (isnull(productPlant#1203502.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1203502.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1203502.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1203502.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#1203502.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1203502.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1203502.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1203502.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1203502.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1203502.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1203502.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1203502.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1203502.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1203502.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1203502.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1203502.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1203502.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1203502.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1203502.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1203502.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1203502.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#1203502.salesPlant)) null else createexternalrow(if (isnull(productPlant#1203502.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1203502.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1203502.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, 159985), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 159985))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 159985).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 159985).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 159985).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#1203502.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#1203516.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1203533)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1203812)), mapobjects(lambdavariable(MapObject, DoubleType, true, 159986), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 159986) as double))), stockBatchQuantities#1203813, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 159987), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 159987) as timestamp)))), stockBatchShelfLifeEndDatetimes#1203814, 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, 159988), 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, 159988))) 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, 159988).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, 159988).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, 159988).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989).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, 159988).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, 159988).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, 159988).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990).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, 159988).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#1203825, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#1200410: org.apache.spark.sql.Row
(832) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008023bc120@783def9c, 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(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#1200415: org.apache.spark.sql.Row
(833) 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#1203826, 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#1203827, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159976), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159976), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159977), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159977), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159978), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159978), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159979), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159979), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159980), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159980), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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#1203828, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159982), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159982), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159983), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159983), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159984), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159984), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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#1203829]
(834) Join
Arguments: LeftOuter, ((plant#1203827 <=> plant#1203166) AND (product#1203826 <=> product#1203165))
(835) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, outboundUnit#1203208, stockDatetime#1203487, stockBatchQuantities#1203488, stockBatchShelfLifeEndDatetimes#1203489, plant#1203827, dayBucketDemands#1203828, pointInTimeDemands#1203829]
(836) Project
Arguments: [product#1203165, plant#1203166, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, outboundUnit#1203208, stockDatetime#1203487, stockBatchQuantities#1203488, stockBatchShelfLifeEndDatetimes#1203489, dayBucketDemands#1203828, pointInTimeDemands#1203829]
(837) LogicalRelation
Arguments: parquet, [marketUnit#1200813, description#1200814, articleHierarchy#1200815, defaultCurrency#1200816, responsibilities#1200817, replenishmentTypes#1200818, distributionCenters#1200819, assignedArticleHierarchyNodes#1200820, minOrderQtySetting#1200821, listingCheck#1200822, odsSelection#1200823, demandProfiles#1200824, constraintProfiles#1200825, optimizationProfiles#1200826, orderGroupSplitProfiles#1200827, supplierMinimumProfiles#1200828, multipleRestrictionProfiles#1200829, preferredUomSource#1200830, handlingOfUnfulfilledDemands#1200831, negligibleQuantitiesThreshold#1200832, eventtype#1200833, minOrderQtySettingInternal#1200834], false
(838) Repartition
Arguments: 37, true
(839) Filter
Arguments: (marketUnit#1200813 <=> Grocery_SS)
(840) Project
Arguments: [marketUnit#1200813, description#1200814, articleHierarchy#1200815, defaultCurrency#1200816, responsibilities#1200817, replenishmentTypes#1200818, distributionCenters#1200819, assignedArticleHierarchyNodes#1200820, minOrderQtySetting#1200821, listingCheck#1200822, odsSelection#1200823, demandProfiles#1200824, constraintProfiles#1200825, optimizationProfiles#1200826, orderGroupSplitProfiles#1200827, supplierMinimumProfiles#1200828, multipleRestrictionProfiles#1200829, preferredUomSource#1200830, handlingOfUnfulfilledDemands#1200831, negligibleQuantitiesThreshold#1200832, eventtype#1200833, minOrderQtySettingInternal#1200834]
(841) Project
Arguments: [distributionCenters#1200819]
(842) Generate
Arguments: explode(distributionCenters#1200819), false, [distributionCenters#1200835]
(843) Project
Arguments: [distributionCenters#1200835]
(844) Generate
Arguments: explode(distributionCenters#1200835.storageLocations), false, [storageLocations#1200836]
(845) Project
Arguments: [distributionCenters#1200835.id AS plantId#1200837, distributionCenters#1200835.internalRefUUID AS plantUuid#1200838, storageLocations#1200836]
(846) Project
Arguments: [plantId#1200837, plantUuid#1200838, storageLocations#1200836.id AS storageLocId#1200839, storageLocations#1200836.internalRefUUID AS storageLocUuid#1200840]
(847) LogicalRelation
Arguments: parquet, [product#1200841, plant#1200842, orderDateTime#1200843, planningStartDateTime#1200844], false
(848) RepartitionByExpression
Arguments: [product#1200841, plant#1200842], 37
(849) Project
Arguments: [product#1200841, plant#1200842, orderDateTime#1200843]
(850) LogicalRelation
Arguments: parquet, [systemId#1200845, internalUUID#1200846, plant#1200847, product#1200848, blockedForReplenishmentStartingFrom#1200849, productionAspect#1200850, salesPlant#1200851, listing#1200852], false
(851) Repartition
Arguments: 37, true
(852) Project
Arguments: [systemId#1200845, internalUUID#1200846, plant#1200847, product#1200848, blockedForReplenishmentStartingFrom#1200849, productionAspect#1200850, salesPlant#1200851, listing#1200852, struct(systemId, systemId#1200845, internalUUID, internalUUID#1200846, plant, plant#1200847, product, product#1200848, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1200849, productionAspect, productionAspect#1200850, salesPlant, salesPlant#1200851, listing, listing#1200852) AS productPlant#1200853]
(853) Project
Arguments: [productPlant#1200853]
(854) Join
Arguments: LeftOuter, ((product#1200841 <=> productPlant#1200853.product.internalRefUUID) AND (plant#1200842 <=> productPlant#1200853.plant.internalRefUUID))
(855) Project
Arguments: [product#1200841, plant#1200842, orderDateTime#1200843, productPlant#1200853]
(856) SubqueryAlias
Arguments: wl
(857) LogicalRelation
Arguments: parquet, [systemId#1200854, internalUUID#1200855, id#1200856, displayId#1200857, name#1200858, category#1200859, companyCode#1200860, address#1200861, mainDistributionChain#1200862, mainPurchasingOrganization#1200863, validPurchasingOrganizations#1200864, productGroup#1200865], false
(858) Repartition
Arguments: 37, true
(859) Project
Arguments: [internalUUID#1200855, address#1200861.timeZone.code AS timezonecode#1200866]
(860) Join
Arguments: LeftOuter, (plant#1200842 <=> internalUUID#1200855)
(861) Project
Arguments: [product#1200841, plant#1200842, orderDateTime#1200843, productPlant#1200853, internalUUID#1200855, CASE WHEN isnotnull(timezonecode#1200866) THEN timezonecode#1200866 ELSE UTC END AS timezonecode#1200867]
(862) Project
Arguments: [product#1200841, plant#1200842, orderDateTime#1200843, productPlant#1200853, timezonecode#1200867]
(863) LogicalRelation
Arguments: parquet, [systemId#1200868, internalUUID#1200869, id#1200870, displayId#1200871, name#1200872, baseUnitOfMeasure#1200873, unitOfMeasures#1200874, unitOfMeasureConversions#1200875, productionAspect#1200876, salesAspect#1200877, procurementAspect#1200878, productGroup#1200879], false
(864) Repartition
Arguments: 37, true
(865) Join
Arguments: LeftOuter, (product#1200841 = internalUUID#1200869)
(866) Project
Arguments: [product#1200841, plant#1200842, orderDateTime#1200843, productPlant#1200853, timezonecode#1200867, systemId#1200868, internalUUID#1200869, id#1200870, displayId#1200871, name#1200872, baseUnitOfMeasure#1200873, unitOfMeasures#1200874, unitOfMeasureConversions#1200875, productionAspect#1200876, salesAspect#1200877, procurementAspect#1200878, productGroup#1200879, filter(unitOfMeasureConversions#1200875, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1200853.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1200853.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1200873.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1200873.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1200880]
(867) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200880.quantityNumerator), true, [quantityNumerator#1200881]
(868) Project
Arguments: [product#1200841, plant#1200842, orderDateTime#1200843, productPlant#1200853, timezonecode#1200867, systemId#1200868, internalUUID#1200869, id#1200870, displayId#1200871, name#1200872, baseUnitOfMeasure#1200873, unitOfMeasures#1200874, unitOfMeasureConversions#1200875, productionAspect#1200876, salesAspect#1200877, procurementAspect#1200878, productGroup#1200879, filteredUnitOfMeasureConversions#1200880, quantityNumerator#1200881]
(869) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1200880.quantityDenominator), true, [quantityDenominator#1200882]
(870) Project
Arguments: [product#1200841, plant#1200842, orderDateTime#1200843, productPlant#1200853, timezonecode#1200867, systemId#1200868, internalUUID#1200869, id#1200870, displayId#1200871, name#1200872, baseUnitOfMeasure#1200873, unitOfMeasures#1200874, unitOfMeasureConversions#1200875, productionAspect#1200876, salesAspect#1200877, procurementAspect#1200878, productGroup#1200879, filteredUnitOfMeasureConversions#1200880, quantityNumerator#1200881, quantityDenominator#1200882]
(871) Project
Arguments: [product#1200841, plant#1200842, orderDateTime#1200843, productPlant#1200853, timezonecode#1200867, systemId#1200868, internalUUID#1200869, id#1200870, displayId#1200871, name#1200872, baseUnitOfMeasure#1200873, unitOfMeasures#1200874, unitOfMeasureConversions#1200875, productionAspect#1200876, salesAspect#1200877, procurementAspect#1200878, productGroup#1200879, filteredUnitOfMeasureConversions#1200880, quantityNumerator#1200881, quantityDenominator#1200882, (cast(quantityNumerator#1200881 as double) / cast(quantityDenominator#1200882 as double)) AS outboundUnit#1200883]
(872) Project
Arguments: [product#1200841, plant#1200842, orderDateTime#1200843, productPlant#1200853, timezonecode#1200867, systemId#1200868, internalUUID#1200869, id#1200870, displayId#1200871, name#1200872, baseUnitOfMeasure#1200873, unitOfMeasures#1200874, unitOfMeasureConversions#1200875, productionAspect#1200876, salesAspect#1200877, procurementAspect#1200878, productGroup#1200879, filteredUnitOfMeasureConversions#1200880, quantityNumerator#1200881, quantityDenominator#1200882, CASE WHEN (isnull(outboundUnit#1200883) OR (outboundUnit#1200883 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1200883 END AS outboundUnit#1200884]
(873) Project
Arguments: [product#1200841, plant#1200842, orderDateTime#1200843, productPlant#1200853, timezonecode#1200867, outboundUnit#1200884]
(874) Project
Arguments: [plant#1200842]
(875) Deduplicate
Arguments: [plant#1200842]
(876) Join
Arguments: Inner, (plantUuid#1200838 = plant#1200842)
(877) Project
Arguments: [plantId#1200837, plantUuid#1200838, storageLocId#1200839, storageLocUuid#1200840]
(878) Project
Arguments: [plantId#1200837, plantUuid#1200838 AS plant#1200812, storageLocId#1200839, storageLocUuid#1200840]
(879) Join
Arguments: Inner, (plant#1203166 = plant#1200812)
(880) Project
Arguments: [plant#1203166, product#1203165, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, outboundUnit#1203208, stockDatetime#1203487, stockBatchQuantities#1203488, stockBatchShelfLifeEndDatetimes#1203489, dayBucketDemands#1203828, pointInTimeDemands#1203829, plantId#1200837, storageLocId#1200839, storageLocUuid#1200840, plant#1200812]
(881) LogicalRelation
Arguments: parquet, [systemId#1200773, internalUUID#1200774, id#1200775, displayId#1200776, supplier#1200777, type#1200778, status#1200779, isMarkedForDeletion#1200780, items#1200781], false
(882) Repartition
Arguments: 37, true
(883) Generate
Arguments: explode(items#1200781), false, [item#1200785]
(884) Project
Arguments: [id#1200775, internalUUID#1200774, isMarkedForDeletion#1200780, supplier#1200777.internalRefUUID AS supplierUuid#1200782, item#1200785]
(885) Filter
Arguments: (((NOT isMarkedForDeletion#1200780 AND NOT item#1200785.deletionIndicator) AND NOT item#1200785.completeIndicator) AND NOT item#1200785.returnIndicator)
(886) Project
Arguments: [id#1200775, internalUUID#1200774, supplierUuid#1200782, item#1200785.plant.internalRefUUID AS plant#1200790, item#1200785.product.internalRefUUID AS product#1200791, item#1200785.plant.id AS externalPlantId#1200792, item#1200785.product.id AS externalProductId#1200793, item#1200785.storageLocation.internalRefUUID AS storageLocUuid#1200794, item#1200785.quantityUnit.code AS quantityUom#1200795, item#1200785.quantityUnit.internalRefUUID AS quantityUomUuid#1200796, item#1200785.quantityNumerator AS quantityNumerator#1200797, item#1200785.quantityDenominator AS quantityDenominator#1200798, item#1200785.scheduleLines AS scheduleLines#1200799, item#1200785.confirmations AS confirmations#1200800]
(887) Join
Arguments: Inner, (((product#1203165 = product#1200791) AND (plant#1203166 = plant#1200790)) AND (storageLocUuid#1200840 = storageLocUuid#1200794))
(888) Project
Arguments: [product#1203165, plant#1203166, storageLocUuid#1200840, orderDateTime#1203167, productPlant#1203177, timezonecode#1203191, outboundUnit#1203208, stockDatetime#1203487, stockBatchQuantities#1203488, stockBatchShelfLifeEndDatetimes#1203489, dayBucketDemands#1203828, pointInTimeDemands#1203829, plantId#1200837, storageLocId#1200839, id#1200775, internalUUID#1200774, supplierUuid#1200782, externalPlantId#1200792, externalProductId#1200793, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800, ... 4 more fields]
(889) Project
Arguments: [id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800, stockDatetime#1203487, timezonecode#1203191]
(890) Project
Arguments: [id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800, stockDatetime#1203487, timezonecode#1203191, filter(confirmations#1200800, lambdafunction((((lambda x_139#1200891.deletionIndicator = false) AND (lambda x_139#1200891.isRelevantForConfirmation = true)) AND isnotnull(lambda x_139#1200891.confirmedDeliveryAt)), lambda x_139#1200891, false)) AS validConfirmations#1200890]
(891) Project
Arguments: [id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800, stockDatetime#1203487, timezonecode#1203191, validConfirmations#1200890, array_size(validConfirmations#1200890) AS _w0#1202098]
(892) Window
Arguments: [sum(_w0#1202098) windowspecdefinition(internalUUID#1200774, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#1202099L], [internalUUID#1200774]
(893) Project
Arguments: [id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800, stockDatetime#1203487, timezonecode#1203191, validConfirmations#1200890, _w0#1202098, _we0#1202099L, filter(transform(CASE WHEN (_we0#1202099L > cast(0 as bigint)) THEN transform(validConfirmations#1200890, lambdafunction(struct(openQty, greatest((lambda x_141#1202094.confirmedQuantity - coalesce(lambda x_141#1202094.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_141#1202094.confirmedDeliveryAt), lambda x_141#1202094, false)) ELSE transform(scheduleLines#1200799, lambdafunction(struct(openQty, greatest((lambda x_140#1202095.quantity - coalesce(lambda x_140#1202095.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_140#1202095.deliveryAt), lambda x_140#1202095, false)) END, lambdafunction(struct(documentId, id#1200775, documentUuid, internalUUID#1200774, openQty, lambda x_142#1202096.openQty, openQtyInBaseUnit, ((lambda x_142#1202096.openQty * quantityNumerator#1200797) / quantityDenominator#1200798), qtyUom, quantityUom#1200795, qtyUomUuid, quantityUomUuid#1200796, availabilityDatetime, lambda x_142#1202096.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_142#1202096, false)), lambdafunction(NOT (lambda x_143#1202097.openQty = 0.0), lambda x_143#1202097, false)) AS openGoodsMovements#1202092]
(894) Project
Arguments: [id#1200775, internalUUID#1200774, supplierUuid#1200782, plant#1200790, product#1200791, externalPlantId#1200792, externalProductId#1200793, storageLocUuid#1200794, quantityUom#1200795, quantityUomUuid#1200796, quantityNumerator#1200797, quantityDenominator#1200798, scheduleLines#1200799, confirmations#1200800, stockDatetime#1203487, timezonecode#1203191, validConfirmations#1200890, openGoodsMovements#1202092]
(895) Aggregate
Arguments: [product#1200791, plant#1200790], [product#1200791, plant#1200790, flatten(collect_list(openGoodsMovements#1202092, 0, 0)) AS openGoodsMovements#1202100]
(896) Filter
Arguments: (array_size(openGoodsMovements#1202100) > 0)
(897) LogicalRelation
Arguments: parquet, [product#1202423, plant#1202424, orderDateTime#1202425, planningStartDateTime#1202426], false
(898) RepartitionByExpression
Arguments: [product#1202423, plant#1202424], 37
(899) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425]
(900) LogicalRelation
Arguments: parquet, [systemId#1202427, internalUUID#1202428, plant#1202429, product#1202430, blockedForReplenishmentStartingFrom#1202431, productionAspect#1202432, salesPlant#1202433, listing#1202434], false
(901) Repartition
Arguments: 37, true
(902) Project
Arguments: [systemId#1202427, internalUUID#1202428, plant#1202429, product#1202430, blockedForReplenishmentStartingFrom#1202431, productionAspect#1202432, salesPlant#1202433, listing#1202434, struct(systemId, systemId#1202427, internalUUID, internalUUID#1202428, plant, plant#1202429, product, product#1202430, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1202431, productionAspect, productionAspect#1202432, salesPlant, salesPlant#1202433, listing, listing#1202434) AS productPlant#1202435]
(903) Project
Arguments: [productPlant#1202435]
(904) Join
Arguments: LeftOuter, ((product#1202423 <=> productPlant#1202435.product.internalRefUUID) AND (plant#1202424 <=> productPlant#1202435.plant.internalRefUUID))
(905) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435]
(906) SubqueryAlias
Arguments: wl
(907) LogicalRelation
Arguments: parquet, [systemId#1202436, internalUUID#1202437, id#1202438, displayId#1202439, name#1202440, category#1202441, companyCode#1202442, address#1202443, mainDistributionChain#1202444, mainPurchasingOrganization#1202445, validPurchasingOrganizations#1202446, productGroup#1202447], false
(908) Repartition
Arguments: 37, true
(909) Project
Arguments: [internalUUID#1202437, address#1202443.timeZone.code AS timezonecode#1202448]
(910) Join
Arguments: LeftOuter, (plant#1202424 <=> internalUUID#1202437)
(911) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, internalUUID#1202437, CASE WHEN isnotnull(timezonecode#1202448) THEN timezonecode#1202448 ELSE UTC END AS timezonecode#1202449]
(912) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449]
(913) LogicalRelation
Arguments: parquet, [systemId#1202450, internalUUID#1202451, id#1202452, displayId#1202453, name#1202454, baseUnitOfMeasure#1202455, unitOfMeasures#1202456, unitOfMeasureConversions#1202457, productionAspect#1202458, salesAspect#1202459, procurementAspect#1202460, productGroup#1202461], false
(914) Repartition
Arguments: 37, true
(915) Join
Arguments: LeftOuter, (product#1202423 = internalUUID#1202451)
(916) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, systemId#1202450, internalUUID#1202451, id#1202452, displayId#1202453, name#1202454, baseUnitOfMeasure#1202455, unitOfMeasures#1202456, unitOfMeasureConversions#1202457, productionAspect#1202458, salesAspect#1202459, procurementAspect#1202460, productGroup#1202461, filter(unitOfMeasureConversions#1202457, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1202435.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1202435.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202455.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202455.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202462]
(917) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202462.quantityNumerator), true, [quantityNumerator#1202463]
(918) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, systemId#1202450, internalUUID#1202451, id#1202452, displayId#1202453, name#1202454, baseUnitOfMeasure#1202455, unitOfMeasures#1202456, unitOfMeasureConversions#1202457, productionAspect#1202458, salesAspect#1202459, procurementAspect#1202460, productGroup#1202461, filteredUnitOfMeasureConversions#1202462, quantityNumerator#1202463]
(919) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202462.quantityDenominator), true, [quantityDenominator#1202464]
(920) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, systemId#1202450, internalUUID#1202451, id#1202452, displayId#1202453, name#1202454, baseUnitOfMeasure#1202455, unitOfMeasures#1202456, unitOfMeasureConversions#1202457, productionAspect#1202458, salesAspect#1202459, procurementAspect#1202460, productGroup#1202461, filteredUnitOfMeasureConversions#1202462, quantityNumerator#1202463, quantityDenominator#1202464]
(921) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, systemId#1202450, internalUUID#1202451, id#1202452, displayId#1202453, name#1202454, baseUnitOfMeasure#1202455, unitOfMeasures#1202456, unitOfMeasureConversions#1202457, productionAspect#1202458, salesAspect#1202459, procurementAspect#1202460, productGroup#1202461, filteredUnitOfMeasureConversions#1202462, quantityNumerator#1202463, quantityDenominator#1202464, (cast(quantityNumerator#1202463 as double) / cast(quantityDenominator#1202464 as double)) AS outboundUnit#1202465]
(922) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, systemId#1202450, internalUUID#1202451, id#1202452, displayId#1202453, name#1202454, baseUnitOfMeasure#1202455, unitOfMeasures#1202456, unitOfMeasureConversions#1202457, productionAspect#1202458, salesAspect#1202459, procurementAspect#1202460, productGroup#1202461, filteredUnitOfMeasureConversions#1202462, quantityNumerator#1202463, quantityDenominator#1202464, CASE WHEN (isnull(outboundUnit#1202465) OR (outboundUnit#1202465 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1202465 END AS outboundUnit#1202466]
(923) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, outboundUnit#1202466]
(924) LogicalRelation
Arguments: parquet, [systemId#1202467, internalUUID#1202468, product#1202469, plant#1202470, calculationDateTime#1202471, stockQuantities#1202472], false
(925) Repartition
Arguments: 37, true
(926) LogicalRelation
Arguments: parquet, [marketUnit#1202473, description#1202474, articleHierarchy#1202475, defaultCurrency#1202476, responsibilities#1202477, replenishmentTypes#1202478, distributionCenters#1202479, assignedArticleHierarchyNodes#1202480, minOrderQtySetting#1202481, listingCheck#1202482, odsSelection#1202483, demandProfiles#1202484, constraintProfiles#1202485, optimizationProfiles#1202486, orderGroupSplitProfiles#1202487, supplierMinimumProfiles#1202488, multipleRestrictionProfiles#1202489, preferredUomSource#1202490, handlingOfUnfulfilledDemands#1202491, negligibleQuantitiesThreshold#1202492, eventtype#1202493, minOrderQtySettingInternal#1202494], false
(927) Repartition
Arguments: 37, true
(928) Filter
Arguments: (marketUnit#1202473 <=> Grocery_SS)
(929) Project
Arguments: [marketUnit#1202473, description#1202474, articleHierarchy#1202475, defaultCurrency#1202476, responsibilities#1202477, replenishmentTypes#1202478, distributionCenters#1202479, assignedArticleHierarchyNodes#1202480, minOrderQtySetting#1202481, listingCheck#1202482, odsSelection#1202483, demandProfiles#1202484, constraintProfiles#1202485, optimizationProfiles#1202486, orderGroupSplitProfiles#1202487, supplierMinimumProfiles#1202488, multipleRestrictionProfiles#1202489, preferredUomSource#1202490, handlingOfUnfulfilledDemands#1202491, negligibleQuantitiesThreshold#1202492, eventtype#1202493, minOrderQtySettingInternal#1202494]
(930) Project
Arguments: [distributionCenters#1202479]
(931) Generate
Arguments: explode(distributionCenters#1202479), false, [distributionCenters#1202495]
(932) Project
Arguments: [distributionCenters#1202495]
(933) Generate
Arguments: explode(distributionCenters#1202495.storageLocations), false, [storageLocations#1202496]
(934) Project
Arguments: [distributionCenters#1202495.id AS plantId#1202497, distributionCenters#1202495.internalRefUUID AS plantUuid#1202498, storageLocations#1202496]
(935) Project
Arguments: [plantId#1202497, plantUuid#1202498, storageLocations#1202496.id AS storageLocId#1202499, storageLocations#1202496.internalRefUUID AS storageLocUuid#1202500]
(936) LogicalRelation
Arguments: parquet, [product#1202501, plant#1202502, orderDateTime#1202503, planningStartDateTime#1202504], false
(937) RepartitionByExpression
Arguments: [product#1202501, plant#1202502], 37
(938) Project
Arguments: [product#1202501, plant#1202502, orderDateTime#1202503]
(939) LogicalRelation
Arguments: parquet, [systemId#1202505, internalUUID#1202506, plant#1202507, product#1202508, blockedForReplenishmentStartingFrom#1202509, productionAspect#1202510, salesPlant#1202511, listing#1202512], false
(940) Repartition
Arguments: 37, true
(941) Project
Arguments: [systemId#1202505, internalUUID#1202506, plant#1202507, product#1202508, blockedForReplenishmentStartingFrom#1202509, productionAspect#1202510, salesPlant#1202511, listing#1202512, struct(systemId, systemId#1202505, internalUUID, internalUUID#1202506, plant, plant#1202507, product, product#1202508, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1202509, productionAspect, productionAspect#1202510, salesPlant, salesPlant#1202511, listing, listing#1202512) AS productPlant#1202513]
(942) Project
Arguments: [productPlant#1202513]
(943) Join
Arguments: LeftOuter, ((product#1202501 <=> productPlant#1202513.product.internalRefUUID) AND (plant#1202502 <=> productPlant#1202513.plant.internalRefUUID))
(944) Project
Arguments: [product#1202501, plant#1202502, orderDateTime#1202503, productPlant#1202513]
(945) SubqueryAlias
Arguments: wl
(946) LogicalRelation
Arguments: parquet, [systemId#1202514, internalUUID#1202515, id#1202516, displayId#1202517, name#1202518, category#1202519, companyCode#1202520, address#1202521, mainDistributionChain#1202522, mainPurchasingOrganization#1202523, validPurchasingOrganizations#1202524, productGroup#1202525], false
(947) Repartition
Arguments: 37, true
(948) Project
Arguments: [internalUUID#1202515, address#1202521.timeZone.code AS timezonecode#1202526]
(949) Join
Arguments: LeftOuter, (plant#1202502 <=> internalUUID#1202515)
(950) Project
Arguments: [product#1202501, plant#1202502, orderDateTime#1202503, productPlant#1202513, internalUUID#1202515, CASE WHEN isnotnull(timezonecode#1202526) THEN timezonecode#1202526 ELSE UTC END AS timezonecode#1202527]
(951) Project
Arguments: [product#1202501, plant#1202502, orderDateTime#1202503, productPlant#1202513, timezonecode#1202527]
(952) LogicalRelation
Arguments: parquet, [systemId#1202528, internalUUID#1202529, id#1202530, displayId#1202531, name#1202532, baseUnitOfMeasure#1202533, unitOfMeasures#1202534, unitOfMeasureConversions#1202535, productionAspect#1202536, salesAspect#1202537, procurementAspect#1202538, productGroup#1202539], false
(953) Repartition
Arguments: 37, true
(954) Join
Arguments: LeftOuter, (product#1202501 = internalUUID#1202529)
(955) Project
Arguments: [product#1202501, plant#1202502, orderDateTime#1202503, productPlant#1202513, timezonecode#1202527, systemId#1202528, internalUUID#1202529, id#1202530, displayId#1202531, name#1202532, baseUnitOfMeasure#1202533, unitOfMeasures#1202534, unitOfMeasureConversions#1202535, productionAspect#1202536, salesAspect#1202537, procurementAspect#1202538, productGroup#1202539, filter(unitOfMeasureConversions#1202535, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1202513.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1202513.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202533.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202533.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202540]
(956) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202540.quantityNumerator), true, [quantityNumerator#1202541]
(957) Project
Arguments: [product#1202501, plant#1202502, orderDateTime#1202503, productPlant#1202513, timezonecode#1202527, systemId#1202528, internalUUID#1202529, id#1202530, displayId#1202531, name#1202532, baseUnitOfMeasure#1202533, unitOfMeasures#1202534, unitOfMeasureConversions#1202535, productionAspect#1202536, salesAspect#1202537, procurementAspect#1202538, productGroup#1202539, filteredUnitOfMeasureConversions#1202540, quantityNumerator#1202541]
(958) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202540.quantityDenominator), true, [quantityDenominator#1202542]
(959) Project
Arguments: [product#1202501, plant#1202502, orderDateTime#1202503, productPlant#1202513, timezonecode#1202527, systemId#1202528, internalUUID#1202529, id#1202530, displayId#1202531, name#1202532, baseUnitOfMeasure#1202533, unitOfMeasures#1202534, unitOfMeasureConversions#1202535, productionAspect#1202536, salesAspect#1202537, procurementAspect#1202538, productGroup#1202539, filteredUnitOfMeasureConversions#1202540, quantityNumerator#1202541, quantityDenominator#1202542]
(960) Project
Arguments: [product#1202501, plant#1202502, orderDateTime#1202503, productPlant#1202513, timezonecode#1202527, systemId#1202528, internalUUID#1202529, id#1202530, displayId#1202531, name#1202532, baseUnitOfMeasure#1202533, unitOfMeasures#1202534, unitOfMeasureConversions#1202535, productionAspect#1202536, salesAspect#1202537, procurementAspect#1202538, productGroup#1202539, filteredUnitOfMeasureConversions#1202540, quantityNumerator#1202541, quantityDenominator#1202542, (cast(quantityNumerator#1202541 as double) / cast(quantityDenominator#1202542 as double)) AS outboundUnit#1202543]
(961) Project
Arguments: [product#1202501, plant#1202502, orderDateTime#1202503, productPlant#1202513, timezonecode#1202527, systemId#1202528, internalUUID#1202529, id#1202530, displayId#1202531, name#1202532, baseUnitOfMeasure#1202533, unitOfMeasures#1202534, unitOfMeasureConversions#1202535, productionAspect#1202536, salesAspect#1202537, procurementAspect#1202538, productGroup#1202539, filteredUnitOfMeasureConversions#1202540, quantityNumerator#1202541, quantityDenominator#1202542, CASE WHEN (isnull(outboundUnit#1202543) OR (outboundUnit#1202543 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1202543 END AS outboundUnit#1202544]
(962) Project
Arguments: [product#1202501, plant#1202502, orderDateTime#1202503, productPlant#1202513, timezonecode#1202527, outboundUnit#1202544]
(963) Project
Arguments: [plant#1202502]
(964) Deduplicate
Arguments: [plant#1202502]
(965) Join
Arguments: Inner, (plantUuid#1202498 = plant#1202502)
(966) Project
Arguments: [plantId#1202497, plantUuid#1202498, storageLocId#1202499, storageLocUuid#1202500]
(967) Join
Arguments: Inner, (plant#1202470.internalRefUUID <=> plantUuid#1202498)
(968) Generate
Arguments: explode(filter(stockQuantities#1202472, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1202500) AND (lambda x#1200047.storageLocation.Id = storageLocId#1202499)), lambda x#1200047, false))), false, [stockQuantity#1202545]
(969) Project
Arguments: [systemId#1202467, internalUUID#1202468, product#1202469, plant#1202470, calculationDateTime#1202471, stockQuantities#1202472, plantId#1202497, plantUuid#1202498, storageLocId#1202499, storageLocUuid#1202500, stockQuantity#1202545]
(970) Aggregate
Arguments: [plantUuid#1202498, internalUUID#1202468, plant#1202470, product#1202469, systemId#1202467], [plantUuid#1202498, internalUUID#1202468, plant#1202470, product#1202469, systemId#1202467, first(calculationDateTime#1202471, false) AS calculationDateTime#1202546, collect_list(stockQuantity#1202545, 0, 0) AS stockQuantities#1202547]
(971) Project
Arguments: [systemId#1202467, internalUUID#1202468, product#1202469, plant#1202470, calculationDateTime#1202546, stockQuantities#1202547]
(972) Generate
Arguments: explode(stockQuantities#1202547), false, [stockQuantity#1202548]
(973) Project
Arguments: [systemId#1202467, internalUUID#1202468, product#1202469, plant#1202470, calculationDateTime#1202546, stockQuantities#1202547, stockQuantity#1202548]
(974) Project
Arguments: [plant#1202470.id AS plant#1202549, plant#1202470.internalRefUUID AS plantUuid#1202550, product#1202469.id AS product#1202551, product#1202469.internalRefUUID AS productUuid#1202552, calculationDateTime#1202546, stockQuantity#1202548.storagelocation.id AS storageLocId#1202553, stockQuantity#1202548.storagelocation.internalRefUUID AS storageLocUuid#1202554, stockQuantity#1202548.quantity.measure AS quantity#1202555, stockQuantity#1202548.specialStockIndicator.code AS specialStockIndicator#1202556, stockQuantity#1202548.stockType.code AS stockType#1202557]
(975) Filter
Arguments: ((specialStockIndicator#1202556 = ) AND (stockType#1202557 = 01))
(976) LogicalRelation
Arguments: parquet, [product#1202558, plant#1202559, orderDateTime#1202560, planningStartDateTime#1202561], false
(977) RepartitionByExpression
Arguments: [product#1202558, plant#1202559], 37
(978) Project
Arguments: [product#1202558, plant#1202559, orderDateTime#1202560]
(979) LogicalRelation
Arguments: parquet, [systemId#1202562, internalUUID#1202563, plant#1202564, product#1202565, blockedForReplenishmentStartingFrom#1202566, productionAspect#1202567, salesPlant#1202568, listing#1202569], false
(980) Repartition
Arguments: 37, true
(981) Project
Arguments: [systemId#1202562, internalUUID#1202563, plant#1202564, product#1202565, blockedForReplenishmentStartingFrom#1202566, productionAspect#1202567, salesPlant#1202568, listing#1202569, struct(systemId, systemId#1202562, internalUUID, internalUUID#1202563, plant, plant#1202564, product, product#1202565, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1202566, productionAspect, productionAspect#1202567, salesPlant, salesPlant#1202568, listing, listing#1202569) AS productPlant#1202570]
(982) Project
Arguments: [productPlant#1202570]
(983) Join
Arguments: LeftOuter, ((product#1202558 <=> productPlant#1202570.product.internalRefUUID) AND (plant#1202559 <=> productPlant#1202570.plant.internalRefUUID))
(984) Project
Arguments: [product#1202558, plant#1202559, orderDateTime#1202560, productPlant#1202570]
(985) SubqueryAlias
Arguments: wl
(986) LogicalRelation
Arguments: parquet, [systemId#1202571, internalUUID#1202572, id#1202573, displayId#1202574, name#1202575, category#1202576, companyCode#1202577, address#1202578, mainDistributionChain#1202579, mainPurchasingOrganization#1202580, validPurchasingOrganizations#1202581, productGroup#1202582], false
(987) Repartition
Arguments: 37, true
(988) Project
Arguments: [internalUUID#1202572, address#1202578.timeZone.code AS timezonecode#1202583]
(989) Join
Arguments: LeftOuter, (plant#1202559 <=> internalUUID#1202572)
(990) Project
Arguments: [product#1202558, plant#1202559, orderDateTime#1202560, productPlant#1202570, internalUUID#1202572, CASE WHEN isnotnull(timezonecode#1202583) THEN timezonecode#1202583 ELSE UTC END AS timezonecode#1202584]
(991) Project
Arguments: [product#1202558, plant#1202559, orderDateTime#1202560, productPlant#1202570, timezonecode#1202584]
(992) LogicalRelation
Arguments: parquet, [systemId#1202585, internalUUID#1202586, id#1202587, displayId#1202588, name#1202589, baseUnitOfMeasure#1202590, unitOfMeasures#1202591, unitOfMeasureConversions#1202592, productionAspect#1202593, salesAspect#1202594, procurementAspect#1202595, productGroup#1202596], false
(993) Repartition
Arguments: 37, true
(994) Join
Arguments: LeftOuter, (product#1202558 = internalUUID#1202586)
(995) Project
Arguments: [product#1202558, plant#1202559, orderDateTime#1202560, productPlant#1202570, timezonecode#1202584, systemId#1202585, internalUUID#1202586, id#1202587, displayId#1202588, name#1202589, baseUnitOfMeasure#1202590, unitOfMeasures#1202591, unitOfMeasureConversions#1202592, productionAspect#1202593, salesAspect#1202594, procurementAspect#1202595, productGroup#1202596, filter(unitOfMeasureConversions#1202592, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1202570.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1202570.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202590.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202590.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202597]
(996) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202597.quantityNumerator), true, [quantityNumerator#1202598]
(997) Project
Arguments: [product#1202558, plant#1202559, orderDateTime#1202560, productPlant#1202570, timezonecode#1202584, systemId#1202585, internalUUID#1202586, id#1202587, displayId#1202588, name#1202589, baseUnitOfMeasure#1202590, unitOfMeasures#1202591, unitOfMeasureConversions#1202592, productionAspect#1202593, salesAspect#1202594, procurementAspect#1202595, productGroup#1202596, filteredUnitOfMeasureConversions#1202597, quantityNumerator#1202598]
(998) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202597.quantityDenominator), true, [quantityDenominator#1202599]
(999) Project
Arguments: [product#1202558, plant#1202559, orderDateTime#1202560, productPlant#1202570, timezonecode#1202584, systemId#1202585, internalUUID#1202586, id#1202587, displayId#1202588, name#1202589, baseUnitOfMeasure#1202590, unitOfMeasures#1202591, unitOfMeasureConversions#1202592, productionAspect#1202593, salesAspect#1202594, procurementAspect#1202595, productGroup#1202596, filteredUnitOfMeasureConversions#1202597, quantityNumerator#1202598, quantityDenominator#1202599]
(1000) Project
Arguments: [product#1202558, plant#1202559, orderDateTime#1202560, productPlant#1202570, timezonecode#1202584, systemId#1202585, internalUUID#1202586, id#1202587, displayId#1202588, name#1202589, baseUnitOfMeasure#1202590, unitOfMeasures#1202591, unitOfMeasureConversions#1202592, productionAspect#1202593, salesAspect#1202594, procurementAspect#1202595, productGroup#1202596, filteredUnitOfMeasureConversions#1202597, quantityNumerator#1202598, quantityDenominator#1202599, (cast(quantityNumerator#1202598 as double) / cast(quantityDenominator#1202599 as double)) AS outboundUnit#1202600]
(1001) Project
Arguments: [product#1202558, plant#1202559, orderDateTime#1202560, productPlant#1202570, timezonecode#1202584, systemId#1202585, internalUUID#1202586, id#1202587, displayId#1202588, name#1202589, baseUnitOfMeasure#1202590, unitOfMeasures#1202591, unitOfMeasureConversions#1202592, productionAspect#1202593, salesAspect#1202594, procurementAspect#1202595, productGroup#1202596, filteredUnitOfMeasureConversions#1202597, quantityNumerator#1202598, quantityDenominator#1202599, CASE WHEN (isnull(outboundUnit#1202600) OR (outboundUnit#1202600 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1202600 END AS outboundUnit#1202601]
(1002) Project
Arguments: [product#1202558, plant#1202559, orderDateTime#1202560, productPlant#1202570, timezonecode#1202584, outboundUnit#1202601]
(1003) Join
Arguments: Inner, ((plantUuid#1202550 = plant#1202559) AND (productUuid#1202552 = product#1202558))
(1004) Filter
Arguments: (calculationDateTime#1202546 <= orderDateTime#1202560)
(1005) Project
Arguments: [plantUuid#1202550 AS plant#1202602, productUuid#1202552 AS product#1202603, storageLocId#1202553, calculationDateTime#1202546, quantity#1202555]
(1006) LogicalRelation
Arguments: parquet, [systemId#1202604, internalUUID#1202605, product#1202606, plant#1202607, calculationDateTime#1202608, stockQuantities#1202609], false
(1007) Repartition
Arguments: 37, true
(1008) LogicalRelation
Arguments: parquet, [marketUnit#1202610, description#1202611, articleHierarchy#1202612, defaultCurrency#1202613, responsibilities#1202614, replenishmentTypes#1202615, distributionCenters#1202616, assignedArticleHierarchyNodes#1202617, minOrderQtySetting#1202618, listingCheck#1202619, odsSelection#1202620, demandProfiles#1202621, constraintProfiles#1202622, optimizationProfiles#1202623, orderGroupSplitProfiles#1202624, supplierMinimumProfiles#1202625, multipleRestrictionProfiles#1202626, preferredUomSource#1202627, handlingOfUnfulfilledDemands#1202628, negligibleQuantitiesThreshold#1202629, eventtype#1202630, minOrderQtySettingInternal#1202631], false
(1009) Repartition
Arguments: 37, true
(1010) Filter
Arguments: (marketUnit#1202610 <=> Grocery_SS)
(1011) Project
Arguments: [marketUnit#1202610, description#1202611, articleHierarchy#1202612, defaultCurrency#1202613, responsibilities#1202614, replenishmentTypes#1202615, distributionCenters#1202616, assignedArticleHierarchyNodes#1202617, minOrderQtySetting#1202618, listingCheck#1202619, odsSelection#1202620, demandProfiles#1202621, constraintProfiles#1202622, optimizationProfiles#1202623, orderGroupSplitProfiles#1202624, supplierMinimumProfiles#1202625, multipleRestrictionProfiles#1202626, preferredUomSource#1202627, handlingOfUnfulfilledDemands#1202628, negligibleQuantitiesThreshold#1202629, eventtype#1202630, minOrderQtySettingInternal#1202631]
(1012) Project
Arguments: [distributionCenters#1202616]
(1013) Generate
Arguments: explode(distributionCenters#1202616), false, [distributionCenters#1202632]
(1014) Project
Arguments: [distributionCenters#1202632]
(1015) Generate
Arguments: explode(distributionCenters#1202632.storageLocations), false, [storageLocations#1202633]
(1016) Project
Arguments: [distributionCenters#1202632.id AS plantId#1202634, distributionCenters#1202632.internalRefUUID AS plantUuid#1202635, storageLocations#1202633]
(1017) Project
Arguments: [plantId#1202634, plantUuid#1202635, storageLocations#1202633.id AS storageLocId#1202636, storageLocations#1202633.internalRefUUID AS storageLocUuid#1202637]
(1018) LogicalRelation
Arguments: parquet, [product#1202638, plant#1202639, orderDateTime#1202640, planningStartDateTime#1202641], false
(1019) RepartitionByExpression
Arguments: [product#1202638, plant#1202639], 37
(1020) Project
Arguments: [product#1202638, plant#1202639, orderDateTime#1202640]
(1021) LogicalRelation
Arguments: parquet, [systemId#1202642, internalUUID#1202643, plant#1202644, product#1202645, blockedForReplenishmentStartingFrom#1202646, productionAspect#1202647, salesPlant#1202648, listing#1202649], false
(1022) Repartition
Arguments: 37, true
(1023) Project
Arguments: [systemId#1202642, internalUUID#1202643, plant#1202644, product#1202645, blockedForReplenishmentStartingFrom#1202646, productionAspect#1202647, salesPlant#1202648, listing#1202649, struct(systemId, systemId#1202642, internalUUID, internalUUID#1202643, plant, plant#1202644, product, product#1202645, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1202646, productionAspect, productionAspect#1202647, salesPlant, salesPlant#1202648, listing, listing#1202649) AS productPlant#1202650]
(1024) Project
Arguments: [productPlant#1202650]
(1025) Join
Arguments: LeftOuter, ((product#1202638 <=> productPlant#1202650.product.internalRefUUID) AND (plant#1202639 <=> productPlant#1202650.plant.internalRefUUID))
(1026) Project
Arguments: [product#1202638, plant#1202639, orderDateTime#1202640, productPlant#1202650]
(1027) SubqueryAlias
Arguments: wl
(1028) LogicalRelation
Arguments: parquet, [systemId#1202651, internalUUID#1202652, id#1202653, displayId#1202654, name#1202655, category#1202656, companyCode#1202657, address#1202658, mainDistributionChain#1202659, mainPurchasingOrganization#1202660, validPurchasingOrganizations#1202661, productGroup#1202662], false
(1029) Repartition
Arguments: 37, true
(1030) Project
Arguments: [internalUUID#1202652, address#1202658.timeZone.code AS timezonecode#1202663]
(1031) Join
Arguments: LeftOuter, (plant#1202639 <=> internalUUID#1202652)
(1032) Project
Arguments: [product#1202638, plant#1202639, orderDateTime#1202640, productPlant#1202650, internalUUID#1202652, CASE WHEN isnotnull(timezonecode#1202663) THEN timezonecode#1202663 ELSE UTC END AS timezonecode#1202664]
(1033) Project
Arguments: [product#1202638, plant#1202639, orderDateTime#1202640, productPlant#1202650, timezonecode#1202664]
(1034) LogicalRelation
Arguments: parquet, [systemId#1202665, internalUUID#1202666, id#1202667, displayId#1202668, name#1202669, baseUnitOfMeasure#1202670, unitOfMeasures#1202671, unitOfMeasureConversions#1202672, productionAspect#1202673, salesAspect#1202674, procurementAspect#1202675, productGroup#1202676], false
(1035) Repartition
Arguments: 37, true
(1036) Join
Arguments: LeftOuter, (product#1202638 = internalUUID#1202666)
(1037) Project
Arguments: [product#1202638, plant#1202639, orderDateTime#1202640, productPlant#1202650, timezonecode#1202664, systemId#1202665, internalUUID#1202666, id#1202667, displayId#1202668, name#1202669, baseUnitOfMeasure#1202670, unitOfMeasures#1202671, unitOfMeasureConversions#1202672, productionAspect#1202673, salesAspect#1202674, procurementAspect#1202675, productGroup#1202676, filter(unitOfMeasureConversions#1202672, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1202650.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1202650.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202670.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202670.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202677]
(1038) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202677.quantityNumerator), true, [quantityNumerator#1202678]
(1039) Project
Arguments: [product#1202638, plant#1202639, orderDateTime#1202640, productPlant#1202650, timezonecode#1202664, systemId#1202665, internalUUID#1202666, id#1202667, displayId#1202668, name#1202669, baseUnitOfMeasure#1202670, unitOfMeasures#1202671, unitOfMeasureConversions#1202672, productionAspect#1202673, salesAspect#1202674, procurementAspect#1202675, productGroup#1202676, filteredUnitOfMeasureConversions#1202677, quantityNumerator#1202678]
(1040) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202677.quantityDenominator), true, [quantityDenominator#1202679]
(1041) Project
Arguments: [product#1202638, plant#1202639, orderDateTime#1202640, productPlant#1202650, timezonecode#1202664, systemId#1202665, internalUUID#1202666, id#1202667, displayId#1202668, name#1202669, baseUnitOfMeasure#1202670, unitOfMeasures#1202671, unitOfMeasureConversions#1202672, productionAspect#1202673, salesAspect#1202674, procurementAspect#1202675, productGroup#1202676, filteredUnitOfMeasureConversions#1202677, quantityNumerator#1202678, quantityDenominator#1202679]
(1042) Project
Arguments: [product#1202638, plant#1202639, orderDateTime#1202640, productPlant#1202650, timezonecode#1202664, systemId#1202665, internalUUID#1202666, id#1202667, displayId#1202668, name#1202669, baseUnitOfMeasure#1202670, unitOfMeasures#1202671, unitOfMeasureConversions#1202672, productionAspect#1202673, salesAspect#1202674, procurementAspect#1202675, productGroup#1202676, filteredUnitOfMeasureConversions#1202677, quantityNumerator#1202678, quantityDenominator#1202679, (cast(quantityNumerator#1202678 as double) / cast(quantityDenominator#1202679 as double)) AS outboundUnit#1202680]
(1043) Project
Arguments: [product#1202638, plant#1202639, orderDateTime#1202640, productPlant#1202650, timezonecode#1202664, systemId#1202665, internalUUID#1202666, id#1202667, displayId#1202668, name#1202669, baseUnitOfMeasure#1202670, unitOfMeasures#1202671, unitOfMeasureConversions#1202672, productionAspect#1202673, salesAspect#1202674, procurementAspect#1202675, productGroup#1202676, filteredUnitOfMeasureConversions#1202677, quantityNumerator#1202678, quantityDenominator#1202679, CASE WHEN (isnull(outboundUnit#1202680) OR (outboundUnit#1202680 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1202680 END AS outboundUnit#1202681]
(1044) Project
Arguments: [product#1202638, plant#1202639, orderDateTime#1202640, productPlant#1202650, timezonecode#1202664, outboundUnit#1202681]
(1045) Project
Arguments: [plant#1202639]
(1046) Deduplicate
Arguments: [plant#1202639]
(1047) Join
Arguments: Inner, (plantUuid#1202635 = plant#1202639)
(1048) Project
Arguments: [plantId#1202634, plantUuid#1202635, storageLocId#1202636, storageLocUuid#1202637]
(1049) Join
Arguments: Inner, (plant#1202607.internalRefUUID <=> plantUuid#1202635)
(1050) Generate
Arguments: explode(filter(stockQuantities#1202609, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1202637) AND (lambda x#1200047.storageLocation.Id = storageLocId#1202636)), lambda x#1200047, false))), false, [stockQuantity#1202682]
(1051) Project
Arguments: [systemId#1202604, internalUUID#1202605, product#1202606, plant#1202607, calculationDateTime#1202608, stockQuantities#1202609, plantId#1202634, plantUuid#1202635, storageLocId#1202636, storageLocUuid#1202637, stockQuantity#1202682]
(1052) Aggregate
Arguments: [plantUuid#1202635, internalUUID#1202605, plant#1202607, product#1202606, systemId#1202604], [plantUuid#1202635, internalUUID#1202605, plant#1202607, product#1202606, systemId#1202604, first(calculationDateTime#1202608, false) AS calculationDateTime#1202683, collect_list(stockQuantity#1202682, 0, 0) AS stockQuantities#1202684]
(1053) Project
Arguments: [systemId#1202604, internalUUID#1202605, product#1202606, plant#1202607, calculationDateTime#1202683, stockQuantities#1202684]
(1054) Generate
Arguments: explode(stockQuantities#1202684), false, [stockQuantity#1202685]
(1055) Project
Arguments: [systemId#1202604, internalUUID#1202605, product#1202606, plant#1202607, calculationDateTime#1202683, stockQuantities#1202684, stockQuantity#1202685]
(1056) Project
Arguments: [plant#1202607.id AS plant#1202686, plant#1202607.internalRefUUID AS plantUuid#1202687, product#1202606.id AS product#1202688, product#1202606.internalRefUUID AS productUuid#1202689, calculationDateTime#1202683, stockQuantity#1202685.storagelocation.id AS storageLocId#1202690, stockQuantity#1202685.storagelocation.internalRefUUID AS storageLocUuid#1202691, stockQuantity#1202685.quantity.measure AS quantity#1202692, stockQuantity#1202685.specialStockIndicator.code AS specialStockIndicator#1202693, stockQuantity#1202685.stockType.code AS stockType#1202694]
(1057) Filter
Arguments: ((specialStockIndicator#1202693 = ) AND (stockType#1202694 = 01))
(1058) LogicalRelation
Arguments: parquet, [product#1202695, plant#1202696, orderDateTime#1202697, planningStartDateTime#1202698], false
(1059) RepartitionByExpression
Arguments: [product#1202695, plant#1202696], 37
(1060) Project
Arguments: [product#1202695, plant#1202696, orderDateTime#1202697]
(1061) LogicalRelation
Arguments: parquet, [systemId#1202699, internalUUID#1202700, plant#1202701, product#1202702, blockedForReplenishmentStartingFrom#1202703, productionAspect#1202704, salesPlant#1202705, listing#1202706], false
(1062) Repartition
Arguments: 37, true
(1063) Project
Arguments: [systemId#1202699, internalUUID#1202700, plant#1202701, product#1202702, blockedForReplenishmentStartingFrom#1202703, productionAspect#1202704, salesPlant#1202705, listing#1202706, struct(systemId, systemId#1202699, internalUUID, internalUUID#1202700, plant, plant#1202701, product, product#1202702, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1202703, productionAspect, productionAspect#1202704, salesPlant, salesPlant#1202705, listing, listing#1202706) AS productPlant#1202707]
(1064) Project
Arguments: [productPlant#1202707]
(1065) Join
Arguments: LeftOuter, ((product#1202695 <=> productPlant#1202707.product.internalRefUUID) AND (plant#1202696 <=> productPlant#1202707.plant.internalRefUUID))
(1066) Project
Arguments: [product#1202695, plant#1202696, orderDateTime#1202697, productPlant#1202707]
(1067) SubqueryAlias
Arguments: wl
(1068) LogicalRelation
Arguments: parquet, [systemId#1202708, internalUUID#1202709, id#1202710, displayId#1202711, name#1202712, category#1202713, companyCode#1202714, address#1202715, mainDistributionChain#1202716, mainPurchasingOrganization#1202717, validPurchasingOrganizations#1202718, productGroup#1202719], false
(1069) Repartition
Arguments: 37, true
(1070) Project
Arguments: [internalUUID#1202709, address#1202715.timeZone.code AS timezonecode#1202720]
(1071) Join
Arguments: LeftOuter, (plant#1202696 <=> internalUUID#1202709)
(1072) Project
Arguments: [product#1202695, plant#1202696, orderDateTime#1202697, productPlant#1202707, internalUUID#1202709, CASE WHEN isnotnull(timezonecode#1202720) THEN timezonecode#1202720 ELSE UTC END AS timezonecode#1202721]
(1073) Project
Arguments: [product#1202695, plant#1202696, orderDateTime#1202697, productPlant#1202707, timezonecode#1202721]
(1074) LogicalRelation
Arguments: parquet, [systemId#1202722, internalUUID#1202723, id#1202724, displayId#1202725, name#1202726, baseUnitOfMeasure#1202727, unitOfMeasures#1202728, unitOfMeasureConversions#1202729, productionAspect#1202730, salesAspect#1202731, procurementAspect#1202732, productGroup#1202733], false
(1075) Repartition
Arguments: 37, true
(1076) Join
Arguments: LeftOuter, (product#1202695 = internalUUID#1202723)
(1077) Project
Arguments: [product#1202695, plant#1202696, orderDateTime#1202697, productPlant#1202707, timezonecode#1202721, systemId#1202722, internalUUID#1202723, id#1202724, displayId#1202725, name#1202726, baseUnitOfMeasure#1202727, unitOfMeasures#1202728, unitOfMeasureConversions#1202729, productionAspect#1202730, salesAspect#1202731, procurementAspect#1202732, productGroup#1202733, filter(unitOfMeasureConversions#1202729, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1202707.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1202707.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202727.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202727.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202734]
(1078) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202734.quantityNumerator), true, [quantityNumerator#1202735]
(1079) Project
Arguments: [product#1202695, plant#1202696, orderDateTime#1202697, productPlant#1202707, timezonecode#1202721, systemId#1202722, internalUUID#1202723, id#1202724, displayId#1202725, name#1202726, baseUnitOfMeasure#1202727, unitOfMeasures#1202728, unitOfMeasureConversions#1202729, productionAspect#1202730, salesAspect#1202731, procurementAspect#1202732, productGroup#1202733, filteredUnitOfMeasureConversions#1202734, quantityNumerator#1202735]
(1080) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202734.quantityDenominator), true, [quantityDenominator#1202736]
(1081) Project
Arguments: [product#1202695, plant#1202696, orderDateTime#1202697, productPlant#1202707, timezonecode#1202721, systemId#1202722, internalUUID#1202723, id#1202724, displayId#1202725, name#1202726, baseUnitOfMeasure#1202727, unitOfMeasures#1202728, unitOfMeasureConversions#1202729, productionAspect#1202730, salesAspect#1202731, procurementAspect#1202732, productGroup#1202733, filteredUnitOfMeasureConversions#1202734, quantityNumerator#1202735, quantityDenominator#1202736]
(1082) Project
Arguments: [product#1202695, plant#1202696, orderDateTime#1202697, productPlant#1202707, timezonecode#1202721, systemId#1202722, internalUUID#1202723, id#1202724, displayId#1202725, name#1202726, baseUnitOfMeasure#1202727, unitOfMeasures#1202728, unitOfMeasureConversions#1202729, productionAspect#1202730, salesAspect#1202731, procurementAspect#1202732, productGroup#1202733, filteredUnitOfMeasureConversions#1202734, quantityNumerator#1202735, quantityDenominator#1202736, (cast(quantityNumerator#1202735 as double) / cast(quantityDenominator#1202736 as double)) AS outboundUnit#1202737]
(1083) Project
Arguments: [product#1202695, plant#1202696, orderDateTime#1202697, productPlant#1202707, timezonecode#1202721, systemId#1202722, internalUUID#1202723, id#1202724, displayId#1202725, name#1202726, baseUnitOfMeasure#1202727, unitOfMeasures#1202728, unitOfMeasureConversions#1202729, productionAspect#1202730, salesAspect#1202731, procurementAspect#1202732, productGroup#1202733, filteredUnitOfMeasureConversions#1202734, quantityNumerator#1202735, quantityDenominator#1202736, CASE WHEN (isnull(outboundUnit#1202737) OR (outboundUnit#1202737 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1202737 END AS outboundUnit#1202738]
(1084) Project
Arguments: [product#1202695, plant#1202696, orderDateTime#1202697, productPlant#1202707, timezonecode#1202721, outboundUnit#1202738]
(1085) Join
Arguments: Inner, ((plantUuid#1202687 = plant#1202696) AND (productUuid#1202689 = product#1202695))
(1086) Filter
Arguments: (calculationDateTime#1202683 <= orderDateTime#1202697)
(1087) Project
Arguments: [plantUuid#1202687 AS plant#1202739, productUuid#1202689 AS product#1202740, storageLocId#1202690, calculationDateTime#1202683, quantity#1202692]
(1088) Aggregate
Arguments: [plant#1202739, product#1202740, storageLocId#1202690], [plant#1202739, product#1202740, storageLocId#1202690, max(calculationDateTime#1202683) AS max_calc_datetime#1202741]
(1089) Join
Arguments: Inner, ((((plant#1202602 <=> plant#1202739) AND (product#1202603 <=> product#1202740)) AND (storageLocId#1202553 <=> storageLocId#1202690)) AND (calculationDateTime#1202546 <=> max_calc_datetime#1202741))
(1090) Project
Arguments: [plant#1202602, product#1202603, storageLocId#1202553, calculationDateTime#1202546, quantity#1202555]
(1091) Aggregate
Arguments: [product#1202603, plant#1202602], [product#1202603, plant#1202602, sum(quantity#1202555) AS quantitySum#1202742, min(calculationDateTime#1202546) AS minCalculationDateTime#1202743]
(1092) Project
Arguments: [product#1202603, plant#1202602, quantitySum#1202742, minCalculationDateTime#1202743, round(quantitySum#1202742, 0) AS roundedQuantitySum#1202744]
(1093) Join
Arguments: LeftOuter, ((plant#1202424 = plant#1202602) AND (product#1202423 = product#1202603))
(1094) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, outboundUnit#1202466, roundedQuantitySum#1202744, minCalculationDateTime#1202743]
(1095) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, outboundUnit#1202466, roundedQuantitySum#1202744, minCalculationDateTime#1202743, CASE WHEN isnotnull(minCalculationDateTime#1202743) THEN minCalculationDateTime#1202743 ELSE orderDateTime#1202425 END AS stockDatetime#1202745]
(1096) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, outboundUnit#1202466, roundedQuantitySum#1202744, minCalculationDateTime#1202743, stockDatetime#1202745, CASE WHEN isnotnull(roundedQuantitySum#1202744) THEN array(roundedQuantitySum#1202744) ELSE array(0.0) END AS stockBatchQuantities#1202746]
(1097) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, outboundUnit#1202466, roundedQuantitySum#1202744, minCalculationDateTime#1202743, stockDatetime#1202745, stockBatchQuantities#1202746, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1202747]
(1098) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, outboundUnit#1202466, roundedQuantitySum#1202744, stockDatetime#1202745, stockBatchQuantities#1202746, stockBatchShelfLifeEndDatetimes#1202747]
(1099) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, outboundUnit#1202466, stockDatetime#1202745, stockBatchQuantities#1202746, stockBatchShelfLifeEndDatetimes#1202747]
(1100) LogicalRelation
Arguments: parquet, [product#1202748, plant#1202749, orderDateTime#1202750, planningStartDateTime#1202751], false
(1101) RepartitionByExpression
Arguments: [product#1202748, plant#1202749], 37
(1102) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750]
(1103) LogicalRelation
Arguments: parquet, [systemId#1202752, internalUUID#1202753, plant#1202754, product#1202755, blockedForReplenishmentStartingFrom#1202756, productionAspect#1202757, salesPlant#1202758, listing#1202759], false
(1104) Repartition
Arguments: 37, true
(1105) Project
Arguments: [systemId#1202752, internalUUID#1202753, plant#1202754, product#1202755, blockedForReplenishmentStartingFrom#1202756, productionAspect#1202757, salesPlant#1202758, listing#1202759, struct(systemId, systemId#1202752, internalUUID, internalUUID#1202753, plant, plant#1202754, product, product#1202755, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1202756, productionAspect, productionAspect#1202757, salesPlant, salesPlant#1202758, listing, listing#1202759) AS productPlant#1202760]
(1106) Project
Arguments: [productPlant#1202760]
(1107) Join
Arguments: LeftOuter, ((product#1202748 <=> productPlant#1202760.product.internalRefUUID) AND (plant#1202749 <=> productPlant#1202760.plant.internalRefUUID))
(1108) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760]
(1109) SubqueryAlias
Arguments: wl
(1110) LogicalRelation
Arguments: parquet, [systemId#1202761, internalUUID#1202762, id#1202763, displayId#1202764, name#1202765, category#1202766, companyCode#1202767, address#1202768, mainDistributionChain#1202769, mainPurchasingOrganization#1202770, validPurchasingOrganizations#1202771, productGroup#1202772], false
(1111) Repartition
Arguments: 37, true
(1112) Project
Arguments: [internalUUID#1202762, address#1202768.timeZone.code AS timezonecode#1202773]
(1113) Join
Arguments: LeftOuter, (plant#1202749 <=> internalUUID#1202762)
(1114) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, internalUUID#1202762, CASE WHEN isnotnull(timezonecode#1202773) THEN timezonecode#1202773 ELSE UTC END AS timezonecode#1202774]
(1115) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774]
(1116) LogicalRelation
Arguments: parquet, [systemId#1202775, internalUUID#1202776, id#1202777, displayId#1202778, name#1202779, baseUnitOfMeasure#1202780, unitOfMeasures#1202781, unitOfMeasureConversions#1202782, productionAspect#1202783, salesAspect#1202784, procurementAspect#1202785, productGroup#1202786], false
(1117) Repartition
Arguments: 37, true
(1118) Join
Arguments: LeftOuter, (product#1202748 = internalUUID#1202776)
(1119) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, systemId#1202775, internalUUID#1202776, id#1202777, displayId#1202778, name#1202779, baseUnitOfMeasure#1202780, unitOfMeasures#1202781, unitOfMeasureConversions#1202782, productionAspect#1202783, salesAspect#1202784, procurementAspect#1202785, productGroup#1202786, filter(unitOfMeasureConversions#1202782, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1202760.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1202760.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202780.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202780.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202787]
(1120) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202787.quantityNumerator), true, [quantityNumerator#1202788]
(1121) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, systemId#1202775, internalUUID#1202776, id#1202777, displayId#1202778, name#1202779, baseUnitOfMeasure#1202780, unitOfMeasures#1202781, unitOfMeasureConversions#1202782, productionAspect#1202783, salesAspect#1202784, procurementAspect#1202785, productGroup#1202786, filteredUnitOfMeasureConversions#1202787, quantityNumerator#1202788]
(1122) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202787.quantityDenominator), true, [quantityDenominator#1202789]
(1123) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, systemId#1202775, internalUUID#1202776, id#1202777, displayId#1202778, name#1202779, baseUnitOfMeasure#1202780, unitOfMeasures#1202781, unitOfMeasureConversions#1202782, productionAspect#1202783, salesAspect#1202784, procurementAspect#1202785, productGroup#1202786, filteredUnitOfMeasureConversions#1202787, quantityNumerator#1202788, quantityDenominator#1202789]
(1124) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, systemId#1202775, internalUUID#1202776, id#1202777, displayId#1202778, name#1202779, baseUnitOfMeasure#1202780, unitOfMeasures#1202781, unitOfMeasureConversions#1202782, productionAspect#1202783, salesAspect#1202784, procurementAspect#1202785, productGroup#1202786, filteredUnitOfMeasureConversions#1202787, quantityNumerator#1202788, quantityDenominator#1202789, (cast(quantityNumerator#1202788 as double) / cast(quantityDenominator#1202789 as double)) AS outboundUnit#1202790]
(1125) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, systemId#1202775, internalUUID#1202776, id#1202777, displayId#1202778, name#1202779, baseUnitOfMeasure#1202780, unitOfMeasures#1202781, unitOfMeasureConversions#1202782, productionAspect#1202783, salesAspect#1202784, procurementAspect#1202785, productGroup#1202786, filteredUnitOfMeasureConversions#1202787, quantityNumerator#1202788, quantityDenominator#1202789, CASE WHEN (isnull(outboundUnit#1202790) OR (outboundUnit#1202790 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1202790 END AS outboundUnit#1202791]
(1126) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791]
(1127) LogicalRelation
Arguments: parquet, [systemId#1202792, internalUUID#1202793, product#1202794, plant#1202795, calculationDateTime#1202796, stockQuantities#1202797], false
(1128) Repartition
Arguments: 37, true
(1129) LogicalRelation
Arguments: parquet, [marketUnit#1202798, description#1202799, articleHierarchy#1202800, defaultCurrency#1202801, responsibilities#1202802, replenishmentTypes#1202803, distributionCenters#1202804, assignedArticleHierarchyNodes#1202805, minOrderQtySetting#1202806, listingCheck#1202807, odsSelection#1202808, demandProfiles#1202809, constraintProfiles#1202810, optimizationProfiles#1202811, orderGroupSplitProfiles#1202812, supplierMinimumProfiles#1202813, multipleRestrictionProfiles#1202814, preferredUomSource#1202815, handlingOfUnfulfilledDemands#1202816, negligibleQuantitiesThreshold#1202817, eventtype#1202818, minOrderQtySettingInternal#1202819], false
(1130) Repartition
Arguments: 37, true
(1131) Filter
Arguments: (marketUnit#1202798 <=> Grocery_SS)
(1132) Project
Arguments: [marketUnit#1202798, description#1202799, articleHierarchy#1202800, defaultCurrency#1202801, responsibilities#1202802, replenishmentTypes#1202803, distributionCenters#1202804, assignedArticleHierarchyNodes#1202805, minOrderQtySetting#1202806, listingCheck#1202807, odsSelection#1202808, demandProfiles#1202809, constraintProfiles#1202810, optimizationProfiles#1202811, orderGroupSplitProfiles#1202812, supplierMinimumProfiles#1202813, multipleRestrictionProfiles#1202814, preferredUomSource#1202815, handlingOfUnfulfilledDemands#1202816, negligibleQuantitiesThreshold#1202817, eventtype#1202818, minOrderQtySettingInternal#1202819]
(1133) Project
Arguments: [distributionCenters#1202804]
(1134) Generate
Arguments: explode(distributionCenters#1202804), false, [distributionCenters#1202820]
(1135) Project
Arguments: [distributionCenters#1202820]
(1136) Generate
Arguments: explode(distributionCenters#1202820.storageLocations), false, [storageLocations#1202821]
(1137) Project
Arguments: [distributionCenters#1202820.id AS plantId#1202822, distributionCenters#1202820.internalRefUUID AS plantUuid#1202823, storageLocations#1202821]
(1138) Project
Arguments: [plantId#1202822, plantUuid#1202823, storageLocations#1202821.id AS storageLocId#1202824, storageLocations#1202821.internalRefUUID AS storageLocUuid#1202825]
(1139) LogicalRelation
Arguments: parquet, [product#1202826, plant#1202827, orderDateTime#1202828, planningStartDateTime#1202829], false
(1140) RepartitionByExpression
Arguments: [product#1202826, plant#1202827], 37
(1141) Project
Arguments: [product#1202826, plant#1202827, orderDateTime#1202828]
(1142) LogicalRelation
Arguments: parquet, [systemId#1202830, internalUUID#1202831, plant#1202832, product#1202833, blockedForReplenishmentStartingFrom#1202834, productionAspect#1202835, salesPlant#1202836, listing#1202837], false
(1143) Repartition
Arguments: 37, true
(1144) Project
Arguments: [systemId#1202830, internalUUID#1202831, plant#1202832, product#1202833, blockedForReplenishmentStartingFrom#1202834, productionAspect#1202835, salesPlant#1202836, listing#1202837, struct(systemId, systemId#1202830, internalUUID, internalUUID#1202831, plant, plant#1202832, product, product#1202833, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1202834, productionAspect, productionAspect#1202835, salesPlant, salesPlant#1202836, listing, listing#1202837) AS productPlant#1202838]
(1145) Project
Arguments: [productPlant#1202838]
(1146) Join
Arguments: LeftOuter, ((product#1202826 <=> productPlant#1202838.product.internalRefUUID) AND (plant#1202827 <=> productPlant#1202838.plant.internalRefUUID))
(1147) Project
Arguments: [product#1202826, plant#1202827, orderDateTime#1202828, productPlant#1202838]
(1148) SubqueryAlias
Arguments: wl
(1149) LogicalRelation
Arguments: parquet, [systemId#1202839, internalUUID#1202840, id#1202841, displayId#1202842, name#1202843, category#1202844, companyCode#1202845, address#1202846, mainDistributionChain#1202847, mainPurchasingOrganization#1202848, validPurchasingOrganizations#1202849, productGroup#1202850], false
(1150) Repartition
Arguments: 37, true
(1151) Project
Arguments: [internalUUID#1202840, address#1202846.timeZone.code AS timezonecode#1202851]
(1152) Join
Arguments: LeftOuter, (plant#1202827 <=> internalUUID#1202840)
(1153) Project
Arguments: [product#1202826, plant#1202827, orderDateTime#1202828, productPlant#1202838, internalUUID#1202840, CASE WHEN isnotnull(timezonecode#1202851) THEN timezonecode#1202851 ELSE UTC END AS timezonecode#1202852]
(1154) Project
Arguments: [product#1202826, plant#1202827, orderDateTime#1202828, productPlant#1202838, timezonecode#1202852]
(1155) LogicalRelation
Arguments: parquet, [systemId#1202853, internalUUID#1202854, id#1202855, displayId#1202856, name#1202857, baseUnitOfMeasure#1202858, unitOfMeasures#1202859, unitOfMeasureConversions#1202860, productionAspect#1202861, salesAspect#1202862, procurementAspect#1202863, productGroup#1202864], false
(1156) Repartition
Arguments: 37, true
(1157) Join
Arguments: LeftOuter, (product#1202826 = internalUUID#1202854)
(1158) Project
Arguments: [product#1202826, plant#1202827, orderDateTime#1202828, productPlant#1202838, timezonecode#1202852, systemId#1202853, internalUUID#1202854, id#1202855, displayId#1202856, name#1202857, baseUnitOfMeasure#1202858, unitOfMeasures#1202859, unitOfMeasureConversions#1202860, productionAspect#1202861, salesAspect#1202862, procurementAspect#1202863, productGroup#1202864, filter(unitOfMeasureConversions#1202860, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1202838.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1202838.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202858.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202858.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202865]
(1159) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202865.quantityNumerator), true, [quantityNumerator#1202866]
(1160) Project
Arguments: [product#1202826, plant#1202827, orderDateTime#1202828, productPlant#1202838, timezonecode#1202852, systemId#1202853, internalUUID#1202854, id#1202855, displayId#1202856, name#1202857, baseUnitOfMeasure#1202858, unitOfMeasures#1202859, unitOfMeasureConversions#1202860, productionAspect#1202861, salesAspect#1202862, procurementAspect#1202863, productGroup#1202864, filteredUnitOfMeasureConversions#1202865, quantityNumerator#1202866]
(1161) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202865.quantityDenominator), true, [quantityDenominator#1202867]
(1162) Project
Arguments: [product#1202826, plant#1202827, orderDateTime#1202828, productPlant#1202838, timezonecode#1202852, systemId#1202853, internalUUID#1202854, id#1202855, displayId#1202856, name#1202857, baseUnitOfMeasure#1202858, unitOfMeasures#1202859, unitOfMeasureConversions#1202860, productionAspect#1202861, salesAspect#1202862, procurementAspect#1202863, productGroup#1202864, filteredUnitOfMeasureConversions#1202865, quantityNumerator#1202866, quantityDenominator#1202867]
(1163) Project
Arguments: [product#1202826, plant#1202827, orderDateTime#1202828, productPlant#1202838, timezonecode#1202852, systemId#1202853, internalUUID#1202854, id#1202855, displayId#1202856, name#1202857, baseUnitOfMeasure#1202858, unitOfMeasures#1202859, unitOfMeasureConversions#1202860, productionAspect#1202861, salesAspect#1202862, procurementAspect#1202863, productGroup#1202864, filteredUnitOfMeasureConversions#1202865, quantityNumerator#1202866, quantityDenominator#1202867, (cast(quantityNumerator#1202866 as double) / cast(quantityDenominator#1202867 as double)) AS outboundUnit#1202868]
(1164) Project
Arguments: [product#1202826, plant#1202827, orderDateTime#1202828, productPlant#1202838, timezonecode#1202852, systemId#1202853, internalUUID#1202854, id#1202855, displayId#1202856, name#1202857, baseUnitOfMeasure#1202858, unitOfMeasures#1202859, unitOfMeasureConversions#1202860, productionAspect#1202861, salesAspect#1202862, procurementAspect#1202863, productGroup#1202864, filteredUnitOfMeasureConversions#1202865, quantityNumerator#1202866, quantityDenominator#1202867, CASE WHEN (isnull(outboundUnit#1202868) OR (outboundUnit#1202868 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1202868 END AS outboundUnit#1202869]
(1165) Project
Arguments: [product#1202826, plant#1202827, orderDateTime#1202828, productPlant#1202838, timezonecode#1202852, outboundUnit#1202869]
(1166) Project
Arguments: [plant#1202827]
(1167) Deduplicate
Arguments: [plant#1202827]
(1168) Join
Arguments: Inner, (plantUuid#1202823 = plant#1202827)
(1169) Project
Arguments: [plantId#1202822, plantUuid#1202823, storageLocId#1202824, storageLocUuid#1202825]
(1170) Join
Arguments: Inner, (plant#1202795.internalRefUUID <=> plantUuid#1202823)
(1171) Generate
Arguments: explode(filter(stockQuantities#1202797, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1202825) AND (lambda x#1200047.storageLocation.Id = storageLocId#1202824)), lambda x#1200047, false))), false, [stockQuantity#1202870]
(1172) Project
Arguments: [systemId#1202792, internalUUID#1202793, product#1202794, plant#1202795, calculationDateTime#1202796, stockQuantities#1202797, plantId#1202822, plantUuid#1202823, storageLocId#1202824, storageLocUuid#1202825, stockQuantity#1202870]
(1173) Aggregate
Arguments: [plantUuid#1202823, internalUUID#1202793, plant#1202795, product#1202794, systemId#1202792], [plantUuid#1202823, internalUUID#1202793, plant#1202795, product#1202794, systemId#1202792, first(calculationDateTime#1202796, false) AS calculationDateTime#1202871, collect_list(stockQuantity#1202870, 0, 0) AS stockQuantities#1202872]
(1174) Project
Arguments: [systemId#1202792, internalUUID#1202793, product#1202794, plant#1202795, calculationDateTime#1202871, stockQuantities#1202872]
(1175) Generate
Arguments: explode(stockQuantities#1202872), false, [stockQuantity#1202873]
(1176) Project
Arguments: [systemId#1202792, internalUUID#1202793, product#1202794, plant#1202795, calculationDateTime#1202871, stockQuantities#1202872, stockQuantity#1202873]
(1177) Project
Arguments: [plant#1202795.id AS plant#1202874, plant#1202795.internalRefUUID AS plantUuid#1202875, product#1202794.id AS product#1202876, product#1202794.internalRefUUID AS productUuid#1202877, calculationDateTime#1202871, stockQuantity#1202873.storagelocation.id AS storageLocId#1202878, stockQuantity#1202873.storagelocation.internalRefUUID AS storageLocUuid#1202879, stockQuantity#1202873.quantity.measure AS quantity#1202880, stockQuantity#1202873.specialStockIndicator.code AS specialStockIndicator#1202881, stockQuantity#1202873.stockType.code AS stockType#1202882]
(1178) Filter
Arguments: ((specialStockIndicator#1202881 = ) AND (stockType#1202882 = 01))
(1179) LogicalRelation
Arguments: parquet, [product#1202883, plant#1202884, orderDateTime#1202885, planningStartDateTime#1202886], false
(1180) RepartitionByExpression
Arguments: [product#1202883, plant#1202884], 37
(1181) Project
Arguments: [product#1202883, plant#1202884, orderDateTime#1202885]
(1182) LogicalRelation
Arguments: parquet, [systemId#1202887, internalUUID#1202888, plant#1202889, product#1202890, blockedForReplenishmentStartingFrom#1202891, productionAspect#1202892, salesPlant#1202893, listing#1202894], false
(1183) Repartition
Arguments: 37, true
(1184) Project
Arguments: [systemId#1202887, internalUUID#1202888, plant#1202889, product#1202890, blockedForReplenishmentStartingFrom#1202891, productionAspect#1202892, salesPlant#1202893, listing#1202894, struct(systemId, systemId#1202887, internalUUID, internalUUID#1202888, plant, plant#1202889, product, product#1202890, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1202891, productionAspect, productionAspect#1202892, salesPlant, salesPlant#1202893, listing, listing#1202894) AS productPlant#1202895]
(1185) Project
Arguments: [productPlant#1202895]
(1186) Join
Arguments: LeftOuter, ((product#1202883 <=> productPlant#1202895.product.internalRefUUID) AND (plant#1202884 <=> productPlant#1202895.plant.internalRefUUID))
(1187) Project
Arguments: [product#1202883, plant#1202884, orderDateTime#1202885, productPlant#1202895]
(1188) SubqueryAlias
Arguments: wl
(1189) LogicalRelation
Arguments: parquet, [systemId#1202896, internalUUID#1202897, id#1202898, displayId#1202899, name#1202900, category#1202901, companyCode#1202902, address#1202903, mainDistributionChain#1202904, mainPurchasingOrganization#1202905, validPurchasingOrganizations#1202906, productGroup#1202907], false
(1190) Repartition
Arguments: 37, true
(1191) Project
Arguments: [internalUUID#1202897, address#1202903.timeZone.code AS timezonecode#1202908]
(1192) Join
Arguments: LeftOuter, (plant#1202884 <=> internalUUID#1202897)
(1193) Project
Arguments: [product#1202883, plant#1202884, orderDateTime#1202885, productPlant#1202895, internalUUID#1202897, CASE WHEN isnotnull(timezonecode#1202908) THEN timezonecode#1202908 ELSE UTC END AS timezonecode#1202909]
(1194) Project
Arguments: [product#1202883, plant#1202884, orderDateTime#1202885, productPlant#1202895, timezonecode#1202909]
(1195) LogicalRelation
Arguments: parquet, [systemId#1202910, internalUUID#1202911, id#1202912, displayId#1202913, name#1202914, baseUnitOfMeasure#1202915, unitOfMeasures#1202916, unitOfMeasureConversions#1202917, productionAspect#1202918, salesAspect#1202919, procurementAspect#1202920, productGroup#1202921], false
(1196) Repartition
Arguments: 37, true
(1197) Join
Arguments: LeftOuter, (product#1202883 = internalUUID#1202911)
(1198) Project
Arguments: [product#1202883, plant#1202884, orderDateTime#1202885, productPlant#1202895, timezonecode#1202909, systemId#1202910, internalUUID#1202911, id#1202912, displayId#1202913, name#1202914, baseUnitOfMeasure#1202915, unitOfMeasures#1202916, unitOfMeasureConversions#1202917, productionAspect#1202918, salesAspect#1202919, procurementAspect#1202920, productGroup#1202921, filter(unitOfMeasureConversions#1202917, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1202895.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1202895.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202915.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202915.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1202922]
(1199) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202922.quantityNumerator), true, [quantityNumerator#1202923]
(1200) Project
Arguments: [product#1202883, plant#1202884, orderDateTime#1202885, productPlant#1202895, timezonecode#1202909, systemId#1202910, internalUUID#1202911, id#1202912, displayId#1202913, name#1202914, baseUnitOfMeasure#1202915, unitOfMeasures#1202916, unitOfMeasureConversions#1202917, productionAspect#1202918, salesAspect#1202919, procurementAspect#1202920, productGroup#1202921, filteredUnitOfMeasureConversions#1202922, quantityNumerator#1202923]
(1201) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1202922.quantityDenominator), true, [quantityDenominator#1202924]
(1202) Project
Arguments: [product#1202883, plant#1202884, orderDateTime#1202885, productPlant#1202895, timezonecode#1202909, systemId#1202910, internalUUID#1202911, id#1202912, displayId#1202913, name#1202914, baseUnitOfMeasure#1202915, unitOfMeasures#1202916, unitOfMeasureConversions#1202917, productionAspect#1202918, salesAspect#1202919, procurementAspect#1202920, productGroup#1202921, filteredUnitOfMeasureConversions#1202922, quantityNumerator#1202923, quantityDenominator#1202924]
(1203) Project
Arguments: [product#1202883, plant#1202884, orderDateTime#1202885, productPlant#1202895, timezonecode#1202909, systemId#1202910, internalUUID#1202911, id#1202912, displayId#1202913, name#1202914, baseUnitOfMeasure#1202915, unitOfMeasures#1202916, unitOfMeasureConversions#1202917, productionAspect#1202918, salesAspect#1202919, procurementAspect#1202920, productGroup#1202921, filteredUnitOfMeasureConversions#1202922, quantityNumerator#1202923, quantityDenominator#1202924, (cast(quantityNumerator#1202923 as double) / cast(quantityDenominator#1202924 as double)) AS outboundUnit#1202925]
(1204) Project
Arguments: [product#1202883, plant#1202884, orderDateTime#1202885, productPlant#1202895, timezonecode#1202909, systemId#1202910, internalUUID#1202911, id#1202912, displayId#1202913, name#1202914, baseUnitOfMeasure#1202915, unitOfMeasures#1202916, unitOfMeasureConversions#1202917, productionAspect#1202918, salesAspect#1202919, procurementAspect#1202920, productGroup#1202921, filteredUnitOfMeasureConversions#1202922, quantityNumerator#1202923, quantityDenominator#1202924, CASE WHEN (isnull(outboundUnit#1202925) OR (outboundUnit#1202925 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1202925 END AS outboundUnit#1202926]
(1205) Project
Arguments: [product#1202883, plant#1202884, orderDateTime#1202885, productPlant#1202895, timezonecode#1202909, outboundUnit#1202926]
(1206) Join
Arguments: Inner, ((plantUuid#1202875 = plant#1202884) AND (productUuid#1202877 = product#1202883))
(1207) Filter
Arguments: (calculationDateTime#1202871 <= orderDateTime#1202885)
(1208) Project
Arguments: [plantUuid#1202875 AS plant#1202927, productUuid#1202877 AS product#1202928, storageLocId#1202878, calculationDateTime#1202871, quantity#1202880]
(1209) LogicalRelation
Arguments: parquet, [systemId#1202929, internalUUID#1202930, product#1202931, plant#1202932, calculationDateTime#1202933, stockQuantities#1202934], false
(1210) Repartition
Arguments: 37, true
(1211) LogicalRelation
Arguments: parquet, [marketUnit#1202935, description#1202936, articleHierarchy#1202937, defaultCurrency#1202938, responsibilities#1202939, replenishmentTypes#1202940, distributionCenters#1202941, assignedArticleHierarchyNodes#1202942, minOrderQtySetting#1202943, listingCheck#1202944, odsSelection#1202945, demandProfiles#1202946, constraintProfiles#1202947, optimizationProfiles#1202948, orderGroupSplitProfiles#1202949, supplierMinimumProfiles#1202950, multipleRestrictionProfiles#1202951, preferredUomSource#1202952, handlingOfUnfulfilledDemands#1202953, negligibleQuantitiesThreshold#1202954, eventtype#1202955, minOrderQtySettingInternal#1202956], false
(1212) Repartition
Arguments: 37, true
(1213) Filter
Arguments: (marketUnit#1202935 <=> Grocery_SS)
(1214) Project
Arguments: [marketUnit#1202935, description#1202936, articleHierarchy#1202937, defaultCurrency#1202938, responsibilities#1202939, replenishmentTypes#1202940, distributionCenters#1202941, assignedArticleHierarchyNodes#1202942, minOrderQtySetting#1202943, listingCheck#1202944, odsSelection#1202945, demandProfiles#1202946, constraintProfiles#1202947, optimizationProfiles#1202948, orderGroupSplitProfiles#1202949, supplierMinimumProfiles#1202950, multipleRestrictionProfiles#1202951, preferredUomSource#1202952, handlingOfUnfulfilledDemands#1202953, negligibleQuantitiesThreshold#1202954, eventtype#1202955, minOrderQtySettingInternal#1202956]
(1215) Project
Arguments: [distributionCenters#1202941]
(1216) Generate
Arguments: explode(distributionCenters#1202941), false, [distributionCenters#1202957]
(1217) Project
Arguments: [distributionCenters#1202957]
(1218) Generate
Arguments: explode(distributionCenters#1202957.storageLocations), false, [storageLocations#1202958]
(1219) Project
Arguments: [distributionCenters#1202957.id AS plantId#1202959, distributionCenters#1202957.internalRefUUID AS plantUuid#1202960, storageLocations#1202958]
(1220) Project
Arguments: [plantId#1202959, plantUuid#1202960, storageLocations#1202958.id AS storageLocId#1202961, storageLocations#1202958.internalRefUUID AS storageLocUuid#1202962]
(1221) LogicalRelation
Arguments: parquet, [product#1202963, plant#1202964, orderDateTime#1202965, planningStartDateTime#1202966], false
(1222) RepartitionByExpression
Arguments: [product#1202963, plant#1202964], 37
(1223) Project
Arguments: [product#1202963, plant#1202964, orderDateTime#1202965]
(1224) LogicalRelation
Arguments: parquet, [systemId#1202967, internalUUID#1202968, plant#1202969, product#1202970, blockedForReplenishmentStartingFrom#1202971, productionAspect#1202972, salesPlant#1202973, listing#1202974], false
(1225) Repartition
Arguments: 37, true
(1226) Project
Arguments: [systemId#1202967, internalUUID#1202968, plant#1202969, product#1202970, blockedForReplenishmentStartingFrom#1202971, productionAspect#1202972, salesPlant#1202973, listing#1202974, struct(systemId, systemId#1202967, internalUUID, internalUUID#1202968, plant, plant#1202969, product, product#1202970, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1202971, productionAspect, productionAspect#1202972, salesPlant, salesPlant#1202973, listing, listing#1202974) AS productPlant#1202975]
(1227) Project
Arguments: [productPlant#1202975]
(1228) Join
Arguments: LeftOuter, ((product#1202963 <=> productPlant#1202975.product.internalRefUUID) AND (plant#1202964 <=> productPlant#1202975.plant.internalRefUUID))
(1229) Project
Arguments: [product#1202963, plant#1202964, orderDateTime#1202965, productPlant#1202975]
(1230) SubqueryAlias
Arguments: wl
(1231) LogicalRelation
Arguments: parquet, [systemId#1202976, internalUUID#1202977, id#1202978, displayId#1202979, name#1202980, category#1202981, companyCode#1202982, address#1202983, mainDistributionChain#1202984, mainPurchasingOrganization#1202985, validPurchasingOrganizations#1202986, productGroup#1202987], false
(1232) Repartition
Arguments: 37, true
(1233) Project
Arguments: [internalUUID#1202977, address#1202983.timeZone.code AS timezonecode#1202988]
(1234) Join
Arguments: LeftOuter, (plant#1202964 <=> internalUUID#1202977)
(1235) Project
Arguments: [product#1202963, plant#1202964, orderDateTime#1202965, productPlant#1202975, internalUUID#1202977, CASE WHEN isnotnull(timezonecode#1202988) THEN timezonecode#1202988 ELSE UTC END AS timezonecode#1202989]
(1236) Project
Arguments: [product#1202963, plant#1202964, orderDateTime#1202965, productPlant#1202975, timezonecode#1202989]
(1237) LogicalRelation
Arguments: parquet, [systemId#1202990, internalUUID#1202991, id#1202992, displayId#1202993, name#1202994, baseUnitOfMeasure#1202995, unitOfMeasures#1202996, unitOfMeasureConversions#1202997, productionAspect#1202998, salesAspect#1202999, procurementAspect#1203000, productGroup#1203001], false
(1238) Repartition
Arguments: 37, true
(1239) Join
Arguments: LeftOuter, (product#1202963 = internalUUID#1202991)
(1240) Project
Arguments: [product#1202963, plant#1202964, orderDateTime#1202965, productPlant#1202975, timezonecode#1202989, systemId#1202990, internalUUID#1202991, id#1202992, displayId#1202993, name#1202994, baseUnitOfMeasure#1202995, unitOfMeasures#1202996, unitOfMeasureConversions#1202997, productionAspect#1202998, salesAspect#1202999, procurementAspect#1203000, productGroup#1203001, filter(unitOfMeasureConversions#1202997, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1202975.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1202975.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1202995.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1202995.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203002]
(1241) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203002.quantityNumerator), true, [quantityNumerator#1203003]
(1242) Project
Arguments: [product#1202963, plant#1202964, orderDateTime#1202965, productPlant#1202975, timezonecode#1202989, systemId#1202990, internalUUID#1202991, id#1202992, displayId#1202993, name#1202994, baseUnitOfMeasure#1202995, unitOfMeasures#1202996, unitOfMeasureConversions#1202997, productionAspect#1202998, salesAspect#1202999, procurementAspect#1203000, productGroup#1203001, filteredUnitOfMeasureConversions#1203002, quantityNumerator#1203003]
(1243) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203002.quantityDenominator), true, [quantityDenominator#1203004]
(1244) Project
Arguments: [product#1202963, plant#1202964, orderDateTime#1202965, productPlant#1202975, timezonecode#1202989, systemId#1202990, internalUUID#1202991, id#1202992, displayId#1202993, name#1202994, baseUnitOfMeasure#1202995, unitOfMeasures#1202996, unitOfMeasureConversions#1202997, productionAspect#1202998, salesAspect#1202999, procurementAspect#1203000, productGroup#1203001, filteredUnitOfMeasureConversions#1203002, quantityNumerator#1203003, quantityDenominator#1203004]
(1245) Project
Arguments: [product#1202963, plant#1202964, orderDateTime#1202965, productPlant#1202975, timezonecode#1202989, systemId#1202990, internalUUID#1202991, id#1202992, displayId#1202993, name#1202994, baseUnitOfMeasure#1202995, unitOfMeasures#1202996, unitOfMeasureConversions#1202997, productionAspect#1202998, salesAspect#1202999, procurementAspect#1203000, productGroup#1203001, filteredUnitOfMeasureConversions#1203002, quantityNumerator#1203003, quantityDenominator#1203004, (cast(quantityNumerator#1203003 as double) / cast(quantityDenominator#1203004 as double)) AS outboundUnit#1203005]
(1246) Project
Arguments: [product#1202963, plant#1202964, orderDateTime#1202965, productPlant#1202975, timezonecode#1202989, systemId#1202990, internalUUID#1202991, id#1202992, displayId#1202993, name#1202994, baseUnitOfMeasure#1202995, unitOfMeasures#1202996, unitOfMeasureConversions#1202997, productionAspect#1202998, salesAspect#1202999, procurementAspect#1203000, productGroup#1203001, filteredUnitOfMeasureConversions#1203002, quantityNumerator#1203003, quantityDenominator#1203004, CASE WHEN (isnull(outboundUnit#1203005) OR (outboundUnit#1203005 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1203005 END AS outboundUnit#1203006]
(1247) Project
Arguments: [product#1202963, plant#1202964, orderDateTime#1202965, productPlant#1202975, timezonecode#1202989, outboundUnit#1203006]
(1248) Project
Arguments: [plant#1202964]
(1249) Deduplicate
Arguments: [plant#1202964]
(1250) Join
Arguments: Inner, (plantUuid#1202960 = plant#1202964)
(1251) Project
Arguments: [plantId#1202959, plantUuid#1202960, storageLocId#1202961, storageLocUuid#1202962]
(1252) Join
Arguments: Inner, (plant#1202932.internalRefUUID <=> plantUuid#1202960)
(1253) Generate
Arguments: explode(filter(stockQuantities#1202934, lambdafunction(((lambda x#1200047.storageLocation.internalRefUuid = storageLocUuid#1202962) AND (lambda x#1200047.storageLocation.Id = storageLocId#1202961)), lambda x#1200047, false))), false, [stockQuantity#1203007]
(1254) Project
Arguments: [systemId#1202929, internalUUID#1202930, product#1202931, plant#1202932, calculationDateTime#1202933, stockQuantities#1202934, plantId#1202959, plantUuid#1202960, storageLocId#1202961, storageLocUuid#1202962, stockQuantity#1203007]
(1255) Aggregate
Arguments: [plantUuid#1202960, internalUUID#1202930, plant#1202932, product#1202931, systemId#1202929], [plantUuid#1202960, internalUUID#1202930, plant#1202932, product#1202931, systemId#1202929, first(calculationDateTime#1202933, false) AS calculationDateTime#1203008, collect_list(stockQuantity#1203007, 0, 0) AS stockQuantities#1203009]
(1256) Project
Arguments: [systemId#1202929, internalUUID#1202930, product#1202931, plant#1202932, calculationDateTime#1203008, stockQuantities#1203009]
(1257) Generate
Arguments: explode(stockQuantities#1203009), false, [stockQuantity#1203010]
(1258) Project
Arguments: [systemId#1202929, internalUUID#1202930, product#1202931, plant#1202932, calculationDateTime#1203008, stockQuantities#1203009, stockQuantity#1203010]
(1259) Project
Arguments: [plant#1202932.id AS plant#1203011, plant#1202932.internalRefUUID AS plantUuid#1203012, product#1202931.id AS product#1203013, product#1202931.internalRefUUID AS productUuid#1203014, calculationDateTime#1203008, stockQuantity#1203010.storagelocation.id AS storageLocId#1203015, stockQuantity#1203010.storagelocation.internalRefUUID AS storageLocUuid#1203016, stockQuantity#1203010.quantity.measure AS quantity#1203017, stockQuantity#1203010.specialStockIndicator.code AS specialStockIndicator#1203018, stockQuantity#1203010.stockType.code AS stockType#1203019]
(1260) Filter
Arguments: ((specialStockIndicator#1203018 = ) AND (stockType#1203019 = 01))
(1261) LogicalRelation
Arguments: parquet, [product#1203020, plant#1203021, orderDateTime#1203022, planningStartDateTime#1203023], false
(1262) RepartitionByExpression
Arguments: [product#1203020, plant#1203021], 37
(1263) Project
Arguments: [product#1203020, plant#1203021, orderDateTime#1203022]
(1264) LogicalRelation
Arguments: parquet, [systemId#1203024, internalUUID#1203025, plant#1203026, product#1203027, blockedForReplenishmentStartingFrom#1203028, productionAspect#1203029, salesPlant#1203030, listing#1203031], false
(1265) Repartition
Arguments: 37, true
(1266) Project
Arguments: [systemId#1203024, internalUUID#1203025, plant#1203026, product#1203027, blockedForReplenishmentStartingFrom#1203028, productionAspect#1203029, salesPlant#1203030, listing#1203031, struct(systemId, systemId#1203024, internalUUID, internalUUID#1203025, plant, plant#1203026, product, product#1203027, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1203028, productionAspect, productionAspect#1203029, salesPlant, salesPlant#1203030, listing, listing#1203031) AS productPlant#1203032]
(1267) Project
Arguments: [productPlant#1203032]
(1268) Join
Arguments: LeftOuter, ((product#1203020 <=> productPlant#1203032.product.internalRefUUID) AND (plant#1203021 <=> productPlant#1203032.plant.internalRefUUID))
(1269) Project
Arguments: [product#1203020, plant#1203021, orderDateTime#1203022, productPlant#1203032]
(1270) SubqueryAlias
Arguments: wl
(1271) LogicalRelation
Arguments: parquet, [systemId#1203033, internalUUID#1203034, id#1203035, displayId#1203036, name#1203037, category#1203038, companyCode#1203039, address#1203040, mainDistributionChain#1203041, mainPurchasingOrganization#1203042, validPurchasingOrganizations#1203043, productGroup#1203044], false
(1272) Repartition
Arguments: 37, true
(1273) Project
Arguments: [internalUUID#1203034, address#1203040.timeZone.code AS timezonecode#1203045]
(1274) Join
Arguments: LeftOuter, (plant#1203021 <=> internalUUID#1203034)
(1275) Project
Arguments: [product#1203020, plant#1203021, orderDateTime#1203022, productPlant#1203032, internalUUID#1203034, CASE WHEN isnotnull(timezonecode#1203045) THEN timezonecode#1203045 ELSE UTC END AS timezonecode#1203046]
(1276) Project
Arguments: [product#1203020, plant#1203021, orderDateTime#1203022, productPlant#1203032, timezonecode#1203046]
(1277) LogicalRelation
Arguments: parquet, [systemId#1203047, internalUUID#1203048, id#1203049, displayId#1203050, name#1203051, baseUnitOfMeasure#1203052, unitOfMeasures#1203053, unitOfMeasureConversions#1203054, productionAspect#1203055, salesAspect#1203056, procurementAspect#1203057, productGroup#1203058], false
(1278) Repartition
Arguments: 37, true
(1279) Join
Arguments: LeftOuter, (product#1203020 = internalUUID#1203048)
(1280) Project
Arguments: [product#1203020, plant#1203021, orderDateTime#1203022, productPlant#1203032, timezonecode#1203046, systemId#1203047, internalUUID#1203048, id#1203049, displayId#1203050, name#1203051, baseUnitOfMeasure#1203052, unitOfMeasures#1203053, unitOfMeasureConversions#1203054, productionAspect#1203055, salesAspect#1203056, procurementAspect#1203057, productGroup#1203058, filter(unitOfMeasureConversions#1203054, lambdafunction((((lambda u#1199989.measurementUnit1.code = productPlant#1203032.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1199989.measurementUnit1.internalRefUUID = productPlant#1203032.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1199989.measurementUnit2.code = baseUnitOfMeasure#1203052.code) AND (lambda u#1199989.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1203052.internalRefUUID))), lambda u#1199989, false)) AS filteredUnitOfMeasureConversions#1203059]
(1281) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203059.quantityNumerator), true, [quantityNumerator#1203060]
(1282) Project
Arguments: [product#1203020, plant#1203021, orderDateTime#1203022, productPlant#1203032, timezonecode#1203046, systemId#1203047, internalUUID#1203048, id#1203049, displayId#1203050, name#1203051, baseUnitOfMeasure#1203052, unitOfMeasures#1203053, unitOfMeasureConversions#1203054, productionAspect#1203055, salesAspect#1203056, procurementAspect#1203057, productGroup#1203058, filteredUnitOfMeasureConversions#1203059, quantityNumerator#1203060]
(1283) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1203059.quantityDenominator), true, [quantityDenominator#1203061]
(1284) Project
Arguments: [product#1203020, plant#1203021, orderDateTime#1203022, productPlant#1203032, timezonecode#1203046, systemId#1203047, internalUUID#1203048, id#1203049, displayId#1203050, name#1203051, baseUnitOfMeasure#1203052, unitOfMeasures#1203053, unitOfMeasureConversions#1203054, productionAspect#1203055, salesAspect#1203056, procurementAspect#1203057, productGroup#1203058, filteredUnitOfMeasureConversions#1203059, quantityNumerator#1203060, quantityDenominator#1203061]
(1285) Project
Arguments: [product#1203020, plant#1203021, orderDateTime#1203022, productPlant#1203032, timezonecode#1203046, systemId#1203047, internalUUID#1203048, id#1203049, displayId#1203050, name#1203051, baseUnitOfMeasure#1203052, unitOfMeasures#1203053, unitOfMeasureConversions#1203054, productionAspect#1203055, salesAspect#1203056, procurementAspect#1203057, productGroup#1203058, filteredUnitOfMeasureConversions#1203059, quantityNumerator#1203060, quantityDenominator#1203061, (cast(quantityNumerator#1203060 as double) / cast(quantityDenominator#1203061 as double)) AS outboundUnit#1203062]
(1286) Project
Arguments: [product#1203020, plant#1203021, orderDateTime#1203022, productPlant#1203032, timezonecode#1203046, systemId#1203047, internalUUID#1203048, id#1203049, displayId#1203050, name#1203051, baseUnitOfMeasure#1203052, unitOfMeasures#1203053, unitOfMeasureConversions#1203054, productionAspect#1203055, salesAspect#1203056, procurementAspect#1203057, productGroup#1203058, filteredUnitOfMeasureConversions#1203059, quantityNumerator#1203060, quantityDenominator#1203061, CASE WHEN (isnull(outboundUnit#1203062) OR (outboundUnit#1203062 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1203062 END AS outboundUnit#1203063]
(1287) Project
Arguments: [product#1203020, plant#1203021, orderDateTime#1203022, productPlant#1203032, timezonecode#1203046, outboundUnit#1203063]
(1288) Join
Arguments: Inner, ((plantUuid#1203012 = plant#1203021) AND (productUuid#1203014 = product#1203020))
(1289) Filter
Arguments: (calculationDateTime#1203008 <= orderDateTime#1203022)
(1290) Project
Arguments: [plantUuid#1203012 AS plant#1203064, productUuid#1203014 AS product#1203065, storageLocId#1203015, calculationDateTime#1203008, quantity#1203017]
(1291) Aggregate
Arguments: [plant#1203064, product#1203065, storageLocId#1203015], [plant#1203064, product#1203065, storageLocId#1203015, max(calculationDateTime#1203008) AS max_calc_datetime#1203066]
(1292) Join
Arguments: Inner, ((((plant#1202927 <=> plant#1203064) AND (product#1202928 <=> product#1203065)) AND (storageLocId#1202878 <=> storageLocId#1203015)) AND (calculationDateTime#1202871 <=> max_calc_datetime#1203066))
(1293) Project
Arguments: [plant#1202927, product#1202928, storageLocId#1202878, calculationDateTime#1202871, quantity#1202880]
(1294) Aggregate
Arguments: [product#1202928, plant#1202927], [product#1202928, plant#1202927, sum(quantity#1202880) AS quantitySum#1203067, min(calculationDateTime#1202871) AS minCalculationDateTime#1203068]
(1295) Project
Arguments: [product#1202928, plant#1202927, quantitySum#1203067, minCalculationDateTime#1203068, round(quantitySum#1203067, 0) AS roundedQuantitySum#1203069]
(1296) Join
Arguments: LeftOuter, ((plant#1202749 = plant#1202927) AND (product#1202748 = product#1202928))
(1297) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, roundedQuantitySum#1203069, minCalculationDateTime#1203068]
(1298) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, roundedQuantitySum#1203069, minCalculationDateTime#1203068, CASE WHEN isnotnull(minCalculationDateTime#1203068) THEN minCalculationDateTime#1203068 ELSE orderDateTime#1202750 END AS stockDatetime#1203070]
(1299) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, roundedQuantitySum#1203069, minCalculationDateTime#1203068, stockDatetime#1203070, CASE WHEN isnotnull(roundedQuantitySum#1203069) THEN array(roundedQuantitySum#1203069) ELSE array(0.0) END AS stockBatchQuantities#1203071]
(1300) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, roundedQuantitySum#1203069, minCalculationDateTime#1203068, stockDatetime#1203070, stockBatchQuantities#1203071, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1203072]
(1301) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, roundedQuantitySum#1203069, stockDatetime#1203070, stockBatchQuantities#1203071, stockBatchShelfLifeEndDatetimes#1203072]
(1302) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, stockDatetime#1203070, stockBatchQuantities#1203071, stockBatchShelfLifeEndDatetimes#1203072]
(1303) LogicalRelation
Arguments: parquet, [product#1203073, plant#1203074, demandChannel#1203075, demandStream#1203076, considerVariance#1203077, demandTimeBuckets#1203078, demandPointInTimeStart#1203079, demandPointInTimeEnd#1203080, demandPointInTime#1203081], false
(1304) Join
Arguments: LeftOuter, ((product#1202748 = product#1203073) AND (plant#1202749 = plant#1203074))
(1305) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, stockDatetime#1203070, stockBatchQuantities#1203071, stockBatchShelfLifeEndDatetimes#1203072, demandChannel#1203075, demandStream#1203076, considerVariance#1203077, demandTimeBuckets#1203078, demandPointInTimeStart#1203079, demandPointInTimeEnd#1203080, demandPointInTime#1203081, product#1203073, plant#1203074]
(1306) Project
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, stockDatetime#1203070, stockBatchQuantities#1203071, stockBatchShelfLifeEndDatetimes#1203072, demandChannel#1203075, demandStream#1203076, considerVariance#1203077, demandTimeBuckets#1203078, demandPointInTimeStart#1203079, demandPointInTimeEnd#1203080, demandPointInTime#1203081, CASE WHEN isnotnull(product#1203073) THEN struct(demandChannel, demandChannel#1203075, demandStream, demandStream#1203076, considerVariance, considerVariance#1203077, demandTimeBuckets, demandTimeBuckets#1203078, demandPointInTimeStart, demandPointInTimeStart#1203079, demandPointInTimeEnd, demandPointInTimeEnd#1203080, demandPointInTime, demandPointInTime#1203081) 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#1203082]
(1307) Aggregate
Arguments: [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, stockDatetime#1203070, stockBatchQuantities#1203071, stockBatchShelfLifeEndDatetimes#1203072], [product#1202748, plant#1202749, orderDateTime#1202750, productPlant#1202760, timezonecode#1202774, outboundUnit#1202791, stockDatetime#1203070, stockBatchQuantities#1203071, stockBatchShelfLifeEndDatetimes#1203072, collect_list(rawDemands#1203082, 0, 0) AS rawDemands#1203083]
(1308) DeserializeToObject
Arguments: createexternalrow(invoke(product#1202748.toString()), invoke(plant#1202749.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1202750)), if (isnull(productPlant#1202760)) null else createexternalrow(invoke(productPlant#1202760.systemId.toString()), invoke(productPlant#1202760.internalUUID.toString()), if (isnull(productPlant#1202760.plant)) null else createexternalrow(invoke(productPlant#1202760.plant.internalRefUUID.toString()), invoke(productPlant#1202760.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1202760.product)) null else createexternalrow(invoke(productPlant#1202760.product.internalRefUUID.toString()), invoke(productPlant#1202760.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1202760.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1202760.productionAspect)) null else createexternalrow(if (isnull(productPlant#1202760.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1202760.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1202760.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1202760.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#1202760.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1202760.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1202760.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1202760.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1202760.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1202760.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1202760.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1202760.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1202760.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1202760.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1202760.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1202760.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1202760.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1202760.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1202760.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1202760.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1202760.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#1202760.salesPlant)) null else createexternalrow(if (isnull(productPlant#1202760.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1202760.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1202760.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, 159985), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 159985))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 159985).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 159985).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 159985).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#1202760.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#1202774.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1202791)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1203070)), mapobjects(lambdavariable(MapObject, DoubleType, true, 159986), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 159986) as double))), stockBatchQuantities#1203071, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 159987), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 159987) as timestamp)))), stockBatchShelfLifeEndDatetimes#1203072, 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, 159988), 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, 159988))) 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, 159988).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, 159988).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, 159988).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159989).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, 159988).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, 159988).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, 159988).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 159990).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, 159988).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#1203083, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#1200410: org.apache.spark.sql.Row
(1309) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008023bc120@783def9c, 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(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#1200415: org.apache.spark.sql.Row
(1310) 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#1203084, 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#1203085, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159976), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159976), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159977), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159977), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159978), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159978), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159979), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159979), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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, 159975), 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, 159975), 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, 159975), 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, 159980), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159980), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159975), 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#1203086, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159982), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159982), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159983), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159983), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159984), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159984), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 159981), 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, 159981), 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, 159981), 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, 159981), 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, 159981), 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#1203087]
(1311) Join
Arguments: LeftOuter, ((plant#1203085 <=> plant#1202424) AND (product#1203084 <=> product#1202423))
(1312) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, outboundUnit#1202466, stockDatetime#1202745, stockBatchQuantities#1202746, stockBatchShelfLifeEndDatetimes#1202747, plant#1203085, dayBucketDemands#1203086, pointInTimeDemands#1203087]
(1313) Project
Arguments: [product#1202423, plant#1202424, orderDateTime#1202425, productPlant#1202435, timezonecode#1202449, outboundUnit#1202466, stockDatetime#1202745, stockBatchQuantities#1202746, stockBatchShelfLifeEndDatetimes#1202747, dayBucketDemands#1203086, pointInTimeDemands#1203087]
(1314) LogicalRelation
Arguments: parquet, [systemId#1203088, internalUUID#1203089, id#1203090, displayId#1203091, supplier#1203092, type#1203093, status#1203094, isMarkedForDeletion#1203095, items#1203096], false
(1315) Repartition
Arguments: 37, true
(1316) Generate
Arguments: explode(items#1203096), false, [item#1203097]
(1317) Project
Arguments: [id#1203090, internalUUID#1203089, isMarkedForDeletion#1203095, supplier#1203092.internalRefUUID AS supplierUuid#1203098, item#1203097]
(1318) Filter
Arguments: (((NOT isMarkedForDeletion#1203095 AND NOT item#1203097.deletionIndicator) AND NOT item#1203097.completeIndicator) AND NOT item#1203097.returnIndicator)
(1319) Project
Arguments: [id#1203090, internalUUID#1203089, supplierUuid#1203098, item#1203097.plant.internalRefUUID AS plant#1203099, item#1203097.product.internalRefUUID AS product#1203100, item#1203097.plant.id AS externalPlantId#1203101, item#1203097.product.id AS externalProductId#1203102, item#1203097.storageLocation.internalRefUUID AS storageLocUuid#1203103, item#1203097.quantityUnit.code AS quantityUom#1203104, item#1203097.quantityUnit.internalRefUUID AS quantityUomUuid#1203105, item#1203097.quantityNumerator AS quantityNumerator#1203106, item#1203097.quantityDenominator AS quantityDenominator#1203107, item#1203097.scheduleLines AS scheduleLines#1203108, item#1203097.confirmations AS confirmations#1203109]
(1320) Join
Arguments: Inner, ((product#1202423 <=> product#1203100) AND (plant#1202424 <=> supplierUuid#1203098))
(1321) Project
Arguments: [id#1203090, internalUUID#1203089, supplierUuid#1203098, plant#1203099, product#1203100, externalPlantId#1203101, externalProductId#1203102, storageLocUuid#1203103, quantityUom#1203104, quantityUomUuid#1203105, quantityNumerator#1203106, quantityDenominator#1203107, scheduleLines#1203108, confirmations#1203109, stockDatetime#1202745, plant#1202424]
(1322) Project
Arguments: [id#1203090, internalUUID#1203089, supplierUuid#1203098, product#1203100, externalPlantId#1203101, externalProductId#1203102, storageLocUuid#1203103, quantityUom#1203104, quantityUomUuid#1203105, quantityNumerator#1203106, quantityDenominator#1203107, scheduleLines#1203108, confirmations#1203109, stockDatetime#1202745, plant#1202424]
(1323) Project
Arguments: [id#1203090, internalUUID#1203089, supplierUuid#1203098, product#1203100, externalPlantId#1203101, externalProductId#1203102, storageLocUuid#1203103, quantityUom#1203104, quantityUomUuid#1203105, quantityNumerator#1203106, quantityDenominator#1203107, scheduleLines#1203108, confirmations#1203109, stockDatetime#1202745, plant#1202424, filter(transform(filter(transform(scheduleLines#1203108, lambdafunction(struct(openQty, (greatest((lambda x_144#1202401.quantity - coalesce(lambda x_144#1202401.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_144#1202401.productAvailabilityDateTime, lambda x_144#1202401.deliveryAt)), lambda x_144#1202401, false)), lambdafunction((lambda x_145#1202402.availabilityDatetime < stockDatetime#1202745), lambda x_145#1202402, false)), lambdafunction(struct(documentId, id#1203090, documentUuid, internalUUID#1203089, openQty, lambda x_146#1202403.openQty, openQtyInBaseUnit, ((lambda x_146#1202403.openQty * quantityNumerator#1203106) / quantityDenominator#1203107), qtyUom, quantityUom#1203104, qtyUomUuid, quantityUomUuid#1203105, availabilityDatetime, lambda x_146#1202403.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_146#1202403, false)), lambdafunction(NOT (lambda x_147#1202404.openQty = 0.0), lambda x_147#1202404, false)) AS openGoodsMovements#1202400]
(1324) Aggregate
Arguments: [product#1203100, plant#1202424], [product#1203100, plant#1202424, flatten(collect_list(openGoodsMovements#1202400, 0, 0)) AS openGoodsMovements#1202405]
(1325) Filter
Arguments: (array_size(openGoodsMovements#1202405) > 0)
(1326) Union
Arguments: false, false
(1327) Aggregate
Arguments: [product#1200791, plant#1200790], [product#1200791, plant#1200790, flatten(collect_list(openGoodsMovements#1202100, 0, 0)) AS openGoodsMovements#1203160]
(1328) Join
Arguments: LeftOuter, ((product#1199942 = product#1200791) AND (plant#1199943 = plant#1200790))
(1329) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, openGoodsMovements#1203160]
(1330) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, coalesce(openGoodsMovements#1203160.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#1203879, coalesce(openGoodsMovements#1203160.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#1203880, coalesce(openGoodsMovements#1203160.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#1203881]
(1331) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, openGoodsMovementQuantities#1203879, openGoodsMovementAvailabilityDatetimes#1203880, openGoodsMovementShelfLifeEndDatetimes#1203881, array(struct(configurationValidityDatetime, 1970-01-01 00:00:00, configurationName, ShelfLife.LIFOPreference, configurationValue, 0.42), struct(configurationValidityDatetime, 1970-01-01 00:00:00, configurationName, StockExtrapolation.ConsiderUnfulfilledDemands, configurationValue, 1)) AS configuration#1203982]
(1332) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, openGoodsMovementQuantities#1203879, openGoodsMovementAvailabilityDatetimes#1203880, openGoodsMovementShelfLifeEndDatetimes#1203881, configuration#1203982, array(ListingPeriod) AS timeDependentSettingsName#1204121]
(1333) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, openGoodsMovementQuantities#1203879, openGoodsMovementAvailabilityDatetimes#1203880, openGoodsMovementShelfLifeEndDatetimes#1203881, configuration#1203982, timeDependentSettingsName#1204121, array(1900-01-01 00:00:00) AS timeDependentSettingsStartDatetime#1204122]
(1334) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, openGoodsMovementQuantities#1203879, openGoodsMovementAvailabilityDatetimes#1203880, openGoodsMovementShelfLifeEndDatetimes#1203881, configuration#1203982, timeDependentSettingsName#1204121, timeDependentSettingsStartDatetime#1204122, array(2199-01-01 00:00:00) AS timeDependentSettingsEndDatetime#1204123]
(1335) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, productPlant#1199956, timezonecode#1199974, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, openGoodsMovementQuantities#1203879, openGoodsMovementAvailabilityDatetimes#1203880, openGoodsMovementShelfLifeEndDatetimes#1203881, configuration#1203982, timeDependentSettingsName#1204121, timeDependentSettingsStartDatetime#1204122, timeDependentSettingsEndDatetime#1204123, array(1.0) AS timeDependentSettingsValue#1204124]
(1336) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, timezonecode#1199974, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, openGoodsMovementQuantities#1203879, openGoodsMovementAvailabilityDatetimes#1203880, openGoodsMovementShelfLifeEndDatetimes#1203881, configuration#1203982, timeDependentSettingsName#1204121, timeDependentSettingsStartDatetime#1204122, timeDependentSettingsEndDatetime#1204123, timeDependentSettingsValue#1204124]
(1337) Project
Arguments: [product#1199942, plant#1199943, orderDateTime#1199944, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, openGoodsMovementQuantities#1203879, openGoodsMovementAvailabilityDatetimes#1203880, openGoodsMovementShelfLifeEndDatetimes#1203881, configuration#1203982, timeDependentSettingsName#1204121, timeDependentSettingsStartDatetime#1204122, timeDependentSettingsEndDatetime#1204123, timeDependentSettingsValue#1204124]
(1338) Project
Arguments: [product#1199942, plant#1199943, outboundUnit#1200001, stockDatetime#1200346, stockBatchQuantities#1200347, stockBatchShelfLifeEndDatetimes#1200348, dayBucketDemands#1200422, pointInTimeDemands#1200423, openGoodsMovementQuantities#1203879, openGoodsMovementAvailabilityDatetimes#1203880, openGoodsMovementShelfLifeEndDatetimes#1203881, configuration#1203982, timeDependentSettingsName#1204121, timeDependentSettingsStartDatetime#1204122, timeDependentSettingsEndDatetime#1204123, timeDependentSettingsValue#1204124]