== Physical Plan ==
Execute SaveIntoDataSourceCommand (1)
+- SaveIntoDataSourceCommand (2)
+- Project (2275)
+- Project (2274)
+- Project (2273)
+- Project (2272)
+- Project (2271)
+- Project (2270)
+- Project (2269)
+- Join (2268)
:- Project (1131)
: +- Project (1130)
: +- Project (1129)
: +- Join (1128)
: :- Project (355)
: : +- Project (354)
: : +- Join (353)
: : :- Project (170)
: : : +- Project (169)
: : : +- Project (168)
: : : +- Project (167)
: : : +- Project (166)
: : : +- Project (165)
: : : +- Join (164)
: : : :- Project (22)
: : : : +- Project (21)
: : : : +- Project (20)
: : : : +- Project (19)
: : : : +- Generate (18)
: : : : +- Project (17)
: : : : +- Generate (16)
: : : : +- Project (15)
: : : : +- Join (14)
: : : : :- Project (11)
: : : : : +- Join (10)
: : : : : :- Project (5)
: : : : : : +- RepartitionByExpression (4)
: : : : : : +- LogicalRelation (3)
: : : : : +- Project (9)
: : : : : +- Project (8)
: : : : : +- Repartition (7)
: : : : : +- LogicalRelation (6)
: : : : +- Repartition (13)
: : : : +- LogicalRelation (12)
: : : +- Project (163)
: : : +- Aggregate (162)
: : : +- Project (161)
: : : +- Join (160)
: : : :- Project (90)
: : : : +- Filter (89)
: : : : +- Join (88)
: : : : :- Filter (67)
: : : : : +- Project (66)
: : : : : +- Project (65)
: : : : : +- Generate (64)
: : : : : +- Project (63)
: : : : : +- Aggregate (62)
: : : : : +- Project (61)
: : : : : +- Generate (60)
: : : : : +- Join (59)
: : : : : :- Repartition (24)
: : : : : : +- LogicalRelation (23)
: : : : : +- Project (58)
: : : : : +- Join (57)
: : : : : :- Project (34)
: : : : : : +- Project (33)
: : : : : : +- Generate (32)
: : : : : : +- Project (31)
: : : : : : +- Generate (30)
: : : : : : +- Project (29)
: : : : : : +- Project (28)
: : : : : : +- Filter (27)
: : : : : : +- Repartition (26)
: : : : : : +- LogicalRelation (25)
: : : : : +- Deduplicate (56)
: : : : : +- Project (55)
: : : : : +- Project (54)
: : : : : +- Project (53)
: : : : : +- Project (52)
: : : : : +- Project (51)
: : : : : +- Generate (50)
: : : : : +- Project (49)
: : : : : +- Generate (48)
: : : : : +- Project (47)
: : : : : +- Join (46)
: : : : : :- Project (43)
: : : : : : +- Join (42)
: : : : : : :- Project (37)
: : : : : : : +- RepartitionByExpression (36)
: : : : : : : +- LogicalRelation (35)
: : : : : : +- Project (41)
: : : : : : +- Project (40)
: : : : : : +- Repartition (39)
: : : : : : +- LogicalRelation (38)
: : : : : +- Repartition (45)
: : : : : +- LogicalRelation (44)
: : : : +- Project (87)
: : : : +- Project (86)
: : : : +- Project (85)
: : : : +- Project (84)
: : : : +- Generate (83)
: : : : +- Project (82)
: : : : +- Generate (81)
: : : : +- Project (80)
: : : : +- Join (79)
: : : : :- Project (76)
: : : : : +- Join (75)
: : : : : :- Project (70)
: : : : : : +- RepartitionByExpression (69)
: : : : : : +- LogicalRelation (68)
: : : : : +- Project (74)
: : : : : +- Project (73)
: : : : : +- Repartition (72)
: : : : : +- LogicalRelation (71)
: : : : +- Repartition (78)
: : : : +- LogicalRelation (77)
: : : +- Aggregate (159)
: : : +- Project (158)
: : : +- Filter (157)
: : : +- Join (156)
: : : :- Filter (135)
: : : : +- Project (134)
: : : : +- Project (133)
: : : : +- Generate (132)
: : : : +- Project (131)
: : : : +- Aggregate (130)
: : : : +- Project (129)
: : : : +- Generate (128)
: : : : +- Join (127)
: : : : :- Repartition (92)
: : : : : +- LogicalRelation (91)
: : : : +- Project (126)
: : : : +- Join (125)
: : : : :- Project (102)
: : : : : +- Project (101)
: : : : : +- Generate (100)
: : : : : +- Project (99)
: : : : : +- Generate (98)
: : : : : +- Project (97)
: : : : : +- Project (96)
: : : : : +- Filter (95)
: : : : : +- Repartition (94)
: : : : : +- LogicalRelation (93)
: : : : +- Deduplicate (124)
: : : : +- Project (123)
: : : : +- Project (122)
: : : : +- Project (121)
: : : : +- Project (120)
: : : : +- Project (119)
: : : : +- Generate (118)
: : : : +- Project (117)
: : : : +- Generate (116)
: : : : +- Project (115)
: : : : +- Join (114)
: : : : :- Project (111)
: : : : : +- Join (110)
: : : : : :- Project (105)
: : : : : : +- RepartitionByExpression (104)
: : : : : : +- LogicalRelation (103)
: : : : : +- Project (109)
: : : : : +- Project (108)
: : : : : +- Repartition (107)
: : : : : +- LogicalRelation (106)
: : : : +- Repartition (113)
: : : : +- LogicalRelation (112)
: : : +- Project (155)
: : : +- Project (154)
: : : +- Project (153)
: : : +- Project (152)
: : : +- Generate (151)
: : : +- Project (150)
: : : +- Generate (149)
: : : +- Project (148)
: : : +- Join (147)
: : : :- Project (144)
: : : : +- Join (143)
: : : : :- Project (138)
: : : : : +- RepartitionByExpression (137)
: : : : : +- LogicalRelation (136)
: : : : +- Project (142)
: : : : +- Project (141)
: : : : +- Repartition (140)
: : : : +- LogicalRelation (139)
: : : +- Repartition (146)
: : : +- LogicalRelation (145)
: : +- SerializeFromObject (352)
: : +- MapElements (351)
: : +- DeserializeToObject (350)
: : +- Project (349)
: : +- Project (348)
: : +- Join (347)
: : :- SubqueryAlias (343)
: : : +- Aggregate (342)
: : : +- Project (341)
: : : +- Join (340)
: : : :- Project (338)
: : : : +- Project (337)
: : : : +- Project (336)
: : : : +- Project (335)
: : : : +- Project (334)
: : : : +- Project (333)
: : : : +- Join (332)
: : : : :- Project (190)
: : : : : +- Project (189)
: : : : : +- Project (188)
: : : : : +- Project (187)
: : : : : +- Generate (186)
: : : : : +- Project (185)
: : : : : +- Generate (184)
: : : : : +- Project (183)
: : : : : +- Join (182)
: : : : : :- Project (179)
: : : : : : +- Join (178)
: : : : : : :- Project (173)
: : : : : : : +- RepartitionByExpression (172)
: : : : : : : +- LogicalRelation (171)
: : : : : : +- Project (177)
: : : : : : +- Project (176)
: : : : : : +- Repartition (175)
: : : : : : +- LogicalRelation (174)
: : : : : +- Repartition (181)
: : : : : +- LogicalRelation (180)
: : : : +- Project (331)
: : : : +- Aggregate (330)
: : : : +- Project (329)
: : : : +- Join (328)
: : : : :- Project (258)
: : : : : +- Filter (257)
: : : : : +- Join (256)
: : : : : :- Filter (235)
: : : : : : +- Project (234)
: : : : : : +- Project (233)
: : : : : : +- Generate (232)
: : : : : : +- Project (231)
: : : : : : +- Aggregate (230)
: : : : : : +- Project (229)
: : : : : : +- Generate (228)
: : : : : : +- Join (227)
: : : : : : :- Repartition (192)
: : : : : : : +- LogicalRelation (191)
: : : : : : +- Project (226)
: : : : : : +- Join (225)
: : : : : : :- Project (202)
: : : : : : : +- Project (201)
: : : : : : : +- Generate (200)
: : : : : : : +- Project (199)
: : : : : : : +- Generate (198)
: : : : : : : +- Project (197)
: : : : : : : +- Project (196)
: : : : : : : +- Filter (195)
: : : : : : : +- Repartition (194)
: : : : : : : +- LogicalRelation (193)
: : : : : : +- Deduplicate (224)
: : : : : : +- Project (223)
: : : : : : +- Project (222)
: : : : : : +- Project (221)
: : : : : : +- Project (220)
: : : : : : +- Project (219)
: : : : : : +- Generate (218)
: : : : : : +- Project (217)
: : : : : : +- Generate (216)
: : : : : : +- Project (215)
: : : : : : +- Join (214)
: : : : : : :- Project (211)
: : : : : : : +- Join (210)
: : : : : : : :- Project (205)
: : : : : : : : +- RepartitionByExpression (204)
: : : : : : : : +- LogicalRelation (203)
: : : : : : : +- Project (209)
: : : : : : : +- Project (208)
: : : : : : : +- Repartition (207)
: : : : : : : +- LogicalRelation (206)
: : : : : : +- Repartition (213)
: : : : : : +- LogicalRelation (212)
: : : : : +- Project (255)
: : : : : +- Project (254)
: : : : : +- Project (253)
: : : : : +- Project (252)
: : : : : +- Generate (251)
: : : : : +- Project (250)
: : : : : +- Generate (249)
: : : : : +- Project (248)
: : : : : +- Join (247)
: : : : : :- Project (244)
: : : : : : +- Join (243)
: : : : : : :- Project (238)
: : : : : : : +- RepartitionByExpression (237)
: : : : : : : +- LogicalRelation (236)
: : : : : : +- Project (242)
: : : : : : +- Project (241)
: : : : : : +- Repartition (240)
: : : : : : +- LogicalRelation (239)
: : : : : +- Repartition (246)
: : : : : +- LogicalRelation (245)
: : : : +- Aggregate (327)
: : : : +- Project (326)
: : : : +- Filter (325)
: : : : +- Join (324)
: : : : :- Filter (303)
: : : : : +- Project (302)
: : : : : +- Project (301)
: : : : : +- Generate (300)
: : : : : +- Project (299)
: : : : : +- Aggregate (298)
: : : : : +- Project (297)
: : : : : +- Generate (296)
: : : : : +- Join (295)
: : : : : :- Repartition (260)
: : : : : : +- LogicalRelation (259)
: : : : : +- Project (294)
: : : : : +- Join (293)
: : : : : :- Project (270)
: : : : : : +- Project (269)
: : : : : : +- Generate (268)
: : : : : : +- Project (267)
: : : : : : +- Generate (266)
: : : : : : +- Project (265)
: : : : : : +- Project (264)
: : : : : : +- Filter (263)
: : : : : : +- Repartition (262)
: : : : : : +- LogicalRelation (261)
: : : : : +- Deduplicate (292)
: : : : : +- Project (291)
: : : : : +- Project (290)
: : : : : +- Project (289)
: : : : : +- Project (288)
: : : : : +- Project (287)
: : : : : +- Generate (286)
: : : : : +- Project (285)
: : : : : +- Generate (284)
: : : : : +- Project (283)
: : : : : +- Join (282)
: : : : : :- Project (279)
: : : : : : +- Join (278)
: : : : : : :- Project (273)
: : : : : : : +- RepartitionByExpression (272)
: : : : : : : +- LogicalRelation (271)
: : : : : : +- Project (277)
: : : : : : +- Project (276)
: : : : : : +- Repartition (275)
: : : : : : +- LogicalRelation (274)
: : : : : +- Repartition (281)
: : : : : +- LogicalRelation (280)
: : : : +- Project (323)
: : : : +- Project (322)
: : : : +- Project (321)
: : : : +- Project (320)
: : : : +- Generate (319)
: : : : +- Project (318)
: : : : +- Generate (317)
: : : : +- Project (316)
: : : : +- Join (315)
: : : : :- Project (312)
: : : : : +- Join (311)
: : : : : :- Project (306)
: : : : : : +- RepartitionByExpression (305)
: : : : : : +- LogicalRelation (304)
: : : : : +- Project (310)
: : : : : +- Project (309)
: : : : : +- Repartition (308)
: : : : : +- LogicalRelation (307)
: : : : +- Repartition (314)
: : : : +- LogicalRelation (313)
: : : +- LogicalRelation (339)
: : +- Project (346)
: : +- Repartition (345)
: : +- LogicalRelation (344)
: +- Aggregate (1127)
: +- Union (1126)
: :- Filter (760)
: : +- Aggregate (759)
: : +- Project (758)
: : +- Project (757)
: : +- Window (756)
: : +- Project (755)
: : +- Project (754)
: : +- Project (753)
: : +- Join (752)
: : :- Project (745)
: : : +- Join (744)
: : : :- Project (708)
: : : : +- Project (707)
: : : : +- Join (706)
: : : : :- Project (523)
: : : : : +- Project (522)
: : : : : +- Project (521)
: : : : : +- Project (520)
: : : : : +- Project (519)
: : : : : +- Project (518)
: : : : : +- Join (517)
: : : : : :- Project (375)
: : : : : : +- Project (374)
: : : : : : +- Project (373)
: : : : : : +- Project (372)
: : : : : : +- Generate (371)
: : : : : : +- Project (370)
: : : : : : +- Generate (369)
: : : : : : +- Project (368)
: : : : : : +- Join (367)
: : : : : : :- Project (364)
: : : : : : : +- Join (363)
: : : : : : : :- Project (358)
: : : : : : : : +- RepartitionByExpression (357)
: : : : : : : : +- LogicalRelation (356)
: : : : : : : +- Project (362)
: : : : : : : +- Project (361)
: : : : : : : +- Repartition (360)
: : : : : : : +- LogicalRelation (359)
: : : : : : +- Repartition (366)
: : : : : : +- LogicalRelation (365)
: : : : : +- Project (516)
: : : : : +- Aggregate (515)
: : : : : +- Project (514)
: : : : : +- Join (513)
: : : : : :- Project (443)
: : : : : : +- Filter (442)
: : : : : : +- Join (441)
: : : : : : :- Filter (420)
: : : : : : : +- Project (419)
: : : : : : : +- Project (418)
: : : : : : : +- Generate (417)
: : : : : : : +- Project (416)
: : : : : : : +- Aggregate (415)
: : : : : : : +- Project (414)
: : : : : : : +- Generate (413)
: : : : : : : +- Join (412)
: : : : : : : :- Repartition (377)
: : : : : : : : +- LogicalRelation (376)
: : : : : : : +- Project (411)
: : : : : : : +- Join (410)
: : : : : : : :- Project (387)
: : : : : : : : +- Project (386)
: : : : : : : : +- Generate (385)
: : : : : : : : +- Project (384)
: : : : : : : : +- Generate (383)
: : : : : : : : +- Project (382)
: : : : : : : : +- Project (381)
: : : : : : : : +- Filter (380)
: : : : : : : : +- Repartition (379)
: : : : : : : : +- LogicalRelation (378)
: : : : : : : +- Deduplicate (409)
: : : : : : : +- Project (408)
: : : : : : : +- Project (407)
: : : : : : : +- Project (406)
: : : : : : : +- Project (405)
: : : : : : : +- Project (404)
: : : : : : : +- Generate (403)
: : : : : : : +- Project (402)
: : : : : : : +- Generate (401)
: : : : : : : +- Project (400)
: : : : : : : +- Join (399)
: : : : : : : :- Project (396)
: : : : : : : : +- Join (395)
: : : : : : : : :- Project (390)
: : : : : : : : : +- RepartitionByExpression (389)
: : : : : : : : : +- LogicalRelation (388)
: : : : : : : : +- Project (394)
: : : : : : : : +- Project (393)
: : : : : : : : +- Repartition (392)
: : : : : : : : +- LogicalRelation (391)
: : : : : : : +- Repartition (398)
: : : : : : : +- LogicalRelation (397)
: : : : : : +- Project (440)
: : : : : : +- Project (439)
: : : : : : +- Project (438)
: : : : : : +- Project (437)
: : : : : : +- Generate (436)
: : : : : : +- Project (435)
: : : : : : +- Generate (434)
: : : : : : +- Project (433)
: : : : : : +- Join (432)
: : : : : : :- Project (429)
: : : : : : : +- Join (428)
: : : : : : : :- Project (423)
: : : : : : : : +- RepartitionByExpression (422)
: : : : : : : : +- LogicalRelation (421)
: : : : : : : +- Project (427)
: : : : : : : +- Project (426)
: : : : : : : +- Repartition (425)
: : : : : : : +- LogicalRelation (424)
: : : : : : +- Repartition (431)
: : : : : : +- LogicalRelation (430)
: : : : : +- Aggregate (512)
: : : : : +- Project (511)
: : : : : +- Filter (510)
: : : : : +- Join (509)
: : : : : :- Filter (488)
: : : : : : +- Project (487)
: : : : : : +- Project (486)
: : : : : : +- Generate (485)
: : : : : : +- Project (484)
: : : : : : +- Aggregate (483)
: : : : : : +- Project (482)
: : : : : : +- Generate (481)
: : : : : : +- Join (480)
: : : : : : :- Repartition (445)
: : : : : : : +- LogicalRelation (444)
: : : : : : +- Project (479)
: : : : : : +- Join (478)
: : : : : : :- Project (455)
: : : : : : : +- Project (454)
: : : : : : : +- Generate (453)
: : : : : : : +- Project (452)
: : : : : : : +- Generate (451)
: : : : : : : +- Project (450)
: : : : : : : +- Project (449)
: : : : : : : +- Filter (448)
: : : : : : : +- Repartition (447)
: : : : : : : +- LogicalRelation (446)
: : : : : : +- Deduplicate (477)
: : : : : : +- Project (476)
: : : : : : +- Project (475)
: : : : : : +- Project (474)
: : : : : : +- Project (473)
: : : : : : +- Project (472)
: : : : : : +- Generate (471)
: : : : : : +- Project (470)
: : : : : : +- Generate (469)
: : : : : : +- Project (468)
: : : : : : +- Join (467)
: : : : : : :- Project (464)
: : : : : : : +- Join (463)
: : : : : : : :- Project (458)
: : : : : : : : +- RepartitionByExpression (457)
: : : : : : : : +- LogicalRelation (456)
: : : : : : : +- Project (462)
: : : : : : : +- Project (461)
: : : : : : : +- Repartition (460)
: : : : : : : +- LogicalRelation (459)
: : : : : : +- Repartition (466)
: : : : : : +- LogicalRelation (465)
: : : : : +- Project (508)
: : : : : +- Project (507)
: : : : : +- Project (506)
: : : : : +- Project (505)
: : : : : +- Generate (504)
: : : : : +- Project (503)
: : : : : +- Generate (502)
: : : : : +- Project (501)
: : : : : +- Join (500)
: : : : : :- Project (497)
: : : : : : +- Join (496)
: : : : : : :- Project (491)
: : : : : : : +- RepartitionByExpression (490)
: : : : : : : +- LogicalRelation (489)
: : : : : : +- Project (495)
: : : : : : +- Project (494)
: : : : : : +- Repartition (493)
: : : : : : +- LogicalRelation (492)
: : : : : +- Repartition (499)
: : : : : +- LogicalRelation (498)
: : : : +- SerializeFromObject (705)
: : : : +- MapElements (704)
: : : : +- DeserializeToObject (703)
: : : : +- Project (702)
: : : : +- Project (701)
: : : : +- Join (700)
: : : : :- SubqueryAlias (696)
: : : : : +- Aggregate (695)
: : : : : +- Project (694)
: : : : : +- Join (693)
: : : : : :- Project (691)
: : : : : : +- Project (690)
: : : : : : +- Project (689)
: : : : : : +- Project (688)
: : : : : : +- Project (687)
: : : : : : +- Project (686)
: : : : : : +- Join (685)
: : : : : : :- Project (543)
: : : : : : : +- Project (542)
: : : : : : : +- Project (541)
: : : : : : : +- Project (540)
: : : : : : : +- Generate (539)
: : : : : : : +- Project (538)
: : : : : : : +- Generate (537)
: : : : : : : +- Project (536)
: : : : : : : +- Join (535)
: : : : : : : :- Project (532)
: : : : : : : : +- Join (531)
: : : : : : : : :- Project (526)
: : : : : : : : : +- RepartitionByExpression (525)
: : : : : : : : : +- LogicalRelation (524)
: : : : : : : : +- Project (530)
: : : : : : : : +- Project (529)
: : : : : : : : +- Repartition (528)
: : : : : : : : +- LogicalRelation (527)
: : : : : : : +- Repartition (534)
: : : : : : : +- LogicalRelation (533)
: : : : : : +- Project (684)
: : : : : : +- Aggregate (683)
: : : : : : +- Project (682)
: : : : : : +- Join (681)
: : : : : : :- Project (611)
: : : : : : : +- Filter (610)
: : : : : : : +- Join (609)
: : : : : : : :- Filter (588)
: : : : : : : : +- Project (587)
: : : : : : : : +- Project (586)
: : : : : : : : +- Generate (585)
: : : : : : : : +- Project (584)
: : : : : : : : +- Aggregate (583)
: : : : : : : : +- Project (582)
: : : : : : : : +- Generate (581)
: : : : : : : : +- Join (580)
: : : : : : : : :- Repartition (545)
: : : : : : : : : +- LogicalRelation (544)
: : : : : : : : +- Project (579)
: : : : : : : : +- Join (578)
: : : : : : : : :- Project (555)
: : : : : : : : : +- Project (554)
: : : : : : : : : +- Generate (553)
: : : : : : : : : +- Project (552)
: : : : : : : : : +- Generate (551)
: : : : : : : : : +- Project (550)
: : : : : : : : : +- Project (549)
: : : : : : : : : +- Filter (548)
: : : : : : : : : +- Repartition (547)
: : : : : : : : : +- LogicalRelation (546)
: : : : : : : : +- Deduplicate (577)
: : : : : : : : +- Project (576)
: : : : : : : : +- Project (575)
: : : : : : : : +- Project (574)
: : : : : : : : +- Project (573)
: : : : : : : : +- Project (572)
: : : : : : : : +- Generate (571)
: : : : : : : : +- Project (570)
: : : : : : : : +- Generate (569)
: : : : : : : : +- Project (568)
: : : : : : : : +- Join (567)
: : : : : : : : :- Project (564)
: : : : : : : : : +- Join (563)
: : : : : : : : : :- Project (558)
: : : : : : : : : : +- RepartitionByExpression (557)
: : : : : : : : : : +- LogicalRelation (556)
: : : : : : : : : +- Project (562)
: : : : : : : : : +- Project (561)
: : : : : : : : : +- Repartition (560)
: : : : : : : : : +- LogicalRelation (559)
: : : : : : : : +- Repartition (566)
: : : : : : : : +- LogicalRelation (565)
: : : : : : : +- Project (608)
: : : : : : : +- Project (607)
: : : : : : : +- Project (606)
: : : : : : : +- Project (605)
: : : : : : : +- Generate (604)
: : : : : : : +- Project (603)
: : : : : : : +- Generate (602)
: : : : : : : +- Project (601)
: : : : : : : +- Join (600)
: : : : : : : :- Project (597)
: : : : : : : : +- Join (596)
: : : : : : : : :- Project (591)
: : : : : : : : : +- RepartitionByExpression (590)
: : : : : : : : : +- LogicalRelation (589)
: : : : : : : : +- Project (595)
: : : : : : : : +- Project (594)
: : : : : : : : +- Repartition (593)
: : : : : : : : +- LogicalRelation (592)
: : : : : : : +- Repartition (599)
: : : : : : : +- LogicalRelation (598)
: : : : : : +- Aggregate (680)
: : : : : : +- Project (679)
: : : : : : +- Filter (678)
: : : : : : +- Join (677)
: : : : : : :- Filter (656)
: : : : : : : +- Project (655)
: : : : : : : +- Project (654)
: : : : : : : +- Generate (653)
: : : : : : : +- Project (652)
: : : : : : : +- Aggregate (651)
: : : : : : : +- Project (650)
: : : : : : : +- Generate (649)
: : : : : : : +- Join (648)
: : : : : : : :- Repartition (613)
: : : : : : : : +- LogicalRelation (612)
: : : : : : : +- Project (647)
: : : : : : : +- Join (646)
: : : : : : : :- Project (623)
: : : : : : : : +- Project (622)
: : : : : : : : +- Generate (621)
: : : : : : : : +- Project (620)
: : : : : : : : +- Generate (619)
: : : : : : : : +- Project (618)
: : : : : : : : +- Project (617)
: : : : : : : : +- Filter (616)
: : : : : : : : +- Repartition (615)
: : : : : : : : +- LogicalRelation (614)
: : : : : : : +- Deduplicate (645)
: : : : : : : +- Project (644)
: : : : : : : +- Project (643)
: : : : : : : +- Project (642)
: : : : : : : +- Project (641)
: : : : : : : +- Project (640)
: : : : : : : +- Generate (639)
: : : : : : : +- Project (638)
: : : : : : : +- Generate (637)
: : : : : : : +- Project (636)
: : : : : : : +- Join (635)
: : : : : : : :- Project (632)
: : : : : : : : +- Join (631)
: : : : : : : : :- Project (626)
: : : : : : : : : +- RepartitionByExpression (625)
: : : : : : : : : +- LogicalRelation (624)
: : : : : : : : +- Project (630)
: : : : : : : : +- Project (629)
: : : : : : : : +- Repartition (628)
: : : : : : : : +- LogicalRelation (627)
: : : : : : : +- Repartition (634)
: : : : : : : +- LogicalRelation (633)
: : : : : : +- Project (676)
: : : : : : +- Project (675)
: : : : : : +- Project (674)
: : : : : : +- Project (673)
: : : : : : +- Generate (672)
: : : : : : +- Project (671)
: : : : : : +- Generate (670)
: : : : : : +- Project (669)
: : : : : : +- Join (668)
: : : : : : :- Project (665)
: : : : : : : +- Join (664)
: : : : : : : :- Project (659)
: : : : : : : : +- RepartitionByExpression (658)
: : : : : : : : +- LogicalRelation (657)
: : : : : : : +- Project (663)
: : : : : : : +- Project (662)
: : : : : : : +- Repartition (661)
: : : : : : : +- LogicalRelation (660)
: : : : : : +- Repartition (667)
: : : : : : +- LogicalRelation (666)
: : : : : +- LogicalRelation (692)
: : : : +- Project (699)
: : : : +- Repartition (698)
: : : : +- LogicalRelation (697)
: : : +- Project (743)
: : : +- Project (742)
: : : +- Join (741)
: : : :- Project (718)
: : : : +- Project (717)
: : : : +- Generate (716)
: : : : +- Project (715)
: : : : +- Generate (714)
: : : : +- Project (713)
: : : : +- Project (712)
: : : : +- Filter (711)
: : : : +- Repartition (710)
: : : : +- LogicalRelation (709)
: : : +- Deduplicate (740)
: : : +- Project (739)
: : : +- Project (738)
: : : +- Project (737)
: : : +- Project (736)
: : : +- Project (735)
: : : +- Generate (734)
: : : +- Project (733)
: : : +- Generate (732)
: : : +- Project (731)
: : : +- Join (730)
: : : :- Project (727)
: : : : +- Join (726)
: : : : :- Project (721)
: : : : : +- RepartitionByExpression (720)
: : : : : +- LogicalRelation (719)
: : : : +- Project (725)
: : : : +- Project (724)
: : : : +- Repartition (723)
: : : : +- LogicalRelation (722)
: : : +- Repartition (729)
: : : +- LogicalRelation (728)
: : +- Project (751)
: : +- Filter (750)
: : +- Project (749)
: : +- Generate (748)
: : +- Repartition (747)
: : +- LogicalRelation (746)
: +- Filter (1125)
: +- Aggregate (1124)
: +- Project (1123)
: +- Project (1122)
: +- Project (1121)
: +- Join (1120)
: :- Project (1113)
: : +- Project (1112)
: : +- Join (1111)
: : :- Project (928)
: : : +- Project (927)
: : : +- Project (926)
: : : +- Project (925)
: : : +- Project (924)
: : : +- Project (923)
: : : +- Join (922)
: : : :- Project (780)
: : : : +- Project (779)
: : : : +- Project (778)
: : : : +- Project (777)
: : : : +- Generate (776)
: : : : +- Project (775)
: : : : +- Generate (774)
: : : : +- Project (773)
: : : : +- Join (772)
: : : : :- Project (769)
: : : : : +- Join (768)
: : : : : :- Project (763)
: : : : : : +- RepartitionByExpression (762)
: : : : : : +- LogicalRelation (761)
: : : : : +- Project (767)
: : : : : +- Project (766)
: : : : : +- Repartition (765)
: : : : : +- LogicalRelation (764)
: : : : +- Repartition (771)
: : : : +- LogicalRelation (770)
: : : +- Project (921)
: : : +- Aggregate (920)
: : : +- Project (919)
: : : +- Join (918)
: : : :- Project (848)
: : : : +- Filter (847)
: : : : +- Join (846)
: : : : :- Filter (825)
: : : : : +- Project (824)
: : : : : +- Project (823)
: : : : : +- Generate (822)
: : : : : +- Project (821)
: : : : : +- Aggregate (820)
: : : : : +- Project (819)
: : : : : +- Generate (818)
: : : : : +- Join (817)
: : : : : :- Repartition (782)
: : : : : : +- LogicalRelation (781)
: : : : : +- Project (816)
: : : : : +- Join (815)
: : : : : :- Project (792)
: : : : : : +- Project (791)
: : : : : : +- Generate (790)
: : : : : : +- Project (789)
: : : : : : +- Generate (788)
: : : : : : +- Project (787)
: : : : : : +- Project (786)
: : : : : : +- Filter (785)
: : : : : : +- Repartition (784)
: : : : : : +- LogicalRelation (783)
: : : : : +- Deduplicate (814)
: : : : : +- Project (813)
: : : : : +- Project (812)
: : : : : +- Project (811)
: : : : : +- Project (810)
: : : : : +- Project (809)
: : : : : +- Generate (808)
: : : : : +- Project (807)
: : : : : +- Generate (806)
: : : : : +- Project (805)
: : : : : +- Join (804)
: : : : : :- Project (801)
: : : : : : +- Join (800)
: : : : : : :- Project (795)
: : : : : : : +- RepartitionByExpression (794)
: : : : : : : +- LogicalRelation (793)
: : : : : : +- Project (799)
: : : : : : +- Project (798)
: : : : : : +- Repartition (797)
: : : : : : +- LogicalRelation (796)
: : : : : +- Repartition (803)
: : : : : +- LogicalRelation (802)
: : : : +- Project (845)
: : : : +- Project (844)
: : : : +- Project (843)
: : : : +- Project (842)
: : : : +- Generate (841)
: : : : +- Project (840)
: : : : +- Generate (839)
: : : : +- Project (838)
: : : : +- Join (837)
: : : : :- Project (834)
: : : : : +- Join (833)
: : : : : :- Project (828)
: : : : : : +- RepartitionByExpression (827)
: : : : : : +- LogicalRelation (826)
: : : : : +- Project (832)
: : : : : +- Project (831)
: : : : : +- Repartition (830)
: : : : : +- LogicalRelation (829)
: : : : +- Repartition (836)
: : : : +- LogicalRelation (835)
: : : +- Aggregate (917)
: : : +- Project (916)
: : : +- Filter (915)
: : : +- Join (914)
: : : :- Filter (893)
: : : : +- Project (892)
: : : : +- Project (891)
: : : : +- Generate (890)
: : : : +- Project (889)
: : : : +- Aggregate (888)
: : : : +- Project (887)
: : : : +- Generate (886)
: : : : +- Join (885)
: : : : :- Repartition (850)
: : : : : +- LogicalRelation (849)
: : : : +- Project (884)
: : : : +- Join (883)
: : : : :- Project (860)
: : : : : +- Project (859)
: : : : : +- Generate (858)
: : : : : +- Project (857)
: : : : : +- Generate (856)
: : : : : +- Project (855)
: : : : : +- Project (854)
: : : : : +- Filter (853)
: : : : : +- Repartition (852)
: : : : : +- LogicalRelation (851)
: : : : +- Deduplicate (882)
: : : : +- Project (881)
: : : : +- Project (880)
: : : : +- Project (879)
: : : : +- Project (878)
: : : : +- Project (877)
: : : : +- Generate (876)
: : : : +- Project (875)
: : : : +- Generate (874)
: : : : +- Project (873)
: : : : +- Join (872)
: : : : :- Project (869)
: : : : : +- Join (868)
: : : : : :- Project (863)
: : : : : : +- RepartitionByExpression (862)
: : : : : : +- LogicalRelation (861)
: : : : : +- Project (867)
: : : : : +- Project (866)
: : : : : +- Repartition (865)
: : : : : +- LogicalRelation (864)
: : : : +- Repartition (871)
: : : : +- LogicalRelation (870)
: : : +- Project (913)
: : : +- Project (912)
: : : +- Project (911)
: : : +- Project (910)
: : : +- Generate (909)
: : : +- Project (908)
: : : +- Generate (907)
: : : +- Project (906)
: : : +- Join (905)
: : : :- Project (902)
: : : : +- Join (901)
: : : : :- Project (896)
: : : : : +- RepartitionByExpression (895)
: : : : : +- LogicalRelation (894)
: : : : +- Project (900)
: : : : +- Project (899)
: : : : +- Repartition (898)
: : : : +- LogicalRelation (897)
: : : +- Repartition (904)
: : : +- LogicalRelation (903)
: : +- SerializeFromObject (1110)
: : +- MapElements (1109)
: : +- DeserializeToObject (1108)
: : +- Project (1107)
: : +- Project (1106)
: : +- Join (1105)
: : :- SubqueryAlias (1101)
: : : +- Aggregate (1100)
: : : +- Project (1099)
: : : +- Join (1098)
: : : :- Project (1096)
: : : : +- Project (1095)
: : : : +- Project (1094)
: : : : +- Project (1093)
: : : : +- Project (1092)
: : : : +- Project (1091)
: : : : +- Join (1090)
: : : : :- Project (948)
: : : : : +- Project (947)
: : : : : +- Project (946)
: : : : : +- Project (945)
: : : : : +- Generate (944)
: : : : : +- Project (943)
: : : : : +- Generate (942)
: : : : : +- Project (941)
: : : : : +- Join (940)
: : : : : :- Project (937)
: : : : : : +- Join (936)
: : : : : : :- Project (931)
: : : : : : : +- RepartitionByExpression (930)
: : : : : : : +- LogicalRelation (929)
: : : : : : +- Project (935)
: : : : : : +- Project (934)
: : : : : : +- Repartition (933)
: : : : : : +- LogicalRelation (932)
: : : : : +- Repartition (939)
: : : : : +- LogicalRelation (938)
: : : : +- Project (1089)
: : : : +- Aggregate (1088)
: : : : +- Project (1087)
: : : : +- Join (1086)
: : : : :- Project (1016)
: : : : : +- Filter (1015)
: : : : : +- Join (1014)
: : : : : :- Filter (993)
: : : : : : +- Project (992)
: : : : : : +- Project (991)
: : : : : : +- Generate (990)
: : : : : : +- Project (989)
: : : : : : +- Aggregate (988)
: : : : : : +- Project (987)
: : : : : : +- Generate (986)
: : : : : : +- Join (985)
: : : : : : :- Repartition (950)
: : : : : : : +- LogicalRelation (949)
: : : : : : +- Project (984)
: : : : : : +- Join (983)
: : : : : : :- Project (960)
: : : : : : : +- Project (959)
: : : : : : : +- Generate (958)
: : : : : : : +- Project (957)
: : : : : : : +- Generate (956)
: : : : : : : +- Project (955)
: : : : : : : +- Project (954)
: : : : : : : +- Filter (953)
: : : : : : : +- Repartition (952)
: : : : : : : +- LogicalRelation (951)
: : : : : : +- Deduplicate (982)
: : : : : : +- Project (981)
: : : : : : +- Project (980)
: : : : : : +- Project (979)
: : : : : : +- Project (978)
: : : : : : +- Project (977)
: : : : : : +- Generate (976)
: : : : : : +- Project (975)
: : : : : : +- Generate (974)
: : : : : : +- Project (973)
: : : : : : +- Join (972)
: : : : : : :- Project (969)
: : : : : : : +- Join (968)
: : : : : : : :- Project (963)
: : : : : : : : +- RepartitionByExpression (962)
: : : : : : : : +- LogicalRelation (961)
: : : : : : : +- Project (967)
: : : : : : : +- Project (966)
: : : : : : : +- Repartition (965)
: : : : : : : +- LogicalRelation (964)
: : : : : : +- Repartition (971)
: : : : : : +- LogicalRelation (970)
: : : : : +- Project (1013)
: : : : : +- Project (1012)
: : : : : +- Project (1011)
: : : : : +- Project (1010)
: : : : : +- Generate (1009)
: : : : : +- Project (1008)
: : : : : +- Generate (1007)
: : : : : +- Project (1006)
: : : : : +- Join (1005)
: : : : : :- Project (1002)
: : : : : : +- Join (1001)
: : : : : : :- Project (996)
: : : : : : : +- RepartitionByExpression (995)
: : : : : : : +- LogicalRelation (994)
: : : : : : +- Project (1000)
: : : : : : +- Project (999)
: : : : : : +- Repartition (998)
: : : : : : +- LogicalRelation (997)
: : : : : +- Repartition (1004)
: : : : : +- LogicalRelation (1003)
: : : : +- Aggregate (1085)
: : : : +- Project (1084)
: : : : +- Filter (1083)
: : : : +- Join (1082)
: : : : :- Filter (1061)
: : : : : +- Project (1060)
: : : : : +- Project (1059)
: : : : : +- Generate (1058)
: : : : : +- Project (1057)
: : : : : +- Aggregate (1056)
: : : : : +- Project (1055)
: : : : : +- Generate (1054)
: : : : : +- Join (1053)
: : : : : :- Repartition (1018)
: : : : : : +- LogicalRelation (1017)
: : : : : +- Project (1052)
: : : : : +- Join (1051)
: : : : : :- Project (1028)
: : : : : : +- Project (1027)
: : : : : : +- Generate (1026)
: : : : : : +- Project (1025)
: : : : : : +- Generate (1024)
: : : : : : +- Project (1023)
: : : : : : +- Project (1022)
: : : : : : +- Filter (1021)
: : : : : : +- Repartition (1020)
: : : : : : +- LogicalRelation (1019)
: : : : : +- Deduplicate (1050)
: : : : : +- Project (1049)
: : : : : +- Project (1048)
: : : : : +- Project (1047)
: : : : : +- Project (1046)
: : : : : +- Project (1045)
: : : : : +- Generate (1044)
: : : : : +- Project (1043)
: : : : : +- Generate (1042)
: : : : : +- Project (1041)
: : : : : +- Join (1040)
: : : : : :- Project (1037)
: : : : : : +- Join (1036)
: : : : : : :- Project (1031)
: : : : : : : +- RepartitionByExpression (1030)
: : : : : : : +- LogicalRelation (1029)
: : : : : : +- Project (1035)
: : : : : : +- Project (1034)
: : : : : : +- Repartition (1033)
: : : : : : +- LogicalRelation (1032)
: : : : : +- Repartition (1039)
: : : : : +- LogicalRelation (1038)
: : : : +- Project (1081)
: : : : +- Project (1080)
: : : : +- Project (1079)
: : : : +- Project (1078)
: : : : +- Generate (1077)
: : : : +- Project (1076)
: : : : +- Generate (1075)
: : : : +- Project (1074)
: : : : +- Join (1073)
: : : : :- Project (1070)
: : : : : +- Join (1069)
: : : : : :- Project (1064)
: : : : : : +- RepartitionByExpression (1063)
: : : : : : +- LogicalRelation (1062)
: : : : : +- Project (1068)
: : : : : +- Project (1067)
: : : : : +- Repartition (1066)
: : : : : +- LogicalRelation (1065)
: : : : +- Repartition (1072)
: : : : +- LogicalRelation (1071)
: : : +- LogicalRelation (1097)
: : +- Project (1104)
: : +- Repartition (1103)
: : +- LogicalRelation (1102)
: +- Project (1119)
: +- Filter (1118)
: +- Project (1117)
: +- Generate (1116)
: +- Repartition (1115)
: +- LogicalRelation (1114)
+- SerializeFromObject (2267)
+- MapElements (2266)
+- DeserializeToObject (2265)
+- Project (2264)
+- Project (2263)
+- Project (2262)
+- Project (2261)
+- Project (2260)
+- Project (2259)
+- Project (2258)
+- Join (2257)
:- Project (1484)
: +- Project (1483)
: +- Join (1482)
: :- Project (1299)
: : +- Project (1298)
: : +- Project (1297)
: : +- Project (1296)
: : +- Project (1295)
: : +- Project (1294)
: : +- Join (1293)
: : :- Project (1151)
: : : +- Project (1150)
: : : +- Project (1149)
: : : +- Project (1148)
: : : +- Generate (1147)
: : : +- Project (1146)
: : : +- Generate (1145)
: : : +- Project (1144)
: : : +- Join (1143)
: : : :- Project (1140)
: : : : +- Join (1139)
: : : : :- Project (1134)
: : : : : +- RepartitionByExpression (1133)
: : : : : +- LogicalRelation (1132)
: : : : +- Project (1138)
: : : : +- Project (1137)
: : : : +- Repartition (1136)
: : : : +- LogicalRelation (1135)
: : : +- Repartition (1142)
: : : +- LogicalRelation (1141)
: : +- Project (1292)
: : +- Aggregate (1291)
: : +- Project (1290)
: : +- Join (1289)
: : :- Project (1219)
: : : +- Filter (1218)
: : : +- Join (1217)
: : : :- Filter (1196)
: : : : +- Project (1195)
: : : : +- Project (1194)
: : : : +- Generate (1193)
: : : : +- Project (1192)
: : : : +- Aggregate (1191)
: : : : +- Project (1190)
: : : : +- Generate (1189)
: : : : +- Join (1188)
: : : : :- Repartition (1153)
: : : : : +- LogicalRelation (1152)
: : : : +- Project (1187)
: : : : +- Join (1186)
: : : : :- Project (1163)
: : : : : +- Project (1162)
: : : : : +- Generate (1161)
: : : : : +- Project (1160)
: : : : : +- Generate (1159)
: : : : : +- Project (1158)
: : : : : +- Project (1157)
: : : : : +- Filter (1156)
: : : : : +- Repartition (1155)
: : : : : +- LogicalRelation (1154)
: : : : +- Deduplicate (1185)
: : : : +- Project (1184)
: : : : +- Project (1183)
: : : : +- Project (1182)
: : : : +- Project (1181)
: : : : +- Project (1180)
: : : : +- Generate (1179)
: : : : +- Project (1178)
: : : : +- Generate (1177)
: : : : +- Project (1176)
: : : : +- Join (1175)
: : : : :- Project (1172)
: : : : : +- Join (1171)
: : : : : :- Project (1166)
: : : : : : +- RepartitionByExpression (1165)
: : : : : : +- LogicalRelation (1164)
: : : : : +- Project (1170)
: : : : : +- Project (1169)
: : : : : +- Repartition (1168)
: : : : : +- LogicalRelation (1167)
: : : : +- Repartition (1174)
: : : : +- LogicalRelation (1173)
: : : +- Project (1216)
: : : +- Project (1215)
: : : +- Project (1214)
: : : +- Project (1213)
: : : +- Generate (1212)
: : : +- Project (1211)
: : : +- Generate (1210)
: : : +- Project (1209)
: : : +- Join (1208)
: : : :- Project (1205)
: : : : +- Join (1204)
: : : : :- Project (1199)
: : : : : +- RepartitionByExpression (1198)
: : : : : +- LogicalRelation (1197)
: : : : +- Project (1203)
: : : : +- Project (1202)
: : : : +- Repartition (1201)
: : : : +- LogicalRelation (1200)
: : : +- Repartition (1207)
: : : +- LogicalRelation (1206)
: : +- Aggregate (1288)
: : +- Project (1287)
: : +- Filter (1286)
: : +- Join (1285)
: : :- Filter (1264)
: : : +- Project (1263)
: : : +- Project (1262)
: : : +- Generate (1261)
: : : +- Project (1260)
: : : +- Aggregate (1259)
: : : +- Project (1258)
: : : +- Generate (1257)
: : : +- Join (1256)
: : : :- Repartition (1221)
: : : : +- LogicalRelation (1220)
: : : +- Project (1255)
: : : +- Join (1254)
: : : :- Project (1231)
: : : : +- Project (1230)
: : : : +- Generate (1229)
: : : : +- Project (1228)
: : : : +- Generate (1227)
: : : : +- Project (1226)
: : : : +- Project (1225)
: : : : +- Filter (1224)
: : : : +- Repartition (1223)
: : : : +- LogicalRelation (1222)
: : : +- Deduplicate (1253)
: : : +- Project (1252)
: : : +- Project (1251)
: : : +- Project (1250)
: : : +- Project (1249)
: : : +- Project (1248)
: : : +- Generate (1247)
: : : +- Project (1246)
: : : +- Generate (1245)
: : : +- Project (1244)
: : : +- Join (1243)
: : : :- Project (1240)
: : : : +- Join (1239)
: : : : :- Project (1234)
: : : : : +- RepartitionByExpression (1233)
: : : : : +- LogicalRelation (1232)
: : : : +- Project (1238)
: : : : +- Project (1237)
: : : : +- Repartition (1236)
: : : : +- LogicalRelation (1235)
: : : +- Repartition (1242)
: : : +- LogicalRelation (1241)
: : +- Project (1284)
: : +- Project (1283)
: : +- Project (1282)
: : +- Project (1281)
: : +- Generate (1280)
: : +- Project (1279)
: : +- Generate (1278)
: : +- Project (1277)
: : +- Join (1276)
: : :- Project (1273)
: : : +- Join (1272)
: : : :- Project (1267)
: : : : +- RepartitionByExpression (1266)
: : : : +- LogicalRelation (1265)
: : : +- Project (1271)
: : : +- Project (1270)
: : : +- Repartition (1269)
: : : +- LogicalRelation (1268)
: : +- Repartition (1275)
: : +- LogicalRelation (1274)
: +- SerializeFromObject (1481)
: +- MapElements (1480)
: +- DeserializeToObject (1479)
: +- Project (1478)
: +- Project (1477)
: +- Join (1476)
: :- SubqueryAlias (1472)
: : +- Aggregate (1471)
: : +- Project (1470)
: : +- Join (1469)
: : :- Project (1467)
: : : +- Project (1466)
: : : +- Project (1465)
: : : +- Project (1464)
: : : +- Project (1463)
: : : +- Project (1462)
: : : +- Join (1461)
: : : :- Project (1319)
: : : : +- Project (1318)
: : : : +- Project (1317)
: : : : +- Project (1316)
: : : : +- Generate (1315)
: : : : +- Project (1314)
: : : : +- Generate (1313)
: : : : +- Project (1312)
: : : : +- Join (1311)
: : : : :- Project (1308)
: : : : : +- Join (1307)
: : : : : :- Project (1302)
: : : : : : +- RepartitionByExpression (1301)
: : : : : : +- LogicalRelation (1300)
: : : : : +- Project (1306)
: : : : : +- Project (1305)
: : : : : +- Repartition (1304)
: : : : : +- LogicalRelation (1303)
: : : : +- Repartition (1310)
: : : : +- LogicalRelation (1309)
: : : +- Project (1460)
: : : +- Aggregate (1459)
: : : +- Project (1458)
: : : +- Join (1457)
: : : :- Project (1387)
: : : : +- Filter (1386)
: : : : +- Join (1385)
: : : : :- Filter (1364)
: : : : : +- Project (1363)
: : : : : +- Project (1362)
: : : : : +- Generate (1361)
: : : : : +- Project (1360)
: : : : : +- Aggregate (1359)
: : : : : +- Project (1358)
: : : : : +- Generate (1357)
: : : : : +- Join (1356)
: : : : : :- Repartition (1321)
: : : : : : +- LogicalRelation (1320)
: : : : : +- Project (1355)
: : : : : +- Join (1354)
: : : : : :- Project (1331)
: : : : : : +- Project (1330)
: : : : : : +- Generate (1329)
: : : : : : +- Project (1328)
: : : : : : +- Generate (1327)
: : : : : : +- Project (1326)
: : : : : : +- Project (1325)
: : : : : : +- Filter (1324)
: : : : : : +- Repartition (1323)
: : : : : : +- LogicalRelation (1322)
: : : : : +- Deduplicate (1353)
: : : : : +- Project (1352)
: : : : : +- Project (1351)
: : : : : +- Project (1350)
: : : : : +- Project (1349)
: : : : : +- Project (1348)
: : : : : +- Generate (1347)
: : : : : +- Project (1346)
: : : : : +- Generate (1345)
: : : : : +- Project (1344)
: : : : : +- Join (1343)
: : : : : :- Project (1340)
: : : : : : +- Join (1339)
: : : : : : :- Project (1334)
: : : : : : : +- RepartitionByExpression (1333)
: : : : : : : +- LogicalRelation (1332)
: : : : : : +- Project (1338)
: : : : : : +- Project (1337)
: : : : : : +- Repartition (1336)
: : : : : : +- LogicalRelation (1335)
: : : : : +- Repartition (1342)
: : : : : +- LogicalRelation (1341)
: : : : +- Project (1384)
: : : : +- Project (1383)
: : : : +- Project (1382)
: : : : +- Project (1381)
: : : : +- Generate (1380)
: : : : +- Project (1379)
: : : : +- Generate (1378)
: : : : +- Project (1377)
: : : : +- Join (1376)
: : : : :- Project (1373)
: : : : : +- Join (1372)
: : : : : :- Project (1367)
: : : : : : +- RepartitionByExpression (1366)
: : : : : : +- LogicalRelation (1365)
: : : : : +- Project (1371)
: : : : : +- Project (1370)
: : : : : +- Repartition (1369)
: : : : : +- LogicalRelation (1368)
: : : : +- Repartition (1375)
: : : : +- LogicalRelation (1374)
: : : +- Aggregate (1456)
: : : +- Project (1455)
: : : +- Filter (1454)
: : : +- Join (1453)
: : : :- Filter (1432)
: : : : +- Project (1431)
: : : : +- Project (1430)
: : : : +- Generate (1429)
: : : : +- Project (1428)
: : : : +- Aggregate (1427)
: : : : +- Project (1426)
: : : : +- Generate (1425)
: : : : +- Join (1424)
: : : : :- Repartition (1389)
: : : : : +- LogicalRelation (1388)
: : : : +- Project (1423)
: : : : +- Join (1422)
: : : : :- Project (1399)
: : : : : +- Project (1398)
: : : : : +- Generate (1397)
: : : : : +- Project (1396)
: : : : : +- Generate (1395)
: : : : : +- Project (1394)
: : : : : +- Project (1393)
: : : : : +- Filter (1392)
: : : : : +- Repartition (1391)
: : : : : +- LogicalRelation (1390)
: : : : +- Deduplicate (1421)
: : : : +- Project (1420)
: : : : +- Project (1419)
: : : : +- Project (1418)
: : : : +- Project (1417)
: : : : +- Project (1416)
: : : : +- Generate (1415)
: : : : +- Project (1414)
: : : : +- Generate (1413)
: : : : +- Project (1412)
: : : : +- Join (1411)
: : : : :- Project (1408)
: : : : : +- Join (1407)
: : : : : :- Project (1402)
: : : : : : +- RepartitionByExpression (1401)
: : : : : : +- LogicalRelation (1400)
: : : : : +- Project (1406)
: : : : : +- Project (1405)
: : : : : +- Repartition (1404)
: : : : : +- LogicalRelation (1403)
: : : : +- Repartition (1410)
: : : : +- LogicalRelation (1409)
: : : +- Project (1452)
: : : +- Project (1451)
: : : +- Project (1450)
: : : +- Project (1449)
: : : +- Generate (1448)
: : : +- Project (1447)
: : : +- Generate (1446)
: : : +- Project (1445)
: : : +- Join (1444)
: : : :- Project (1441)
: : : : +- Join (1440)
: : : : :- Project (1435)
: : : : : +- RepartitionByExpression (1434)
: : : : : +- LogicalRelation (1433)
: : : : +- Project (1439)
: : : : +- Project (1438)
: : : : +- Repartition (1437)
: : : : +- LogicalRelation (1436)
: : : +- Repartition (1443)
: : : +- LogicalRelation (1442)
: : +- LogicalRelation (1468)
: +- Project (1475)
: +- Repartition (1474)
: +- LogicalRelation (1473)
+- Aggregate (2256)
+- Union (2255)
:- Filter (1889)
: +- Aggregate (1888)
: +- Project (1887)
: +- Project (1886)
: +- Window (1885)
: +- Project (1884)
: +- Project (1883)
: +- Project (1882)
: +- Join (1881)
: :- Project (1874)
: : +- Join (1873)
: : :- Project (1837)
: : : +- Project (1836)
: : : +- Join (1835)
: : : :- Project (1652)
: : : : +- Project (1651)
: : : : +- Project (1650)
: : : : +- Project (1649)
: : : : +- Project (1648)
: : : : +- Project (1647)
: : : : +- Join (1646)
: : : : :- Project (1504)
: : : : : +- Project (1503)
: : : : : +- Project (1502)
: : : : : +- Project (1501)
: : : : : +- Generate (1500)
: : : : : +- Project (1499)
: : : : : +- Generate (1498)
: : : : : +- Project (1497)
: : : : : +- Join (1496)
: : : : : :- Project (1493)
: : : : : : +- Join (1492)
: : : : : : :- Project (1487)
: : : : : : : +- RepartitionByExpression (1486)
: : : : : : : +- LogicalRelation (1485)
: : : : : : +- Project (1491)
: : : : : : +- Project (1490)
: : : : : : +- Repartition (1489)
: : : : : : +- LogicalRelation (1488)
: : : : : +- Repartition (1495)
: : : : : +- LogicalRelation (1494)
: : : : +- Project (1645)
: : : : +- Aggregate (1644)
: : : : +- Project (1643)
: : : : +- Join (1642)
: : : : :- Project (1572)
: : : : : +- Filter (1571)
: : : : : +- Join (1570)
: : : : : :- Filter (1549)
: : : : : : +- Project (1548)
: : : : : : +- Project (1547)
: : : : : : +- Generate (1546)
: : : : : : +- Project (1545)
: : : : : : +- Aggregate (1544)
: : : : : : +- Project (1543)
: : : : : : +- Generate (1542)
: : : : : : +- Join (1541)
: : : : : : :- Repartition (1506)
: : : : : : : +- LogicalRelation (1505)
: : : : : : +- Project (1540)
: : : : : : +- Join (1539)
: : : : : : :- Project (1516)
: : : : : : : +- Project (1515)
: : : : : : : +- Generate (1514)
: : : : : : : +- Project (1513)
: : : : : : : +- Generate (1512)
: : : : : : : +- Project (1511)
: : : : : : : +- Project (1510)
: : : : : : : +- Filter (1509)
: : : : : : : +- Repartition (1508)
: : : : : : : +- LogicalRelation (1507)
: : : : : : +- Deduplicate (1538)
: : : : : : +- Project (1537)
: : : : : : +- Project (1536)
: : : : : : +- Project (1535)
: : : : : : +- Project (1534)
: : : : : : +- Project (1533)
: : : : : : +- Generate (1532)
: : : : : : +- Project (1531)
: : : : : : +- Generate (1530)
: : : : : : +- Project (1529)
: : : : : : +- Join (1528)
: : : : : : :- Project (1525)
: : : : : : : +- Join (1524)
: : : : : : : :- Project (1519)
: : : : : : : : +- RepartitionByExpression (1518)
: : : : : : : : +- LogicalRelation (1517)
: : : : : : : +- Project (1523)
: : : : : : : +- Project (1522)
: : : : : : : +- Repartition (1521)
: : : : : : : +- LogicalRelation (1520)
: : : : : : +- Repartition (1527)
: : : : : : +- LogicalRelation (1526)
: : : : : +- Project (1569)
: : : : : +- Project (1568)
: : : : : +- Project (1567)
: : : : : +- Project (1566)
: : : : : +- Generate (1565)
: : : : : +- Project (1564)
: : : : : +- Generate (1563)
: : : : : +- Project (1562)
: : : : : +- Join (1561)
: : : : : :- Project (1558)
: : : : : : +- Join (1557)
: : : : : : :- Project (1552)
: : : : : : : +- RepartitionByExpression (1551)
: : : : : : : +- LogicalRelation (1550)
: : : : : : +- Project (1556)
: : : : : : +- Project (1555)
: : : : : : +- Repartition (1554)
: : : : : : +- LogicalRelation (1553)
: : : : : +- Repartition (1560)
: : : : : +- LogicalRelation (1559)
: : : : +- Aggregate (1641)
: : : : +- Project (1640)
: : : : +- Filter (1639)
: : : : +- Join (1638)
: : : : :- Filter (1617)
: : : : : +- Project (1616)
: : : : : +- Project (1615)
: : : : : +- Generate (1614)
: : : : : +- Project (1613)
: : : : : +- Aggregate (1612)
: : : : : +- Project (1611)
: : : : : +- Generate (1610)
: : : : : +- Join (1609)
: : : : : :- Repartition (1574)
: : : : : : +- LogicalRelation (1573)
: : : : : +- Project (1608)
: : : : : +- Join (1607)
: : : : : :- Project (1584)
: : : : : : +- Project (1583)
: : : : : : +- Generate (1582)
: : : : : : +- Project (1581)
: : : : : : +- Generate (1580)
: : : : : : +- Project (1579)
: : : : : : +- Project (1578)
: : : : : : +- Filter (1577)
: : : : : : +- Repartition (1576)
: : : : : : +- LogicalRelation (1575)
: : : : : +- Deduplicate (1606)
: : : : : +- Project (1605)
: : : : : +- Project (1604)
: : : : : +- Project (1603)
: : : : : +- Project (1602)
: : : : : +- Project (1601)
: : : : : +- Generate (1600)
: : : : : +- Project (1599)
: : : : : +- Generate (1598)
: : : : : +- Project (1597)
: : : : : +- Join (1596)
: : : : : :- Project (1593)
: : : : : : +- Join (1592)
: : : : : : :- Project (1587)
: : : : : : : +- RepartitionByExpression (1586)
: : : : : : : +- LogicalRelation (1585)
: : : : : : +- Project (1591)
: : : : : : +- Project (1590)
: : : : : : +- Repartition (1589)
: : : : : : +- LogicalRelation (1588)
: : : : : +- Repartition (1595)
: : : : : +- LogicalRelation (1594)
: : : : +- Project (1637)
: : : : +- Project (1636)
: : : : +- Project (1635)
: : : : +- Project (1634)
: : : : +- Generate (1633)
: : : : +- Project (1632)
: : : : +- Generate (1631)
: : : : +- Project (1630)
: : : : +- Join (1629)
: : : : :- Project (1626)
: : : : : +- Join (1625)
: : : : : :- Project (1620)
: : : : : : +- RepartitionByExpression (1619)
: : : : : : +- LogicalRelation (1618)
: : : : : +- Project (1624)
: : : : : +- Project (1623)
: : : : : +- Repartition (1622)
: : : : : +- LogicalRelation (1621)
: : : : +- Repartition (1628)
: : : : +- LogicalRelation (1627)
: : : +- SerializeFromObject (1834)
: : : +- MapElements (1833)
: : : +- DeserializeToObject (1832)
: : : +- Project (1831)
: : : +- Project (1830)
: : : +- Join (1829)
: : : :- SubqueryAlias (1825)
: : : : +- Aggregate (1824)
: : : : +- Project (1823)
: : : : +- Join (1822)
: : : : :- Project (1820)
: : : : : +- Project (1819)
: : : : : +- Project (1818)
: : : : : +- Project (1817)
: : : : : +- Project (1816)
: : : : : +- Project (1815)
: : : : : +- Join (1814)
: : : : : :- Project (1672)
: : : : : : +- Project (1671)
: : : : : : +- Project (1670)
: : : : : : +- Project (1669)
: : : : : : +- Generate (1668)
: : : : : : +- Project (1667)
: : : : : : +- Generate (1666)
: : : : : : +- Project (1665)
: : : : : : +- Join (1664)
: : : : : : :- Project (1661)
: : : : : : : +- Join (1660)
: : : : : : : :- Project (1655)
: : : : : : : : +- RepartitionByExpression (1654)
: : : : : : : : +- LogicalRelation (1653)
: : : : : : : +- Project (1659)
: : : : : : : +- Project (1658)
: : : : : : : +- Repartition (1657)
: : : : : : : +- LogicalRelation (1656)
: : : : : : +- Repartition (1663)
: : : : : : +- LogicalRelation (1662)
: : : : : +- Project (1813)
: : : : : +- Aggregate (1812)
: : : : : +- Project (1811)
: : : : : +- Join (1810)
: : : : : :- Project (1740)
: : : : : : +- Filter (1739)
: : : : : : +- Join (1738)
: : : : : : :- Filter (1717)
: : : : : : : +- Project (1716)
: : : : : : : +- Project (1715)
: : : : : : : +- Generate (1714)
: : : : : : : +- Project (1713)
: : : : : : : +- Aggregate (1712)
: : : : : : : +- Project (1711)
: : : : : : : +- Generate (1710)
: : : : : : : +- Join (1709)
: : : : : : : :- Repartition (1674)
: : : : : : : : +- LogicalRelation (1673)
: : : : : : : +- Project (1708)
: : : : : : : +- Join (1707)
: : : : : : : :- Project (1684)
: : : : : : : : +- Project (1683)
: : : : : : : : +- Generate (1682)
: : : : : : : : +- Project (1681)
: : : : : : : : +- Generate (1680)
: : : : : : : : +- Project (1679)
: : : : : : : : +- Project (1678)
: : : : : : : : +- Filter (1677)
: : : : : : : : +- Repartition (1676)
: : : : : : : : +- LogicalRelation (1675)
: : : : : : : +- Deduplicate (1706)
: : : : : : : +- Project (1705)
: : : : : : : +- Project (1704)
: : : : : : : +- Project (1703)
: : : : : : : +- Project (1702)
: : : : : : : +- Project (1701)
: : : : : : : +- Generate (1700)
: : : : : : : +- Project (1699)
: : : : : : : +- Generate (1698)
: : : : : : : +- Project (1697)
: : : : : : : +- Join (1696)
: : : : : : : :- Project (1693)
: : : : : : : : +- Join (1692)
: : : : : : : : :- Project (1687)
: : : : : : : : : +- RepartitionByExpression (1686)
: : : : : : : : : +- LogicalRelation (1685)
: : : : : : : : +- Project (1691)
: : : : : : : : +- Project (1690)
: : : : : : : : +- Repartition (1689)
: : : : : : : : +- LogicalRelation (1688)
: : : : : : : +- Repartition (1695)
: : : : : : : +- LogicalRelation (1694)
: : : : : : +- Project (1737)
: : : : : : +- Project (1736)
: : : : : : +- Project (1735)
: : : : : : +- Project (1734)
: : : : : : +- Generate (1733)
: : : : : : +- Project (1732)
: : : : : : +- Generate (1731)
: : : : : : +- Project (1730)
: : : : : : +- Join (1729)
: : : : : : :- Project (1726)
: : : : : : : +- Join (1725)
: : : : : : : :- Project (1720)
: : : : : : : : +- RepartitionByExpression (1719)
: : : : : : : : +- LogicalRelation (1718)
: : : : : : : +- Project (1724)
: : : : : : : +- Project (1723)
: : : : : : : +- Repartition (1722)
: : : : : : : +- LogicalRelation (1721)
: : : : : : +- Repartition (1728)
: : : : : : +- LogicalRelation (1727)
: : : : : +- Aggregate (1809)
: : : : : +- Project (1808)
: : : : : +- Filter (1807)
: : : : : +- Join (1806)
: : : : : :- Filter (1785)
: : : : : : +- Project (1784)
: : : : : : +- Project (1783)
: : : : : : +- Generate (1782)
: : : : : : +- Project (1781)
: : : : : : +- Aggregate (1780)
: : : : : : +- Project (1779)
: : : : : : +- Generate (1778)
: : : : : : +- Join (1777)
: : : : : : :- Repartition (1742)
: : : : : : : +- LogicalRelation (1741)
: : : : : : +- Project (1776)
: : : : : : +- Join (1775)
: : : : : : :- Project (1752)
: : : : : : : +- Project (1751)
: : : : : : : +- Generate (1750)
: : : : : : : +- Project (1749)
: : : : : : : +- Generate (1748)
: : : : : : : +- Project (1747)
: : : : : : : +- Project (1746)
: : : : : : : +- Filter (1745)
: : : : : : : +- Repartition (1744)
: : : : : : : +- LogicalRelation (1743)
: : : : : : +- Deduplicate (1774)
: : : : : : +- Project (1773)
: : : : : : +- Project (1772)
: : : : : : +- Project (1771)
: : : : : : +- Project (1770)
: : : : : : +- Project (1769)
: : : : : : +- Generate (1768)
: : : : : : +- Project (1767)
: : : : : : +- Generate (1766)
: : : : : : +- Project (1765)
: : : : : : +- Join (1764)
: : : : : : :- Project (1761)
: : : : : : : +- Join (1760)
: : : : : : : :- Project (1755)
: : : : : : : : +- RepartitionByExpression (1754)
: : : : : : : : +- LogicalRelation (1753)
: : : : : : : +- Project (1759)
: : : : : : : +- Project (1758)
: : : : : : : +- Repartition (1757)
: : : : : : : +- LogicalRelation (1756)
: : : : : : +- Repartition (1763)
: : : : : : +- LogicalRelation (1762)
: : : : : +- Project (1805)
: : : : : +- Project (1804)
: : : : : +- Project (1803)
: : : : : +- Project (1802)
: : : : : +- Generate (1801)
: : : : : +- Project (1800)
: : : : : +- Generate (1799)
: : : : : +- Project (1798)
: : : : : +- Join (1797)
: : : : : :- Project (1794)
: : : : : : +- Join (1793)
: : : : : : :- Project (1788)
: : : : : : : +- RepartitionByExpression (1787)
: : : : : : : +- LogicalRelation (1786)
: : : : : : +- Project (1792)
: : : : : : +- Project (1791)
: : : : : : +- Repartition (1790)
: : : : : : +- LogicalRelation (1789)
: : : : : +- Repartition (1796)
: : : : : +- LogicalRelation (1795)
: : : : +- LogicalRelation (1821)
: : : +- Project (1828)
: : : +- Repartition (1827)
: : : +- LogicalRelation (1826)
: : +- Project (1872)
: : +- Project (1871)
: : +- Join (1870)
: : :- Project (1847)
: : : +- Project (1846)
: : : +- Generate (1845)
: : : +- Project (1844)
: : : +- Generate (1843)
: : : +- Project (1842)
: : : +- Project (1841)
: : : +- Filter (1840)
: : : +- Repartition (1839)
: : : +- LogicalRelation (1838)
: : +- Deduplicate (1869)
: : +- Project (1868)
: : +- Project (1867)
: : +- Project (1866)
: : +- Project (1865)
: : +- Project (1864)
: : +- Generate (1863)
: : +- Project (1862)
: : +- Generate (1861)
: : +- Project (1860)
: : +- Join (1859)
: : :- Project (1856)
: : : +- Join (1855)
: : : :- Project (1850)
: : : : +- RepartitionByExpression (1849)
: : : : +- LogicalRelation (1848)
: : : +- Project (1854)
: : : +- Project (1853)
: : : +- Repartition (1852)
: : : +- LogicalRelation (1851)
: : +- Repartition (1858)
: : +- LogicalRelation (1857)
: +- Project (1880)
: +- Filter (1879)
: +- Project (1878)
: +- Generate (1877)
: +- Repartition (1876)
: +- LogicalRelation (1875)
+- Filter (2254)
+- Aggregate (2253)
+- Project (2252)
+- Project (2251)
+- Project (2250)
+- Join (2249)
:- Project (2242)
: +- Project (2241)
: +- Join (2240)
: :- Project (2057)
: : +- Project (2056)
: : +- Project (2055)
: : +- Project (2054)
: : +- Project (2053)
: : +- Project (2052)
: : +- Join (2051)
: : :- Project (1909)
: : : +- Project (1908)
: : : +- Project (1907)
: : : +- Project (1906)
: : : +- Generate (1905)
: : : +- Project (1904)
: : : +- Generate (1903)
: : : +- Project (1902)
: : : +- Join (1901)
: : : :- Project (1898)
: : : : +- Join (1897)
: : : : :- Project (1892)
: : : : : +- RepartitionByExpression (1891)
: : : : : +- LogicalRelation (1890)
: : : : +- Project (1896)
: : : : +- Project (1895)
: : : : +- Repartition (1894)
: : : : +- LogicalRelation (1893)
: : : +- Repartition (1900)
: : : +- LogicalRelation (1899)
: : +- Project (2050)
: : +- Aggregate (2049)
: : +- Project (2048)
: : +- Join (2047)
: : :- Project (1977)
: : : +- Filter (1976)
: : : +- Join (1975)
: : : :- Filter (1954)
: : : : +- Project (1953)
: : : : +- Project (1952)
: : : : +- Generate (1951)
: : : : +- Project (1950)
: : : : +- Aggregate (1949)
: : : : +- Project (1948)
: : : : +- Generate (1947)
: : : : +- Join (1946)
: : : : :- Repartition (1911)
: : : : : +- LogicalRelation (1910)
: : : : +- Project (1945)
: : : : +- Join (1944)
: : : : :- Project (1921)
: : : : : +- Project (1920)
: : : : : +- Generate (1919)
: : : : : +- Project (1918)
: : : : : +- Generate (1917)
: : : : : +- Project (1916)
: : : : : +- Project (1915)
: : : : : +- Filter (1914)
: : : : : +- Repartition (1913)
: : : : : +- LogicalRelation (1912)
: : : : +- Deduplicate (1943)
: : : : +- Project (1942)
: : : : +- Project (1941)
: : : : +- Project (1940)
: : : : +- Project (1939)
: : : : +- Project (1938)
: : : : +- Generate (1937)
: : : : +- Project (1936)
: : : : +- Generate (1935)
: : : : +- Project (1934)
: : : : +- Join (1933)
: : : : :- Project (1930)
: : : : : +- Join (1929)
: : : : : :- Project (1924)
: : : : : : +- RepartitionByExpression (1923)
: : : : : : +- LogicalRelation (1922)
: : : : : +- Project (1928)
: : : : : +- Project (1927)
: : : : : +- Repartition (1926)
: : : : : +- LogicalRelation (1925)
: : : : +- Repartition (1932)
: : : : +- LogicalRelation (1931)
: : : +- Project (1974)
: : : +- Project (1973)
: : : +- Project (1972)
: : : +- Project (1971)
: : : +- Generate (1970)
: : : +- Project (1969)
: : : +- Generate (1968)
: : : +- Project (1967)
: : : +- Join (1966)
: : : :- Project (1963)
: : : : +- Join (1962)
: : : : :- Project (1957)
: : : : : +- RepartitionByExpression (1956)
: : : : : +- LogicalRelation (1955)
: : : : +- Project (1961)
: : : : +- Project (1960)
: : : : +- Repartition (1959)
: : : : +- LogicalRelation (1958)
: : : +- Repartition (1965)
: : : +- LogicalRelation (1964)
: : +- Aggregate (2046)
: : +- Project (2045)
: : +- Filter (2044)
: : +- Join (2043)
: : :- Filter (2022)
: : : +- Project (2021)
: : : +- Project (2020)
: : : +- Generate (2019)
: : : +- Project (2018)
: : : +- Aggregate (2017)
: : : +- Project (2016)
: : : +- Generate (2015)
: : : +- Join (2014)
: : : :- Repartition (1979)
: : : : +- LogicalRelation (1978)
: : : +- Project (2013)
: : : +- Join (2012)
: : : :- Project (1989)
: : : : +- Project (1988)
: : : : +- Generate (1987)
: : : : +- Project (1986)
: : : : +- Generate (1985)
: : : : +- Project (1984)
: : : : +- Project (1983)
: : : : +- Filter (1982)
: : : : +- Repartition (1981)
: : : : +- LogicalRelation (1980)
: : : +- Deduplicate (2011)
: : : +- Project (2010)
: : : +- Project (2009)
: : : +- Project (2008)
: : : +- Project (2007)
: : : +- Project (2006)
: : : +- Generate (2005)
: : : +- Project (2004)
: : : +- Generate (2003)
: : : +- Project (2002)
: : : +- Join (2001)
: : : :- Project (1998)
: : : : +- Join (1997)
: : : : :- Project (1992)
: : : : : +- RepartitionByExpression (1991)
: : : : : +- LogicalRelation (1990)
: : : : +- Project (1996)
: : : : +- Project (1995)
: : : : +- Repartition (1994)
: : : : +- LogicalRelation (1993)
: : : +- Repartition (2000)
: : : +- LogicalRelation (1999)
: : +- Project (2042)
: : +- Project (2041)
: : +- Project (2040)
: : +- Project (2039)
: : +- Generate (2038)
: : +- Project (2037)
: : +- Generate (2036)
: : +- Project (2035)
: : +- Join (2034)
: : :- Project (2031)
: : : +- Join (2030)
: : : :- Project (2025)
: : : : +- RepartitionByExpression (2024)
: : : : +- LogicalRelation (2023)
: : : +- Project (2029)
: : : +- Project (2028)
: : : +- Repartition (2027)
: : : +- LogicalRelation (2026)
: : +- Repartition (2033)
: : +- LogicalRelation (2032)
: +- SerializeFromObject (2239)
: +- MapElements (2238)
: +- DeserializeToObject (2237)
: +- Project (2236)
: +- Project (2235)
: +- Join (2234)
: :- SubqueryAlias (2230)
: : +- Aggregate (2229)
: : +- Project (2228)
: : +- Join (2227)
: : :- Project (2225)
: : : +- Project (2224)
: : : +- Project (2223)
: : : +- Project (2222)
: : : +- Project (2221)
: : : +- Project (2220)
: : : +- Join (2219)
: : : :- Project (2077)
: : : : +- Project (2076)
: : : : +- Project (2075)
: : : : +- Project (2074)
: : : : +- Generate (2073)
: : : : +- Project (2072)
: : : : +- Generate (2071)
: : : : +- Project (2070)
: : : : +- Join (2069)
: : : : :- Project (2066)
: : : : : +- Join (2065)
: : : : : :- Project (2060)
: : : : : : +- RepartitionByExpression (2059)
: : : : : : +- LogicalRelation (2058)
: : : : : +- Project (2064)
: : : : : +- Project (2063)
: : : : : +- Repartition (2062)
: : : : : +- LogicalRelation (2061)
: : : : +- Repartition (2068)
: : : : +- LogicalRelation (2067)
: : : +- Project (2218)
: : : +- Aggregate (2217)
: : : +- Project (2216)
: : : +- Join (2215)
: : : :- Project (2145)
: : : : +- Filter (2144)
: : : : +- Join (2143)
: : : : :- Filter (2122)
: : : : : +- Project (2121)
: : : : : +- Project (2120)
: : : : : +- Generate (2119)
: : : : : +- Project (2118)
: : : : : +- Aggregate (2117)
: : : : : +- Project (2116)
: : : : : +- Generate (2115)
: : : : : +- Join (2114)
: : : : : :- Repartition (2079)
: : : : : : +- LogicalRelation (2078)
: : : : : +- Project (2113)
: : : : : +- Join (2112)
: : : : : :- Project (2089)
: : : : : : +- Project (2088)
: : : : : : +- Generate (2087)
: : : : : : +- Project (2086)
: : : : : : +- Generate (2085)
: : : : : : +- Project (2084)
: : : : : : +- Project (2083)
: : : : : : +- Filter (2082)
: : : : : : +- Repartition (2081)
: : : : : : +- LogicalRelation (2080)
: : : : : +- Deduplicate (2111)
: : : : : +- Project (2110)
: : : : : +- Project (2109)
: : : : : +- Project (2108)
: : : : : +- Project (2107)
: : : : : +- Project (2106)
: : : : : +- Generate (2105)
: : : : : +- Project (2104)
: : : : : +- Generate (2103)
: : : : : +- Project (2102)
: : : : : +- Join (2101)
: : : : : :- Project (2098)
: : : : : : +- Join (2097)
: : : : : : :- Project (2092)
: : : : : : : +- RepartitionByExpression (2091)
: : : : : : : +- LogicalRelation (2090)
: : : : : : +- Project (2096)
: : : : : : +- Project (2095)
: : : : : : +- Repartition (2094)
: : : : : : +- LogicalRelation (2093)
: : : : : +- Repartition (2100)
: : : : : +- LogicalRelation (2099)
: : : : +- Project (2142)
: : : : +- Project (2141)
: : : : +- Project (2140)
: : : : +- Project (2139)
: : : : +- Generate (2138)
: : : : +- Project (2137)
: : : : +- Generate (2136)
: : : : +- Project (2135)
: : : : +- Join (2134)
: : : : :- Project (2131)
: : : : : +- Join (2130)
: : : : : :- Project (2125)
: : : : : : +- RepartitionByExpression (2124)
: : : : : : +- LogicalRelation (2123)
: : : : : +- Project (2129)
: : : : : +- Project (2128)
: : : : : +- Repartition (2127)
: : : : : +- LogicalRelation (2126)
: : : : +- Repartition (2133)
: : : : +- LogicalRelation (2132)
: : : +- Aggregate (2214)
: : : +- Project (2213)
: : : +- Filter (2212)
: : : +- Join (2211)
: : : :- Filter (2190)
: : : : +- Project (2189)
: : : : +- Project (2188)
: : : : +- Generate (2187)
: : : : +- Project (2186)
: : : : +- Aggregate (2185)
: : : : +- Project (2184)
: : : : +- Generate (2183)
: : : : +- Join (2182)
: : : : :- Repartition (2147)
: : : : : +- LogicalRelation (2146)
: : : : +- Project (2181)
: : : : +- Join (2180)
: : : : :- Project (2157)
: : : : : +- Project (2156)
: : : : : +- Generate (2155)
: : : : : +- Project (2154)
: : : : : +- Generate (2153)
: : : : : +- Project (2152)
: : : : : +- Project (2151)
: : : : : +- Filter (2150)
: : : : : +- Repartition (2149)
: : : : : +- LogicalRelation (2148)
: : : : +- Deduplicate (2179)
: : : : +- Project (2178)
: : : : +- Project (2177)
: : : : +- Project (2176)
: : : : +- Project (2175)
: : : : +- Project (2174)
: : : : +- Generate (2173)
: : : : +- Project (2172)
: : : : +- Generate (2171)
: : : : +- Project (2170)
: : : : +- Join (2169)
: : : : :- Project (2166)
: : : : : +- Join (2165)
: : : : : :- Project (2160)
: : : : : : +- RepartitionByExpression (2159)
: : : : : : +- LogicalRelation (2158)
: : : : : +- Project (2164)
: : : : : +- Project (2163)
: : : : : +- Repartition (2162)
: : : : : +- LogicalRelation (2161)
: : : : +- Repartition (2168)
: : : : +- LogicalRelation (2167)
: : : +- Project (2210)
: : : +- Project (2209)
: : : +- Project (2208)
: : : +- Project (2207)
: : : +- Generate (2206)
: : : +- Project (2205)
: : : +- Generate (2204)
: : : +- Project (2203)
: : : +- Join (2202)
: : : :- Project (2199)
: : : : +- Join (2198)
: : : : :- Project (2193)
: : : : : +- RepartitionByExpression (2192)
: : : : : +- LogicalRelation (2191)
: : : : +- Project (2197)
: : : : +- Project (2196)
: : : : +- Repartition (2195)
: : : : +- LogicalRelation (2194)
: : : +- Repartition (2201)
: : : +- LogicalRelation (2200)
: : +- LogicalRelation (2226)
: +- Project (2233)
: +- Repartition (2232)
: +- LogicalRelation (2231)
+- Project (2248)
+- Filter (2247)
+- Project (2246)
+- Generate (2245)
+- Repartition (2244)
+- LogicalRelation (2243)
(1) Execute SaveIntoDataSourceCommand
Output: []
(2) SaveIntoDataSourceCommand
Arguments: org.apache.spark.sql.delta.sources.DeltaDataSource@6b86a73f, [path=hdlfs://770f0770-bd0c-456f-b83b-9649926e0857.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-quantity-kpi-service/internal/data-snapshot/10000000678/0_1_10000000678], Overwrite
(3) LogicalRelation
Arguments: parquet, [product#944305, plant#944306, orderDateTime#944307, planningStartDateTime#944308], false
(4) RepartitionByExpression
Arguments: [product#944305, plant#944306], 37
(5) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307]
(6) LogicalRelation
Arguments: parquet, [systemId#944361, internalUUID#944362, plant#944363, product#944364, blockedForReplenishmentStartingFrom#944365, productionAspect#944366, salesPlant#944367, listing#944368, sourceOfSupplyCategory#944369], false
(7) Repartition
Arguments: 37, true
(8) Project
Arguments: [systemId#944361, internalUUID#944362, plant#944363, product#944364, blockedForReplenishmentStartingFrom#944365, productionAspect#944366, salesPlant#944367, listing#944368, sourceOfSupplyCategory#944369, struct(systemId, systemId#944361, internalUUID, internalUUID#944362, plant, plant#944363, product, product#944364, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#944365, productionAspect, productionAspect#944366, salesPlant, salesPlant#944367, listing, listing#944368, sourceOfSupplyCategory, sourceOfSupplyCategory#944369) AS productPlant#944371]
(9) Project
Arguments: [productPlant#944371]
(10) Join
Arguments: LeftOuter, ((product#944305 <=> productPlant#944371.product.internalRefUUID) AND (plant#944306 <=> productPlant#944371.plant.internalRefUUID))
(11) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371]
(12) LogicalRelation
Arguments: parquet, [systemId#944396, internalUUID#944397, id#944398, displayId#944399, name#944400, baseUnitOfMeasure#944401, unitOfMeasures#944402, unitOfMeasureConversions#944403, productionAspect#944404, salesAspect#944405, procurementAspect#944406, productGroup#944407], false
(13) Repartition
Arguments: 37, true
(14) Join
Arguments: LeftOuter, (product#944305 = internalUUID#944397)
(15) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, systemId#944396, internalUUID#944397, id#944398, displayId#944399, name#944400, baseUnitOfMeasure#944401, unitOfMeasures#944402, unitOfMeasureConversions#944403, productionAspect#944404, salesAspect#944405, procurementAspect#944406, productGroup#944407, filter(unitOfMeasureConversions#944403, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#944371.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#944371.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944401.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944401.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944409]
(16) Generate
Arguments: explode(filteredUnitOfMeasureConversions#944409.quantityNumerator), true, [quantityNumerator#944417]
(17) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, systemId#944396, internalUUID#944397, id#944398, displayId#944399, name#944400, baseUnitOfMeasure#944401, unitOfMeasures#944402, unitOfMeasureConversions#944403, productionAspect#944404, salesAspect#944405, procurementAspect#944406, productGroup#944407, filteredUnitOfMeasureConversions#944409, quantityNumerator#944417]
(18) Generate
Arguments: explode(filteredUnitOfMeasureConversions#944409.quantityDenominator), true, [quantityDenominator#944420]
(19) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, systemId#944396, internalUUID#944397, id#944398, displayId#944399, name#944400, baseUnitOfMeasure#944401, unitOfMeasures#944402, unitOfMeasureConversions#944403, productionAspect#944404, salesAspect#944405, procurementAspect#944406, productGroup#944407, filteredUnitOfMeasureConversions#944409, quantityNumerator#944417, quantityDenominator#944420]
(20) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, systemId#944396, internalUUID#944397, id#944398, displayId#944399, name#944400, baseUnitOfMeasure#944401, unitOfMeasures#944402, unitOfMeasureConversions#944403, productionAspect#944404, salesAspect#944405, procurementAspect#944406, productGroup#944407, filteredUnitOfMeasureConversions#944409, quantityNumerator#944417, quantityDenominator#944420, (cast(quantityNumerator#944417 as double) / cast(quantityDenominator#944420 as double)) AS outboundUnit#944421]
(21) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, systemId#944396, internalUUID#944397, id#944398, displayId#944399, name#944400, baseUnitOfMeasure#944401, unitOfMeasures#944402, unitOfMeasureConversions#944403, productionAspect#944404, salesAspect#944405, procurementAspect#944406, productGroup#944407, filteredUnitOfMeasureConversions#944409, quantityNumerator#944417, quantityDenominator#944420, CASE WHEN (isnull(outboundUnit#944421) OR (outboundUnit#944421 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#944421 END AS outboundUnit#944422]
(22) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422]
(23) LogicalRelation
Arguments: parquet, [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565], false
(24) Repartition
Arguments: 37, true
(25) LogicalRelation
Arguments: parquet, [marketUnit#944474, description#944475, articleHierarchy#944476, defaultCurrency#944477, responsibilities#944478, replenishmentTypes#944479, distributionCenters#944480, assignedArticleHierarchyNodes#944481, minOrderQtySetting#944482, listingCheck#944483, odsSelection#944484, demandProfiles#944485, constraintProfiles#944486, optimizationProfiles#944487, orderGroupSplitProfiles#944488, supplierMinimumProfiles#944489, multipleRestrictionProfiles#944490, preferredUomSource#944491, handlingOfUnfulfilledDemands#944492, negligibleQuantitiesThreshold#944493, eventtype#944494], false
(26) Repartition
Arguments: 37, true
(27) Filter
Arguments: (marketUnit#944474 <=> IW_MU_CRP-125444_1)
(28) Project
Arguments: [marketUnit#944474, description#944475, articleHierarchy#944476, defaultCurrency#944477, responsibilities#944478, replenishmentTypes#944479, distributionCenters#944480, assignedArticleHierarchyNodes#944481, minOrderQtySetting#944482, listingCheck#944483, odsSelection#944484, demandProfiles#944485, constraintProfiles#944486, optimizationProfiles#944487, orderGroupSplitProfiles#944488, supplierMinimumProfiles#944489, multipleRestrictionProfiles#944490, preferredUomSource#944491, handlingOfUnfulfilledDemands#944492, negligibleQuantitiesThreshold#944493, eventtype#944494]
(29) Project
Arguments: [distributionCenters#944480]
(30) Generate
Arguments: explode(distributionCenters#944480), false, [distributionCenters#944497]
(31) Project
Arguments: [distributionCenters#944497]
(32) Generate
Arguments: explode(distributionCenters#944497.storageLocations), false, [storageLocations#944504]
(33) Project
Arguments: [distributionCenters#944497.id AS plantId#944498, distributionCenters#944497.internalRefUUID AS plantUuid#944499, storageLocations#944504]
(34) Project
Arguments: [plantId#944498, plantUuid#944499, storageLocations#944504.id AS storageLocId#944505, storageLocations#944504.internalRefUUID AS storageLocUuid#944506]
(35) LogicalRelation
Arguments: parquet, [product#944777, plant#944778, orderDateTime#944779, planningStartDateTime#944780], false
(36) RepartitionByExpression
Arguments: [product#944777, plant#944778], 37
(37) Project
Arguments: [product#944777, plant#944778, orderDateTime#944779]
(38) LogicalRelation
Arguments: parquet, [systemId#944781, internalUUID#944782, plant#944783, product#944784, blockedForReplenishmentStartingFrom#944785, productionAspect#944786, salesPlant#944787, listing#944788, sourceOfSupplyCategory#944789], false
(39) Repartition
Arguments: 37, true
(40) Project
Arguments: [systemId#944781, internalUUID#944782, plant#944783, product#944784, blockedForReplenishmentStartingFrom#944785, productionAspect#944786, salesPlant#944787, listing#944788, sourceOfSupplyCategory#944789, struct(systemId, systemId#944781, internalUUID, internalUUID#944782, plant, plant#944783, product, product#944784, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#944785, productionAspect, productionAspect#944786, salesPlant, salesPlant#944787, listing, listing#944788, sourceOfSupplyCategory, sourceOfSupplyCategory#944789) AS productPlant#944790]
(41) Project
Arguments: [productPlant#944790]
(42) Join
Arguments: LeftOuter, ((product#944777 <=> productPlant#944790.product.internalRefUUID) AND (plant#944778 <=> productPlant#944790.plant.internalRefUUID))
(43) Project
Arguments: [product#944777, plant#944778, orderDateTime#944779, productPlant#944790]
(44) LogicalRelation
Arguments: parquet, [systemId#944791, internalUUID#944792, id#944793, displayId#944794, name#944795, baseUnitOfMeasure#944796, unitOfMeasures#944797, unitOfMeasureConversions#944798, productionAspect#944799, salesAspect#944800, procurementAspect#944801, productGroup#944802], false
(45) Repartition
Arguments: 37, true
(46) Join
Arguments: LeftOuter, (product#944777 = internalUUID#944792)
(47) Project
Arguments: [product#944777, plant#944778, orderDateTime#944779, productPlant#944790, systemId#944791, internalUUID#944792, id#944793, displayId#944794, name#944795, baseUnitOfMeasure#944796, unitOfMeasures#944797, unitOfMeasureConversions#944798, productionAspect#944799, salesAspect#944800, procurementAspect#944801, productGroup#944802, filter(unitOfMeasureConversions#944798, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#944790.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#944790.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944796.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944796.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944803]
(48) Generate
Arguments: explode(filteredUnitOfMeasureConversions#944803.quantityNumerator), true, [quantityNumerator#944804]
(49) Project
Arguments: [product#944777, plant#944778, orderDateTime#944779, productPlant#944790, systemId#944791, internalUUID#944792, id#944793, displayId#944794, name#944795, baseUnitOfMeasure#944796, unitOfMeasures#944797, unitOfMeasureConversions#944798, productionAspect#944799, salesAspect#944800, procurementAspect#944801, productGroup#944802, filteredUnitOfMeasureConversions#944803, quantityNumerator#944804]
(50) Generate
Arguments: explode(filteredUnitOfMeasureConversions#944803.quantityDenominator), true, [quantityDenominator#944805]
(51) Project
Arguments: [product#944777, plant#944778, orderDateTime#944779, productPlant#944790, systemId#944791, internalUUID#944792, id#944793, displayId#944794, name#944795, baseUnitOfMeasure#944796, unitOfMeasures#944797, unitOfMeasureConversions#944798, productionAspect#944799, salesAspect#944800, procurementAspect#944801, productGroup#944802, filteredUnitOfMeasureConversions#944803, quantityNumerator#944804, quantityDenominator#944805]
(52) Project
Arguments: [product#944777, plant#944778, orderDateTime#944779, productPlant#944790, systemId#944791, internalUUID#944792, id#944793, displayId#944794, name#944795, baseUnitOfMeasure#944796, unitOfMeasures#944797, unitOfMeasureConversions#944798, productionAspect#944799, salesAspect#944800, procurementAspect#944801, productGroup#944802, filteredUnitOfMeasureConversions#944803, quantityNumerator#944804, quantityDenominator#944805, (cast(quantityNumerator#944804 as double) / cast(quantityDenominator#944805 as double)) AS outboundUnit#944806]
(53) Project
Arguments: [product#944777, plant#944778, orderDateTime#944779, productPlant#944790, systemId#944791, internalUUID#944792, id#944793, displayId#944794, name#944795, baseUnitOfMeasure#944796, unitOfMeasures#944797, unitOfMeasureConversions#944798, productionAspect#944799, salesAspect#944800, procurementAspect#944801, productGroup#944802, filteredUnitOfMeasureConversions#944803, quantityNumerator#944804, quantityDenominator#944805, CASE WHEN (isnull(outboundUnit#944806) OR (outboundUnit#944806 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#944806 END AS outboundUnit#944807]
(54) Project
Arguments: [product#944777, plant#944778, orderDateTime#944779, productPlant#944790, outboundUnit#944807]
(55) Project
Arguments: [plant#944778]
(56) Deduplicate
Arguments: [plant#944778]
(57) Join
Arguments: Inner, (plantUuid#944499 = plant#944778)
(58) Project
Arguments: [plantId#944498, plantUuid#944499, storageLocId#944505, storageLocUuid#944506]
(59) Join
Arguments: Inner, (plant#944563.internalRefUUID <=> plantUuid#944499)
(60) Generate
Arguments: explode(filter(stockQuantities#944565, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#944506) AND (lambda x#944569.storageLocation.Id = storageLocId#944505)), lambda x#944569, false))), false, [stockQuantity#944570]
(61) Project
Arguments: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944564, stockQuantities#944565, plantId#944498, plantUuid#944499, storageLocId#944505, storageLocUuid#944506, stockQuantity#944570]
(62) Aggregate
Arguments: [plantUuid#944499, internalUUID#944561, plant#944563, product#944562, systemId#944560], [plantUuid#944499, internalUUID#944561, plant#944563, product#944562, systemId#944560, first(calculationDateTime#944564, false) AS calculationDateTime#944571, collect_list(stockQuantity#944570, 0, 0) AS stockQuantities#944572]
(63) Project
Arguments: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944571, stockQuantities#944572]
(64) Generate
Arguments: explode(stockQuantities#944572), false, [stockQuantity#944587]
(65) Project
Arguments: [systemId#944560, internalUUID#944561, product#944562, plant#944563, calculationDateTime#944571, stockQuantities#944572, stockQuantity#944587]
(66) Project
Arguments: [plant#944563.id AS plant#944588, plant#944563.internalRefUUID AS plantUuid#944589, product#944562.id AS product#944590, product#944562.internalRefUUID AS productUuid#944591, calculationDateTime#944571, stockQuantity#944587.storagelocation.id AS storageLocId#944592, stockQuantity#944587.storagelocation.internalRefUUID AS storageLocUuid#944593, stockQuantity#944587.quantity.measure AS quantity#944594, stockQuantity#944587.specialStockIndicator.code AS specialStockIndicator#944595, stockQuantity#944587.stockType.code AS stockType#944596]
(67) Filter
Arguments: ((specialStockIndicator#944595 = ) AND (stockType#944596 = 01))
(68) LogicalRelation
Arguments: parquet, [product#944606, plant#944607, orderDateTime#944608, planningStartDateTime#944609], false
(69) RepartitionByExpression
Arguments: [product#944606, plant#944607], 37
(70) Project
Arguments: [product#944606, plant#944607, orderDateTime#944608]
(71) LogicalRelation
Arguments: parquet, [systemId#944610, internalUUID#944611, plant#944612, product#944613, blockedForReplenishmentStartingFrom#944614, productionAspect#944615, salesPlant#944616, listing#944617, sourceOfSupplyCategory#944618], false
(72) Repartition
Arguments: 37, true
(73) Project
Arguments: [systemId#944610, internalUUID#944611, plant#944612, product#944613, blockedForReplenishmentStartingFrom#944614, productionAspect#944615, salesPlant#944616, listing#944617, sourceOfSupplyCategory#944618, struct(systemId, systemId#944610, internalUUID, internalUUID#944611, plant, plant#944612, product, product#944613, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#944614, productionAspect, productionAspect#944615, salesPlant, salesPlant#944616, listing, listing#944617, sourceOfSupplyCategory, sourceOfSupplyCategory#944618) AS productPlant#944619]
(74) Project
Arguments: [productPlant#944619]
(75) Join
Arguments: LeftOuter, ((product#944606 <=> productPlant#944619.product.internalRefUUID) AND (plant#944607 <=> productPlant#944619.plant.internalRefUUID))
(76) Project
Arguments: [product#944606, plant#944607, orderDateTime#944608, productPlant#944619]
(77) LogicalRelation
Arguments: parquet, [systemId#944620, internalUUID#944621, id#944622, displayId#944623, name#944624, baseUnitOfMeasure#944625, unitOfMeasures#944626, unitOfMeasureConversions#944627, productionAspect#944628, salesAspect#944629, procurementAspect#944630, productGroup#944631], false
(78) Repartition
Arguments: 37, true
(79) Join
Arguments: LeftOuter, (product#944606 = internalUUID#944621)
(80) Project
Arguments: [product#944606, plant#944607, orderDateTime#944608, productPlant#944619, systemId#944620, internalUUID#944621, id#944622, displayId#944623, name#944624, baseUnitOfMeasure#944625, unitOfMeasures#944626, unitOfMeasureConversions#944627, productionAspect#944628, salesAspect#944629, procurementAspect#944630, productGroup#944631, filter(unitOfMeasureConversions#944627, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#944619.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#944619.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944625.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944625.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944632]
(81) Generate
Arguments: explode(filteredUnitOfMeasureConversions#944632.quantityNumerator), true, [quantityNumerator#944633]
(82) Project
Arguments: [product#944606, plant#944607, orderDateTime#944608, productPlant#944619, systemId#944620, internalUUID#944621, id#944622, displayId#944623, name#944624, baseUnitOfMeasure#944625, unitOfMeasures#944626, unitOfMeasureConversions#944627, productionAspect#944628, salesAspect#944629, procurementAspect#944630, productGroup#944631, filteredUnitOfMeasureConversions#944632, quantityNumerator#944633]
(83) Generate
Arguments: explode(filteredUnitOfMeasureConversions#944632.quantityDenominator), true, [quantityDenominator#944634]
(84) Project
Arguments: [product#944606, plant#944607, orderDateTime#944608, productPlant#944619, systemId#944620, internalUUID#944621, id#944622, displayId#944623, name#944624, baseUnitOfMeasure#944625, unitOfMeasures#944626, unitOfMeasureConversions#944627, productionAspect#944628, salesAspect#944629, procurementAspect#944630, productGroup#944631, filteredUnitOfMeasureConversions#944632, quantityNumerator#944633, quantityDenominator#944634]
(85) Project
Arguments: [product#944606, plant#944607, orderDateTime#944608, productPlant#944619, systemId#944620, internalUUID#944621, id#944622, displayId#944623, name#944624, baseUnitOfMeasure#944625, unitOfMeasures#944626, unitOfMeasureConversions#944627, productionAspect#944628, salesAspect#944629, procurementAspect#944630, productGroup#944631, filteredUnitOfMeasureConversions#944632, quantityNumerator#944633, quantityDenominator#944634, (cast(quantityNumerator#944633 as double) / cast(quantityDenominator#944634 as double)) AS outboundUnit#944635]
(86) Project
Arguments: [product#944606, plant#944607, orderDateTime#944608, productPlant#944619, systemId#944620, internalUUID#944621, id#944622, displayId#944623, name#944624, baseUnitOfMeasure#944625, unitOfMeasures#944626, unitOfMeasureConversions#944627, productionAspect#944628, salesAspect#944629, procurementAspect#944630, productGroup#944631, filteredUnitOfMeasureConversions#944632, quantityNumerator#944633, quantityDenominator#944634, CASE WHEN (isnull(outboundUnit#944635) OR (outboundUnit#944635 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#944635 END AS outboundUnit#944636]
(87) Project
Arguments: [product#944606, plant#944607, orderDateTime#944608, productPlant#944619, outboundUnit#944636]
(88) Join
Arguments: Inner, ((plantUuid#944589 = plant#944607) AND (productUuid#944591 = product#944606))
(89) Filter
Arguments: (calculationDateTime#944571 <= orderDateTime#944608)
(90) Project
Arguments: [plantUuid#944589 AS plant#944640, productUuid#944591 AS product#944641, storageLocId#944592, calculationDateTime#944571, quantity#944594]
(91) LogicalRelation
Arguments: parquet, [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, stockQuantities#944654], false
(92) Repartition
Arguments: 37, true
(93) LogicalRelation
Arguments: parquet, [marketUnit#944655, description#944656, articleHierarchy#944657, defaultCurrency#944658, responsibilities#944659, replenishmentTypes#944660, distributionCenters#944661, assignedArticleHierarchyNodes#944662, minOrderQtySetting#944663, listingCheck#944664, odsSelection#944665, demandProfiles#944666, constraintProfiles#944667, optimizationProfiles#944668, orderGroupSplitProfiles#944669, supplierMinimumProfiles#944670, multipleRestrictionProfiles#944671, preferredUomSource#944672, handlingOfUnfulfilledDemands#944673, negligibleQuantitiesThreshold#944674, eventtype#944675], false
(94) Repartition
Arguments: 37, true
(95) Filter
Arguments: (marketUnit#944655 <=> IW_MU_CRP-125444_1)
(96) Project
Arguments: [marketUnit#944655, description#944656, articleHierarchy#944657, defaultCurrency#944658, responsibilities#944659, replenishmentTypes#944660, distributionCenters#944661, assignedArticleHierarchyNodes#944662, minOrderQtySetting#944663, listingCheck#944664, odsSelection#944665, demandProfiles#944666, constraintProfiles#944667, optimizationProfiles#944668, orderGroupSplitProfiles#944669, supplierMinimumProfiles#944670, multipleRestrictionProfiles#944671, preferredUomSource#944672, handlingOfUnfulfilledDemands#944673, negligibleQuantitiesThreshold#944674, eventtype#944675]
(97) Project
Arguments: [distributionCenters#944661]
(98) Generate
Arguments: explode(distributionCenters#944661), false, [distributionCenters#944676]
(99) Project
Arguments: [distributionCenters#944676]
(100) Generate
Arguments: explode(distributionCenters#944676.storageLocations), false, [storageLocations#944677]
(101) Project
Arguments: [distributionCenters#944676.id AS plantId#944678, distributionCenters#944676.internalRefUUID AS plantUuid#944679, storageLocations#944677]
(102) Project
Arguments: [plantId#944678, plantUuid#944679, storageLocations#944677.id AS storageLocId#944680, storageLocations#944677.internalRefUUID AS storageLocUuid#944681]
(103) LogicalRelation
Arguments: parquet, [product#944682, plant#944683, orderDateTime#944684, planningStartDateTime#944685], false
(104) RepartitionByExpression
Arguments: [product#944682, plant#944683], 37
(105) Project
Arguments: [product#944682, plant#944683, orderDateTime#944684]
(106) LogicalRelation
Arguments: parquet, [systemId#944686, internalUUID#944687, plant#944688, product#944689, blockedForReplenishmentStartingFrom#944690, productionAspect#944691, salesPlant#944692, listing#944693, sourceOfSupplyCategory#944694], false
(107) Repartition
Arguments: 37, true
(108) Project
Arguments: [systemId#944686, internalUUID#944687, plant#944688, product#944689, blockedForReplenishmentStartingFrom#944690, productionAspect#944691, salesPlant#944692, listing#944693, sourceOfSupplyCategory#944694, struct(systemId, systemId#944686, internalUUID, internalUUID#944687, plant, plant#944688, product, product#944689, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#944690, productionAspect, productionAspect#944691, salesPlant, salesPlant#944692, listing, listing#944693, sourceOfSupplyCategory, sourceOfSupplyCategory#944694) AS productPlant#944695]
(109) Project
Arguments: [productPlant#944695]
(110) Join
Arguments: LeftOuter, ((product#944682 <=> productPlant#944695.product.internalRefUUID) AND (plant#944683 <=> productPlant#944695.plant.internalRefUUID))
(111) Project
Arguments: [product#944682, plant#944683, orderDateTime#944684, productPlant#944695]
(112) LogicalRelation
Arguments: parquet, [systemId#944696, internalUUID#944697, id#944698, displayId#944699, name#944700, baseUnitOfMeasure#944701, unitOfMeasures#944702, unitOfMeasureConversions#944703, productionAspect#944704, salesAspect#944705, procurementAspect#944706, productGroup#944707], false
(113) Repartition
Arguments: 37, true
(114) Join
Arguments: LeftOuter, (product#944682 = internalUUID#944697)
(115) Project
Arguments: [product#944682, plant#944683, orderDateTime#944684, productPlant#944695, systemId#944696, internalUUID#944697, id#944698, displayId#944699, name#944700, baseUnitOfMeasure#944701, unitOfMeasures#944702, unitOfMeasureConversions#944703, productionAspect#944704, salesAspect#944705, procurementAspect#944706, productGroup#944707, filter(unitOfMeasureConversions#944703, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#944695.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#944695.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944701.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944701.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944708]
(116) Generate
Arguments: explode(filteredUnitOfMeasureConversions#944708.quantityNumerator), true, [quantityNumerator#944709]
(117) Project
Arguments: [product#944682, plant#944683, orderDateTime#944684, productPlant#944695, systemId#944696, internalUUID#944697, id#944698, displayId#944699, name#944700, baseUnitOfMeasure#944701, unitOfMeasures#944702, unitOfMeasureConversions#944703, productionAspect#944704, salesAspect#944705, procurementAspect#944706, productGroup#944707, filteredUnitOfMeasureConversions#944708, quantityNumerator#944709]
(118) Generate
Arguments: explode(filteredUnitOfMeasureConversions#944708.quantityDenominator), true, [quantityDenominator#944710]
(119) Project
Arguments: [product#944682, plant#944683, orderDateTime#944684, productPlant#944695, systemId#944696, internalUUID#944697, id#944698, displayId#944699, name#944700, baseUnitOfMeasure#944701, unitOfMeasures#944702, unitOfMeasureConversions#944703, productionAspect#944704, salesAspect#944705, procurementAspect#944706, productGroup#944707, filteredUnitOfMeasureConversions#944708, quantityNumerator#944709, quantityDenominator#944710]
(120) Project
Arguments: [product#944682, plant#944683, orderDateTime#944684, productPlant#944695, systemId#944696, internalUUID#944697, id#944698, displayId#944699, name#944700, baseUnitOfMeasure#944701, unitOfMeasures#944702, unitOfMeasureConversions#944703, productionAspect#944704, salesAspect#944705, procurementAspect#944706, productGroup#944707, filteredUnitOfMeasureConversions#944708, quantityNumerator#944709, quantityDenominator#944710, (cast(quantityNumerator#944709 as double) / cast(quantityDenominator#944710 as double)) AS outboundUnit#944711]
(121) Project
Arguments: [product#944682, plant#944683, orderDateTime#944684, productPlant#944695, systemId#944696, internalUUID#944697, id#944698, displayId#944699, name#944700, baseUnitOfMeasure#944701, unitOfMeasures#944702, unitOfMeasureConversions#944703, productionAspect#944704, salesAspect#944705, procurementAspect#944706, productGroup#944707, filteredUnitOfMeasureConversions#944708, quantityNumerator#944709, quantityDenominator#944710, CASE WHEN (isnull(outboundUnit#944711) OR (outboundUnit#944711 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#944711 END AS outboundUnit#944712]
(122) Project
Arguments: [product#944682, plant#944683, orderDateTime#944684, productPlant#944695, outboundUnit#944712]
(123) Project
Arguments: [plant#944683]
(124) Deduplicate
Arguments: [plant#944683]
(125) Join
Arguments: Inner, (plantUuid#944679 = plant#944683)
(126) Project
Arguments: [plantId#944678, plantUuid#944679, storageLocId#944680, storageLocUuid#944681]
(127) Join
Arguments: Inner, (plant#944652.internalRefUUID <=> plantUuid#944679)
(128) Generate
Arguments: explode(filter(stockQuantities#944654, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#944681) AND (lambda x#944569.storageLocation.Id = storageLocId#944680)), lambda x#944569, false))), false, [stockQuantity#944713]
(129) Project
Arguments: [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944653, stockQuantities#944654, plantId#944678, plantUuid#944679, storageLocId#944680, storageLocUuid#944681, stockQuantity#944713]
(130) Aggregate
Arguments: [plantUuid#944679, internalUUID#944650, plant#944652, product#944651, systemId#944649], [plantUuid#944679, internalUUID#944650, plant#944652, product#944651, systemId#944649, first(calculationDateTime#944653, false) AS calculationDateTime#944714, collect_list(stockQuantity#944713, 0, 0) AS stockQuantities#944715]
(131) Project
Arguments: [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944714, stockQuantities#944715]
(132) Generate
Arguments: explode(stockQuantities#944715), false, [stockQuantity#944716]
(133) Project
Arguments: [systemId#944649, internalUUID#944650, product#944651, plant#944652, calculationDateTime#944714, stockQuantities#944715, stockQuantity#944716]
(134) Project
Arguments: [plant#944652.id AS plant#944717, plant#944652.internalRefUUID AS plantUuid#944718, product#944651.id AS product#944719, product#944651.internalRefUUID AS productUuid#944720, calculationDateTime#944714, stockQuantity#944716.storagelocation.id AS storageLocId#944721, stockQuantity#944716.storagelocation.internalRefUUID AS storageLocUuid#944722, stockQuantity#944716.quantity.measure AS quantity#944723, stockQuantity#944716.specialStockIndicator.code AS specialStockIndicator#944724, stockQuantity#944716.stockType.code AS stockType#944725]
(135) Filter
Arguments: ((specialStockIndicator#944724 = ) AND (stockType#944725 = 01))
(136) LogicalRelation
Arguments: parquet, [product#944726, plant#944727, orderDateTime#944728, planningStartDateTime#944729], false
(137) RepartitionByExpression
Arguments: [product#944726, plant#944727], 37
(138) Project
Arguments: [product#944726, plant#944727, orderDateTime#944728]
(139) LogicalRelation
Arguments: parquet, [systemId#944730, internalUUID#944731, plant#944732, product#944733, blockedForReplenishmentStartingFrom#944734, productionAspect#944735, salesPlant#944736, listing#944737, sourceOfSupplyCategory#944738], false
(140) Repartition
Arguments: 37, true
(141) Project
Arguments: [systemId#944730, internalUUID#944731, plant#944732, product#944733, blockedForReplenishmentStartingFrom#944734, productionAspect#944735, salesPlant#944736, listing#944737, sourceOfSupplyCategory#944738, struct(systemId, systemId#944730, internalUUID, internalUUID#944731, plant, plant#944732, product, product#944733, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#944734, productionAspect, productionAspect#944735, salesPlant, salesPlant#944736, listing, listing#944737, sourceOfSupplyCategory, sourceOfSupplyCategory#944738) AS productPlant#944739]
(142) Project
Arguments: [productPlant#944739]
(143) Join
Arguments: LeftOuter, ((product#944726 <=> productPlant#944739.product.internalRefUUID) AND (plant#944727 <=> productPlant#944739.plant.internalRefUUID))
(144) Project
Arguments: [product#944726, plant#944727, orderDateTime#944728, productPlant#944739]
(145) LogicalRelation
Arguments: parquet, [systemId#944740, internalUUID#944741, id#944742, displayId#944743, name#944744, baseUnitOfMeasure#944745, unitOfMeasures#944746, unitOfMeasureConversions#944747, productionAspect#944748, salesAspect#944749, procurementAspect#944750, productGroup#944751], false
(146) Repartition
Arguments: 37, true
(147) Join
Arguments: LeftOuter, (product#944726 = internalUUID#944741)
(148) Project
Arguments: [product#944726, plant#944727, orderDateTime#944728, productPlant#944739, systemId#944740, internalUUID#944741, id#944742, displayId#944743, name#944744, baseUnitOfMeasure#944745, unitOfMeasures#944746, unitOfMeasureConversions#944747, productionAspect#944748, salesAspect#944749, procurementAspect#944750, productGroup#944751, filter(unitOfMeasureConversions#944747, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#944739.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#944739.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#944745.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#944745.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#944752]
(149) Generate
Arguments: explode(filteredUnitOfMeasureConversions#944752.quantityNumerator), true, [quantityNumerator#944753]
(150) Project
Arguments: [product#944726, plant#944727, orderDateTime#944728, productPlant#944739, systemId#944740, internalUUID#944741, id#944742, displayId#944743, name#944744, baseUnitOfMeasure#944745, unitOfMeasures#944746, unitOfMeasureConversions#944747, productionAspect#944748, salesAspect#944749, procurementAspect#944750, productGroup#944751, filteredUnitOfMeasureConversions#944752, quantityNumerator#944753]
(151) Generate
Arguments: explode(filteredUnitOfMeasureConversions#944752.quantityDenominator), true, [quantityDenominator#944754]
(152) Project
Arguments: [product#944726, plant#944727, orderDateTime#944728, productPlant#944739, systemId#944740, internalUUID#944741, id#944742, displayId#944743, name#944744, baseUnitOfMeasure#944745, unitOfMeasures#944746, unitOfMeasureConversions#944747, productionAspect#944748, salesAspect#944749, procurementAspect#944750, productGroup#944751, filteredUnitOfMeasureConversions#944752, quantityNumerator#944753, quantityDenominator#944754]
(153) Project
Arguments: [product#944726, plant#944727, orderDateTime#944728, productPlant#944739, systemId#944740, internalUUID#944741, id#944742, displayId#944743, name#944744, baseUnitOfMeasure#944745, unitOfMeasures#944746, unitOfMeasureConversions#944747, productionAspect#944748, salesAspect#944749, procurementAspect#944750, productGroup#944751, filteredUnitOfMeasureConversions#944752, quantityNumerator#944753, quantityDenominator#944754, (cast(quantityNumerator#944753 as double) / cast(quantityDenominator#944754 as double)) AS outboundUnit#944755]
(154) Project
Arguments: [product#944726, plant#944727, orderDateTime#944728, productPlant#944739, systemId#944740, internalUUID#944741, id#944742, displayId#944743, name#944744, baseUnitOfMeasure#944745, unitOfMeasures#944746, unitOfMeasureConversions#944747, productionAspect#944748, salesAspect#944749, procurementAspect#944750, productGroup#944751, filteredUnitOfMeasureConversions#944752, quantityNumerator#944753, quantityDenominator#944754, CASE WHEN (isnull(outboundUnit#944755) OR (outboundUnit#944755 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#944755 END AS outboundUnit#944756]
(155) Project
Arguments: [product#944726, plant#944727, orderDateTime#944728, productPlant#944739, outboundUnit#944756]
(156) Join
Arguments: Inner, ((plantUuid#944718 = plant#944727) AND (productUuid#944720 = product#944726))
(157) Filter
Arguments: (calculationDateTime#944714 <= orderDateTime#944728)
(158) Project
Arguments: [plantUuid#944718 AS plant#944757, productUuid#944720 AS product#944758, storageLocId#944721, calculationDateTime#944714, quantity#944723]
(159) Aggregate
Arguments: [plant#944757, product#944758, storageLocId#944721], [plant#944757, product#944758, storageLocId#944721, max(calculationDateTime#944714) AS max_calc_datetime#944642]
(160) Join
Arguments: Inner, ((((plant#944640 <=> plant#944757) AND (product#944641 <=> product#944758)) AND (storageLocId#944592 <=> storageLocId#944721)) AND (calculationDateTime#944571 <=> max_calc_datetime#944642))
(161) Project
Arguments: [plant#944640, product#944641, storageLocId#944592, calculationDateTime#944571, quantity#944594]
(162) Aggregate
Arguments: [product#944641, plant#944640], [product#944641, plant#944640, sum(quantity#944594) AS quantitySum#944767, min(calculationDateTime#944571) AS minCalculationDateTime#944768]
(163) Project
Arguments: [product#944641, plant#944640, quantitySum#944767, minCalculationDateTime#944768, round(quantitySum#944767, 0) AS roundedQuantitySum#944776]
(164) Join
Arguments: LeftOuter, ((plant#944306 = plant#944640) AND (product#944305 = product#944641))
(165) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, roundedQuantitySum#944776, minCalculationDateTime#944768]
(166) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, roundedQuantitySum#944776, minCalculationDateTime#944768, CASE WHEN isnotnull(minCalculationDateTime#944768) THEN minCalculationDateTime#944768 ELSE orderDateTime#944307 END AS stockDatetime#944811]
(167) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, roundedQuantitySum#944776, minCalculationDateTime#944768, stockDatetime#944811, CASE WHEN isnotnull(roundedQuantitySum#944776) THEN array(roundedQuantitySum#944776) ELSE array(0.0) END AS stockBatchQuantities#944812]
(168) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, roundedQuantitySum#944776, minCalculationDateTime#944768, stockDatetime#944811, stockBatchQuantities#944812, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#944813]
(169) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, roundedQuantitySum#944776, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813]
(170) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813]
(171) LogicalRelation
Arguments: parquet, [product#945954, plant#945955, orderDateTime#945956, planningStartDateTime#945957], false
(172) RepartitionByExpression
Arguments: [product#945954, plant#945955], 37
(173) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956]
(174) LogicalRelation
Arguments: parquet, [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966], false
(175) Repartition
Arguments: 37, true
(176) Project
Arguments: [systemId#945958, internalUUID#945959, plant#945960, product#945961, blockedForReplenishmentStartingFrom#945962, productionAspect#945963, salesPlant#945964, listing#945965, sourceOfSupplyCategory#945966, struct(systemId, systemId#945958, internalUUID, internalUUID#945959, plant, plant#945960, product, product#945961, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#945962, productionAspect, productionAspect#945963, salesPlant, salesPlant#945964, listing, listing#945965, sourceOfSupplyCategory, sourceOfSupplyCategory#945966) AS productPlant#945967]
(177) Project
Arguments: [productPlant#945967]
(178) Join
Arguments: LeftOuter, ((product#945954 <=> productPlant#945967.product.internalRefUUID) AND (plant#945955 <=> productPlant#945967.plant.internalRefUUID))
(179) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967]
(180) LogicalRelation
Arguments: parquet, [systemId#945968, internalUUID#945969, id#945970, displayId#945971, name#945972, baseUnitOfMeasure#945973, unitOfMeasures#945974, unitOfMeasureConversions#945975, productionAspect#945976, salesAspect#945977, procurementAspect#945978, productGroup#945979], false
(181) Repartition
Arguments: 37, true
(182) Join
Arguments: LeftOuter, (product#945954 = internalUUID#945969)
(183) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, systemId#945968, internalUUID#945969, id#945970, displayId#945971, name#945972, baseUnitOfMeasure#945973, unitOfMeasures#945974, unitOfMeasureConversions#945975, productionAspect#945976, salesAspect#945977, procurementAspect#945978, productGroup#945979, filter(unitOfMeasureConversions#945975, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#945973.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#945973.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#945980]
(184) Generate
Arguments: explode(filteredUnitOfMeasureConversions#945980.quantityNumerator), true, [quantityNumerator#945981]
(185) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, systemId#945968, internalUUID#945969, id#945970, displayId#945971, name#945972, baseUnitOfMeasure#945973, unitOfMeasures#945974, unitOfMeasureConversions#945975, productionAspect#945976, salesAspect#945977, procurementAspect#945978, productGroup#945979, filteredUnitOfMeasureConversions#945980, quantityNumerator#945981]
(186) Generate
Arguments: explode(filteredUnitOfMeasureConversions#945980.quantityDenominator), true, [quantityDenominator#945982]
(187) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, systemId#945968, internalUUID#945969, id#945970, displayId#945971, name#945972, baseUnitOfMeasure#945973, unitOfMeasures#945974, unitOfMeasureConversions#945975, productionAspect#945976, salesAspect#945977, procurementAspect#945978, productGroup#945979, filteredUnitOfMeasureConversions#945980, quantityNumerator#945981, quantityDenominator#945982]
(188) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, systemId#945968, internalUUID#945969, id#945970, displayId#945971, name#945972, baseUnitOfMeasure#945973, unitOfMeasures#945974, unitOfMeasureConversions#945975, productionAspect#945976, salesAspect#945977, procurementAspect#945978, productGroup#945979, filteredUnitOfMeasureConversions#945980, quantityNumerator#945981, quantityDenominator#945982, (cast(quantityNumerator#945981 as double) / cast(quantityDenominator#945982 as double)) AS outboundUnit#945983]
(189) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, systemId#945968, internalUUID#945969, id#945970, displayId#945971, name#945972, baseUnitOfMeasure#945973, unitOfMeasures#945974, unitOfMeasureConversions#945975, productionAspect#945976, salesAspect#945977, procurementAspect#945978, productGroup#945979, filteredUnitOfMeasureConversions#945980, quantityNumerator#945981, quantityDenominator#945982, CASE WHEN (isnull(outboundUnit#945983) OR (outboundUnit#945983 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#945983 END AS outboundUnit#945984]
(190) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984]
(191) LogicalRelation
Arguments: parquet, [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990], false
(192) Repartition
Arguments: 37, true
(193) LogicalRelation
Arguments: parquet, [marketUnit#945991, description#945992, articleHierarchy#945993, defaultCurrency#945994, responsibilities#945995, replenishmentTypes#945996, distributionCenters#945997, assignedArticleHierarchyNodes#945998, minOrderQtySetting#945999, listingCheck#946000, odsSelection#946001, demandProfiles#946002, constraintProfiles#946003, optimizationProfiles#946004, orderGroupSplitProfiles#946005, supplierMinimumProfiles#946006, multipleRestrictionProfiles#946007, preferredUomSource#946008, handlingOfUnfulfilledDemands#946009, negligibleQuantitiesThreshold#946010, eventtype#946011], false
(194) Repartition
Arguments: 37, true
(195) Filter
Arguments: (marketUnit#945991 <=> IW_MU_CRP-125444_1)
(196) Project
Arguments: [marketUnit#945991, description#945992, articleHierarchy#945993, defaultCurrency#945994, responsibilities#945995, replenishmentTypes#945996, distributionCenters#945997, assignedArticleHierarchyNodes#945998, minOrderQtySetting#945999, listingCheck#946000, odsSelection#946001, demandProfiles#946002, constraintProfiles#946003, optimizationProfiles#946004, orderGroupSplitProfiles#946005, supplierMinimumProfiles#946006, multipleRestrictionProfiles#946007, preferredUomSource#946008, handlingOfUnfulfilledDemands#946009, negligibleQuantitiesThreshold#946010, eventtype#946011]
(197) Project
Arguments: [distributionCenters#945997]
(198) Generate
Arguments: explode(distributionCenters#945997), false, [distributionCenters#946012]
(199) Project
Arguments: [distributionCenters#946012]
(200) Generate
Arguments: explode(distributionCenters#946012.storageLocations), false, [storageLocations#946013]
(201) Project
Arguments: [distributionCenters#946012.id AS plantId#946014, distributionCenters#946012.internalRefUUID AS plantUuid#946015, storageLocations#946013]
(202) Project
Arguments: [plantId#946014, plantUuid#946015, storageLocations#946013.id AS storageLocId#946016, storageLocations#946013.internalRefUUID AS storageLocUuid#946017]
(203) LogicalRelation
Arguments: parquet, [product#946018, plant#946019, orderDateTime#946020, planningStartDateTime#946021], false
(204) RepartitionByExpression
Arguments: [product#946018, plant#946019], 37
(205) Project
Arguments: [product#946018, plant#946019, orderDateTime#946020]
(206) LogicalRelation
Arguments: parquet, [systemId#946022, internalUUID#946023, plant#946024, product#946025, blockedForReplenishmentStartingFrom#946026, productionAspect#946027, salesPlant#946028, listing#946029, sourceOfSupplyCategory#946030], false
(207) Repartition
Arguments: 37, true
(208) Project
Arguments: [systemId#946022, internalUUID#946023, plant#946024, product#946025, blockedForReplenishmentStartingFrom#946026, productionAspect#946027, salesPlant#946028, listing#946029, sourceOfSupplyCategory#946030, struct(systemId, systemId#946022, internalUUID, internalUUID#946023, plant, plant#946024, product, product#946025, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#946026, productionAspect, productionAspect#946027, salesPlant, salesPlant#946028, listing, listing#946029, sourceOfSupplyCategory, sourceOfSupplyCategory#946030) AS productPlant#946031]
(209) Project
Arguments: [productPlant#946031]
(210) Join
Arguments: LeftOuter, ((product#946018 <=> productPlant#946031.product.internalRefUUID) AND (plant#946019 <=> productPlant#946031.plant.internalRefUUID))
(211) Project
Arguments: [product#946018, plant#946019, orderDateTime#946020, productPlant#946031]
(212) LogicalRelation
Arguments: parquet, [systemId#946032, internalUUID#946033, id#946034, displayId#946035, name#946036, baseUnitOfMeasure#946037, unitOfMeasures#946038, unitOfMeasureConversions#946039, productionAspect#946040, salesAspect#946041, procurementAspect#946042, productGroup#946043], false
(213) Repartition
Arguments: 37, true
(214) Join
Arguments: LeftOuter, (product#946018 = internalUUID#946033)
(215) Project
Arguments: [product#946018, plant#946019, orderDateTime#946020, productPlant#946031, systemId#946032, internalUUID#946033, id#946034, displayId#946035, name#946036, baseUnitOfMeasure#946037, unitOfMeasures#946038, unitOfMeasureConversions#946039, productionAspect#946040, salesAspect#946041, procurementAspect#946042, productGroup#946043, filter(unitOfMeasureConversions#946039, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#946031.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#946031.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946037.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946037.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946044]
(216) Generate
Arguments: explode(filteredUnitOfMeasureConversions#946044.quantityNumerator), true, [quantityNumerator#946045]
(217) Project
Arguments: [product#946018, plant#946019, orderDateTime#946020, productPlant#946031, systemId#946032, internalUUID#946033, id#946034, displayId#946035, name#946036, baseUnitOfMeasure#946037, unitOfMeasures#946038, unitOfMeasureConversions#946039, productionAspect#946040, salesAspect#946041, procurementAspect#946042, productGroup#946043, filteredUnitOfMeasureConversions#946044, quantityNumerator#946045]
(218) Generate
Arguments: explode(filteredUnitOfMeasureConversions#946044.quantityDenominator), true, [quantityDenominator#946046]
(219) Project
Arguments: [product#946018, plant#946019, orderDateTime#946020, productPlant#946031, systemId#946032, internalUUID#946033, id#946034, displayId#946035, name#946036, baseUnitOfMeasure#946037, unitOfMeasures#946038, unitOfMeasureConversions#946039, productionAspect#946040, salesAspect#946041, procurementAspect#946042, productGroup#946043, filteredUnitOfMeasureConversions#946044, quantityNumerator#946045, quantityDenominator#946046]
(220) Project
Arguments: [product#946018, plant#946019, orderDateTime#946020, productPlant#946031, systemId#946032, internalUUID#946033, id#946034, displayId#946035, name#946036, baseUnitOfMeasure#946037, unitOfMeasures#946038, unitOfMeasureConversions#946039, productionAspect#946040, salesAspect#946041, procurementAspect#946042, productGroup#946043, filteredUnitOfMeasureConversions#946044, quantityNumerator#946045, quantityDenominator#946046, (cast(quantityNumerator#946045 as double) / cast(quantityDenominator#946046 as double)) AS outboundUnit#946047]
(221) Project
Arguments: [product#946018, plant#946019, orderDateTime#946020, productPlant#946031, systemId#946032, internalUUID#946033, id#946034, displayId#946035, name#946036, baseUnitOfMeasure#946037, unitOfMeasures#946038, unitOfMeasureConversions#946039, productionAspect#946040, salesAspect#946041, procurementAspect#946042, productGroup#946043, filteredUnitOfMeasureConversions#946044, quantityNumerator#946045, quantityDenominator#946046, CASE WHEN (isnull(outboundUnit#946047) OR (outboundUnit#946047 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#946047 END AS outboundUnit#946048]
(222) Project
Arguments: [product#946018, plant#946019, orderDateTime#946020, productPlant#946031, outboundUnit#946048]
(223) Project
Arguments: [plant#946019]
(224) Deduplicate
Arguments: [plant#946019]
(225) Join
Arguments: Inner, (plantUuid#946015 = plant#946019)
(226) Project
Arguments: [plantId#946014, plantUuid#946015, storageLocId#946016, storageLocUuid#946017]
(227) Join
Arguments: Inner, (plant#945988.internalRefUUID <=> plantUuid#946015)
(228) Generate
Arguments: explode(filter(stockQuantities#945990, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946017) AND (lambda x#944569.storageLocation.Id = storageLocId#946016)), lambda x#944569, false))), false, [stockQuantity#946049]
(229) Project
Arguments: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#945989, stockQuantities#945990, plantId#946014, plantUuid#946015, storageLocId#946016, storageLocUuid#946017, stockQuantity#946049]
(230) Aggregate
Arguments: [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985], [plantUuid#946015, internalUUID#945986, plant#945988, product#945987, systemId#945985, first(calculationDateTime#945989, false) AS calculationDateTime#946050, collect_list(stockQuantity#946049, 0, 0) AS stockQuantities#946051]
(231) Project
Arguments: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#946050, stockQuantities#946051]
(232) Generate
Arguments: explode(stockQuantities#946051), false, [stockQuantity#946052]
(233) Project
Arguments: [systemId#945985, internalUUID#945986, product#945987, plant#945988, calculationDateTime#946050, stockQuantities#946051, stockQuantity#946052]
(234) Project
Arguments: [plant#945988.id AS plant#946053, plant#945988.internalRefUUID AS plantUuid#946054, product#945987.id AS product#946055, product#945987.internalRefUUID AS productUuid#946056, calculationDateTime#946050, stockQuantity#946052.storagelocation.id AS storageLocId#946057, stockQuantity#946052.storagelocation.internalRefUUID AS storageLocUuid#946058, stockQuantity#946052.quantity.measure AS quantity#946059, stockQuantity#946052.specialStockIndicator.code AS specialStockIndicator#946060, stockQuantity#946052.stockType.code AS stockType#946061]
(235) Filter
Arguments: ((specialStockIndicator#946060 = ) AND (stockType#946061 = 01))
(236) LogicalRelation
Arguments: parquet, [product#946062, plant#946063, orderDateTime#946064, planningStartDateTime#946065], false
(237) RepartitionByExpression
Arguments: [product#946062, plant#946063], 37
(238) Project
Arguments: [product#946062, plant#946063, orderDateTime#946064]
(239) LogicalRelation
Arguments: parquet, [systemId#946066, internalUUID#946067, plant#946068, product#946069, blockedForReplenishmentStartingFrom#946070, productionAspect#946071, salesPlant#946072, listing#946073, sourceOfSupplyCategory#946074], false
(240) Repartition
Arguments: 37, true
(241) Project
Arguments: [systemId#946066, internalUUID#946067, plant#946068, product#946069, blockedForReplenishmentStartingFrom#946070, productionAspect#946071, salesPlant#946072, listing#946073, sourceOfSupplyCategory#946074, struct(systemId, systemId#946066, internalUUID, internalUUID#946067, plant, plant#946068, product, product#946069, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#946070, productionAspect, productionAspect#946071, salesPlant, salesPlant#946072, listing, listing#946073, sourceOfSupplyCategory, sourceOfSupplyCategory#946074) AS productPlant#946075]
(242) Project
Arguments: [productPlant#946075]
(243) Join
Arguments: LeftOuter, ((product#946062 <=> productPlant#946075.product.internalRefUUID) AND (plant#946063 <=> productPlant#946075.plant.internalRefUUID))
(244) Project
Arguments: [product#946062, plant#946063, orderDateTime#946064, productPlant#946075]
(245) LogicalRelation
Arguments: parquet, [systemId#946076, internalUUID#946077, id#946078, displayId#946079, name#946080, baseUnitOfMeasure#946081, unitOfMeasures#946082, unitOfMeasureConversions#946083, productionAspect#946084, salesAspect#946085, procurementAspect#946086, productGroup#946087], false
(246) Repartition
Arguments: 37, true
(247) Join
Arguments: LeftOuter, (product#946062 = internalUUID#946077)
(248) Project
Arguments: [product#946062, plant#946063, orderDateTime#946064, productPlant#946075, systemId#946076, internalUUID#946077, id#946078, displayId#946079, name#946080, baseUnitOfMeasure#946081, unitOfMeasures#946082, unitOfMeasureConversions#946083, productionAspect#946084, salesAspect#946085, procurementAspect#946086, productGroup#946087, filter(unitOfMeasureConversions#946083, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#946075.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#946075.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946081.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946081.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946088]
(249) Generate
Arguments: explode(filteredUnitOfMeasureConversions#946088.quantityNumerator), true, [quantityNumerator#946089]
(250) Project
Arguments: [product#946062, plant#946063, orderDateTime#946064, productPlant#946075, systemId#946076, internalUUID#946077, id#946078, displayId#946079, name#946080, baseUnitOfMeasure#946081, unitOfMeasures#946082, unitOfMeasureConversions#946083, productionAspect#946084, salesAspect#946085, procurementAspect#946086, productGroup#946087, filteredUnitOfMeasureConversions#946088, quantityNumerator#946089]
(251) Generate
Arguments: explode(filteredUnitOfMeasureConversions#946088.quantityDenominator), true, [quantityDenominator#946090]
(252) Project
Arguments: [product#946062, plant#946063, orderDateTime#946064, productPlant#946075, systemId#946076, internalUUID#946077, id#946078, displayId#946079, name#946080, baseUnitOfMeasure#946081, unitOfMeasures#946082, unitOfMeasureConversions#946083, productionAspect#946084, salesAspect#946085, procurementAspect#946086, productGroup#946087, filteredUnitOfMeasureConversions#946088, quantityNumerator#946089, quantityDenominator#946090]
(253) Project
Arguments: [product#946062, plant#946063, orderDateTime#946064, productPlant#946075, systemId#946076, internalUUID#946077, id#946078, displayId#946079, name#946080, baseUnitOfMeasure#946081, unitOfMeasures#946082, unitOfMeasureConversions#946083, productionAspect#946084, salesAspect#946085, procurementAspect#946086, productGroup#946087, filteredUnitOfMeasureConversions#946088, quantityNumerator#946089, quantityDenominator#946090, (cast(quantityNumerator#946089 as double) / cast(quantityDenominator#946090 as double)) AS outboundUnit#946091]
(254) Project
Arguments: [product#946062, plant#946063, orderDateTime#946064, productPlant#946075, systemId#946076, internalUUID#946077, id#946078, displayId#946079, name#946080, baseUnitOfMeasure#946081, unitOfMeasures#946082, unitOfMeasureConversions#946083, productionAspect#946084, salesAspect#946085, procurementAspect#946086, productGroup#946087, filteredUnitOfMeasureConversions#946088, quantityNumerator#946089, quantityDenominator#946090, CASE WHEN (isnull(outboundUnit#946091) OR (outboundUnit#946091 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#946091 END AS outboundUnit#946092]
(255) Project
Arguments: [product#946062, plant#946063, orderDateTime#946064, productPlant#946075, outboundUnit#946092]
(256) Join
Arguments: Inner, ((plantUuid#946054 = plant#946063) AND (productUuid#946056 = product#946062))
(257) Filter
Arguments: (calculationDateTime#946050 <= orderDateTime#946064)
(258) Project
Arguments: [plantUuid#946054 AS plant#946093, productUuid#946056 AS product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
(259) LogicalRelation
Arguments: parquet, [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100], false
(260) Repartition
Arguments: 37, true
(261) LogicalRelation
Arguments: parquet, [marketUnit#946101, description#946102, articleHierarchy#946103, defaultCurrency#946104, responsibilities#946105, replenishmentTypes#946106, distributionCenters#946107, assignedArticleHierarchyNodes#946108, minOrderQtySetting#946109, listingCheck#946110, odsSelection#946111, demandProfiles#946112, constraintProfiles#946113, optimizationProfiles#946114, orderGroupSplitProfiles#946115, supplierMinimumProfiles#946116, multipleRestrictionProfiles#946117, preferredUomSource#946118, handlingOfUnfulfilledDemands#946119, negligibleQuantitiesThreshold#946120, eventtype#946121], false
(262) Repartition
Arguments: 37, true
(263) Filter
Arguments: (marketUnit#946101 <=> IW_MU_CRP-125444_1)
(264) Project
Arguments: [marketUnit#946101, description#946102, articleHierarchy#946103, defaultCurrency#946104, responsibilities#946105, replenishmentTypes#946106, distributionCenters#946107, assignedArticleHierarchyNodes#946108, minOrderQtySetting#946109, listingCheck#946110, odsSelection#946111, demandProfiles#946112, constraintProfiles#946113, optimizationProfiles#946114, orderGroupSplitProfiles#946115, supplierMinimumProfiles#946116, multipleRestrictionProfiles#946117, preferredUomSource#946118, handlingOfUnfulfilledDemands#946119, negligibleQuantitiesThreshold#946120, eventtype#946121]
(265) Project
Arguments: [distributionCenters#946107]
(266) Generate
Arguments: explode(distributionCenters#946107), false, [distributionCenters#946122]
(267) Project
Arguments: [distributionCenters#946122]
(268) Generate
Arguments: explode(distributionCenters#946122.storageLocations), false, [storageLocations#946123]
(269) Project
Arguments: [distributionCenters#946122.id AS plantId#946124, distributionCenters#946122.internalRefUUID AS plantUuid#946125, storageLocations#946123]
(270) Project
Arguments: [plantId#946124, plantUuid#946125, storageLocations#946123.id AS storageLocId#946126, storageLocations#946123.internalRefUUID AS storageLocUuid#946127]
(271) LogicalRelation
Arguments: parquet, [product#946128, plant#946129, orderDateTime#946130, planningStartDateTime#946131], false
(272) RepartitionByExpression
Arguments: [product#946128, plant#946129], 37
(273) Project
Arguments: [product#946128, plant#946129, orderDateTime#946130]
(274) LogicalRelation
Arguments: parquet, [systemId#946132, internalUUID#946133, plant#946134, product#946135, blockedForReplenishmentStartingFrom#946136, productionAspect#946137, salesPlant#946138, listing#946139, sourceOfSupplyCategory#946140], false
(275) Repartition
Arguments: 37, true
(276) Project
Arguments: [systemId#946132, internalUUID#946133, plant#946134, product#946135, blockedForReplenishmentStartingFrom#946136, productionAspect#946137, salesPlant#946138, listing#946139, sourceOfSupplyCategory#946140, struct(systemId, systemId#946132, internalUUID, internalUUID#946133, plant, plant#946134, product, product#946135, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#946136, productionAspect, productionAspect#946137, salesPlant, salesPlant#946138, listing, listing#946139, sourceOfSupplyCategory, sourceOfSupplyCategory#946140) AS productPlant#946141]
(277) Project
Arguments: [productPlant#946141]
(278) Join
Arguments: LeftOuter, ((product#946128 <=> productPlant#946141.product.internalRefUUID) AND (plant#946129 <=> productPlant#946141.plant.internalRefUUID))
(279) Project
Arguments: [product#946128, plant#946129, orderDateTime#946130, productPlant#946141]
(280) LogicalRelation
Arguments: parquet, [systemId#946142, internalUUID#946143, id#946144, displayId#946145, name#946146, baseUnitOfMeasure#946147, unitOfMeasures#946148, unitOfMeasureConversions#946149, productionAspect#946150, salesAspect#946151, procurementAspect#946152, productGroup#946153], false
(281) Repartition
Arguments: 37, true
(282) Join
Arguments: LeftOuter, (product#946128 = internalUUID#946143)
(283) Project
Arguments: [product#946128, plant#946129, orderDateTime#946130, productPlant#946141, systemId#946142, internalUUID#946143, id#946144, displayId#946145, name#946146, baseUnitOfMeasure#946147, unitOfMeasures#946148, unitOfMeasureConversions#946149, productionAspect#946150, salesAspect#946151, procurementAspect#946152, productGroup#946153, filter(unitOfMeasureConversions#946149, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#946141.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#946141.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946147.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946147.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946154]
(284) Generate
Arguments: explode(filteredUnitOfMeasureConversions#946154.quantityNumerator), true, [quantityNumerator#946155]
(285) Project
Arguments: [product#946128, plant#946129, orderDateTime#946130, productPlant#946141, systemId#946142, internalUUID#946143, id#946144, displayId#946145, name#946146, baseUnitOfMeasure#946147, unitOfMeasures#946148, unitOfMeasureConversions#946149, productionAspect#946150, salesAspect#946151, procurementAspect#946152, productGroup#946153, filteredUnitOfMeasureConversions#946154, quantityNumerator#946155]
(286) Generate
Arguments: explode(filteredUnitOfMeasureConversions#946154.quantityDenominator), true, [quantityDenominator#946156]
(287) Project
Arguments: [product#946128, plant#946129, orderDateTime#946130, productPlant#946141, systemId#946142, internalUUID#946143, id#946144, displayId#946145, name#946146, baseUnitOfMeasure#946147, unitOfMeasures#946148, unitOfMeasureConversions#946149, productionAspect#946150, salesAspect#946151, procurementAspect#946152, productGroup#946153, filteredUnitOfMeasureConversions#946154, quantityNumerator#946155, quantityDenominator#946156]
(288) Project
Arguments: [product#946128, plant#946129, orderDateTime#946130, productPlant#946141, systemId#946142, internalUUID#946143, id#946144, displayId#946145, name#946146, baseUnitOfMeasure#946147, unitOfMeasures#946148, unitOfMeasureConversions#946149, productionAspect#946150, salesAspect#946151, procurementAspect#946152, productGroup#946153, filteredUnitOfMeasureConversions#946154, quantityNumerator#946155, quantityDenominator#946156, (cast(quantityNumerator#946155 as double) / cast(quantityDenominator#946156 as double)) AS outboundUnit#946157]
(289) Project
Arguments: [product#946128, plant#946129, orderDateTime#946130, productPlant#946141, systemId#946142, internalUUID#946143, id#946144, displayId#946145, name#946146, baseUnitOfMeasure#946147, unitOfMeasures#946148, unitOfMeasureConversions#946149, productionAspect#946150, salesAspect#946151, procurementAspect#946152, productGroup#946153, filteredUnitOfMeasureConversions#946154, quantityNumerator#946155, quantityDenominator#946156, CASE WHEN (isnull(outboundUnit#946157) OR (outboundUnit#946157 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#946157 END AS outboundUnit#946158]
(290) Project
Arguments: [product#946128, plant#946129, orderDateTime#946130, productPlant#946141, outboundUnit#946158]
(291) Project
Arguments: [plant#946129]
(292) Deduplicate
Arguments: [plant#946129]
(293) Join
Arguments: Inner, (plantUuid#946125 = plant#946129)
(294) Project
Arguments: [plantId#946124, plantUuid#946125, storageLocId#946126, storageLocUuid#946127]
(295) Join
Arguments: Inner, (plant#946098.internalRefUUID <=> plantUuid#946125)
(296) Generate
Arguments: explode(filter(stockQuantities#946100, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#946127) AND (lambda x#944569.storageLocation.Id = storageLocId#946126)), lambda x#944569, false))), false, [stockQuantity#946159]
(297) Project
Arguments: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946099, stockQuantities#946100, plantId#946124, plantUuid#946125, storageLocId#946126, storageLocUuid#946127, stockQuantity#946159]
(298) Aggregate
Arguments: [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095], [plantUuid#946125, internalUUID#946096, plant#946098, product#946097, systemId#946095, first(calculationDateTime#946099, false) AS calculationDateTime#946160, collect_list(stockQuantity#946159, 0, 0) AS stockQuantities#946161]
(299) Project
Arguments: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946160, stockQuantities#946161]
(300) Generate
Arguments: explode(stockQuantities#946161), false, [stockQuantity#946162]
(301) Project
Arguments: [systemId#946095, internalUUID#946096, product#946097, plant#946098, calculationDateTime#946160, stockQuantities#946161, stockQuantity#946162]
(302) Project
Arguments: [plant#946098.id AS plant#946163, plant#946098.internalRefUUID AS plantUuid#946164, product#946097.id AS product#946165, product#946097.internalRefUUID AS productUuid#946166, calculationDateTime#946160, stockQuantity#946162.storagelocation.id AS storageLocId#946167, stockQuantity#946162.storagelocation.internalRefUUID AS storageLocUuid#946168, stockQuantity#946162.quantity.measure AS quantity#946169, stockQuantity#946162.specialStockIndicator.code AS specialStockIndicator#946170, stockQuantity#946162.stockType.code AS stockType#946171]
(303) Filter
Arguments: ((specialStockIndicator#946170 = ) AND (stockType#946171 = 01))
(304) LogicalRelation
Arguments: parquet, [product#946172, plant#946173, orderDateTime#946174, planningStartDateTime#946175], false
(305) RepartitionByExpression
Arguments: [product#946172, plant#946173], 37
(306) Project
Arguments: [product#946172, plant#946173, orderDateTime#946174]
(307) LogicalRelation
Arguments: parquet, [systemId#946176, internalUUID#946177, plant#946178, product#946179, blockedForReplenishmentStartingFrom#946180, productionAspect#946181, salesPlant#946182, listing#946183, sourceOfSupplyCategory#946184], false
(308) Repartition
Arguments: 37, true
(309) Project
Arguments: [systemId#946176, internalUUID#946177, plant#946178, product#946179, blockedForReplenishmentStartingFrom#946180, productionAspect#946181, salesPlant#946182, listing#946183, sourceOfSupplyCategory#946184, struct(systemId, systemId#946176, internalUUID, internalUUID#946177, plant, plant#946178, product, product#946179, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#946180, productionAspect, productionAspect#946181, salesPlant, salesPlant#946182, listing, listing#946183, sourceOfSupplyCategory, sourceOfSupplyCategory#946184) AS productPlant#946185]
(310) Project
Arguments: [productPlant#946185]
(311) Join
Arguments: LeftOuter, ((product#946172 <=> productPlant#946185.product.internalRefUUID) AND (plant#946173 <=> productPlant#946185.plant.internalRefUUID))
(312) Project
Arguments: [product#946172, plant#946173, orderDateTime#946174, productPlant#946185]
(313) LogicalRelation
Arguments: parquet, [systemId#946186, internalUUID#946187, id#946188, displayId#946189, name#946190, baseUnitOfMeasure#946191, unitOfMeasures#946192, unitOfMeasureConversions#946193, productionAspect#946194, salesAspect#946195, procurementAspect#946196, productGroup#946197], false
(314) Repartition
Arguments: 37, true
(315) Join
Arguments: LeftOuter, (product#946172 = internalUUID#946187)
(316) Project
Arguments: [product#946172, plant#946173, orderDateTime#946174, productPlant#946185, systemId#946186, internalUUID#946187, id#946188, displayId#946189, name#946190, baseUnitOfMeasure#946191, unitOfMeasures#946192, unitOfMeasureConversions#946193, productionAspect#946194, salesAspect#946195, procurementAspect#946196, productGroup#946197, filter(unitOfMeasureConversions#946193, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#946185.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#946185.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946191.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946191.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946198]
(317) Generate
Arguments: explode(filteredUnitOfMeasureConversions#946198.quantityNumerator), true, [quantityNumerator#946199]
(318) Project
Arguments: [product#946172, plant#946173, orderDateTime#946174, productPlant#946185, systemId#946186, internalUUID#946187, id#946188, displayId#946189, name#946190, baseUnitOfMeasure#946191, unitOfMeasures#946192, unitOfMeasureConversions#946193, productionAspect#946194, salesAspect#946195, procurementAspect#946196, productGroup#946197, filteredUnitOfMeasureConversions#946198, quantityNumerator#946199]
(319) Generate
Arguments: explode(filteredUnitOfMeasureConversions#946198.quantityDenominator), true, [quantityDenominator#946200]
(320) Project
Arguments: [product#946172, plant#946173, orderDateTime#946174, productPlant#946185, systemId#946186, internalUUID#946187, id#946188, displayId#946189, name#946190, baseUnitOfMeasure#946191, unitOfMeasures#946192, unitOfMeasureConversions#946193, productionAspect#946194, salesAspect#946195, procurementAspect#946196, productGroup#946197, filteredUnitOfMeasureConversions#946198, quantityNumerator#946199, quantityDenominator#946200]
(321) Project
Arguments: [product#946172, plant#946173, orderDateTime#946174, productPlant#946185, systemId#946186, internalUUID#946187, id#946188, displayId#946189, name#946190, baseUnitOfMeasure#946191, unitOfMeasures#946192, unitOfMeasureConversions#946193, productionAspect#946194, salesAspect#946195, procurementAspect#946196, productGroup#946197, filteredUnitOfMeasureConversions#946198, quantityNumerator#946199, quantityDenominator#946200, (cast(quantityNumerator#946199 as double) / cast(quantityDenominator#946200 as double)) AS outboundUnit#946201]
(322) Project
Arguments: [product#946172, plant#946173, orderDateTime#946174, productPlant#946185, systemId#946186, internalUUID#946187, id#946188, displayId#946189, name#946190, baseUnitOfMeasure#946191, unitOfMeasures#946192, unitOfMeasureConversions#946193, productionAspect#946194, salesAspect#946195, procurementAspect#946196, productGroup#946197, filteredUnitOfMeasureConversions#946198, quantityNumerator#946199, quantityDenominator#946200, CASE WHEN (isnull(outboundUnit#946201) OR (outboundUnit#946201 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#946201 END AS outboundUnit#946202]
(323) Project
Arguments: [product#946172, plant#946173, orderDateTime#946174, productPlant#946185, outboundUnit#946202]
(324) Join
Arguments: Inner, ((plantUuid#946164 = plant#946173) AND (productUuid#946166 = product#946172))
(325) Filter
Arguments: (calculationDateTime#946160 <= orderDateTime#946174)
(326) Project
Arguments: [plantUuid#946164 AS plant#946203, productUuid#946166 AS product#946204, storageLocId#946167, calculationDateTime#946160, quantity#946169]
(327) Aggregate
Arguments: [plant#946203, product#946204, storageLocId#946167], [plant#946203, product#946204, storageLocId#946167, max(calculationDateTime#946160) AS max_calc_datetime#946205]
(328) Join
Arguments: Inner, ((((plant#946093 <=> plant#946203) AND (product#946094 <=> product#946204)) AND (storageLocId#946057 <=> storageLocId#946167)) AND (calculationDateTime#946050 <=> max_calc_datetime#946205))
(329) Project
Arguments: [plant#946093, product#946094, storageLocId#946057, calculationDateTime#946050, quantity#946059]
(330) Aggregate
Arguments: [product#946094, plant#946093], [product#946094, plant#946093, sum(quantity#946059) AS quantitySum#946206, min(calculationDateTime#946050) AS minCalculationDateTime#946207]
(331) Project
Arguments: [product#946094, plant#946093, quantitySum#946206, minCalculationDateTime#946207, round(quantitySum#946206, 0) AS roundedQuantitySum#946208]
(332) Join
Arguments: LeftOuter, ((plant#945955 = plant#946093) AND (product#945954 = product#946094))
(333) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, roundedQuantitySum#946208, minCalculationDateTime#946207]
(334) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, roundedQuantitySum#946208, minCalculationDateTime#946207, CASE WHEN isnotnull(minCalculationDateTime#946207) THEN minCalculationDateTime#946207 ELSE orderDateTime#945956 END AS stockDatetime#946209]
(335) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, roundedQuantitySum#946208, minCalculationDateTime#946207, stockDatetime#946209, CASE WHEN isnotnull(roundedQuantitySum#946208) THEN array(roundedQuantitySum#946208) ELSE array(0.0) END AS stockBatchQuantities#946210]
(336) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, roundedQuantitySum#946208, minCalculationDateTime#946207, stockDatetime#946209, stockBatchQuantities#946210, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#946211]
(337) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, roundedQuantitySum#946208, stockDatetime#946209, stockBatchQuantities#946210, stockBatchShelfLifeEndDatetimes#946211]
(338) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, stockBatchShelfLifeEndDatetimes#946211]
(339) LogicalRelation
Arguments: parquet, [product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822], false
(340) Join
Arguments: LeftOuter, ((plant#944815 <=> plant#945955) AND (product#944814 <=> product#945954))
(341) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, stockBatchShelfLifeEndDatetimes#946211, product#944814, plant#944815, demandChannel#944816, demandStream#944817, considerVariance#944818, demandTimeBuckets#944819, demandPointInTimeStart#944820, demandPointInTimeEnd#944821, demandPointInTime#944822, CASE WHEN isnotnull(product#944814) THEN struct(demandChannel, demandChannel#944816, demandStream, demandStream#944817, considerVariance, considerVariance#944818, demandTimeBuckets, demandTimeBuckets#944819, demandPointInTimeStart, demandPointInTimeStart#944820, demandPointInTimeEnd, demandPointInTimeEnd#944821, demandPointInTime, demandPointInTime#944822) 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#944824]
(342) Aggregate
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, stockBatchShelfLifeEndDatetimes#946211], [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, stockBatchShelfLifeEndDatetimes#946211, collect_list(rawDemands#944824, 0, 0) AS rawDemands#944825]
(343) SubqueryAlias
Arguments: wl
(344) LogicalRelation
Arguments: parquet, [systemId#945904, internalUUID#945905, id#945906, displayId#945907, name#945908, category#945909, companyCode#945910, address#945911, mainDistributionChain#945912, mainPurchasingOrganization#945913, validPurchasingOrganizations#945914, productGroup#945915], false
(345) Repartition
Arguments: 37, true
(346) Project
Arguments: [systemId#945904, internalUUID#945905, id#945906, displayId#945907, name#945908, category#945909, companyCode#945910, address#945911, mainDistributionChain#945912, mainPurchasingOrganization#945913, validPurchasingOrganizations#945914, productGroup#945915, address#945911.timezone.code AS timezonecode#945917]
(347) Join
Arguments: LeftOuter, (plant#945955 <=> internalUUID#945905)
(348) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, systemId#945904, internalUUID#945905, id#945906, displayId#945907, name#945908, category#945909, companyCode#945910, address#945911, mainDistributionChain#945912, mainPurchasingOrganization#945913, validPurchasingOrganizations#945914, productGroup#945915, CASE WHEN isnotnull(timezonecode#945917) THEN timezonecode#945917 ELSE UTC END AS timezonecode#945919]
(349) Project
Arguments: [product#945954, plant#945955, orderDateTime#945956, productPlant#945967, outboundUnit#945984, stockDatetime#946209, stockBatchQuantities#946210, stockBatchShelfLifeEndDatetimes#946211, rawDemands#944825, timezonecode#945919]
(350) DeserializeToObject
Arguments: createexternalrow(invoke(product#945954.toString()), invoke(plant#945955.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#945956)), if (isnull(productPlant#945967)) null else createexternalrow(invoke(productPlant#945967.systemId.toString()), invoke(productPlant#945967.internalUUID.toString()), if (isnull(productPlant#945967.plant)) null else createexternalrow(invoke(productPlant#945967.plant.internalRefUUID.toString()), invoke(productPlant#945967.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#945967.product)) null else createexternalrow(invoke(productPlant#945967.product.internalRefUUID.toString()), invoke(productPlant#945967.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#945967.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#945967.productionAspect)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productMovementPlants.unitOfIssue.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#945967.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#945967.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#945967.salesPlant)) null else createexternalrow(if (isnull(productPlant#945967.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#945967.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#945967.salesPlant.loadingGroup.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#945967.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#945967.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#945967.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#945967.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#945984)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#946209)), mapobjects(lambdavariable(MapObject, DoubleType, true, 74990), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 74990) as double))), stockBatchQuantities#946210, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 74991), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 74991) as timestamp)))), stockBatchShelfLifeEndDatetimes#946211, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), false, 74992), 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, 74992))) 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, 74992).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, 74992).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, 74992).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).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, 74992).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, 74992).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, 74992).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).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, 74992).demandPointInTime, Some(class scala.collection.mutable.ArraySeq)), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true), StructField(demandPointInTimeStart,TimestampType,true), StructField(demandPointInTimeEnd,TimestampType,true), StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true))), rawDemands#944825, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#945919.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(351) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, 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)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)], obj#945945: org.apache.spark.sql.Row
(352) 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#945950, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(1))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 1, plant), StringType, ObjectType(class java.lang.String)))) AS plant#945951, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74980), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74980), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74981), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74981), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74982), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74982), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74983), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74983), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74984), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74984), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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#945952, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74986), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74986), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74987), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74987), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74988), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74988), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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#945953]
(353) Join
Arguments: LeftOuter, ((plant#945951 <=> plant#944306) AND (product#945950 <=> product#944305))
(354) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, plant#945951, dayBucketDemands#945952, pointInTimeDemands#945953]
(355) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953]
(356) LogicalRelation
Arguments: parquet, [product#948580, plant#948581, orderDateTime#948582, planningStartDateTime#948583], false
(357) RepartitionByExpression
Arguments: [product#948580, plant#948581], 37
(358) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582]
(359) LogicalRelation
Arguments: parquet, [systemId#948584, internalUUID#948585, plant#948586, product#948587, blockedForReplenishmentStartingFrom#948588, productionAspect#948589, salesPlant#948590, listing#948591, sourceOfSupplyCategory#948592], false
(360) Repartition
Arguments: 37, true
(361) Project
Arguments: [systemId#948584, internalUUID#948585, plant#948586, product#948587, blockedForReplenishmentStartingFrom#948588, productionAspect#948589, salesPlant#948590, listing#948591, sourceOfSupplyCategory#948592, struct(systemId, systemId#948584, internalUUID, internalUUID#948585, plant, plant#948586, product, product#948587, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948588, productionAspect, productionAspect#948589, salesPlant, salesPlant#948590, listing, listing#948591, sourceOfSupplyCategory, sourceOfSupplyCategory#948592) AS productPlant#948593]
(362) Project
Arguments: [productPlant#948593]
(363) Join
Arguments: LeftOuter, ((product#948580 <=> productPlant#948593.product.internalRefUUID) AND (plant#948581 <=> productPlant#948593.plant.internalRefUUID))
(364) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593]
(365) LogicalRelation
Arguments: parquet, [systemId#948594, internalUUID#948595, id#948596, displayId#948597, name#948598, baseUnitOfMeasure#948599, unitOfMeasures#948600, unitOfMeasureConversions#948601, productionAspect#948602, salesAspect#948603, procurementAspect#948604, productGroup#948605], false
(366) Repartition
Arguments: 37, true
(367) Join
Arguments: LeftOuter, (product#948580 = internalUUID#948595)
(368) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, systemId#948594, internalUUID#948595, id#948596, displayId#948597, name#948598, baseUnitOfMeasure#948599, unitOfMeasures#948600, unitOfMeasureConversions#948601, productionAspect#948602, salesAspect#948603, procurementAspect#948604, productGroup#948605, filter(unitOfMeasureConversions#948601, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948593.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948593.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948599.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948599.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948606]
(369) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948606.quantityNumerator), true, [quantityNumerator#948607]
(370) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, systemId#948594, internalUUID#948595, id#948596, displayId#948597, name#948598, baseUnitOfMeasure#948599, unitOfMeasures#948600, unitOfMeasureConversions#948601, productionAspect#948602, salesAspect#948603, procurementAspect#948604, productGroup#948605, filteredUnitOfMeasureConversions#948606, quantityNumerator#948607]
(371) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948606.quantityDenominator), true, [quantityDenominator#948608]
(372) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, systemId#948594, internalUUID#948595, id#948596, displayId#948597, name#948598, baseUnitOfMeasure#948599, unitOfMeasures#948600, unitOfMeasureConversions#948601, productionAspect#948602, salesAspect#948603, procurementAspect#948604, productGroup#948605, filteredUnitOfMeasureConversions#948606, quantityNumerator#948607, quantityDenominator#948608]
(373) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, systemId#948594, internalUUID#948595, id#948596, displayId#948597, name#948598, baseUnitOfMeasure#948599, unitOfMeasures#948600, unitOfMeasureConversions#948601, productionAspect#948602, salesAspect#948603, procurementAspect#948604, productGroup#948605, filteredUnitOfMeasureConversions#948606, quantityNumerator#948607, quantityDenominator#948608, (cast(quantityNumerator#948607 as double) / cast(quantityDenominator#948608 as double)) AS outboundUnit#948609]
(374) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, systemId#948594, internalUUID#948595, id#948596, displayId#948597, name#948598, baseUnitOfMeasure#948599, unitOfMeasures#948600, unitOfMeasureConversions#948601, productionAspect#948602, salesAspect#948603, procurementAspect#948604, productGroup#948605, filteredUnitOfMeasureConversions#948606, quantityNumerator#948607, quantityDenominator#948608, CASE WHEN (isnull(outboundUnit#948609) OR (outboundUnit#948609 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948609 END AS outboundUnit#948610]
(375) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, outboundUnit#948610]
(376) LogicalRelation
Arguments: parquet, [systemId#948611, internalUUID#948612, product#948613, plant#948614, calculationDateTime#948615, stockQuantities#948616], false
(377) Repartition
Arguments: 37, true
(378) LogicalRelation
Arguments: parquet, [marketUnit#948617, description#948618, articleHierarchy#948619, defaultCurrency#948620, responsibilities#948621, replenishmentTypes#948622, distributionCenters#948623, assignedArticleHierarchyNodes#948624, minOrderQtySetting#948625, listingCheck#948626, odsSelection#948627, demandProfiles#948628, constraintProfiles#948629, optimizationProfiles#948630, orderGroupSplitProfiles#948631, supplierMinimumProfiles#948632, multipleRestrictionProfiles#948633, preferredUomSource#948634, handlingOfUnfulfilledDemands#948635, negligibleQuantitiesThreshold#948636, eventtype#948637], false
(379) Repartition
Arguments: 37, true
(380) Filter
Arguments: (marketUnit#948617 <=> IW_MU_CRP-125444_1)
(381) Project
Arguments: [marketUnit#948617, description#948618, articleHierarchy#948619, defaultCurrency#948620, responsibilities#948621, replenishmentTypes#948622, distributionCenters#948623, assignedArticleHierarchyNodes#948624, minOrderQtySetting#948625, listingCheck#948626, odsSelection#948627, demandProfiles#948628, constraintProfiles#948629, optimizationProfiles#948630, orderGroupSplitProfiles#948631, supplierMinimumProfiles#948632, multipleRestrictionProfiles#948633, preferredUomSource#948634, handlingOfUnfulfilledDemands#948635, negligibleQuantitiesThreshold#948636, eventtype#948637]
(382) Project
Arguments: [distributionCenters#948623]
(383) Generate
Arguments: explode(distributionCenters#948623), false, [distributionCenters#948638]
(384) Project
Arguments: [distributionCenters#948638]
(385) Generate
Arguments: explode(distributionCenters#948638.storageLocations), false, [storageLocations#948639]
(386) Project
Arguments: [distributionCenters#948638.id AS plantId#948640, distributionCenters#948638.internalRefUUID AS plantUuid#948641, storageLocations#948639]
(387) Project
Arguments: [plantId#948640, plantUuid#948641, storageLocations#948639.id AS storageLocId#948642, storageLocations#948639.internalRefUUID AS storageLocUuid#948643]
(388) LogicalRelation
Arguments: parquet, [product#948644, plant#948645, orderDateTime#948646, planningStartDateTime#948647], false
(389) RepartitionByExpression
Arguments: [product#948644, plant#948645], 37
(390) Project
Arguments: [product#948644, plant#948645, orderDateTime#948646]
(391) LogicalRelation
Arguments: parquet, [systemId#948648, internalUUID#948649, plant#948650, product#948651, blockedForReplenishmentStartingFrom#948652, productionAspect#948653, salesPlant#948654, listing#948655, sourceOfSupplyCategory#948656], false
(392) Repartition
Arguments: 37, true
(393) Project
Arguments: [systemId#948648, internalUUID#948649, plant#948650, product#948651, blockedForReplenishmentStartingFrom#948652, productionAspect#948653, salesPlant#948654, listing#948655, sourceOfSupplyCategory#948656, struct(systemId, systemId#948648, internalUUID, internalUUID#948649, plant, plant#948650, product, product#948651, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948652, productionAspect, productionAspect#948653, salesPlant, salesPlant#948654, listing, listing#948655, sourceOfSupplyCategory, sourceOfSupplyCategory#948656) AS productPlant#948657]
(394) Project
Arguments: [productPlant#948657]
(395) Join
Arguments: LeftOuter, ((product#948644 <=> productPlant#948657.product.internalRefUUID) AND (plant#948645 <=> productPlant#948657.plant.internalRefUUID))
(396) Project
Arguments: [product#948644, plant#948645, orderDateTime#948646, productPlant#948657]
(397) LogicalRelation
Arguments: parquet, [systemId#948658, internalUUID#948659, id#948660, displayId#948661, name#948662, baseUnitOfMeasure#948663, unitOfMeasures#948664, unitOfMeasureConversions#948665, productionAspect#948666, salesAspect#948667, procurementAspect#948668, productGroup#948669], false
(398) Repartition
Arguments: 37, true
(399) Join
Arguments: LeftOuter, (product#948644 = internalUUID#948659)
(400) Project
Arguments: [product#948644, plant#948645, orderDateTime#948646, productPlant#948657, systemId#948658, internalUUID#948659, id#948660, displayId#948661, name#948662, baseUnitOfMeasure#948663, unitOfMeasures#948664, unitOfMeasureConversions#948665, productionAspect#948666, salesAspect#948667, procurementAspect#948668, productGroup#948669, filter(unitOfMeasureConversions#948665, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948657.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948657.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948663.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948663.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948670]
(401) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948670.quantityNumerator), true, [quantityNumerator#948671]
(402) Project
Arguments: [product#948644, plant#948645, orderDateTime#948646, productPlant#948657, systemId#948658, internalUUID#948659, id#948660, displayId#948661, name#948662, baseUnitOfMeasure#948663, unitOfMeasures#948664, unitOfMeasureConversions#948665, productionAspect#948666, salesAspect#948667, procurementAspect#948668, productGroup#948669, filteredUnitOfMeasureConversions#948670, quantityNumerator#948671]
(403) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948670.quantityDenominator), true, [quantityDenominator#948672]
(404) Project
Arguments: [product#948644, plant#948645, orderDateTime#948646, productPlant#948657, systemId#948658, internalUUID#948659, id#948660, displayId#948661, name#948662, baseUnitOfMeasure#948663, unitOfMeasures#948664, unitOfMeasureConversions#948665, productionAspect#948666, salesAspect#948667, procurementAspect#948668, productGroup#948669, filteredUnitOfMeasureConversions#948670, quantityNumerator#948671, quantityDenominator#948672]
(405) Project
Arguments: [product#948644, plant#948645, orderDateTime#948646, productPlant#948657, systemId#948658, internalUUID#948659, id#948660, displayId#948661, name#948662, baseUnitOfMeasure#948663, unitOfMeasures#948664, unitOfMeasureConversions#948665, productionAspect#948666, salesAspect#948667, procurementAspect#948668, productGroup#948669, filteredUnitOfMeasureConversions#948670, quantityNumerator#948671, quantityDenominator#948672, (cast(quantityNumerator#948671 as double) / cast(quantityDenominator#948672 as double)) AS outboundUnit#948673]
(406) Project
Arguments: [product#948644, plant#948645, orderDateTime#948646, productPlant#948657, systemId#948658, internalUUID#948659, id#948660, displayId#948661, name#948662, baseUnitOfMeasure#948663, unitOfMeasures#948664, unitOfMeasureConversions#948665, productionAspect#948666, salesAspect#948667, procurementAspect#948668, productGroup#948669, filteredUnitOfMeasureConversions#948670, quantityNumerator#948671, quantityDenominator#948672, CASE WHEN (isnull(outboundUnit#948673) OR (outboundUnit#948673 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948673 END AS outboundUnit#948674]
(407) Project
Arguments: [product#948644, plant#948645, orderDateTime#948646, productPlant#948657, outboundUnit#948674]
(408) Project
Arguments: [plant#948645]
(409) Deduplicate
Arguments: [plant#948645]
(410) Join
Arguments: Inner, (plantUuid#948641 = plant#948645)
(411) Project
Arguments: [plantId#948640, plantUuid#948641, storageLocId#948642, storageLocUuid#948643]
(412) Join
Arguments: Inner, (plant#948614.internalRefUUID <=> plantUuid#948641)
(413) Generate
Arguments: explode(filter(stockQuantities#948616, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#948643) AND (lambda x#944569.storageLocation.Id = storageLocId#948642)), lambda x#944569, false))), false, [stockQuantity#948675]
(414) Project
Arguments: [systemId#948611, internalUUID#948612, product#948613, plant#948614, calculationDateTime#948615, stockQuantities#948616, plantId#948640, plantUuid#948641, storageLocId#948642, storageLocUuid#948643, stockQuantity#948675]
(415) Aggregate
Arguments: [plantUuid#948641, internalUUID#948612, plant#948614, product#948613, systemId#948611], [plantUuid#948641, internalUUID#948612, plant#948614, product#948613, systemId#948611, first(calculationDateTime#948615, false) AS calculationDateTime#948676, collect_list(stockQuantity#948675, 0, 0) AS stockQuantities#948677]
(416) Project
Arguments: [systemId#948611, internalUUID#948612, product#948613, plant#948614, calculationDateTime#948676, stockQuantities#948677]
(417) Generate
Arguments: explode(stockQuantities#948677), false, [stockQuantity#948678]
(418) Project
Arguments: [systemId#948611, internalUUID#948612, product#948613, plant#948614, calculationDateTime#948676, stockQuantities#948677, stockQuantity#948678]
(419) Project
Arguments: [plant#948614.id AS plant#948679, plant#948614.internalRefUUID AS plantUuid#948680, product#948613.id AS product#948681, product#948613.internalRefUUID AS productUuid#948682, calculationDateTime#948676, stockQuantity#948678.storagelocation.id AS storageLocId#948683, stockQuantity#948678.storagelocation.internalRefUUID AS storageLocUuid#948684, stockQuantity#948678.quantity.measure AS quantity#948685, stockQuantity#948678.specialStockIndicator.code AS specialStockIndicator#948686, stockQuantity#948678.stockType.code AS stockType#948687]
(420) Filter
Arguments: ((specialStockIndicator#948686 = ) AND (stockType#948687 = 01))
(421) LogicalRelation
Arguments: parquet, [product#948688, plant#948689, orderDateTime#948690, planningStartDateTime#948691], false
(422) RepartitionByExpression
Arguments: [product#948688, plant#948689], 37
(423) Project
Arguments: [product#948688, plant#948689, orderDateTime#948690]
(424) LogicalRelation
Arguments: parquet, [systemId#948692, internalUUID#948693, plant#948694, product#948695, blockedForReplenishmentStartingFrom#948696, productionAspect#948697, salesPlant#948698, listing#948699, sourceOfSupplyCategory#948700], false
(425) Repartition
Arguments: 37, true
(426) Project
Arguments: [systemId#948692, internalUUID#948693, plant#948694, product#948695, blockedForReplenishmentStartingFrom#948696, productionAspect#948697, salesPlant#948698, listing#948699, sourceOfSupplyCategory#948700, struct(systemId, systemId#948692, internalUUID, internalUUID#948693, plant, plant#948694, product, product#948695, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948696, productionAspect, productionAspect#948697, salesPlant, salesPlant#948698, listing, listing#948699, sourceOfSupplyCategory, sourceOfSupplyCategory#948700) AS productPlant#948701]
(427) Project
Arguments: [productPlant#948701]
(428) Join
Arguments: LeftOuter, ((product#948688 <=> productPlant#948701.product.internalRefUUID) AND (plant#948689 <=> productPlant#948701.plant.internalRefUUID))
(429) Project
Arguments: [product#948688, plant#948689, orderDateTime#948690, productPlant#948701]
(430) LogicalRelation
Arguments: parquet, [systemId#948702, internalUUID#948703, id#948704, displayId#948705, name#948706, baseUnitOfMeasure#948707, unitOfMeasures#948708, unitOfMeasureConversions#948709, productionAspect#948710, salesAspect#948711, procurementAspect#948712, productGroup#948713], false
(431) Repartition
Arguments: 37, true
(432) Join
Arguments: LeftOuter, (product#948688 = internalUUID#948703)
(433) Project
Arguments: [product#948688, plant#948689, orderDateTime#948690, productPlant#948701, systemId#948702, internalUUID#948703, id#948704, displayId#948705, name#948706, baseUnitOfMeasure#948707, unitOfMeasures#948708, unitOfMeasureConversions#948709, productionAspect#948710, salesAspect#948711, procurementAspect#948712, productGroup#948713, filter(unitOfMeasureConversions#948709, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948701.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948701.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948707.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948707.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948714]
(434) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948714.quantityNumerator), true, [quantityNumerator#948715]
(435) Project
Arguments: [product#948688, plant#948689, orderDateTime#948690, productPlant#948701, systemId#948702, internalUUID#948703, id#948704, displayId#948705, name#948706, baseUnitOfMeasure#948707, unitOfMeasures#948708, unitOfMeasureConversions#948709, productionAspect#948710, salesAspect#948711, procurementAspect#948712, productGroup#948713, filteredUnitOfMeasureConversions#948714, quantityNumerator#948715]
(436) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948714.quantityDenominator), true, [quantityDenominator#948716]
(437) Project
Arguments: [product#948688, plant#948689, orderDateTime#948690, productPlant#948701, systemId#948702, internalUUID#948703, id#948704, displayId#948705, name#948706, baseUnitOfMeasure#948707, unitOfMeasures#948708, unitOfMeasureConversions#948709, productionAspect#948710, salesAspect#948711, procurementAspect#948712, productGroup#948713, filteredUnitOfMeasureConversions#948714, quantityNumerator#948715, quantityDenominator#948716]
(438) Project
Arguments: [product#948688, plant#948689, orderDateTime#948690, productPlant#948701, systemId#948702, internalUUID#948703, id#948704, displayId#948705, name#948706, baseUnitOfMeasure#948707, unitOfMeasures#948708, unitOfMeasureConversions#948709, productionAspect#948710, salesAspect#948711, procurementAspect#948712, productGroup#948713, filteredUnitOfMeasureConversions#948714, quantityNumerator#948715, quantityDenominator#948716, (cast(quantityNumerator#948715 as double) / cast(quantityDenominator#948716 as double)) AS outboundUnit#948717]
(439) Project
Arguments: [product#948688, plant#948689, orderDateTime#948690, productPlant#948701, systemId#948702, internalUUID#948703, id#948704, displayId#948705, name#948706, baseUnitOfMeasure#948707, unitOfMeasures#948708, unitOfMeasureConversions#948709, productionAspect#948710, salesAspect#948711, procurementAspect#948712, productGroup#948713, filteredUnitOfMeasureConversions#948714, quantityNumerator#948715, quantityDenominator#948716, CASE WHEN (isnull(outboundUnit#948717) OR (outboundUnit#948717 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948717 END AS outboundUnit#948718]
(440) Project
Arguments: [product#948688, plant#948689, orderDateTime#948690, productPlant#948701, outboundUnit#948718]
(441) Join
Arguments: Inner, ((plantUuid#948680 = plant#948689) AND (productUuid#948682 = product#948688))
(442) Filter
Arguments: (calculationDateTime#948676 <= orderDateTime#948690)
(443) Project
Arguments: [plantUuid#948680 AS plant#948719, productUuid#948682 AS product#948720, storageLocId#948683, calculationDateTime#948676, quantity#948685]
(444) LogicalRelation
Arguments: parquet, [systemId#948721, internalUUID#948722, product#948723, plant#948724, calculationDateTime#948725, stockQuantities#948726], false
(445) Repartition
Arguments: 37, true
(446) LogicalRelation
Arguments: parquet, [marketUnit#948727, description#948728, articleHierarchy#948729, defaultCurrency#948730, responsibilities#948731, replenishmentTypes#948732, distributionCenters#948733, assignedArticleHierarchyNodes#948734, minOrderQtySetting#948735, listingCheck#948736, odsSelection#948737, demandProfiles#948738, constraintProfiles#948739, optimizationProfiles#948740, orderGroupSplitProfiles#948741, supplierMinimumProfiles#948742, multipleRestrictionProfiles#948743, preferredUomSource#948744, handlingOfUnfulfilledDemands#948745, negligibleQuantitiesThreshold#948746, eventtype#948747], false
(447) Repartition
Arguments: 37, true
(448) Filter
Arguments: (marketUnit#948727 <=> IW_MU_CRP-125444_1)
(449) Project
Arguments: [marketUnit#948727, description#948728, articleHierarchy#948729, defaultCurrency#948730, responsibilities#948731, replenishmentTypes#948732, distributionCenters#948733, assignedArticleHierarchyNodes#948734, minOrderQtySetting#948735, listingCheck#948736, odsSelection#948737, demandProfiles#948738, constraintProfiles#948739, optimizationProfiles#948740, orderGroupSplitProfiles#948741, supplierMinimumProfiles#948742, multipleRestrictionProfiles#948743, preferredUomSource#948744, handlingOfUnfulfilledDemands#948745, negligibleQuantitiesThreshold#948746, eventtype#948747]
(450) Project
Arguments: [distributionCenters#948733]
(451) Generate
Arguments: explode(distributionCenters#948733), false, [distributionCenters#948748]
(452) Project
Arguments: [distributionCenters#948748]
(453) Generate
Arguments: explode(distributionCenters#948748.storageLocations), false, [storageLocations#948749]
(454) Project
Arguments: [distributionCenters#948748.id AS plantId#948750, distributionCenters#948748.internalRefUUID AS plantUuid#948751, storageLocations#948749]
(455) Project
Arguments: [plantId#948750, plantUuid#948751, storageLocations#948749.id AS storageLocId#948752, storageLocations#948749.internalRefUUID AS storageLocUuid#948753]
(456) LogicalRelation
Arguments: parquet, [product#948754, plant#948755, orderDateTime#948756, planningStartDateTime#948757], false
(457) RepartitionByExpression
Arguments: [product#948754, plant#948755], 37
(458) Project
Arguments: [product#948754, plant#948755, orderDateTime#948756]
(459) LogicalRelation
Arguments: parquet, [systemId#948758, internalUUID#948759, plant#948760, product#948761, blockedForReplenishmentStartingFrom#948762, productionAspect#948763, salesPlant#948764, listing#948765, sourceOfSupplyCategory#948766], false
(460) Repartition
Arguments: 37, true
(461) Project
Arguments: [systemId#948758, internalUUID#948759, plant#948760, product#948761, blockedForReplenishmentStartingFrom#948762, productionAspect#948763, salesPlant#948764, listing#948765, sourceOfSupplyCategory#948766, struct(systemId, systemId#948758, internalUUID, internalUUID#948759, plant, plant#948760, product, product#948761, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948762, productionAspect, productionAspect#948763, salesPlant, salesPlant#948764, listing, listing#948765, sourceOfSupplyCategory, sourceOfSupplyCategory#948766) AS productPlant#948767]
(462) Project
Arguments: [productPlant#948767]
(463) Join
Arguments: LeftOuter, ((product#948754 <=> productPlant#948767.product.internalRefUUID) AND (plant#948755 <=> productPlant#948767.plant.internalRefUUID))
(464) Project
Arguments: [product#948754, plant#948755, orderDateTime#948756, productPlant#948767]
(465) LogicalRelation
Arguments: parquet, [systemId#948768, internalUUID#948769, id#948770, displayId#948771, name#948772, baseUnitOfMeasure#948773, unitOfMeasures#948774, unitOfMeasureConversions#948775, productionAspect#948776, salesAspect#948777, procurementAspect#948778, productGroup#948779], false
(466) Repartition
Arguments: 37, true
(467) Join
Arguments: LeftOuter, (product#948754 = internalUUID#948769)
(468) Project
Arguments: [product#948754, plant#948755, orderDateTime#948756, productPlant#948767, systemId#948768, internalUUID#948769, id#948770, displayId#948771, name#948772, baseUnitOfMeasure#948773, unitOfMeasures#948774, unitOfMeasureConversions#948775, productionAspect#948776, salesAspect#948777, procurementAspect#948778, productGroup#948779, filter(unitOfMeasureConversions#948775, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948767.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948767.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948773.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948773.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948780]
(469) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948780.quantityNumerator), true, [quantityNumerator#948781]
(470) Project
Arguments: [product#948754, plant#948755, orderDateTime#948756, productPlant#948767, systemId#948768, internalUUID#948769, id#948770, displayId#948771, name#948772, baseUnitOfMeasure#948773, unitOfMeasures#948774, unitOfMeasureConversions#948775, productionAspect#948776, salesAspect#948777, procurementAspect#948778, productGroup#948779, filteredUnitOfMeasureConversions#948780, quantityNumerator#948781]
(471) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948780.quantityDenominator), true, [quantityDenominator#948782]
(472) Project
Arguments: [product#948754, plant#948755, orderDateTime#948756, productPlant#948767, systemId#948768, internalUUID#948769, id#948770, displayId#948771, name#948772, baseUnitOfMeasure#948773, unitOfMeasures#948774, unitOfMeasureConversions#948775, productionAspect#948776, salesAspect#948777, procurementAspect#948778, productGroup#948779, filteredUnitOfMeasureConversions#948780, quantityNumerator#948781, quantityDenominator#948782]
(473) Project
Arguments: [product#948754, plant#948755, orderDateTime#948756, productPlant#948767, systemId#948768, internalUUID#948769, id#948770, displayId#948771, name#948772, baseUnitOfMeasure#948773, unitOfMeasures#948774, unitOfMeasureConversions#948775, productionAspect#948776, salesAspect#948777, procurementAspect#948778, productGroup#948779, filteredUnitOfMeasureConversions#948780, quantityNumerator#948781, quantityDenominator#948782, (cast(quantityNumerator#948781 as double) / cast(quantityDenominator#948782 as double)) AS outboundUnit#948783]
(474) Project
Arguments: [product#948754, plant#948755, orderDateTime#948756, productPlant#948767, systemId#948768, internalUUID#948769, id#948770, displayId#948771, name#948772, baseUnitOfMeasure#948773, unitOfMeasures#948774, unitOfMeasureConversions#948775, productionAspect#948776, salesAspect#948777, procurementAspect#948778, productGroup#948779, filteredUnitOfMeasureConversions#948780, quantityNumerator#948781, quantityDenominator#948782, CASE WHEN (isnull(outboundUnit#948783) OR (outboundUnit#948783 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948783 END AS outboundUnit#948784]
(475) Project
Arguments: [product#948754, plant#948755, orderDateTime#948756, productPlant#948767, outboundUnit#948784]
(476) Project
Arguments: [plant#948755]
(477) Deduplicate
Arguments: [plant#948755]
(478) Join
Arguments: Inner, (plantUuid#948751 = plant#948755)
(479) Project
Arguments: [plantId#948750, plantUuid#948751, storageLocId#948752, storageLocUuid#948753]
(480) Join
Arguments: Inner, (plant#948724.internalRefUUID <=> plantUuid#948751)
(481) Generate
Arguments: explode(filter(stockQuantities#948726, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#948753) AND (lambda x#944569.storageLocation.Id = storageLocId#948752)), lambda x#944569, false))), false, [stockQuantity#948785]
(482) Project
Arguments: [systemId#948721, internalUUID#948722, product#948723, plant#948724, calculationDateTime#948725, stockQuantities#948726, plantId#948750, plantUuid#948751, storageLocId#948752, storageLocUuid#948753, stockQuantity#948785]
(483) Aggregate
Arguments: [plantUuid#948751, internalUUID#948722, plant#948724, product#948723, systemId#948721], [plantUuid#948751, internalUUID#948722, plant#948724, product#948723, systemId#948721, first(calculationDateTime#948725, false) AS calculationDateTime#948786, collect_list(stockQuantity#948785, 0, 0) AS stockQuantities#948787]
(484) Project
Arguments: [systemId#948721, internalUUID#948722, product#948723, plant#948724, calculationDateTime#948786, stockQuantities#948787]
(485) Generate
Arguments: explode(stockQuantities#948787), false, [stockQuantity#948788]
(486) Project
Arguments: [systemId#948721, internalUUID#948722, product#948723, plant#948724, calculationDateTime#948786, stockQuantities#948787, stockQuantity#948788]
(487) Project
Arguments: [plant#948724.id AS plant#948789, plant#948724.internalRefUUID AS plantUuid#948790, product#948723.id AS product#948791, product#948723.internalRefUUID AS productUuid#948792, calculationDateTime#948786, stockQuantity#948788.storagelocation.id AS storageLocId#948793, stockQuantity#948788.storagelocation.internalRefUUID AS storageLocUuid#948794, stockQuantity#948788.quantity.measure AS quantity#948795, stockQuantity#948788.specialStockIndicator.code AS specialStockIndicator#948796, stockQuantity#948788.stockType.code AS stockType#948797]
(488) Filter
Arguments: ((specialStockIndicator#948796 = ) AND (stockType#948797 = 01))
(489) LogicalRelation
Arguments: parquet, [product#948798, plant#948799, orderDateTime#948800, planningStartDateTime#948801], false
(490) RepartitionByExpression
Arguments: [product#948798, plant#948799], 37
(491) Project
Arguments: [product#948798, plant#948799, orderDateTime#948800]
(492) LogicalRelation
Arguments: parquet, [systemId#948802, internalUUID#948803, plant#948804, product#948805, blockedForReplenishmentStartingFrom#948806, productionAspect#948807, salesPlant#948808, listing#948809, sourceOfSupplyCategory#948810], false
(493) Repartition
Arguments: 37, true
(494) Project
Arguments: [systemId#948802, internalUUID#948803, plant#948804, product#948805, blockedForReplenishmentStartingFrom#948806, productionAspect#948807, salesPlant#948808, listing#948809, sourceOfSupplyCategory#948810, struct(systemId, systemId#948802, internalUUID, internalUUID#948803, plant, plant#948804, product, product#948805, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948806, productionAspect, productionAspect#948807, salesPlant, salesPlant#948808, listing, listing#948809, sourceOfSupplyCategory, sourceOfSupplyCategory#948810) AS productPlant#948811]
(495) Project
Arguments: [productPlant#948811]
(496) Join
Arguments: LeftOuter, ((product#948798 <=> productPlant#948811.product.internalRefUUID) AND (plant#948799 <=> productPlant#948811.plant.internalRefUUID))
(497) Project
Arguments: [product#948798, plant#948799, orderDateTime#948800, productPlant#948811]
(498) LogicalRelation
Arguments: parquet, [systemId#948812, internalUUID#948813, id#948814, displayId#948815, name#948816, baseUnitOfMeasure#948817, unitOfMeasures#948818, unitOfMeasureConversions#948819, productionAspect#948820, salesAspect#948821, procurementAspect#948822, productGroup#948823], false
(499) Repartition
Arguments: 37, true
(500) Join
Arguments: LeftOuter, (product#948798 = internalUUID#948813)
(501) Project
Arguments: [product#948798, plant#948799, orderDateTime#948800, productPlant#948811, systemId#948812, internalUUID#948813, id#948814, displayId#948815, name#948816, baseUnitOfMeasure#948817, unitOfMeasures#948818, unitOfMeasureConversions#948819, productionAspect#948820, salesAspect#948821, procurementAspect#948822, productGroup#948823, filter(unitOfMeasureConversions#948819, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948811.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948811.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948817.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948817.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948824]
(502) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948824.quantityNumerator), true, [quantityNumerator#948825]
(503) Project
Arguments: [product#948798, plant#948799, orderDateTime#948800, productPlant#948811, systemId#948812, internalUUID#948813, id#948814, displayId#948815, name#948816, baseUnitOfMeasure#948817, unitOfMeasures#948818, unitOfMeasureConversions#948819, productionAspect#948820, salesAspect#948821, procurementAspect#948822, productGroup#948823, filteredUnitOfMeasureConversions#948824, quantityNumerator#948825]
(504) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948824.quantityDenominator), true, [quantityDenominator#948826]
(505) Project
Arguments: [product#948798, plant#948799, orderDateTime#948800, productPlant#948811, systemId#948812, internalUUID#948813, id#948814, displayId#948815, name#948816, baseUnitOfMeasure#948817, unitOfMeasures#948818, unitOfMeasureConversions#948819, productionAspect#948820, salesAspect#948821, procurementAspect#948822, productGroup#948823, filteredUnitOfMeasureConversions#948824, quantityNumerator#948825, quantityDenominator#948826]
(506) Project
Arguments: [product#948798, plant#948799, orderDateTime#948800, productPlant#948811, systemId#948812, internalUUID#948813, id#948814, displayId#948815, name#948816, baseUnitOfMeasure#948817, unitOfMeasures#948818, unitOfMeasureConversions#948819, productionAspect#948820, salesAspect#948821, procurementAspect#948822, productGroup#948823, filteredUnitOfMeasureConversions#948824, quantityNumerator#948825, quantityDenominator#948826, (cast(quantityNumerator#948825 as double) / cast(quantityDenominator#948826 as double)) AS outboundUnit#948827]
(507) Project
Arguments: [product#948798, plant#948799, orderDateTime#948800, productPlant#948811, systemId#948812, internalUUID#948813, id#948814, displayId#948815, name#948816, baseUnitOfMeasure#948817, unitOfMeasures#948818, unitOfMeasureConversions#948819, productionAspect#948820, salesAspect#948821, procurementAspect#948822, productGroup#948823, filteredUnitOfMeasureConversions#948824, quantityNumerator#948825, quantityDenominator#948826, CASE WHEN (isnull(outboundUnit#948827) OR (outboundUnit#948827 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948827 END AS outboundUnit#948828]
(508) Project
Arguments: [product#948798, plant#948799, orderDateTime#948800, productPlant#948811, outboundUnit#948828]
(509) Join
Arguments: Inner, ((plantUuid#948790 = plant#948799) AND (productUuid#948792 = product#948798))
(510) Filter
Arguments: (calculationDateTime#948786 <= orderDateTime#948800)
(511) Project
Arguments: [plantUuid#948790 AS plant#948829, productUuid#948792 AS product#948830, storageLocId#948793, calculationDateTime#948786, quantity#948795]
(512) Aggregate
Arguments: [plant#948829, product#948830, storageLocId#948793], [plant#948829, product#948830, storageLocId#948793, max(calculationDateTime#948786) AS max_calc_datetime#948831]
(513) Join
Arguments: Inner, ((((plant#948719 <=> plant#948829) AND (product#948720 <=> product#948830)) AND (storageLocId#948683 <=> storageLocId#948793)) AND (calculationDateTime#948676 <=> max_calc_datetime#948831))
(514) Project
Arguments: [plant#948719, product#948720, storageLocId#948683, calculationDateTime#948676, quantity#948685]
(515) Aggregate
Arguments: [product#948720, plant#948719], [product#948720, plant#948719, sum(quantity#948685) AS quantitySum#948832, min(calculationDateTime#948676) AS minCalculationDateTime#948833]
(516) Project
Arguments: [product#948720, plant#948719, quantitySum#948832, minCalculationDateTime#948833, round(quantitySum#948832, 0) AS roundedQuantitySum#948834]
(517) Join
Arguments: LeftOuter, ((plant#948581 = plant#948719) AND (product#948580 = product#948720))
(518) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, outboundUnit#948610, roundedQuantitySum#948834, minCalculationDateTime#948833]
(519) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, outboundUnit#948610, roundedQuantitySum#948834, minCalculationDateTime#948833, CASE WHEN isnotnull(minCalculationDateTime#948833) THEN minCalculationDateTime#948833 ELSE orderDateTime#948582 END AS stockDatetime#948835]
(520) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, outboundUnit#948610, roundedQuantitySum#948834, minCalculationDateTime#948833, stockDatetime#948835, CASE WHEN isnotnull(roundedQuantitySum#948834) THEN array(roundedQuantitySum#948834) ELSE array(0.0) END AS stockBatchQuantities#948836]
(521) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, outboundUnit#948610, roundedQuantitySum#948834, minCalculationDateTime#948833, stockDatetime#948835, stockBatchQuantities#948836, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#948837]
(522) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, outboundUnit#948610, roundedQuantitySum#948834, stockDatetime#948835, stockBatchQuantities#948836, stockBatchShelfLifeEndDatetimes#948837]
(523) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, outboundUnit#948610, stockDatetime#948835, stockBatchQuantities#948836, stockBatchShelfLifeEndDatetimes#948837]
(524) LogicalRelation
Arguments: parquet, [product#948838, plant#948839, orderDateTime#948840, planningStartDateTime#948841], false
(525) RepartitionByExpression
Arguments: [product#948838, plant#948839], 37
(526) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840]
(527) LogicalRelation
Arguments: parquet, [systemId#948842, internalUUID#948843, plant#948844, product#948845, blockedForReplenishmentStartingFrom#948846, productionAspect#948847, salesPlant#948848, listing#948849, sourceOfSupplyCategory#948850], false
(528) Repartition
Arguments: 37, true
(529) Project
Arguments: [systemId#948842, internalUUID#948843, plant#948844, product#948845, blockedForReplenishmentStartingFrom#948846, productionAspect#948847, salesPlant#948848, listing#948849, sourceOfSupplyCategory#948850, struct(systemId, systemId#948842, internalUUID, internalUUID#948843, plant, plant#948844, product, product#948845, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948846, productionAspect, productionAspect#948847, salesPlant, salesPlant#948848, listing, listing#948849, sourceOfSupplyCategory, sourceOfSupplyCategory#948850) AS productPlant#948851]
(530) Project
Arguments: [productPlant#948851]
(531) Join
Arguments: LeftOuter, ((product#948838 <=> productPlant#948851.product.internalRefUUID) AND (plant#948839 <=> productPlant#948851.plant.internalRefUUID))
(532) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851]
(533) LogicalRelation
Arguments: parquet, [systemId#948852, internalUUID#948853, id#948854, displayId#948855, name#948856, baseUnitOfMeasure#948857, unitOfMeasures#948858, unitOfMeasureConversions#948859, productionAspect#948860, salesAspect#948861, procurementAspect#948862, productGroup#948863], false
(534) Repartition
Arguments: 37, true
(535) Join
Arguments: LeftOuter, (product#948838 = internalUUID#948853)
(536) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, systemId#948852, internalUUID#948853, id#948854, displayId#948855, name#948856, baseUnitOfMeasure#948857, unitOfMeasures#948858, unitOfMeasureConversions#948859, productionAspect#948860, salesAspect#948861, procurementAspect#948862, productGroup#948863, filter(unitOfMeasureConversions#948859, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948851.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948851.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948857.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948857.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948864]
(537) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948864.quantityNumerator), true, [quantityNumerator#948865]
(538) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, systemId#948852, internalUUID#948853, id#948854, displayId#948855, name#948856, baseUnitOfMeasure#948857, unitOfMeasures#948858, unitOfMeasureConversions#948859, productionAspect#948860, salesAspect#948861, procurementAspect#948862, productGroup#948863, filteredUnitOfMeasureConversions#948864, quantityNumerator#948865]
(539) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948864.quantityDenominator), true, [quantityDenominator#948866]
(540) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, systemId#948852, internalUUID#948853, id#948854, displayId#948855, name#948856, baseUnitOfMeasure#948857, unitOfMeasures#948858, unitOfMeasureConversions#948859, productionAspect#948860, salesAspect#948861, procurementAspect#948862, productGroup#948863, filteredUnitOfMeasureConversions#948864, quantityNumerator#948865, quantityDenominator#948866]
(541) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, systemId#948852, internalUUID#948853, id#948854, displayId#948855, name#948856, baseUnitOfMeasure#948857, unitOfMeasures#948858, unitOfMeasureConversions#948859, productionAspect#948860, salesAspect#948861, procurementAspect#948862, productGroup#948863, filteredUnitOfMeasureConversions#948864, quantityNumerator#948865, quantityDenominator#948866, (cast(quantityNumerator#948865 as double) / cast(quantityDenominator#948866 as double)) AS outboundUnit#948867]
(542) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, systemId#948852, internalUUID#948853, id#948854, displayId#948855, name#948856, baseUnitOfMeasure#948857, unitOfMeasures#948858, unitOfMeasureConversions#948859, productionAspect#948860, salesAspect#948861, procurementAspect#948862, productGroup#948863, filteredUnitOfMeasureConversions#948864, quantityNumerator#948865, quantityDenominator#948866, CASE WHEN (isnull(outboundUnit#948867) OR (outboundUnit#948867 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948867 END AS outboundUnit#948868]
(543) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, outboundUnit#948868]
(544) LogicalRelation
Arguments: parquet, [systemId#948869, internalUUID#948870, product#948871, plant#948872, calculationDateTime#948873, stockQuantities#948874], false
(545) Repartition
Arguments: 37, true
(546) LogicalRelation
Arguments: parquet, [marketUnit#948875, description#948876, articleHierarchy#948877, defaultCurrency#948878, responsibilities#948879, replenishmentTypes#948880, distributionCenters#948881, assignedArticleHierarchyNodes#948882, minOrderQtySetting#948883, listingCheck#948884, odsSelection#948885, demandProfiles#948886, constraintProfiles#948887, optimizationProfiles#948888, orderGroupSplitProfiles#948889, supplierMinimumProfiles#948890, multipleRestrictionProfiles#948891, preferredUomSource#948892, handlingOfUnfulfilledDemands#948893, negligibleQuantitiesThreshold#948894, eventtype#948895], false
(547) Repartition
Arguments: 37, true
(548) Filter
Arguments: (marketUnit#948875 <=> IW_MU_CRP-125444_1)
(549) Project
Arguments: [marketUnit#948875, description#948876, articleHierarchy#948877, defaultCurrency#948878, responsibilities#948879, replenishmentTypes#948880, distributionCenters#948881, assignedArticleHierarchyNodes#948882, minOrderQtySetting#948883, listingCheck#948884, odsSelection#948885, demandProfiles#948886, constraintProfiles#948887, optimizationProfiles#948888, orderGroupSplitProfiles#948889, supplierMinimumProfiles#948890, multipleRestrictionProfiles#948891, preferredUomSource#948892, handlingOfUnfulfilledDemands#948893, negligibleQuantitiesThreshold#948894, eventtype#948895]
(550) Project
Arguments: [distributionCenters#948881]
(551) Generate
Arguments: explode(distributionCenters#948881), false, [distributionCenters#948896]
(552) Project
Arguments: [distributionCenters#948896]
(553) Generate
Arguments: explode(distributionCenters#948896.storageLocations), false, [storageLocations#948897]
(554) Project
Arguments: [distributionCenters#948896.id AS plantId#948898, distributionCenters#948896.internalRefUUID AS plantUuid#948899, storageLocations#948897]
(555) Project
Arguments: [plantId#948898, plantUuid#948899, storageLocations#948897.id AS storageLocId#948900, storageLocations#948897.internalRefUUID AS storageLocUuid#948901]
(556) LogicalRelation
Arguments: parquet, [product#948902, plant#948903, orderDateTime#948904, planningStartDateTime#948905], false
(557) RepartitionByExpression
Arguments: [product#948902, plant#948903], 37
(558) Project
Arguments: [product#948902, plant#948903, orderDateTime#948904]
(559) LogicalRelation
Arguments: parquet, [systemId#948906, internalUUID#948907, plant#948908, product#948909, blockedForReplenishmentStartingFrom#948910, productionAspect#948911, salesPlant#948912, listing#948913, sourceOfSupplyCategory#948914], false
(560) Repartition
Arguments: 37, true
(561) Project
Arguments: [systemId#948906, internalUUID#948907, plant#948908, product#948909, blockedForReplenishmentStartingFrom#948910, productionAspect#948911, salesPlant#948912, listing#948913, sourceOfSupplyCategory#948914, struct(systemId, systemId#948906, internalUUID, internalUUID#948907, plant, plant#948908, product, product#948909, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948910, productionAspect, productionAspect#948911, salesPlant, salesPlant#948912, listing, listing#948913, sourceOfSupplyCategory, sourceOfSupplyCategory#948914) AS productPlant#948915]
(562) Project
Arguments: [productPlant#948915]
(563) Join
Arguments: LeftOuter, ((product#948902 <=> productPlant#948915.product.internalRefUUID) AND (plant#948903 <=> productPlant#948915.plant.internalRefUUID))
(564) Project
Arguments: [product#948902, plant#948903, orderDateTime#948904, productPlant#948915]
(565) LogicalRelation
Arguments: parquet, [systemId#948916, internalUUID#948917, id#948918, displayId#948919, name#948920, baseUnitOfMeasure#948921, unitOfMeasures#948922, unitOfMeasureConversions#948923, productionAspect#948924, salesAspect#948925, procurementAspect#948926, productGroup#948927], false
(566) Repartition
Arguments: 37, true
(567) Join
Arguments: LeftOuter, (product#948902 = internalUUID#948917)
(568) Project
Arguments: [product#948902, plant#948903, orderDateTime#948904, productPlant#948915, systemId#948916, internalUUID#948917, id#948918, displayId#948919, name#948920, baseUnitOfMeasure#948921, unitOfMeasures#948922, unitOfMeasureConversions#948923, productionAspect#948924, salesAspect#948925, procurementAspect#948926, productGroup#948927, filter(unitOfMeasureConversions#948923, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948915.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948915.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948921.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948921.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948928]
(569) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948928.quantityNumerator), true, [quantityNumerator#948929]
(570) Project
Arguments: [product#948902, plant#948903, orderDateTime#948904, productPlant#948915, systemId#948916, internalUUID#948917, id#948918, displayId#948919, name#948920, baseUnitOfMeasure#948921, unitOfMeasures#948922, unitOfMeasureConversions#948923, productionAspect#948924, salesAspect#948925, procurementAspect#948926, productGroup#948927, filteredUnitOfMeasureConversions#948928, quantityNumerator#948929]
(571) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948928.quantityDenominator), true, [quantityDenominator#948930]
(572) Project
Arguments: [product#948902, plant#948903, orderDateTime#948904, productPlant#948915, systemId#948916, internalUUID#948917, id#948918, displayId#948919, name#948920, baseUnitOfMeasure#948921, unitOfMeasures#948922, unitOfMeasureConversions#948923, productionAspect#948924, salesAspect#948925, procurementAspect#948926, productGroup#948927, filteredUnitOfMeasureConversions#948928, quantityNumerator#948929, quantityDenominator#948930]
(573) Project
Arguments: [product#948902, plant#948903, orderDateTime#948904, productPlant#948915, systemId#948916, internalUUID#948917, id#948918, displayId#948919, name#948920, baseUnitOfMeasure#948921, unitOfMeasures#948922, unitOfMeasureConversions#948923, productionAspect#948924, salesAspect#948925, procurementAspect#948926, productGroup#948927, filteredUnitOfMeasureConversions#948928, quantityNumerator#948929, quantityDenominator#948930, (cast(quantityNumerator#948929 as double) / cast(quantityDenominator#948930 as double)) AS outboundUnit#948931]
(574) Project
Arguments: [product#948902, plant#948903, orderDateTime#948904, productPlant#948915, systemId#948916, internalUUID#948917, id#948918, displayId#948919, name#948920, baseUnitOfMeasure#948921, unitOfMeasures#948922, unitOfMeasureConversions#948923, productionAspect#948924, salesAspect#948925, procurementAspect#948926, productGroup#948927, filteredUnitOfMeasureConversions#948928, quantityNumerator#948929, quantityDenominator#948930, CASE WHEN (isnull(outboundUnit#948931) OR (outboundUnit#948931 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948931 END AS outboundUnit#948932]
(575) Project
Arguments: [product#948902, plant#948903, orderDateTime#948904, productPlant#948915, outboundUnit#948932]
(576) Project
Arguments: [plant#948903]
(577) Deduplicate
Arguments: [plant#948903]
(578) Join
Arguments: Inner, (plantUuid#948899 = plant#948903)
(579) Project
Arguments: [plantId#948898, plantUuid#948899, storageLocId#948900, storageLocUuid#948901]
(580) Join
Arguments: Inner, (plant#948872.internalRefUUID <=> plantUuid#948899)
(581) Generate
Arguments: explode(filter(stockQuantities#948874, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#948901) AND (lambda x#944569.storageLocation.Id = storageLocId#948900)), lambda x#944569, false))), false, [stockQuantity#948933]
(582) Project
Arguments: [systemId#948869, internalUUID#948870, product#948871, plant#948872, calculationDateTime#948873, stockQuantities#948874, plantId#948898, plantUuid#948899, storageLocId#948900, storageLocUuid#948901, stockQuantity#948933]
(583) Aggregate
Arguments: [plantUuid#948899, internalUUID#948870, plant#948872, product#948871, systemId#948869], [plantUuid#948899, internalUUID#948870, plant#948872, product#948871, systemId#948869, first(calculationDateTime#948873, false) AS calculationDateTime#948934, collect_list(stockQuantity#948933, 0, 0) AS stockQuantities#948935]
(584) Project
Arguments: [systemId#948869, internalUUID#948870, product#948871, plant#948872, calculationDateTime#948934, stockQuantities#948935]
(585) Generate
Arguments: explode(stockQuantities#948935), false, [stockQuantity#948936]
(586) Project
Arguments: [systemId#948869, internalUUID#948870, product#948871, plant#948872, calculationDateTime#948934, stockQuantities#948935, stockQuantity#948936]
(587) Project
Arguments: [plant#948872.id AS plant#948937, plant#948872.internalRefUUID AS plantUuid#948938, product#948871.id AS product#948939, product#948871.internalRefUUID AS productUuid#948940, calculationDateTime#948934, stockQuantity#948936.storagelocation.id AS storageLocId#948941, stockQuantity#948936.storagelocation.internalRefUUID AS storageLocUuid#948942, stockQuantity#948936.quantity.measure AS quantity#948943, stockQuantity#948936.specialStockIndicator.code AS specialStockIndicator#948944, stockQuantity#948936.stockType.code AS stockType#948945]
(588) Filter
Arguments: ((specialStockIndicator#948944 = ) AND (stockType#948945 = 01))
(589) LogicalRelation
Arguments: parquet, [product#948946, plant#948947, orderDateTime#948948, planningStartDateTime#948949], false
(590) RepartitionByExpression
Arguments: [product#948946, plant#948947], 37
(591) Project
Arguments: [product#948946, plant#948947, orderDateTime#948948]
(592) LogicalRelation
Arguments: parquet, [systemId#948950, internalUUID#948951, plant#948952, product#948953, blockedForReplenishmentStartingFrom#948954, productionAspect#948955, salesPlant#948956, listing#948957, sourceOfSupplyCategory#948958], false
(593) Repartition
Arguments: 37, true
(594) Project
Arguments: [systemId#948950, internalUUID#948951, plant#948952, product#948953, blockedForReplenishmentStartingFrom#948954, productionAspect#948955, salesPlant#948956, listing#948957, sourceOfSupplyCategory#948958, struct(systemId, systemId#948950, internalUUID, internalUUID#948951, plant, plant#948952, product, product#948953, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948954, productionAspect, productionAspect#948955, salesPlant, salesPlant#948956, listing, listing#948957, sourceOfSupplyCategory, sourceOfSupplyCategory#948958) AS productPlant#948959]
(595) Project
Arguments: [productPlant#948959]
(596) Join
Arguments: LeftOuter, ((product#948946 <=> productPlant#948959.product.internalRefUUID) AND (plant#948947 <=> productPlant#948959.plant.internalRefUUID))
(597) Project
Arguments: [product#948946, plant#948947, orderDateTime#948948, productPlant#948959]
(598) LogicalRelation
Arguments: parquet, [systemId#948960, internalUUID#948961, id#948962, displayId#948963, name#948964, baseUnitOfMeasure#948965, unitOfMeasures#948966, unitOfMeasureConversions#948967, productionAspect#948968, salesAspect#948969, procurementAspect#948970, productGroup#948971], false
(599) Repartition
Arguments: 37, true
(600) Join
Arguments: LeftOuter, (product#948946 = internalUUID#948961)
(601) Project
Arguments: [product#948946, plant#948947, orderDateTime#948948, productPlant#948959, systemId#948960, internalUUID#948961, id#948962, displayId#948963, name#948964, baseUnitOfMeasure#948965, unitOfMeasures#948966, unitOfMeasureConversions#948967, productionAspect#948968, salesAspect#948969, procurementAspect#948970, productGroup#948971, filter(unitOfMeasureConversions#948967, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948959.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948959.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948965.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948965.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948972]
(602) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948972.quantityNumerator), true, [quantityNumerator#948973]
(603) Project
Arguments: [product#948946, plant#948947, orderDateTime#948948, productPlant#948959, systemId#948960, internalUUID#948961, id#948962, displayId#948963, name#948964, baseUnitOfMeasure#948965, unitOfMeasures#948966, unitOfMeasureConversions#948967, productionAspect#948968, salesAspect#948969, procurementAspect#948970, productGroup#948971, filteredUnitOfMeasureConversions#948972, quantityNumerator#948973]
(604) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948972.quantityDenominator), true, [quantityDenominator#948974]
(605) Project
Arguments: [product#948946, plant#948947, orderDateTime#948948, productPlant#948959, systemId#948960, internalUUID#948961, id#948962, displayId#948963, name#948964, baseUnitOfMeasure#948965, unitOfMeasures#948966, unitOfMeasureConversions#948967, productionAspect#948968, salesAspect#948969, procurementAspect#948970, productGroup#948971, filteredUnitOfMeasureConversions#948972, quantityNumerator#948973, quantityDenominator#948974]
(606) Project
Arguments: [product#948946, plant#948947, orderDateTime#948948, productPlant#948959, systemId#948960, internalUUID#948961, id#948962, displayId#948963, name#948964, baseUnitOfMeasure#948965, unitOfMeasures#948966, unitOfMeasureConversions#948967, productionAspect#948968, salesAspect#948969, procurementAspect#948970, productGroup#948971, filteredUnitOfMeasureConversions#948972, quantityNumerator#948973, quantityDenominator#948974, (cast(quantityNumerator#948973 as double) / cast(quantityDenominator#948974 as double)) AS outboundUnit#948975]
(607) Project
Arguments: [product#948946, plant#948947, orderDateTime#948948, productPlant#948959, systemId#948960, internalUUID#948961, id#948962, displayId#948963, name#948964, baseUnitOfMeasure#948965, unitOfMeasures#948966, unitOfMeasureConversions#948967, productionAspect#948968, salesAspect#948969, procurementAspect#948970, productGroup#948971, filteredUnitOfMeasureConversions#948972, quantityNumerator#948973, quantityDenominator#948974, CASE WHEN (isnull(outboundUnit#948975) OR (outboundUnit#948975 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948975 END AS outboundUnit#948976]
(608) Project
Arguments: [product#948946, plant#948947, orderDateTime#948948, productPlant#948959, outboundUnit#948976]
(609) Join
Arguments: Inner, ((plantUuid#948938 = plant#948947) AND (productUuid#948940 = product#948946))
(610) Filter
Arguments: (calculationDateTime#948934 <= orderDateTime#948948)
(611) Project
Arguments: [plantUuid#948938 AS plant#948977, productUuid#948940 AS product#948978, storageLocId#948941, calculationDateTime#948934, quantity#948943]
(612) LogicalRelation
Arguments: parquet, [systemId#948979, internalUUID#948980, product#948981, plant#948982, calculationDateTime#948983, stockQuantities#948984], false
(613) Repartition
Arguments: 37, true
(614) LogicalRelation
Arguments: parquet, [marketUnit#948985, description#948986, articleHierarchy#948987, defaultCurrency#948988, responsibilities#948989, replenishmentTypes#948990, distributionCenters#948991, assignedArticleHierarchyNodes#948992, minOrderQtySetting#948993, listingCheck#948994, odsSelection#948995, demandProfiles#948996, constraintProfiles#948997, optimizationProfiles#948998, orderGroupSplitProfiles#948999, supplierMinimumProfiles#949000, multipleRestrictionProfiles#949001, preferredUomSource#949002, handlingOfUnfulfilledDemands#949003, negligibleQuantitiesThreshold#949004, eventtype#949005], false
(615) Repartition
Arguments: 37, true
(616) Filter
Arguments: (marketUnit#948985 <=> IW_MU_CRP-125444_1)
(617) Project
Arguments: [marketUnit#948985, description#948986, articleHierarchy#948987, defaultCurrency#948988, responsibilities#948989, replenishmentTypes#948990, distributionCenters#948991, assignedArticleHierarchyNodes#948992, minOrderQtySetting#948993, listingCheck#948994, odsSelection#948995, demandProfiles#948996, constraintProfiles#948997, optimizationProfiles#948998, orderGroupSplitProfiles#948999, supplierMinimumProfiles#949000, multipleRestrictionProfiles#949001, preferredUomSource#949002, handlingOfUnfulfilledDemands#949003, negligibleQuantitiesThreshold#949004, eventtype#949005]
(618) Project
Arguments: [distributionCenters#948991]
(619) Generate
Arguments: explode(distributionCenters#948991), false, [distributionCenters#949006]
(620) Project
Arguments: [distributionCenters#949006]
(621) Generate
Arguments: explode(distributionCenters#949006.storageLocations), false, [storageLocations#949007]
(622) Project
Arguments: [distributionCenters#949006.id AS plantId#949008, distributionCenters#949006.internalRefUUID AS plantUuid#949009, storageLocations#949007]
(623) Project
Arguments: [plantId#949008, plantUuid#949009, storageLocations#949007.id AS storageLocId#949010, storageLocations#949007.internalRefUUID AS storageLocUuid#949011]
(624) LogicalRelation
Arguments: parquet, [product#949012, plant#949013, orderDateTime#949014, planningStartDateTime#949015], false
(625) RepartitionByExpression
Arguments: [product#949012, plant#949013], 37
(626) Project
Arguments: [product#949012, plant#949013, orderDateTime#949014]
(627) LogicalRelation
Arguments: parquet, [systemId#949016, internalUUID#949017, plant#949018, product#949019, blockedForReplenishmentStartingFrom#949020, productionAspect#949021, salesPlant#949022, listing#949023, sourceOfSupplyCategory#949024], false
(628) Repartition
Arguments: 37, true
(629) Project
Arguments: [systemId#949016, internalUUID#949017, plant#949018, product#949019, blockedForReplenishmentStartingFrom#949020, productionAspect#949021, salesPlant#949022, listing#949023, sourceOfSupplyCategory#949024, struct(systemId, systemId#949016, internalUUID, internalUUID#949017, plant, plant#949018, product, product#949019, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949020, productionAspect, productionAspect#949021, salesPlant, salesPlant#949022, listing, listing#949023, sourceOfSupplyCategory, sourceOfSupplyCategory#949024) AS productPlant#949025]
(630) Project
Arguments: [productPlant#949025]
(631) Join
Arguments: LeftOuter, ((product#949012 <=> productPlant#949025.product.internalRefUUID) AND (plant#949013 <=> productPlant#949025.plant.internalRefUUID))
(632) Project
Arguments: [product#949012, plant#949013, orderDateTime#949014, productPlant#949025]
(633) LogicalRelation
Arguments: parquet, [systemId#949026, internalUUID#949027, id#949028, displayId#949029, name#949030, baseUnitOfMeasure#949031, unitOfMeasures#949032, unitOfMeasureConversions#949033, productionAspect#949034, salesAspect#949035, procurementAspect#949036, productGroup#949037], false
(634) Repartition
Arguments: 37, true
(635) Join
Arguments: LeftOuter, (product#949012 = internalUUID#949027)
(636) Project
Arguments: [product#949012, plant#949013, orderDateTime#949014, productPlant#949025, systemId#949026, internalUUID#949027, id#949028, displayId#949029, name#949030, baseUnitOfMeasure#949031, unitOfMeasures#949032, unitOfMeasureConversions#949033, productionAspect#949034, salesAspect#949035, procurementAspect#949036, productGroup#949037, filter(unitOfMeasureConversions#949033, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949025.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949025.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949031.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949031.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949038]
(637) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949038.quantityNumerator), true, [quantityNumerator#949039]
(638) Project
Arguments: [product#949012, plant#949013, orderDateTime#949014, productPlant#949025, systemId#949026, internalUUID#949027, id#949028, displayId#949029, name#949030, baseUnitOfMeasure#949031, unitOfMeasures#949032, unitOfMeasureConversions#949033, productionAspect#949034, salesAspect#949035, procurementAspect#949036, productGroup#949037, filteredUnitOfMeasureConversions#949038, quantityNumerator#949039]
(639) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949038.quantityDenominator), true, [quantityDenominator#949040]
(640) Project
Arguments: [product#949012, plant#949013, orderDateTime#949014, productPlant#949025, systemId#949026, internalUUID#949027, id#949028, displayId#949029, name#949030, baseUnitOfMeasure#949031, unitOfMeasures#949032, unitOfMeasureConversions#949033, productionAspect#949034, salesAspect#949035, procurementAspect#949036, productGroup#949037, filteredUnitOfMeasureConversions#949038, quantityNumerator#949039, quantityDenominator#949040]
(641) Project
Arguments: [product#949012, plant#949013, orderDateTime#949014, productPlant#949025, systemId#949026, internalUUID#949027, id#949028, displayId#949029, name#949030, baseUnitOfMeasure#949031, unitOfMeasures#949032, unitOfMeasureConversions#949033, productionAspect#949034, salesAspect#949035, procurementAspect#949036, productGroup#949037, filteredUnitOfMeasureConversions#949038, quantityNumerator#949039, quantityDenominator#949040, (cast(quantityNumerator#949039 as double) / cast(quantityDenominator#949040 as double)) AS outboundUnit#949041]
(642) Project
Arguments: [product#949012, plant#949013, orderDateTime#949014, productPlant#949025, systemId#949026, internalUUID#949027, id#949028, displayId#949029, name#949030, baseUnitOfMeasure#949031, unitOfMeasures#949032, unitOfMeasureConversions#949033, productionAspect#949034, salesAspect#949035, procurementAspect#949036, productGroup#949037, filteredUnitOfMeasureConversions#949038, quantityNumerator#949039, quantityDenominator#949040, CASE WHEN (isnull(outboundUnit#949041) OR (outboundUnit#949041 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#949041 END AS outboundUnit#949042]
(643) Project
Arguments: [product#949012, plant#949013, orderDateTime#949014, productPlant#949025, outboundUnit#949042]
(644) Project
Arguments: [plant#949013]
(645) Deduplicate
Arguments: [plant#949013]
(646) Join
Arguments: Inner, (plantUuid#949009 = plant#949013)
(647) Project
Arguments: [plantId#949008, plantUuid#949009, storageLocId#949010, storageLocUuid#949011]
(648) Join
Arguments: Inner, (plant#948982.internalRefUUID <=> plantUuid#949009)
(649) Generate
Arguments: explode(filter(stockQuantities#948984, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#949011) AND (lambda x#944569.storageLocation.Id = storageLocId#949010)), lambda x#944569, false))), false, [stockQuantity#949043]
(650) Project
Arguments: [systemId#948979, internalUUID#948980, product#948981, plant#948982, calculationDateTime#948983, stockQuantities#948984, plantId#949008, plantUuid#949009, storageLocId#949010, storageLocUuid#949011, stockQuantity#949043]
(651) Aggregate
Arguments: [plantUuid#949009, internalUUID#948980, plant#948982, product#948981, systemId#948979], [plantUuid#949009, internalUUID#948980, plant#948982, product#948981, systemId#948979, first(calculationDateTime#948983, false) AS calculationDateTime#949044, collect_list(stockQuantity#949043, 0, 0) AS stockQuantities#949045]
(652) Project
Arguments: [systemId#948979, internalUUID#948980, product#948981, plant#948982, calculationDateTime#949044, stockQuantities#949045]
(653) Generate
Arguments: explode(stockQuantities#949045), false, [stockQuantity#949046]
(654) Project
Arguments: [systemId#948979, internalUUID#948980, product#948981, plant#948982, calculationDateTime#949044, stockQuantities#949045, stockQuantity#949046]
(655) Project
Arguments: [plant#948982.id AS plant#949047, plant#948982.internalRefUUID AS plantUuid#949048, product#948981.id AS product#949049, product#948981.internalRefUUID AS productUuid#949050, calculationDateTime#949044, stockQuantity#949046.storagelocation.id AS storageLocId#949051, stockQuantity#949046.storagelocation.internalRefUUID AS storageLocUuid#949052, stockQuantity#949046.quantity.measure AS quantity#949053, stockQuantity#949046.specialStockIndicator.code AS specialStockIndicator#949054, stockQuantity#949046.stockType.code AS stockType#949055]
(656) Filter
Arguments: ((specialStockIndicator#949054 = ) AND (stockType#949055 = 01))
(657) LogicalRelation
Arguments: parquet, [product#949056, plant#949057, orderDateTime#949058, planningStartDateTime#949059], false
(658) RepartitionByExpression
Arguments: [product#949056, plant#949057], 37
(659) Project
Arguments: [product#949056, plant#949057, orderDateTime#949058]
(660) LogicalRelation
Arguments: parquet, [systemId#949060, internalUUID#949061, plant#949062, product#949063, blockedForReplenishmentStartingFrom#949064, productionAspect#949065, salesPlant#949066, listing#949067, sourceOfSupplyCategory#949068], false
(661) Repartition
Arguments: 37, true
(662) Project
Arguments: [systemId#949060, internalUUID#949061, plant#949062, product#949063, blockedForReplenishmentStartingFrom#949064, productionAspect#949065, salesPlant#949066, listing#949067, sourceOfSupplyCategory#949068, struct(systemId, systemId#949060, internalUUID, internalUUID#949061, plant, plant#949062, product, product#949063, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949064, productionAspect, productionAspect#949065, salesPlant, salesPlant#949066, listing, listing#949067, sourceOfSupplyCategory, sourceOfSupplyCategory#949068) AS productPlant#949069]
(663) Project
Arguments: [productPlant#949069]
(664) Join
Arguments: LeftOuter, ((product#949056 <=> productPlant#949069.product.internalRefUUID) AND (plant#949057 <=> productPlant#949069.plant.internalRefUUID))
(665) Project
Arguments: [product#949056, plant#949057, orderDateTime#949058, productPlant#949069]
(666) LogicalRelation
Arguments: parquet, [systemId#949070, internalUUID#949071, id#949072, displayId#949073, name#949074, baseUnitOfMeasure#949075, unitOfMeasures#949076, unitOfMeasureConversions#949077, productionAspect#949078, salesAspect#949079, procurementAspect#949080, productGroup#949081], false
(667) Repartition
Arguments: 37, true
(668) Join
Arguments: LeftOuter, (product#949056 = internalUUID#949071)
(669) Project
Arguments: [product#949056, plant#949057, orderDateTime#949058, productPlant#949069, systemId#949070, internalUUID#949071, id#949072, displayId#949073, name#949074, baseUnitOfMeasure#949075, unitOfMeasures#949076, unitOfMeasureConversions#949077, productionAspect#949078, salesAspect#949079, procurementAspect#949080, productGroup#949081, filter(unitOfMeasureConversions#949077, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949069.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949069.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949075.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949075.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949082]
(670) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949082.quantityNumerator), true, [quantityNumerator#949083]
(671) Project
Arguments: [product#949056, plant#949057, orderDateTime#949058, productPlant#949069, systemId#949070, internalUUID#949071, id#949072, displayId#949073, name#949074, baseUnitOfMeasure#949075, unitOfMeasures#949076, unitOfMeasureConversions#949077, productionAspect#949078, salesAspect#949079, procurementAspect#949080, productGroup#949081, filteredUnitOfMeasureConversions#949082, quantityNumerator#949083]
(672) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949082.quantityDenominator), true, [quantityDenominator#949084]
(673) Project
Arguments: [product#949056, plant#949057, orderDateTime#949058, productPlant#949069, systemId#949070, internalUUID#949071, id#949072, displayId#949073, name#949074, baseUnitOfMeasure#949075, unitOfMeasures#949076, unitOfMeasureConversions#949077, productionAspect#949078, salesAspect#949079, procurementAspect#949080, productGroup#949081, filteredUnitOfMeasureConversions#949082, quantityNumerator#949083, quantityDenominator#949084]
(674) Project
Arguments: [product#949056, plant#949057, orderDateTime#949058, productPlant#949069, systemId#949070, internalUUID#949071, id#949072, displayId#949073, name#949074, baseUnitOfMeasure#949075, unitOfMeasures#949076, unitOfMeasureConversions#949077, productionAspect#949078, salesAspect#949079, procurementAspect#949080, productGroup#949081, filteredUnitOfMeasureConversions#949082, quantityNumerator#949083, quantityDenominator#949084, (cast(quantityNumerator#949083 as double) / cast(quantityDenominator#949084 as double)) AS outboundUnit#949085]
(675) Project
Arguments: [product#949056, plant#949057, orderDateTime#949058, productPlant#949069, systemId#949070, internalUUID#949071, id#949072, displayId#949073, name#949074, baseUnitOfMeasure#949075, unitOfMeasures#949076, unitOfMeasureConversions#949077, productionAspect#949078, salesAspect#949079, procurementAspect#949080, productGroup#949081, filteredUnitOfMeasureConversions#949082, quantityNumerator#949083, quantityDenominator#949084, CASE WHEN (isnull(outboundUnit#949085) OR (outboundUnit#949085 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#949085 END AS outboundUnit#949086]
(676) Project
Arguments: [product#949056, plant#949057, orderDateTime#949058, productPlant#949069, outboundUnit#949086]
(677) Join
Arguments: Inner, ((plantUuid#949048 = plant#949057) AND (productUuid#949050 = product#949056))
(678) Filter
Arguments: (calculationDateTime#949044 <= orderDateTime#949058)
(679) Project
Arguments: [plantUuid#949048 AS plant#949087, productUuid#949050 AS product#949088, storageLocId#949051, calculationDateTime#949044, quantity#949053]
(680) Aggregate
Arguments: [plant#949087, product#949088, storageLocId#949051], [plant#949087, product#949088, storageLocId#949051, max(calculationDateTime#949044) AS max_calc_datetime#949089]
(681) Join
Arguments: Inner, ((((plant#948977 <=> plant#949087) AND (product#948978 <=> product#949088)) AND (storageLocId#948941 <=> storageLocId#949051)) AND (calculationDateTime#948934 <=> max_calc_datetime#949089))
(682) Project
Arguments: [plant#948977, product#948978, storageLocId#948941, calculationDateTime#948934, quantity#948943]
(683) Aggregate
Arguments: [product#948978, plant#948977], [product#948978, plant#948977, sum(quantity#948943) AS quantitySum#949090, min(calculationDateTime#948934) AS minCalculationDateTime#949091]
(684) Project
Arguments: [product#948978, plant#948977, quantitySum#949090, minCalculationDateTime#949091, round(quantitySum#949090, 0) AS roundedQuantitySum#949092]
(685) Join
Arguments: LeftOuter, ((plant#948839 = plant#948977) AND (product#948838 = product#948978))
(686) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, outboundUnit#948868, roundedQuantitySum#949092, minCalculationDateTime#949091]
(687) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, outboundUnit#948868, roundedQuantitySum#949092, minCalculationDateTime#949091, CASE WHEN isnotnull(minCalculationDateTime#949091) THEN minCalculationDateTime#949091 ELSE orderDateTime#948840 END AS stockDatetime#949093]
(688) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, outboundUnit#948868, roundedQuantitySum#949092, minCalculationDateTime#949091, stockDatetime#949093, CASE WHEN isnotnull(roundedQuantitySum#949092) THEN array(roundedQuantitySum#949092) ELSE array(0.0) END AS stockBatchQuantities#949094]
(689) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, outboundUnit#948868, roundedQuantitySum#949092, minCalculationDateTime#949091, stockDatetime#949093, stockBatchQuantities#949094, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#949095]
(690) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, outboundUnit#948868, roundedQuantitySum#949092, stockDatetime#949093, stockBatchQuantities#949094, stockBatchShelfLifeEndDatetimes#949095]
(691) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, outboundUnit#948868, stockDatetime#949093, stockBatchQuantities#949094, stockBatchShelfLifeEndDatetimes#949095]
(692) LogicalRelation
Arguments: parquet, [product#949096, plant#949097, demandChannel#949098, demandStream#949099, considerVariance#949100, demandTimeBuckets#949101, demandPointInTimeStart#949102, demandPointInTimeEnd#949103, demandPointInTime#949104], false
(693) Join
Arguments: LeftOuter, ((plant#949097 <=> plant#948839) AND (product#949096 <=> product#948838))
(694) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, outboundUnit#948868, stockDatetime#949093, stockBatchQuantities#949094, stockBatchShelfLifeEndDatetimes#949095, product#949096, plant#949097, demandChannel#949098, demandStream#949099, considerVariance#949100, demandTimeBuckets#949101, demandPointInTimeStart#949102, demandPointInTimeEnd#949103, demandPointInTime#949104, CASE WHEN isnotnull(product#949096) THEN struct(demandChannel, demandChannel#949098, demandStream, demandStream#949099, considerVariance, considerVariance#949100, demandTimeBuckets, demandTimeBuckets#949101, demandPointInTimeStart, demandPointInTimeStart#949102, demandPointInTimeEnd, demandPointInTimeEnd#949103, demandPointInTime, demandPointInTime#949104) 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#949105]
(695) Aggregate
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, outboundUnit#948868, stockDatetime#949093, stockBatchQuantities#949094, stockBatchShelfLifeEndDatetimes#949095], [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, outboundUnit#948868, stockDatetime#949093, stockBatchQuantities#949094, stockBatchShelfLifeEndDatetimes#949095, collect_list(rawDemands#949105, 0, 0) AS rawDemands#949106]
(696) SubqueryAlias
Arguments: wl
(697) LogicalRelation
Arguments: parquet, [systemId#949107, internalUUID#949108, id#949109, displayId#949110, name#949111, category#949112, companyCode#949113, address#949114, mainDistributionChain#949115, mainPurchasingOrganization#949116, validPurchasingOrganizations#949117, productGroup#949118], false
(698) Repartition
Arguments: 37, true
(699) Project
Arguments: [systemId#949107, internalUUID#949108, id#949109, displayId#949110, name#949111, category#949112, companyCode#949113, address#949114, mainDistributionChain#949115, mainPurchasingOrganization#949116, validPurchasingOrganizations#949117, productGroup#949118, address#949114.timezone.code AS timezonecode#949119]
(700) Join
Arguments: LeftOuter, (plant#948839 <=> internalUUID#949108)
(701) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, outboundUnit#948868, stockDatetime#949093, stockBatchQuantities#949094, stockBatchShelfLifeEndDatetimes#949095, rawDemands#949106, systemId#949107, internalUUID#949108, id#949109, displayId#949110, name#949111, category#949112, companyCode#949113, address#949114, mainDistributionChain#949115, mainPurchasingOrganization#949116, validPurchasingOrganizations#949117, productGroup#949118, CASE WHEN isnotnull(timezonecode#949119) THEN timezonecode#949119 ELSE UTC END AS timezonecode#949120]
(702) Project
Arguments: [product#948838, plant#948839, orderDateTime#948840, productPlant#948851, outboundUnit#948868, stockDatetime#949093, stockBatchQuantities#949094, stockBatchShelfLifeEndDatetimes#949095, rawDemands#949106, timezonecode#949120]
(703) DeserializeToObject
Arguments: createexternalrow(invoke(product#948838.toString()), invoke(plant#948839.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#948840)), if (isnull(productPlant#948851)) null else createexternalrow(invoke(productPlant#948851.systemId.toString()), invoke(productPlant#948851.internalUUID.toString()), if (isnull(productPlant#948851.plant)) null else createexternalrow(invoke(productPlant#948851.plant.internalRefUUID.toString()), invoke(productPlant#948851.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#948851.product)) null else createexternalrow(invoke(productPlant#948851.product.internalRefUUID.toString()), invoke(productPlant#948851.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#948851.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#948851.productionAspect)) null else createexternalrow(if (isnull(productPlant#948851.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#948851.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#948851.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#948851.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#948851.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#948851.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#948851.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#948851.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#948851.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#948851.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#948851.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#948851.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#948851.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#948851.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#948851.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#948851.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#948851.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#948851.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#948851.salesPlant)) null else createexternalrow(if (isnull(productPlant#948851.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#948851.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#948851.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, 74989), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#948851.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#948851.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#948851.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#948851.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#948868)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#949093)), mapobjects(lambdavariable(MapObject, DoubleType, true, 74990), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 74990) as double))), stockBatchQuantities#949094, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 74991), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 74991) as timestamp)))), stockBatchShelfLifeEndDatetimes#949095, 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, 74992), 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, 74992))) 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, 74992).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, 74992).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, 74992).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).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, 74992).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, 74992).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, 74992).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).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, 74992).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#949106, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#949120.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(704) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, 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)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)], obj#945945: org.apache.spark.sql.Row
(705) 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#949121, 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#949122, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74980), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74980), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74981), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74981), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74982), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74982), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74983), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74983), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74984), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74984), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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#949123, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74986), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74986), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74987), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74987), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74988), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74988), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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#949124]
(706) Join
Arguments: LeftOuter, ((plant#949122 <=> plant#948581) AND (product#949121 <=> product#948580))
(707) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, outboundUnit#948610, stockDatetime#948835, stockBatchQuantities#948836, stockBatchShelfLifeEndDatetimes#948837, plant#949122, dayBucketDemands#949123, pointInTimeDemands#949124]
(708) Project
Arguments: [product#948580, plant#948581, orderDateTime#948582, productPlant#948593, outboundUnit#948610, stockDatetime#948835, stockBatchQuantities#948836, stockBatchShelfLifeEndDatetimes#948837, dayBucketDemands#949123, pointInTimeDemands#949124]
(709) LogicalRelation
Arguments: parquet, [marketUnit#946289, description#946290, articleHierarchy#946291, defaultCurrency#946292, responsibilities#946293, replenishmentTypes#946294, distributionCenters#946295, assignedArticleHierarchyNodes#946296, minOrderQtySetting#946297, listingCheck#946298, odsSelection#946299, demandProfiles#946300, constraintProfiles#946301, optimizationProfiles#946302, orderGroupSplitProfiles#946303, supplierMinimumProfiles#946304, multipleRestrictionProfiles#946305, preferredUomSource#946306, handlingOfUnfulfilledDemands#946307, negligibleQuantitiesThreshold#946308, eventtype#946309], false
(710) Repartition
Arguments: 37, true
(711) Filter
Arguments: (marketUnit#946289 <=> IW_MU_CRP-125444_1)
(712) Project
Arguments: [marketUnit#946289, description#946290, articleHierarchy#946291, defaultCurrency#946292, responsibilities#946293, replenishmentTypes#946294, distributionCenters#946295, assignedArticleHierarchyNodes#946296, minOrderQtySetting#946297, listingCheck#946298, odsSelection#946299, demandProfiles#946300, constraintProfiles#946301, optimizationProfiles#946302, orderGroupSplitProfiles#946303, supplierMinimumProfiles#946304, multipleRestrictionProfiles#946305, preferredUomSource#946306, handlingOfUnfulfilledDemands#946307, negligibleQuantitiesThreshold#946308, eventtype#946309]
(713) Project
Arguments: [distributionCenters#946295]
(714) Generate
Arguments: explode(distributionCenters#946295), false, [distributionCenters#946310]
(715) Project
Arguments: [distributionCenters#946310]
(716) Generate
Arguments: explode(distributionCenters#946310.storageLocations), false, [storageLocations#946311]
(717) Project
Arguments: [distributionCenters#946310.id AS plantId#946312, distributionCenters#946310.internalRefUUID AS plantUuid#946313, storageLocations#946311]
(718) Project
Arguments: [plantId#946312, plantUuid#946313, storageLocations#946311.id AS storageLocId#946314, storageLocations#946311.internalRefUUID AS storageLocUuid#946315]
(719) LogicalRelation
Arguments: parquet, [product#946316, plant#946317, orderDateTime#946318, planningStartDateTime#946319], false
(720) RepartitionByExpression
Arguments: [product#946316, plant#946317], 37
(721) Project
Arguments: [product#946316, plant#946317, orderDateTime#946318]
(722) LogicalRelation
Arguments: parquet, [systemId#946320, internalUUID#946321, plant#946322, product#946323, blockedForReplenishmentStartingFrom#946324, productionAspect#946325, salesPlant#946326, listing#946327, sourceOfSupplyCategory#946328], false
(723) Repartition
Arguments: 37, true
(724) Project
Arguments: [systemId#946320, internalUUID#946321, plant#946322, product#946323, blockedForReplenishmentStartingFrom#946324, productionAspect#946325, salesPlant#946326, listing#946327, sourceOfSupplyCategory#946328, struct(systemId, systemId#946320, internalUUID, internalUUID#946321, plant, plant#946322, product, product#946323, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#946324, productionAspect, productionAspect#946325, salesPlant, salesPlant#946326, listing, listing#946327, sourceOfSupplyCategory, sourceOfSupplyCategory#946328) AS productPlant#946329]
(725) Project
Arguments: [productPlant#946329]
(726) Join
Arguments: LeftOuter, ((product#946316 <=> productPlant#946329.product.internalRefUUID) AND (plant#946317 <=> productPlant#946329.plant.internalRefUUID))
(727) Project
Arguments: [product#946316, plant#946317, orderDateTime#946318, productPlant#946329]
(728) LogicalRelation
Arguments: parquet, [systemId#946330, internalUUID#946331, id#946332, displayId#946333, name#946334, baseUnitOfMeasure#946335, unitOfMeasures#946336, unitOfMeasureConversions#946337, productionAspect#946338, salesAspect#946339, procurementAspect#946340, productGroup#946341], false
(729) Repartition
Arguments: 37, true
(730) Join
Arguments: LeftOuter, (product#946316 = internalUUID#946331)
(731) Project
Arguments: [product#946316, plant#946317, orderDateTime#946318, productPlant#946329, systemId#946330, internalUUID#946331, id#946332, displayId#946333, name#946334, baseUnitOfMeasure#946335, unitOfMeasures#946336, unitOfMeasureConversions#946337, productionAspect#946338, salesAspect#946339, procurementAspect#946340, productGroup#946341, filter(unitOfMeasureConversions#946337, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#946329.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#946329.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#946335.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#946335.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#946342]
(732) Generate
Arguments: explode(filteredUnitOfMeasureConversions#946342.quantityNumerator), true, [quantityNumerator#946343]
(733) Project
Arguments: [product#946316, plant#946317, orderDateTime#946318, productPlant#946329, systemId#946330, internalUUID#946331, id#946332, displayId#946333, name#946334, baseUnitOfMeasure#946335, unitOfMeasures#946336, unitOfMeasureConversions#946337, productionAspect#946338, salesAspect#946339, procurementAspect#946340, productGroup#946341, filteredUnitOfMeasureConversions#946342, quantityNumerator#946343]
(734) Generate
Arguments: explode(filteredUnitOfMeasureConversions#946342.quantityDenominator), true, [quantityDenominator#946344]
(735) Project
Arguments: [product#946316, plant#946317, orderDateTime#946318, productPlant#946329, systemId#946330, internalUUID#946331, id#946332, displayId#946333, name#946334, baseUnitOfMeasure#946335, unitOfMeasures#946336, unitOfMeasureConversions#946337, productionAspect#946338, salesAspect#946339, procurementAspect#946340, productGroup#946341, filteredUnitOfMeasureConversions#946342, quantityNumerator#946343, quantityDenominator#946344]
(736) Project
Arguments: [product#946316, plant#946317, orderDateTime#946318, productPlant#946329, systemId#946330, internalUUID#946331, id#946332, displayId#946333, name#946334, baseUnitOfMeasure#946335, unitOfMeasures#946336, unitOfMeasureConversions#946337, productionAspect#946338, salesAspect#946339, procurementAspect#946340, productGroup#946341, filteredUnitOfMeasureConversions#946342, quantityNumerator#946343, quantityDenominator#946344, (cast(quantityNumerator#946343 as double) / cast(quantityDenominator#946344 as double)) AS outboundUnit#946345]
(737) Project
Arguments: [product#946316, plant#946317, orderDateTime#946318, productPlant#946329, systemId#946330, internalUUID#946331, id#946332, displayId#946333, name#946334, baseUnitOfMeasure#946335, unitOfMeasures#946336, unitOfMeasureConversions#946337, productionAspect#946338, salesAspect#946339, procurementAspect#946340, productGroup#946341, filteredUnitOfMeasureConversions#946342, quantityNumerator#946343, quantityDenominator#946344, CASE WHEN (isnull(outboundUnit#946345) OR (outboundUnit#946345 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#946345 END AS outboundUnit#946346]
(738) Project
Arguments: [product#946316, plant#946317, orderDateTime#946318, productPlant#946329, outboundUnit#946346]
(739) Project
Arguments: [plant#946317]
(740) Deduplicate
Arguments: [plant#946317]
(741) Join
Arguments: Inner, (plantUuid#946313 = plant#946317)
(742) Project
Arguments: [plantId#946312, plantUuid#946313, storageLocId#946314, storageLocUuid#946315]
(743) Project
Arguments: [plantId#946312, plantUuid#946313 AS plant#946288, storageLocId#946314, storageLocUuid#946315]
(744) Join
Arguments: Inner, (plant#948581 = plant#946288)
(745) Project
Arguments: [plant#948581, product#948580, orderDateTime#948582, productPlant#948593, outboundUnit#948610, stockDatetime#948835, stockBatchQuantities#948836, stockBatchShelfLifeEndDatetimes#948837, dayBucketDemands#949123, pointInTimeDemands#949124, plantId#946312, storageLocId#946314, storageLocUuid#946315, plant#946288]
(746) LogicalRelation
Arguments: parquet, [systemId#946253, internalUUID#946254, id#946255, displayId#946256, supplier#946257, type#946258, status#946259, isMarkedForDeletion#946260, items#946261], false
(747) Repartition
Arguments: 37, true
(748) Generate
Arguments: explode(items#946261), false, [item#946265]
(749) Project
Arguments: [id#946255, internalUUID#946254, isMarkedForDeletion#946260, supplier#946257.internalRefUUID AS supplierUuid#946262, item#946265]
(750) Filter
Arguments: (((NOT isMarkedForDeletion#946260 AND NOT item#946265.deletionIndicator) AND NOT item#946265.completeIndicator) AND NOT item#946265.returnIndicator)
(751) Project
Arguments: [id#946255, internalUUID#946254, supplierUuid#946262, item#946265.plant.internalRefUUID AS plant#946270, item#946265.product.internalRefUUID AS product#946271, item#946265.storageLocation.internalRefUUID AS storageLocUuid#946272, item#946265.quantityUnit.code AS quantityUom#946273, item#946265.quantityUnit.internalRefUUID AS quantityUomUuid#946274, item#946265.quantityNumerator AS quantityNumerator#946275, item#946265.quantityDenominator AS quantityDenominator#946276, item#946265.scheduleLines AS scheduleLines#946277, item#946265.confirmations AS confirmations#946278]
(752) Join
Arguments: Inner, (((product#948580 = product#946271) AND (plant#948581 = plant#946270)) AND (storageLocUuid#946315 = storageLocUuid#946272))
(753) Project
Arguments: [product#948580, plant#948581, storageLocUuid#946315, orderDateTime#948582, productPlant#948593, outboundUnit#948610, stockDatetime#948835, stockBatchQuantities#948836, stockBatchShelfLifeEndDatetimes#948837, dayBucketDemands#949123, pointInTimeDemands#949124, plantId#946312, storageLocId#946314, id#946255, internalUUID#946254, supplierUuid#946262, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, product#946271, plant#946270, storageLocUuid#946272, ... 1 more fields]
(754) Project
Arguments: [id#946255, internalUUID#946254, supplierUuid#946262, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, stockDatetime#948835]
(755) Project
Arguments: [id#946255, internalUUID#946254, supplierUuid#946262, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, stockDatetime#948835, array_size(filter(confirmations#946278, lambdafunction((((lambda x_140#946362.deletionIndicator = false) AND (lambda x_140#946362.isRelevantForConfirmation = true)) AND isnotnull(lambda x_140#946362.confirmedDeliveryAt)), lambda x_140#946362, false))) AS _w0#946369]
(756) Window
Arguments: [sum(_w0#946369) windowspecdefinition(internalUUID#946254, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#946370L], [internalUUID#946254]
(757) Project
Arguments: [id#946255, internalUUID#946254, supplierUuid#946262, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, stockDatetime#948835, _w0#946369, _we0#946370L, filter(transform(CASE WHEN (_we0#946370L > cast(0 as bigint)) THEN transform(filter(confirmations#946278, lambdafunction((((lambda x_140#946363.deletionIndicator = false) AND (lambda x_140#946363.isRelevantForConfirmation = true)) AND isnotnull(lambda x_140#946363.confirmedDeliveryAt)), lambda x_140#946363, false)), lambdafunction(struct(openQty, greatest((lambda x_141#946366.confirmedQuantity - coalesce(lambda x_141#946366.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_141#946366.confirmedDeliveryAt), lambda x_141#946366, false)) ELSE transform(scheduleLines#946277, lambdafunction(struct(openQty, greatest((lambda x_139#946364.quantity - coalesce(lambda x_139#946364.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_139#946364.deliveryAt), lambda x_139#946364, false)) END, lambdafunction(struct(documentId, id#946255, documentUuid, internalUUID#946254, openQty, lambda x_142#946367.openQty, openQtyInBaseUnit, ((lambda x_142#946367.openQty * quantityNumerator#946275) / quantityDenominator#946276), qtyUom, quantityUom#946273, qtyUomUuid, quantityUomUuid#946274, availabilityDatetime, lambda x_142#946367.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_142#946367, false)), lambdafunction(NOT (lambda x_143#946368.openQty = 0.0), lambda x_143#946368, false)) AS openGoodsMovements#946361]
(758) Project
Arguments: [id#946255, internalUUID#946254, supplierUuid#946262, plant#946270, product#946271, storageLocUuid#946272, quantityUom#946273, quantityUomUuid#946274, quantityNumerator#946275, quantityDenominator#946276, scheduleLines#946277, confirmations#946278, stockDatetime#948835, openGoodsMovements#946361]
(759) Aggregate
Arguments: [product#946271, plant#946270], [product#946271, plant#946270, flatten(collect_list(openGoodsMovements#946361, 0, 0)) AS openGoodsMovements#946371]
(760) Filter
Arguments: (array_size(openGoodsMovements#946371) > 0)
(761) LogicalRelation
Arguments: parquet, [product#947969, plant#947970, orderDateTime#947971, planningStartDateTime#947972], false
(762) RepartitionByExpression
Arguments: [product#947969, plant#947970], 37
(763) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971]
(764) LogicalRelation
Arguments: parquet, [systemId#947973, internalUUID#947974, plant#947975, product#947976, blockedForReplenishmentStartingFrom#947977, productionAspect#947978, salesPlant#947979, listing#947980, sourceOfSupplyCategory#947981], false
(765) Repartition
Arguments: 37, true
(766) Project
Arguments: [systemId#947973, internalUUID#947974, plant#947975, product#947976, blockedForReplenishmentStartingFrom#947977, productionAspect#947978, salesPlant#947979, listing#947980, sourceOfSupplyCategory#947981, struct(systemId, systemId#947973, internalUUID, internalUUID#947974, plant, plant#947975, product, product#947976, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#947977, productionAspect, productionAspect#947978, salesPlant, salesPlant#947979, listing, listing#947980, sourceOfSupplyCategory, sourceOfSupplyCategory#947981) AS productPlant#947982]
(767) Project
Arguments: [productPlant#947982]
(768) Join
Arguments: LeftOuter, ((product#947969 <=> productPlant#947982.product.internalRefUUID) AND (plant#947970 <=> productPlant#947982.plant.internalRefUUID))
(769) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982]
(770) LogicalRelation
Arguments: parquet, [systemId#947983, internalUUID#947984, id#947985, displayId#947986, name#947987, baseUnitOfMeasure#947988, unitOfMeasures#947989, unitOfMeasureConversions#947990, productionAspect#947991, salesAspect#947992, procurementAspect#947993, productGroup#947994], false
(771) Repartition
Arguments: 37, true
(772) Join
Arguments: LeftOuter, (product#947969 = internalUUID#947984)
(773) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, systemId#947983, internalUUID#947984, id#947985, displayId#947986, name#947987, baseUnitOfMeasure#947988, unitOfMeasures#947989, unitOfMeasureConversions#947990, productionAspect#947991, salesAspect#947992, procurementAspect#947993, productGroup#947994, filter(unitOfMeasureConversions#947990, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#947982.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#947982.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#947988.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#947988.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#947995]
(774) Generate
Arguments: explode(filteredUnitOfMeasureConversions#947995.quantityNumerator), true, [quantityNumerator#947996]
(775) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, systemId#947983, internalUUID#947984, id#947985, displayId#947986, name#947987, baseUnitOfMeasure#947988, unitOfMeasures#947989, unitOfMeasureConversions#947990, productionAspect#947991, salesAspect#947992, procurementAspect#947993, productGroup#947994, filteredUnitOfMeasureConversions#947995, quantityNumerator#947996]
(776) Generate
Arguments: explode(filteredUnitOfMeasureConversions#947995.quantityDenominator), true, [quantityDenominator#947997]
(777) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, systemId#947983, internalUUID#947984, id#947985, displayId#947986, name#947987, baseUnitOfMeasure#947988, unitOfMeasures#947989, unitOfMeasureConversions#947990, productionAspect#947991, salesAspect#947992, procurementAspect#947993, productGroup#947994, filteredUnitOfMeasureConversions#947995, quantityNumerator#947996, quantityDenominator#947997]
(778) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, systemId#947983, internalUUID#947984, id#947985, displayId#947986, name#947987, baseUnitOfMeasure#947988, unitOfMeasures#947989, unitOfMeasureConversions#947990, productionAspect#947991, salesAspect#947992, procurementAspect#947993, productGroup#947994, filteredUnitOfMeasureConversions#947995, quantityNumerator#947996, quantityDenominator#947997, (cast(quantityNumerator#947996 as double) / cast(quantityDenominator#947997 as double)) AS outboundUnit#947998]
(779) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, systemId#947983, internalUUID#947984, id#947985, displayId#947986, name#947987, baseUnitOfMeasure#947988, unitOfMeasures#947989, unitOfMeasureConversions#947990, productionAspect#947991, salesAspect#947992, procurementAspect#947993, productGroup#947994, filteredUnitOfMeasureConversions#947995, quantityNumerator#947996, quantityDenominator#947997, CASE WHEN (isnull(outboundUnit#947998) OR (outboundUnit#947998 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#947998 END AS outboundUnit#947999]
(780) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, outboundUnit#947999]
(781) LogicalRelation
Arguments: parquet, [systemId#948000, internalUUID#948001, product#948002, plant#948003, calculationDateTime#948004, stockQuantities#948005], false
(782) Repartition
Arguments: 37, true
(783) LogicalRelation
Arguments: parquet, [marketUnit#948006, description#948007, articleHierarchy#948008, defaultCurrency#948009, responsibilities#948010, replenishmentTypes#948011, distributionCenters#948012, assignedArticleHierarchyNodes#948013, minOrderQtySetting#948014, listingCheck#948015, odsSelection#948016, demandProfiles#948017, constraintProfiles#948018, optimizationProfiles#948019, orderGroupSplitProfiles#948020, supplierMinimumProfiles#948021, multipleRestrictionProfiles#948022, preferredUomSource#948023, handlingOfUnfulfilledDemands#948024, negligibleQuantitiesThreshold#948025, eventtype#948026], false
(784) Repartition
Arguments: 37, true
(785) Filter
Arguments: (marketUnit#948006 <=> IW_MU_CRP-125444_1)
(786) Project
Arguments: [marketUnit#948006, description#948007, articleHierarchy#948008, defaultCurrency#948009, responsibilities#948010, replenishmentTypes#948011, distributionCenters#948012, assignedArticleHierarchyNodes#948013, minOrderQtySetting#948014, listingCheck#948015, odsSelection#948016, demandProfiles#948017, constraintProfiles#948018, optimizationProfiles#948019, orderGroupSplitProfiles#948020, supplierMinimumProfiles#948021, multipleRestrictionProfiles#948022, preferredUomSource#948023, handlingOfUnfulfilledDemands#948024, negligibleQuantitiesThreshold#948025, eventtype#948026]
(787) Project
Arguments: [distributionCenters#948012]
(788) Generate
Arguments: explode(distributionCenters#948012), false, [distributionCenters#948027]
(789) Project
Arguments: [distributionCenters#948027]
(790) Generate
Arguments: explode(distributionCenters#948027.storageLocations), false, [storageLocations#948028]
(791) Project
Arguments: [distributionCenters#948027.id AS plantId#948029, distributionCenters#948027.internalRefUUID AS plantUuid#948030, storageLocations#948028]
(792) Project
Arguments: [plantId#948029, plantUuid#948030, storageLocations#948028.id AS storageLocId#948031, storageLocations#948028.internalRefUUID AS storageLocUuid#948032]
(793) LogicalRelation
Arguments: parquet, [product#948033, plant#948034, orderDateTime#948035, planningStartDateTime#948036], false
(794) RepartitionByExpression
Arguments: [product#948033, plant#948034], 37
(795) Project
Arguments: [product#948033, plant#948034, orderDateTime#948035]
(796) LogicalRelation
Arguments: parquet, [systemId#948037, internalUUID#948038, plant#948039, product#948040, blockedForReplenishmentStartingFrom#948041, productionAspect#948042, salesPlant#948043, listing#948044, sourceOfSupplyCategory#948045], false
(797) Repartition
Arguments: 37, true
(798) Project
Arguments: [systemId#948037, internalUUID#948038, plant#948039, product#948040, blockedForReplenishmentStartingFrom#948041, productionAspect#948042, salesPlant#948043, listing#948044, sourceOfSupplyCategory#948045, struct(systemId, systemId#948037, internalUUID, internalUUID#948038, plant, plant#948039, product, product#948040, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948041, productionAspect, productionAspect#948042, salesPlant, salesPlant#948043, listing, listing#948044, sourceOfSupplyCategory, sourceOfSupplyCategory#948045) AS productPlant#948046]
(799) Project
Arguments: [productPlant#948046]
(800) Join
Arguments: LeftOuter, ((product#948033 <=> productPlant#948046.product.internalRefUUID) AND (plant#948034 <=> productPlant#948046.plant.internalRefUUID))
(801) Project
Arguments: [product#948033, plant#948034, orderDateTime#948035, productPlant#948046]
(802) LogicalRelation
Arguments: parquet, [systemId#948047, internalUUID#948048, id#948049, displayId#948050, name#948051, baseUnitOfMeasure#948052, unitOfMeasures#948053, unitOfMeasureConversions#948054, productionAspect#948055, salesAspect#948056, procurementAspect#948057, productGroup#948058], false
(803) Repartition
Arguments: 37, true
(804) Join
Arguments: LeftOuter, (product#948033 = internalUUID#948048)
(805) Project
Arguments: [product#948033, plant#948034, orderDateTime#948035, productPlant#948046, systemId#948047, internalUUID#948048, id#948049, displayId#948050, name#948051, baseUnitOfMeasure#948052, unitOfMeasures#948053, unitOfMeasureConversions#948054, productionAspect#948055, salesAspect#948056, procurementAspect#948057, productGroup#948058, filter(unitOfMeasureConversions#948054, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948046.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948046.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948052.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948052.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948059]
(806) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948059.quantityNumerator), true, [quantityNumerator#948060]
(807) Project
Arguments: [product#948033, plant#948034, orderDateTime#948035, productPlant#948046, systemId#948047, internalUUID#948048, id#948049, displayId#948050, name#948051, baseUnitOfMeasure#948052, unitOfMeasures#948053, unitOfMeasureConversions#948054, productionAspect#948055, salesAspect#948056, procurementAspect#948057, productGroup#948058, filteredUnitOfMeasureConversions#948059, quantityNumerator#948060]
(808) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948059.quantityDenominator), true, [quantityDenominator#948061]
(809) Project
Arguments: [product#948033, plant#948034, orderDateTime#948035, productPlant#948046, systemId#948047, internalUUID#948048, id#948049, displayId#948050, name#948051, baseUnitOfMeasure#948052, unitOfMeasures#948053, unitOfMeasureConversions#948054, productionAspect#948055, salesAspect#948056, procurementAspect#948057, productGroup#948058, filteredUnitOfMeasureConversions#948059, quantityNumerator#948060, quantityDenominator#948061]
(810) Project
Arguments: [product#948033, plant#948034, orderDateTime#948035, productPlant#948046, systemId#948047, internalUUID#948048, id#948049, displayId#948050, name#948051, baseUnitOfMeasure#948052, unitOfMeasures#948053, unitOfMeasureConversions#948054, productionAspect#948055, salesAspect#948056, procurementAspect#948057, productGroup#948058, filteredUnitOfMeasureConversions#948059, quantityNumerator#948060, quantityDenominator#948061, (cast(quantityNumerator#948060 as double) / cast(quantityDenominator#948061 as double)) AS outboundUnit#948062]
(811) Project
Arguments: [product#948033, plant#948034, orderDateTime#948035, productPlant#948046, systemId#948047, internalUUID#948048, id#948049, displayId#948050, name#948051, baseUnitOfMeasure#948052, unitOfMeasures#948053, unitOfMeasureConversions#948054, productionAspect#948055, salesAspect#948056, procurementAspect#948057, productGroup#948058, filteredUnitOfMeasureConversions#948059, quantityNumerator#948060, quantityDenominator#948061, CASE WHEN (isnull(outboundUnit#948062) OR (outboundUnit#948062 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948062 END AS outboundUnit#948063]
(812) Project
Arguments: [product#948033, plant#948034, orderDateTime#948035, productPlant#948046, outboundUnit#948063]
(813) Project
Arguments: [plant#948034]
(814) Deduplicate
Arguments: [plant#948034]
(815) Join
Arguments: Inner, (plantUuid#948030 = plant#948034)
(816) Project
Arguments: [plantId#948029, plantUuid#948030, storageLocId#948031, storageLocUuid#948032]
(817) Join
Arguments: Inner, (plant#948003.internalRefUUID <=> plantUuid#948030)
(818) Generate
Arguments: explode(filter(stockQuantities#948005, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#948032) AND (lambda x#944569.storageLocation.Id = storageLocId#948031)), lambda x#944569, false))), false, [stockQuantity#948064]
(819) Project
Arguments: [systemId#948000, internalUUID#948001, product#948002, plant#948003, calculationDateTime#948004, stockQuantities#948005, plantId#948029, plantUuid#948030, storageLocId#948031, storageLocUuid#948032, stockQuantity#948064]
(820) Aggregate
Arguments: [plantUuid#948030, internalUUID#948001, plant#948003, product#948002, systemId#948000], [plantUuid#948030, internalUUID#948001, plant#948003, product#948002, systemId#948000, first(calculationDateTime#948004, false) AS calculationDateTime#948065, collect_list(stockQuantity#948064, 0, 0) AS stockQuantities#948066]
(821) Project
Arguments: [systemId#948000, internalUUID#948001, product#948002, plant#948003, calculationDateTime#948065, stockQuantities#948066]
(822) Generate
Arguments: explode(stockQuantities#948066), false, [stockQuantity#948067]
(823) Project
Arguments: [systemId#948000, internalUUID#948001, product#948002, plant#948003, calculationDateTime#948065, stockQuantities#948066, stockQuantity#948067]
(824) Project
Arguments: [plant#948003.id AS plant#948068, plant#948003.internalRefUUID AS plantUuid#948069, product#948002.id AS product#948070, product#948002.internalRefUUID AS productUuid#948071, calculationDateTime#948065, stockQuantity#948067.storagelocation.id AS storageLocId#948072, stockQuantity#948067.storagelocation.internalRefUUID AS storageLocUuid#948073, stockQuantity#948067.quantity.measure AS quantity#948074, stockQuantity#948067.specialStockIndicator.code AS specialStockIndicator#948075, stockQuantity#948067.stockType.code AS stockType#948076]
(825) Filter
Arguments: ((specialStockIndicator#948075 = ) AND (stockType#948076 = 01))
(826) LogicalRelation
Arguments: parquet, [product#948077, plant#948078, orderDateTime#948079, planningStartDateTime#948080], false
(827) RepartitionByExpression
Arguments: [product#948077, plant#948078], 37
(828) Project
Arguments: [product#948077, plant#948078, orderDateTime#948079]
(829) LogicalRelation
Arguments: parquet, [systemId#948081, internalUUID#948082, plant#948083, product#948084, blockedForReplenishmentStartingFrom#948085, productionAspect#948086, salesPlant#948087, listing#948088, sourceOfSupplyCategory#948089], false
(830) Repartition
Arguments: 37, true
(831) Project
Arguments: [systemId#948081, internalUUID#948082, plant#948083, product#948084, blockedForReplenishmentStartingFrom#948085, productionAspect#948086, salesPlant#948087, listing#948088, sourceOfSupplyCategory#948089, struct(systemId, systemId#948081, internalUUID, internalUUID#948082, plant, plant#948083, product, product#948084, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948085, productionAspect, productionAspect#948086, salesPlant, salesPlant#948087, listing, listing#948088, sourceOfSupplyCategory, sourceOfSupplyCategory#948089) AS productPlant#948090]
(832) Project
Arguments: [productPlant#948090]
(833) Join
Arguments: LeftOuter, ((product#948077 <=> productPlant#948090.product.internalRefUUID) AND (plant#948078 <=> productPlant#948090.plant.internalRefUUID))
(834) Project
Arguments: [product#948077, plant#948078, orderDateTime#948079, productPlant#948090]
(835) LogicalRelation
Arguments: parquet, [systemId#948091, internalUUID#948092, id#948093, displayId#948094, name#948095, baseUnitOfMeasure#948096, unitOfMeasures#948097, unitOfMeasureConversions#948098, productionAspect#948099, salesAspect#948100, procurementAspect#948101, productGroup#948102], false
(836) Repartition
Arguments: 37, true
(837) Join
Arguments: LeftOuter, (product#948077 = internalUUID#948092)
(838) Project
Arguments: [product#948077, plant#948078, orderDateTime#948079, productPlant#948090, systemId#948091, internalUUID#948092, id#948093, displayId#948094, name#948095, baseUnitOfMeasure#948096, unitOfMeasures#948097, unitOfMeasureConversions#948098, productionAspect#948099, salesAspect#948100, procurementAspect#948101, productGroup#948102, filter(unitOfMeasureConversions#948098, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948090.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948090.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948096.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948096.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948103]
(839) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948103.quantityNumerator), true, [quantityNumerator#948104]
(840) Project
Arguments: [product#948077, plant#948078, orderDateTime#948079, productPlant#948090, systemId#948091, internalUUID#948092, id#948093, displayId#948094, name#948095, baseUnitOfMeasure#948096, unitOfMeasures#948097, unitOfMeasureConversions#948098, productionAspect#948099, salesAspect#948100, procurementAspect#948101, productGroup#948102, filteredUnitOfMeasureConversions#948103, quantityNumerator#948104]
(841) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948103.quantityDenominator), true, [quantityDenominator#948105]
(842) Project
Arguments: [product#948077, plant#948078, orderDateTime#948079, productPlant#948090, systemId#948091, internalUUID#948092, id#948093, displayId#948094, name#948095, baseUnitOfMeasure#948096, unitOfMeasures#948097, unitOfMeasureConversions#948098, productionAspect#948099, salesAspect#948100, procurementAspect#948101, productGroup#948102, filteredUnitOfMeasureConversions#948103, quantityNumerator#948104, quantityDenominator#948105]
(843) Project
Arguments: [product#948077, plant#948078, orderDateTime#948079, productPlant#948090, systemId#948091, internalUUID#948092, id#948093, displayId#948094, name#948095, baseUnitOfMeasure#948096, unitOfMeasures#948097, unitOfMeasureConversions#948098, productionAspect#948099, salesAspect#948100, procurementAspect#948101, productGroup#948102, filteredUnitOfMeasureConversions#948103, quantityNumerator#948104, quantityDenominator#948105, (cast(quantityNumerator#948104 as double) / cast(quantityDenominator#948105 as double)) AS outboundUnit#948106]
(844) Project
Arguments: [product#948077, plant#948078, orderDateTime#948079, productPlant#948090, systemId#948091, internalUUID#948092, id#948093, displayId#948094, name#948095, baseUnitOfMeasure#948096, unitOfMeasures#948097, unitOfMeasureConversions#948098, productionAspect#948099, salesAspect#948100, procurementAspect#948101, productGroup#948102, filteredUnitOfMeasureConversions#948103, quantityNumerator#948104, quantityDenominator#948105, CASE WHEN (isnull(outboundUnit#948106) OR (outboundUnit#948106 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948106 END AS outboundUnit#948107]
(845) Project
Arguments: [product#948077, plant#948078, orderDateTime#948079, productPlant#948090, outboundUnit#948107]
(846) Join
Arguments: Inner, ((plantUuid#948069 = plant#948078) AND (productUuid#948071 = product#948077))
(847) Filter
Arguments: (calculationDateTime#948065 <= orderDateTime#948079)
(848) Project
Arguments: [plantUuid#948069 AS plant#948108, productUuid#948071 AS product#948109, storageLocId#948072, calculationDateTime#948065, quantity#948074]
(849) LogicalRelation
Arguments: parquet, [systemId#948110, internalUUID#948111, product#948112, plant#948113, calculationDateTime#948114, stockQuantities#948115], false
(850) Repartition
Arguments: 37, true
(851) LogicalRelation
Arguments: parquet, [marketUnit#948116, description#948117, articleHierarchy#948118, defaultCurrency#948119, responsibilities#948120, replenishmentTypes#948121, distributionCenters#948122, assignedArticleHierarchyNodes#948123, minOrderQtySetting#948124, listingCheck#948125, odsSelection#948126, demandProfiles#948127, constraintProfiles#948128, optimizationProfiles#948129, orderGroupSplitProfiles#948130, supplierMinimumProfiles#948131, multipleRestrictionProfiles#948132, preferredUomSource#948133, handlingOfUnfulfilledDemands#948134, negligibleQuantitiesThreshold#948135, eventtype#948136], false
(852) Repartition
Arguments: 37, true
(853) Filter
Arguments: (marketUnit#948116 <=> IW_MU_CRP-125444_1)
(854) Project
Arguments: [marketUnit#948116, description#948117, articleHierarchy#948118, defaultCurrency#948119, responsibilities#948120, replenishmentTypes#948121, distributionCenters#948122, assignedArticleHierarchyNodes#948123, minOrderQtySetting#948124, listingCheck#948125, odsSelection#948126, demandProfiles#948127, constraintProfiles#948128, optimizationProfiles#948129, orderGroupSplitProfiles#948130, supplierMinimumProfiles#948131, multipleRestrictionProfiles#948132, preferredUomSource#948133, handlingOfUnfulfilledDemands#948134, negligibleQuantitiesThreshold#948135, eventtype#948136]
(855) Project
Arguments: [distributionCenters#948122]
(856) Generate
Arguments: explode(distributionCenters#948122), false, [distributionCenters#948137]
(857) Project
Arguments: [distributionCenters#948137]
(858) Generate
Arguments: explode(distributionCenters#948137.storageLocations), false, [storageLocations#948138]
(859) Project
Arguments: [distributionCenters#948137.id AS plantId#948139, distributionCenters#948137.internalRefUUID AS plantUuid#948140, storageLocations#948138]
(860) Project
Arguments: [plantId#948139, plantUuid#948140, storageLocations#948138.id AS storageLocId#948141, storageLocations#948138.internalRefUUID AS storageLocUuid#948142]
(861) LogicalRelation
Arguments: parquet, [product#948143, plant#948144, orderDateTime#948145, planningStartDateTime#948146], false
(862) RepartitionByExpression
Arguments: [product#948143, plant#948144], 37
(863) Project
Arguments: [product#948143, plant#948144, orderDateTime#948145]
(864) LogicalRelation
Arguments: parquet, [systemId#948147, internalUUID#948148, plant#948149, product#948150, blockedForReplenishmentStartingFrom#948151, productionAspect#948152, salesPlant#948153, listing#948154, sourceOfSupplyCategory#948155], false
(865) Repartition
Arguments: 37, true
(866) Project
Arguments: [systemId#948147, internalUUID#948148, plant#948149, product#948150, blockedForReplenishmentStartingFrom#948151, productionAspect#948152, salesPlant#948153, listing#948154, sourceOfSupplyCategory#948155, struct(systemId, systemId#948147, internalUUID, internalUUID#948148, plant, plant#948149, product, product#948150, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948151, productionAspect, productionAspect#948152, salesPlant, salesPlant#948153, listing, listing#948154, sourceOfSupplyCategory, sourceOfSupplyCategory#948155) AS productPlant#948156]
(867) Project
Arguments: [productPlant#948156]
(868) Join
Arguments: LeftOuter, ((product#948143 <=> productPlant#948156.product.internalRefUUID) AND (plant#948144 <=> productPlant#948156.plant.internalRefUUID))
(869) Project
Arguments: [product#948143, plant#948144, orderDateTime#948145, productPlant#948156]
(870) LogicalRelation
Arguments: parquet, [systemId#948157, internalUUID#948158, id#948159, displayId#948160, name#948161, baseUnitOfMeasure#948162, unitOfMeasures#948163, unitOfMeasureConversions#948164, productionAspect#948165, salesAspect#948166, procurementAspect#948167, productGroup#948168], false
(871) Repartition
Arguments: 37, true
(872) Join
Arguments: LeftOuter, (product#948143 = internalUUID#948158)
(873) Project
Arguments: [product#948143, plant#948144, orderDateTime#948145, productPlant#948156, systemId#948157, internalUUID#948158, id#948159, displayId#948160, name#948161, baseUnitOfMeasure#948162, unitOfMeasures#948163, unitOfMeasureConversions#948164, productionAspect#948165, salesAspect#948166, procurementAspect#948167, productGroup#948168, filter(unitOfMeasureConversions#948164, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948156.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948156.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948162.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948162.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948169]
(874) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948169.quantityNumerator), true, [quantityNumerator#948170]
(875) Project
Arguments: [product#948143, plant#948144, orderDateTime#948145, productPlant#948156, systemId#948157, internalUUID#948158, id#948159, displayId#948160, name#948161, baseUnitOfMeasure#948162, unitOfMeasures#948163, unitOfMeasureConversions#948164, productionAspect#948165, salesAspect#948166, procurementAspect#948167, productGroup#948168, filteredUnitOfMeasureConversions#948169, quantityNumerator#948170]
(876) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948169.quantityDenominator), true, [quantityDenominator#948171]
(877) Project
Arguments: [product#948143, plant#948144, orderDateTime#948145, productPlant#948156, systemId#948157, internalUUID#948158, id#948159, displayId#948160, name#948161, baseUnitOfMeasure#948162, unitOfMeasures#948163, unitOfMeasureConversions#948164, productionAspect#948165, salesAspect#948166, procurementAspect#948167, productGroup#948168, filteredUnitOfMeasureConversions#948169, quantityNumerator#948170, quantityDenominator#948171]
(878) Project
Arguments: [product#948143, plant#948144, orderDateTime#948145, productPlant#948156, systemId#948157, internalUUID#948158, id#948159, displayId#948160, name#948161, baseUnitOfMeasure#948162, unitOfMeasures#948163, unitOfMeasureConversions#948164, productionAspect#948165, salesAspect#948166, procurementAspect#948167, productGroup#948168, filteredUnitOfMeasureConversions#948169, quantityNumerator#948170, quantityDenominator#948171, (cast(quantityNumerator#948170 as double) / cast(quantityDenominator#948171 as double)) AS outboundUnit#948172]
(879) Project
Arguments: [product#948143, plant#948144, orderDateTime#948145, productPlant#948156, systemId#948157, internalUUID#948158, id#948159, displayId#948160, name#948161, baseUnitOfMeasure#948162, unitOfMeasures#948163, unitOfMeasureConversions#948164, productionAspect#948165, salesAspect#948166, procurementAspect#948167, productGroup#948168, filteredUnitOfMeasureConversions#948169, quantityNumerator#948170, quantityDenominator#948171, CASE WHEN (isnull(outboundUnit#948172) OR (outboundUnit#948172 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948172 END AS outboundUnit#948173]
(880) Project
Arguments: [product#948143, plant#948144, orderDateTime#948145, productPlant#948156, outboundUnit#948173]
(881) Project
Arguments: [plant#948144]
(882) Deduplicate
Arguments: [plant#948144]
(883) Join
Arguments: Inner, (plantUuid#948140 = plant#948144)
(884) Project
Arguments: [plantId#948139, plantUuid#948140, storageLocId#948141, storageLocUuid#948142]
(885) Join
Arguments: Inner, (plant#948113.internalRefUUID <=> plantUuid#948140)
(886) Generate
Arguments: explode(filter(stockQuantities#948115, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#948142) AND (lambda x#944569.storageLocation.Id = storageLocId#948141)), lambda x#944569, false))), false, [stockQuantity#948174]
(887) Project
Arguments: [systemId#948110, internalUUID#948111, product#948112, plant#948113, calculationDateTime#948114, stockQuantities#948115, plantId#948139, plantUuid#948140, storageLocId#948141, storageLocUuid#948142, stockQuantity#948174]
(888) Aggregate
Arguments: [plantUuid#948140, internalUUID#948111, plant#948113, product#948112, systemId#948110], [plantUuid#948140, internalUUID#948111, plant#948113, product#948112, systemId#948110, first(calculationDateTime#948114, false) AS calculationDateTime#948175, collect_list(stockQuantity#948174, 0, 0) AS stockQuantities#948176]
(889) Project
Arguments: [systemId#948110, internalUUID#948111, product#948112, plant#948113, calculationDateTime#948175, stockQuantities#948176]
(890) Generate
Arguments: explode(stockQuantities#948176), false, [stockQuantity#948177]
(891) Project
Arguments: [systemId#948110, internalUUID#948111, product#948112, plant#948113, calculationDateTime#948175, stockQuantities#948176, stockQuantity#948177]
(892) Project
Arguments: [plant#948113.id AS plant#948178, plant#948113.internalRefUUID AS plantUuid#948179, product#948112.id AS product#948180, product#948112.internalRefUUID AS productUuid#948181, calculationDateTime#948175, stockQuantity#948177.storagelocation.id AS storageLocId#948182, stockQuantity#948177.storagelocation.internalRefUUID AS storageLocUuid#948183, stockQuantity#948177.quantity.measure AS quantity#948184, stockQuantity#948177.specialStockIndicator.code AS specialStockIndicator#948185, stockQuantity#948177.stockType.code AS stockType#948186]
(893) Filter
Arguments: ((specialStockIndicator#948185 = ) AND (stockType#948186 = 01))
(894) LogicalRelation
Arguments: parquet, [product#948187, plant#948188, orderDateTime#948189, planningStartDateTime#948190], false
(895) RepartitionByExpression
Arguments: [product#948187, plant#948188], 37
(896) Project
Arguments: [product#948187, plant#948188, orderDateTime#948189]
(897) LogicalRelation
Arguments: parquet, [systemId#948191, internalUUID#948192, plant#948193, product#948194, blockedForReplenishmentStartingFrom#948195, productionAspect#948196, salesPlant#948197, listing#948198, sourceOfSupplyCategory#948199], false
(898) Repartition
Arguments: 37, true
(899) Project
Arguments: [systemId#948191, internalUUID#948192, plant#948193, product#948194, blockedForReplenishmentStartingFrom#948195, productionAspect#948196, salesPlant#948197, listing#948198, sourceOfSupplyCategory#948199, struct(systemId, systemId#948191, internalUUID, internalUUID#948192, plant, plant#948193, product, product#948194, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948195, productionAspect, productionAspect#948196, salesPlant, salesPlant#948197, listing, listing#948198, sourceOfSupplyCategory, sourceOfSupplyCategory#948199) AS productPlant#948200]
(900) Project
Arguments: [productPlant#948200]
(901) Join
Arguments: LeftOuter, ((product#948187 <=> productPlant#948200.product.internalRefUUID) AND (plant#948188 <=> productPlant#948200.plant.internalRefUUID))
(902) Project
Arguments: [product#948187, plant#948188, orderDateTime#948189, productPlant#948200]
(903) LogicalRelation
Arguments: parquet, [systemId#948201, internalUUID#948202, id#948203, displayId#948204, name#948205, baseUnitOfMeasure#948206, unitOfMeasures#948207, unitOfMeasureConversions#948208, productionAspect#948209, salesAspect#948210, procurementAspect#948211, productGroup#948212], false
(904) Repartition
Arguments: 37, true
(905) Join
Arguments: LeftOuter, (product#948187 = internalUUID#948202)
(906) Project
Arguments: [product#948187, plant#948188, orderDateTime#948189, productPlant#948200, systemId#948201, internalUUID#948202, id#948203, displayId#948204, name#948205, baseUnitOfMeasure#948206, unitOfMeasures#948207, unitOfMeasureConversions#948208, productionAspect#948209, salesAspect#948210, procurementAspect#948211, productGroup#948212, filter(unitOfMeasureConversions#948208, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948200.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948200.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948206.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948206.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948213]
(907) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948213.quantityNumerator), true, [quantityNumerator#948214]
(908) Project
Arguments: [product#948187, plant#948188, orderDateTime#948189, productPlant#948200, systemId#948201, internalUUID#948202, id#948203, displayId#948204, name#948205, baseUnitOfMeasure#948206, unitOfMeasures#948207, unitOfMeasureConversions#948208, productionAspect#948209, salesAspect#948210, procurementAspect#948211, productGroup#948212, filteredUnitOfMeasureConversions#948213, quantityNumerator#948214]
(909) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948213.quantityDenominator), true, [quantityDenominator#948215]
(910) Project
Arguments: [product#948187, plant#948188, orderDateTime#948189, productPlant#948200, systemId#948201, internalUUID#948202, id#948203, displayId#948204, name#948205, baseUnitOfMeasure#948206, unitOfMeasures#948207, unitOfMeasureConversions#948208, productionAspect#948209, salesAspect#948210, procurementAspect#948211, productGroup#948212, filteredUnitOfMeasureConversions#948213, quantityNumerator#948214, quantityDenominator#948215]
(911) Project
Arguments: [product#948187, plant#948188, orderDateTime#948189, productPlant#948200, systemId#948201, internalUUID#948202, id#948203, displayId#948204, name#948205, baseUnitOfMeasure#948206, unitOfMeasures#948207, unitOfMeasureConversions#948208, productionAspect#948209, salesAspect#948210, procurementAspect#948211, productGroup#948212, filteredUnitOfMeasureConversions#948213, quantityNumerator#948214, quantityDenominator#948215, (cast(quantityNumerator#948214 as double) / cast(quantityDenominator#948215 as double)) AS outboundUnit#948216]
(912) Project
Arguments: [product#948187, plant#948188, orderDateTime#948189, productPlant#948200, systemId#948201, internalUUID#948202, id#948203, displayId#948204, name#948205, baseUnitOfMeasure#948206, unitOfMeasures#948207, unitOfMeasureConversions#948208, productionAspect#948209, salesAspect#948210, procurementAspect#948211, productGroup#948212, filteredUnitOfMeasureConversions#948213, quantityNumerator#948214, quantityDenominator#948215, CASE WHEN (isnull(outboundUnit#948216) OR (outboundUnit#948216 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948216 END AS outboundUnit#948217]
(913) Project
Arguments: [product#948187, plant#948188, orderDateTime#948189, productPlant#948200, outboundUnit#948217]
(914) Join
Arguments: Inner, ((plantUuid#948179 = plant#948188) AND (productUuid#948181 = product#948187))
(915) Filter
Arguments: (calculationDateTime#948175 <= orderDateTime#948189)
(916) Project
Arguments: [plantUuid#948179 AS plant#948218, productUuid#948181 AS product#948219, storageLocId#948182, calculationDateTime#948175, quantity#948184]
(917) Aggregate
Arguments: [plant#948218, product#948219, storageLocId#948182], [plant#948218, product#948219, storageLocId#948182, max(calculationDateTime#948175) AS max_calc_datetime#948220]
(918) Join
Arguments: Inner, ((((plant#948108 <=> plant#948218) AND (product#948109 <=> product#948219)) AND (storageLocId#948072 <=> storageLocId#948182)) AND (calculationDateTime#948065 <=> max_calc_datetime#948220))
(919) Project
Arguments: [plant#948108, product#948109, storageLocId#948072, calculationDateTime#948065, quantity#948074]
(920) Aggregate
Arguments: [product#948109, plant#948108], [product#948109, plant#948108, sum(quantity#948074) AS quantitySum#948221, min(calculationDateTime#948065) AS minCalculationDateTime#948222]
(921) Project
Arguments: [product#948109, plant#948108, quantitySum#948221, minCalculationDateTime#948222, round(quantitySum#948221, 0) AS roundedQuantitySum#948223]
(922) Join
Arguments: LeftOuter, ((plant#947970 = plant#948108) AND (product#947969 = product#948109))
(923) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, outboundUnit#947999, roundedQuantitySum#948223, minCalculationDateTime#948222]
(924) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, outboundUnit#947999, roundedQuantitySum#948223, minCalculationDateTime#948222, CASE WHEN isnotnull(minCalculationDateTime#948222) THEN minCalculationDateTime#948222 ELSE orderDateTime#947971 END AS stockDatetime#948224]
(925) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, outboundUnit#947999, roundedQuantitySum#948223, minCalculationDateTime#948222, stockDatetime#948224, CASE WHEN isnotnull(roundedQuantitySum#948223) THEN array(roundedQuantitySum#948223) ELSE array(0.0) END AS stockBatchQuantities#948225]
(926) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, outboundUnit#947999, roundedQuantitySum#948223, minCalculationDateTime#948222, stockDatetime#948224, stockBatchQuantities#948225, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#948226]
(927) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, outboundUnit#947999, roundedQuantitySum#948223, stockDatetime#948224, stockBatchQuantities#948225, stockBatchShelfLifeEndDatetimes#948226]
(928) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, outboundUnit#947999, stockDatetime#948224, stockBatchQuantities#948225, stockBatchShelfLifeEndDatetimes#948226]
(929) LogicalRelation
Arguments: parquet, [product#948227, plant#948228, orderDateTime#948229, planningStartDateTime#948230], false
(930) RepartitionByExpression
Arguments: [product#948227, plant#948228], 37
(931) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229]
(932) LogicalRelation
Arguments: parquet, [systemId#948231, internalUUID#948232, plant#948233, product#948234, blockedForReplenishmentStartingFrom#948235, productionAspect#948236, salesPlant#948237, listing#948238, sourceOfSupplyCategory#948239], false
(933) Repartition
Arguments: 37, true
(934) Project
Arguments: [systemId#948231, internalUUID#948232, plant#948233, product#948234, blockedForReplenishmentStartingFrom#948235, productionAspect#948236, salesPlant#948237, listing#948238, sourceOfSupplyCategory#948239, struct(systemId, systemId#948231, internalUUID, internalUUID#948232, plant, plant#948233, product, product#948234, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948235, productionAspect, productionAspect#948236, salesPlant, salesPlant#948237, listing, listing#948238, sourceOfSupplyCategory, sourceOfSupplyCategory#948239) AS productPlant#948240]
(935) Project
Arguments: [productPlant#948240]
(936) Join
Arguments: LeftOuter, ((product#948227 <=> productPlant#948240.product.internalRefUUID) AND (plant#948228 <=> productPlant#948240.plant.internalRefUUID))
(937) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240]
(938) LogicalRelation
Arguments: parquet, [systemId#948241, internalUUID#948242, id#948243, displayId#948244, name#948245, baseUnitOfMeasure#948246, unitOfMeasures#948247, unitOfMeasureConversions#948248, productionAspect#948249, salesAspect#948250, procurementAspect#948251, productGroup#948252], false
(939) Repartition
Arguments: 37, true
(940) Join
Arguments: LeftOuter, (product#948227 = internalUUID#948242)
(941) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, systemId#948241, internalUUID#948242, id#948243, displayId#948244, name#948245, baseUnitOfMeasure#948246, unitOfMeasures#948247, unitOfMeasureConversions#948248, productionAspect#948249, salesAspect#948250, procurementAspect#948251, productGroup#948252, filter(unitOfMeasureConversions#948248, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948240.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948240.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948246.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948246.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948253]
(942) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948253.quantityNumerator), true, [quantityNumerator#948254]
(943) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, systemId#948241, internalUUID#948242, id#948243, displayId#948244, name#948245, baseUnitOfMeasure#948246, unitOfMeasures#948247, unitOfMeasureConversions#948248, productionAspect#948249, salesAspect#948250, procurementAspect#948251, productGroup#948252, filteredUnitOfMeasureConversions#948253, quantityNumerator#948254]
(944) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948253.quantityDenominator), true, [quantityDenominator#948255]
(945) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, systemId#948241, internalUUID#948242, id#948243, displayId#948244, name#948245, baseUnitOfMeasure#948246, unitOfMeasures#948247, unitOfMeasureConversions#948248, productionAspect#948249, salesAspect#948250, procurementAspect#948251, productGroup#948252, filteredUnitOfMeasureConversions#948253, quantityNumerator#948254, quantityDenominator#948255]
(946) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, systemId#948241, internalUUID#948242, id#948243, displayId#948244, name#948245, baseUnitOfMeasure#948246, unitOfMeasures#948247, unitOfMeasureConversions#948248, productionAspect#948249, salesAspect#948250, procurementAspect#948251, productGroup#948252, filteredUnitOfMeasureConversions#948253, quantityNumerator#948254, quantityDenominator#948255, (cast(quantityNumerator#948254 as double) / cast(quantityDenominator#948255 as double)) AS outboundUnit#948256]
(947) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, systemId#948241, internalUUID#948242, id#948243, displayId#948244, name#948245, baseUnitOfMeasure#948246, unitOfMeasures#948247, unitOfMeasureConversions#948248, productionAspect#948249, salesAspect#948250, procurementAspect#948251, productGroup#948252, filteredUnitOfMeasureConversions#948253, quantityNumerator#948254, quantityDenominator#948255, CASE WHEN (isnull(outboundUnit#948256) OR (outboundUnit#948256 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948256 END AS outboundUnit#948257]
(948) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257]
(949) LogicalRelation
Arguments: parquet, [systemId#948258, internalUUID#948259, product#948260, plant#948261, calculationDateTime#948262, stockQuantities#948263], false
(950) Repartition
Arguments: 37, true
(951) LogicalRelation
Arguments: parquet, [marketUnit#948264, description#948265, articleHierarchy#948266, defaultCurrency#948267, responsibilities#948268, replenishmentTypes#948269, distributionCenters#948270, assignedArticleHierarchyNodes#948271, minOrderQtySetting#948272, listingCheck#948273, odsSelection#948274, demandProfiles#948275, constraintProfiles#948276, optimizationProfiles#948277, orderGroupSplitProfiles#948278, supplierMinimumProfiles#948279, multipleRestrictionProfiles#948280, preferredUomSource#948281, handlingOfUnfulfilledDemands#948282, negligibleQuantitiesThreshold#948283, eventtype#948284], false
(952) Repartition
Arguments: 37, true
(953) Filter
Arguments: (marketUnit#948264 <=> IW_MU_CRP-125444_1)
(954) Project
Arguments: [marketUnit#948264, description#948265, articleHierarchy#948266, defaultCurrency#948267, responsibilities#948268, replenishmentTypes#948269, distributionCenters#948270, assignedArticleHierarchyNodes#948271, minOrderQtySetting#948272, listingCheck#948273, odsSelection#948274, demandProfiles#948275, constraintProfiles#948276, optimizationProfiles#948277, orderGroupSplitProfiles#948278, supplierMinimumProfiles#948279, multipleRestrictionProfiles#948280, preferredUomSource#948281, handlingOfUnfulfilledDemands#948282, negligibleQuantitiesThreshold#948283, eventtype#948284]
(955) Project
Arguments: [distributionCenters#948270]
(956) Generate
Arguments: explode(distributionCenters#948270), false, [distributionCenters#948285]
(957) Project
Arguments: [distributionCenters#948285]
(958) Generate
Arguments: explode(distributionCenters#948285.storageLocations), false, [storageLocations#948286]
(959) Project
Arguments: [distributionCenters#948285.id AS plantId#948287, distributionCenters#948285.internalRefUUID AS plantUuid#948288, storageLocations#948286]
(960) Project
Arguments: [plantId#948287, plantUuid#948288, storageLocations#948286.id AS storageLocId#948289, storageLocations#948286.internalRefUUID AS storageLocUuid#948290]
(961) LogicalRelation
Arguments: parquet, [product#948291, plant#948292, orderDateTime#948293, planningStartDateTime#948294], false
(962) RepartitionByExpression
Arguments: [product#948291, plant#948292], 37
(963) Project
Arguments: [product#948291, plant#948292, orderDateTime#948293]
(964) LogicalRelation
Arguments: parquet, [systemId#948295, internalUUID#948296, plant#948297, product#948298, blockedForReplenishmentStartingFrom#948299, productionAspect#948300, salesPlant#948301, listing#948302, sourceOfSupplyCategory#948303], false
(965) Repartition
Arguments: 37, true
(966) Project
Arguments: [systemId#948295, internalUUID#948296, plant#948297, product#948298, blockedForReplenishmentStartingFrom#948299, productionAspect#948300, salesPlant#948301, listing#948302, sourceOfSupplyCategory#948303, struct(systemId, systemId#948295, internalUUID, internalUUID#948296, plant, plant#948297, product, product#948298, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948299, productionAspect, productionAspect#948300, salesPlant, salesPlant#948301, listing, listing#948302, sourceOfSupplyCategory, sourceOfSupplyCategory#948303) AS productPlant#948304]
(967) Project
Arguments: [productPlant#948304]
(968) Join
Arguments: LeftOuter, ((product#948291 <=> productPlant#948304.product.internalRefUUID) AND (plant#948292 <=> productPlant#948304.plant.internalRefUUID))
(969) Project
Arguments: [product#948291, plant#948292, orderDateTime#948293, productPlant#948304]
(970) LogicalRelation
Arguments: parquet, [systemId#948305, internalUUID#948306, id#948307, displayId#948308, name#948309, baseUnitOfMeasure#948310, unitOfMeasures#948311, unitOfMeasureConversions#948312, productionAspect#948313, salesAspect#948314, procurementAspect#948315, productGroup#948316], false
(971) Repartition
Arguments: 37, true
(972) Join
Arguments: LeftOuter, (product#948291 = internalUUID#948306)
(973) Project
Arguments: [product#948291, plant#948292, orderDateTime#948293, productPlant#948304, systemId#948305, internalUUID#948306, id#948307, displayId#948308, name#948309, baseUnitOfMeasure#948310, unitOfMeasures#948311, unitOfMeasureConversions#948312, productionAspect#948313, salesAspect#948314, procurementAspect#948315, productGroup#948316, filter(unitOfMeasureConversions#948312, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948304.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948304.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948310.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948310.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948317]
(974) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948317.quantityNumerator), true, [quantityNumerator#948318]
(975) Project
Arguments: [product#948291, plant#948292, orderDateTime#948293, productPlant#948304, systemId#948305, internalUUID#948306, id#948307, displayId#948308, name#948309, baseUnitOfMeasure#948310, unitOfMeasures#948311, unitOfMeasureConversions#948312, productionAspect#948313, salesAspect#948314, procurementAspect#948315, productGroup#948316, filteredUnitOfMeasureConversions#948317, quantityNumerator#948318]
(976) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948317.quantityDenominator), true, [quantityDenominator#948319]
(977) Project
Arguments: [product#948291, plant#948292, orderDateTime#948293, productPlant#948304, systemId#948305, internalUUID#948306, id#948307, displayId#948308, name#948309, baseUnitOfMeasure#948310, unitOfMeasures#948311, unitOfMeasureConversions#948312, productionAspect#948313, salesAspect#948314, procurementAspect#948315, productGroup#948316, filteredUnitOfMeasureConversions#948317, quantityNumerator#948318, quantityDenominator#948319]
(978) Project
Arguments: [product#948291, plant#948292, orderDateTime#948293, productPlant#948304, systemId#948305, internalUUID#948306, id#948307, displayId#948308, name#948309, baseUnitOfMeasure#948310, unitOfMeasures#948311, unitOfMeasureConversions#948312, productionAspect#948313, salesAspect#948314, procurementAspect#948315, productGroup#948316, filteredUnitOfMeasureConversions#948317, quantityNumerator#948318, quantityDenominator#948319, (cast(quantityNumerator#948318 as double) / cast(quantityDenominator#948319 as double)) AS outboundUnit#948320]
(979) Project
Arguments: [product#948291, plant#948292, orderDateTime#948293, productPlant#948304, systemId#948305, internalUUID#948306, id#948307, displayId#948308, name#948309, baseUnitOfMeasure#948310, unitOfMeasures#948311, unitOfMeasureConversions#948312, productionAspect#948313, salesAspect#948314, procurementAspect#948315, productGroup#948316, filteredUnitOfMeasureConversions#948317, quantityNumerator#948318, quantityDenominator#948319, CASE WHEN (isnull(outboundUnit#948320) OR (outboundUnit#948320 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948320 END AS outboundUnit#948321]
(980) Project
Arguments: [product#948291, plant#948292, orderDateTime#948293, productPlant#948304, outboundUnit#948321]
(981) Project
Arguments: [plant#948292]
(982) Deduplicate
Arguments: [plant#948292]
(983) Join
Arguments: Inner, (plantUuid#948288 = plant#948292)
(984) Project
Arguments: [plantId#948287, plantUuid#948288, storageLocId#948289, storageLocUuid#948290]
(985) Join
Arguments: Inner, (plant#948261.internalRefUUID <=> plantUuid#948288)
(986) Generate
Arguments: explode(filter(stockQuantities#948263, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#948290) AND (lambda x#944569.storageLocation.Id = storageLocId#948289)), lambda x#944569, false))), false, [stockQuantity#948322]
(987) Project
Arguments: [systemId#948258, internalUUID#948259, product#948260, plant#948261, calculationDateTime#948262, stockQuantities#948263, plantId#948287, plantUuid#948288, storageLocId#948289, storageLocUuid#948290, stockQuantity#948322]
(988) Aggregate
Arguments: [plantUuid#948288, internalUUID#948259, plant#948261, product#948260, systemId#948258], [plantUuid#948288, internalUUID#948259, plant#948261, product#948260, systemId#948258, first(calculationDateTime#948262, false) AS calculationDateTime#948323, collect_list(stockQuantity#948322, 0, 0) AS stockQuantities#948324]
(989) Project
Arguments: [systemId#948258, internalUUID#948259, product#948260, plant#948261, calculationDateTime#948323, stockQuantities#948324]
(990) Generate
Arguments: explode(stockQuantities#948324), false, [stockQuantity#948325]
(991) Project
Arguments: [systemId#948258, internalUUID#948259, product#948260, plant#948261, calculationDateTime#948323, stockQuantities#948324, stockQuantity#948325]
(992) Project
Arguments: [plant#948261.id AS plant#948326, plant#948261.internalRefUUID AS plantUuid#948327, product#948260.id AS product#948328, product#948260.internalRefUUID AS productUuid#948329, calculationDateTime#948323, stockQuantity#948325.storagelocation.id AS storageLocId#948330, stockQuantity#948325.storagelocation.internalRefUUID AS storageLocUuid#948331, stockQuantity#948325.quantity.measure AS quantity#948332, stockQuantity#948325.specialStockIndicator.code AS specialStockIndicator#948333, stockQuantity#948325.stockType.code AS stockType#948334]
(993) Filter
Arguments: ((specialStockIndicator#948333 = ) AND (stockType#948334 = 01))
(994) LogicalRelation
Arguments: parquet, [product#948335, plant#948336, orderDateTime#948337, planningStartDateTime#948338], false
(995) RepartitionByExpression
Arguments: [product#948335, plant#948336], 37
(996) Project
Arguments: [product#948335, plant#948336, orderDateTime#948337]
(997) LogicalRelation
Arguments: parquet, [systemId#948339, internalUUID#948340, plant#948341, product#948342, blockedForReplenishmentStartingFrom#948343, productionAspect#948344, salesPlant#948345, listing#948346, sourceOfSupplyCategory#948347], false
(998) Repartition
Arguments: 37, true
(999) Project
Arguments: [systemId#948339, internalUUID#948340, plant#948341, product#948342, blockedForReplenishmentStartingFrom#948343, productionAspect#948344, salesPlant#948345, listing#948346, sourceOfSupplyCategory#948347, struct(systemId, systemId#948339, internalUUID, internalUUID#948340, plant, plant#948341, product, product#948342, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948343, productionAspect, productionAspect#948344, salesPlant, salesPlant#948345, listing, listing#948346, sourceOfSupplyCategory, sourceOfSupplyCategory#948347) AS productPlant#948348]
(1000) Project
Arguments: [productPlant#948348]
(1001) Join
Arguments: LeftOuter, ((product#948335 <=> productPlant#948348.product.internalRefUUID) AND (plant#948336 <=> productPlant#948348.plant.internalRefUUID))
(1002) Project
Arguments: [product#948335, plant#948336, orderDateTime#948337, productPlant#948348]
(1003) LogicalRelation
Arguments: parquet, [systemId#948349, internalUUID#948350, id#948351, displayId#948352, name#948353, baseUnitOfMeasure#948354, unitOfMeasures#948355, unitOfMeasureConversions#948356, productionAspect#948357, salesAspect#948358, procurementAspect#948359, productGroup#948360], false
(1004) Repartition
Arguments: 37, true
(1005) Join
Arguments: LeftOuter, (product#948335 = internalUUID#948350)
(1006) Project
Arguments: [product#948335, plant#948336, orderDateTime#948337, productPlant#948348, systemId#948349, internalUUID#948350, id#948351, displayId#948352, name#948353, baseUnitOfMeasure#948354, unitOfMeasures#948355, unitOfMeasureConversions#948356, productionAspect#948357, salesAspect#948358, procurementAspect#948359, productGroup#948360, filter(unitOfMeasureConversions#948356, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948348.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948348.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948354.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948354.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948361]
(1007) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948361.quantityNumerator), true, [quantityNumerator#948362]
(1008) Project
Arguments: [product#948335, plant#948336, orderDateTime#948337, productPlant#948348, systemId#948349, internalUUID#948350, id#948351, displayId#948352, name#948353, baseUnitOfMeasure#948354, unitOfMeasures#948355, unitOfMeasureConversions#948356, productionAspect#948357, salesAspect#948358, procurementAspect#948359, productGroup#948360, filteredUnitOfMeasureConversions#948361, quantityNumerator#948362]
(1009) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948361.quantityDenominator), true, [quantityDenominator#948363]
(1010) Project
Arguments: [product#948335, plant#948336, orderDateTime#948337, productPlant#948348, systemId#948349, internalUUID#948350, id#948351, displayId#948352, name#948353, baseUnitOfMeasure#948354, unitOfMeasures#948355, unitOfMeasureConversions#948356, productionAspect#948357, salesAspect#948358, procurementAspect#948359, productGroup#948360, filteredUnitOfMeasureConversions#948361, quantityNumerator#948362, quantityDenominator#948363]
(1011) Project
Arguments: [product#948335, plant#948336, orderDateTime#948337, productPlant#948348, systemId#948349, internalUUID#948350, id#948351, displayId#948352, name#948353, baseUnitOfMeasure#948354, unitOfMeasures#948355, unitOfMeasureConversions#948356, productionAspect#948357, salesAspect#948358, procurementAspect#948359, productGroup#948360, filteredUnitOfMeasureConversions#948361, quantityNumerator#948362, quantityDenominator#948363, (cast(quantityNumerator#948362 as double) / cast(quantityDenominator#948363 as double)) AS outboundUnit#948364]
(1012) Project
Arguments: [product#948335, plant#948336, orderDateTime#948337, productPlant#948348, systemId#948349, internalUUID#948350, id#948351, displayId#948352, name#948353, baseUnitOfMeasure#948354, unitOfMeasures#948355, unitOfMeasureConversions#948356, productionAspect#948357, salesAspect#948358, procurementAspect#948359, productGroup#948360, filteredUnitOfMeasureConversions#948361, quantityNumerator#948362, quantityDenominator#948363, CASE WHEN (isnull(outboundUnit#948364) OR (outboundUnit#948364 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948364 END AS outboundUnit#948365]
(1013) Project
Arguments: [product#948335, plant#948336, orderDateTime#948337, productPlant#948348, outboundUnit#948365]
(1014) Join
Arguments: Inner, ((plantUuid#948327 = plant#948336) AND (productUuid#948329 = product#948335))
(1015) Filter
Arguments: (calculationDateTime#948323 <= orderDateTime#948337)
(1016) Project
Arguments: [plantUuid#948327 AS plant#948366, productUuid#948329 AS product#948367, storageLocId#948330, calculationDateTime#948323, quantity#948332]
(1017) LogicalRelation
Arguments: parquet, [systemId#948368, internalUUID#948369, product#948370, plant#948371, calculationDateTime#948372, stockQuantities#948373], false
(1018) Repartition
Arguments: 37, true
(1019) LogicalRelation
Arguments: parquet, [marketUnit#948374, description#948375, articleHierarchy#948376, defaultCurrency#948377, responsibilities#948378, replenishmentTypes#948379, distributionCenters#948380, assignedArticleHierarchyNodes#948381, minOrderQtySetting#948382, listingCheck#948383, odsSelection#948384, demandProfiles#948385, constraintProfiles#948386, optimizationProfiles#948387, orderGroupSplitProfiles#948388, supplierMinimumProfiles#948389, multipleRestrictionProfiles#948390, preferredUomSource#948391, handlingOfUnfulfilledDemands#948392, negligibleQuantitiesThreshold#948393, eventtype#948394], false
(1020) Repartition
Arguments: 37, true
(1021) Filter
Arguments: (marketUnit#948374 <=> IW_MU_CRP-125444_1)
(1022) Project
Arguments: [marketUnit#948374, description#948375, articleHierarchy#948376, defaultCurrency#948377, responsibilities#948378, replenishmentTypes#948379, distributionCenters#948380, assignedArticleHierarchyNodes#948381, minOrderQtySetting#948382, listingCheck#948383, odsSelection#948384, demandProfiles#948385, constraintProfiles#948386, optimizationProfiles#948387, orderGroupSplitProfiles#948388, supplierMinimumProfiles#948389, multipleRestrictionProfiles#948390, preferredUomSource#948391, handlingOfUnfulfilledDemands#948392, negligibleQuantitiesThreshold#948393, eventtype#948394]
(1023) Project
Arguments: [distributionCenters#948380]
(1024) Generate
Arguments: explode(distributionCenters#948380), false, [distributionCenters#948395]
(1025) Project
Arguments: [distributionCenters#948395]
(1026) Generate
Arguments: explode(distributionCenters#948395.storageLocations), false, [storageLocations#948396]
(1027) Project
Arguments: [distributionCenters#948395.id AS plantId#948397, distributionCenters#948395.internalRefUUID AS plantUuid#948398, storageLocations#948396]
(1028) Project
Arguments: [plantId#948397, plantUuid#948398, storageLocations#948396.id AS storageLocId#948399, storageLocations#948396.internalRefUUID AS storageLocUuid#948400]
(1029) LogicalRelation
Arguments: parquet, [product#948401, plant#948402, orderDateTime#948403, planningStartDateTime#948404], false
(1030) RepartitionByExpression
Arguments: [product#948401, plant#948402], 37
(1031) Project
Arguments: [product#948401, plant#948402, orderDateTime#948403]
(1032) LogicalRelation
Arguments: parquet, [systemId#948405, internalUUID#948406, plant#948407, product#948408, blockedForReplenishmentStartingFrom#948409, productionAspect#948410, salesPlant#948411, listing#948412, sourceOfSupplyCategory#948413], false
(1033) Repartition
Arguments: 37, true
(1034) Project
Arguments: [systemId#948405, internalUUID#948406, plant#948407, product#948408, blockedForReplenishmentStartingFrom#948409, productionAspect#948410, salesPlant#948411, listing#948412, sourceOfSupplyCategory#948413, struct(systemId, systemId#948405, internalUUID, internalUUID#948406, plant, plant#948407, product, product#948408, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948409, productionAspect, productionAspect#948410, salesPlant, salesPlant#948411, listing, listing#948412, sourceOfSupplyCategory, sourceOfSupplyCategory#948413) AS productPlant#948414]
(1035) Project
Arguments: [productPlant#948414]
(1036) Join
Arguments: LeftOuter, ((product#948401 <=> productPlant#948414.product.internalRefUUID) AND (plant#948402 <=> productPlant#948414.plant.internalRefUUID))
(1037) Project
Arguments: [product#948401, plant#948402, orderDateTime#948403, productPlant#948414]
(1038) LogicalRelation
Arguments: parquet, [systemId#948415, internalUUID#948416, id#948417, displayId#948418, name#948419, baseUnitOfMeasure#948420, unitOfMeasures#948421, unitOfMeasureConversions#948422, productionAspect#948423, salesAspect#948424, procurementAspect#948425, productGroup#948426], false
(1039) Repartition
Arguments: 37, true
(1040) Join
Arguments: LeftOuter, (product#948401 = internalUUID#948416)
(1041) Project
Arguments: [product#948401, plant#948402, orderDateTime#948403, productPlant#948414, systemId#948415, internalUUID#948416, id#948417, displayId#948418, name#948419, baseUnitOfMeasure#948420, unitOfMeasures#948421, unitOfMeasureConversions#948422, productionAspect#948423, salesAspect#948424, procurementAspect#948425, productGroup#948426, filter(unitOfMeasureConversions#948422, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948414.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948414.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948420.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948420.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948427]
(1042) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948427.quantityNumerator), true, [quantityNumerator#948428]
(1043) Project
Arguments: [product#948401, plant#948402, orderDateTime#948403, productPlant#948414, systemId#948415, internalUUID#948416, id#948417, displayId#948418, name#948419, baseUnitOfMeasure#948420, unitOfMeasures#948421, unitOfMeasureConversions#948422, productionAspect#948423, salesAspect#948424, procurementAspect#948425, productGroup#948426, filteredUnitOfMeasureConversions#948427, quantityNumerator#948428]
(1044) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948427.quantityDenominator), true, [quantityDenominator#948429]
(1045) Project
Arguments: [product#948401, plant#948402, orderDateTime#948403, productPlant#948414, systemId#948415, internalUUID#948416, id#948417, displayId#948418, name#948419, baseUnitOfMeasure#948420, unitOfMeasures#948421, unitOfMeasureConversions#948422, productionAspect#948423, salesAspect#948424, procurementAspect#948425, productGroup#948426, filteredUnitOfMeasureConversions#948427, quantityNumerator#948428, quantityDenominator#948429]
(1046) Project
Arguments: [product#948401, plant#948402, orderDateTime#948403, productPlant#948414, systemId#948415, internalUUID#948416, id#948417, displayId#948418, name#948419, baseUnitOfMeasure#948420, unitOfMeasures#948421, unitOfMeasureConversions#948422, productionAspect#948423, salesAspect#948424, procurementAspect#948425, productGroup#948426, filteredUnitOfMeasureConversions#948427, quantityNumerator#948428, quantityDenominator#948429, (cast(quantityNumerator#948428 as double) / cast(quantityDenominator#948429 as double)) AS outboundUnit#948430]
(1047) Project
Arguments: [product#948401, plant#948402, orderDateTime#948403, productPlant#948414, systemId#948415, internalUUID#948416, id#948417, displayId#948418, name#948419, baseUnitOfMeasure#948420, unitOfMeasures#948421, unitOfMeasureConversions#948422, productionAspect#948423, salesAspect#948424, procurementAspect#948425, productGroup#948426, filteredUnitOfMeasureConversions#948427, quantityNumerator#948428, quantityDenominator#948429, CASE WHEN (isnull(outboundUnit#948430) OR (outboundUnit#948430 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948430 END AS outboundUnit#948431]
(1048) Project
Arguments: [product#948401, plant#948402, orderDateTime#948403, productPlant#948414, outboundUnit#948431]
(1049) Project
Arguments: [plant#948402]
(1050) Deduplicate
Arguments: [plant#948402]
(1051) Join
Arguments: Inner, (plantUuid#948398 = plant#948402)
(1052) Project
Arguments: [plantId#948397, plantUuid#948398, storageLocId#948399, storageLocUuid#948400]
(1053) Join
Arguments: Inner, (plant#948371.internalRefUUID <=> plantUuid#948398)
(1054) Generate
Arguments: explode(filter(stockQuantities#948373, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#948400) AND (lambda x#944569.storageLocation.Id = storageLocId#948399)), lambda x#944569, false))), false, [stockQuantity#948432]
(1055) Project
Arguments: [systemId#948368, internalUUID#948369, product#948370, plant#948371, calculationDateTime#948372, stockQuantities#948373, plantId#948397, plantUuid#948398, storageLocId#948399, storageLocUuid#948400, stockQuantity#948432]
(1056) Aggregate
Arguments: [plantUuid#948398, internalUUID#948369, plant#948371, product#948370, systemId#948368], [plantUuid#948398, internalUUID#948369, plant#948371, product#948370, systemId#948368, first(calculationDateTime#948372, false) AS calculationDateTime#948433, collect_list(stockQuantity#948432, 0, 0) AS stockQuantities#948434]
(1057) Project
Arguments: [systemId#948368, internalUUID#948369, product#948370, plant#948371, calculationDateTime#948433, stockQuantities#948434]
(1058) Generate
Arguments: explode(stockQuantities#948434), false, [stockQuantity#948435]
(1059) Project
Arguments: [systemId#948368, internalUUID#948369, product#948370, plant#948371, calculationDateTime#948433, stockQuantities#948434, stockQuantity#948435]
(1060) Project
Arguments: [plant#948371.id AS plant#948436, plant#948371.internalRefUUID AS plantUuid#948437, product#948370.id AS product#948438, product#948370.internalRefUUID AS productUuid#948439, calculationDateTime#948433, stockQuantity#948435.storagelocation.id AS storageLocId#948440, stockQuantity#948435.storagelocation.internalRefUUID AS storageLocUuid#948441, stockQuantity#948435.quantity.measure AS quantity#948442, stockQuantity#948435.specialStockIndicator.code AS specialStockIndicator#948443, stockQuantity#948435.stockType.code AS stockType#948444]
(1061) Filter
Arguments: ((specialStockIndicator#948443 = ) AND (stockType#948444 = 01))
(1062) LogicalRelation
Arguments: parquet, [product#948445, plant#948446, orderDateTime#948447, planningStartDateTime#948448], false
(1063) RepartitionByExpression
Arguments: [product#948445, plant#948446], 37
(1064) Project
Arguments: [product#948445, plant#948446, orderDateTime#948447]
(1065) LogicalRelation
Arguments: parquet, [systemId#948449, internalUUID#948450, plant#948451, product#948452, blockedForReplenishmentStartingFrom#948453, productionAspect#948454, salesPlant#948455, listing#948456, sourceOfSupplyCategory#948457], false
(1066) Repartition
Arguments: 37, true
(1067) Project
Arguments: [systemId#948449, internalUUID#948450, plant#948451, product#948452, blockedForReplenishmentStartingFrom#948453, productionAspect#948454, salesPlant#948455, listing#948456, sourceOfSupplyCategory#948457, struct(systemId, systemId#948449, internalUUID, internalUUID#948450, plant, plant#948451, product, product#948452, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#948453, productionAspect, productionAspect#948454, salesPlant, salesPlant#948455, listing, listing#948456, sourceOfSupplyCategory, sourceOfSupplyCategory#948457) AS productPlant#948458]
(1068) Project
Arguments: [productPlant#948458]
(1069) Join
Arguments: LeftOuter, ((product#948445 <=> productPlant#948458.product.internalRefUUID) AND (plant#948446 <=> productPlant#948458.plant.internalRefUUID))
(1070) Project
Arguments: [product#948445, plant#948446, orderDateTime#948447, productPlant#948458]
(1071) LogicalRelation
Arguments: parquet, [systemId#948459, internalUUID#948460, id#948461, displayId#948462, name#948463, baseUnitOfMeasure#948464, unitOfMeasures#948465, unitOfMeasureConversions#948466, productionAspect#948467, salesAspect#948468, procurementAspect#948469, productGroup#948470], false
(1072) Repartition
Arguments: 37, true
(1073) Join
Arguments: LeftOuter, (product#948445 = internalUUID#948460)
(1074) Project
Arguments: [product#948445, plant#948446, orderDateTime#948447, productPlant#948458, systemId#948459, internalUUID#948460, id#948461, displayId#948462, name#948463, baseUnitOfMeasure#948464, unitOfMeasures#948465, unitOfMeasureConversions#948466, productionAspect#948467, salesAspect#948468, procurementAspect#948469, productGroup#948470, filter(unitOfMeasureConversions#948466, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#948458.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#948458.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#948464.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#948464.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#948471]
(1075) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948471.quantityNumerator), true, [quantityNumerator#948472]
(1076) Project
Arguments: [product#948445, plant#948446, orderDateTime#948447, productPlant#948458, systemId#948459, internalUUID#948460, id#948461, displayId#948462, name#948463, baseUnitOfMeasure#948464, unitOfMeasures#948465, unitOfMeasureConversions#948466, productionAspect#948467, salesAspect#948468, procurementAspect#948469, productGroup#948470, filteredUnitOfMeasureConversions#948471, quantityNumerator#948472]
(1077) Generate
Arguments: explode(filteredUnitOfMeasureConversions#948471.quantityDenominator), true, [quantityDenominator#948473]
(1078) Project
Arguments: [product#948445, plant#948446, orderDateTime#948447, productPlant#948458, systemId#948459, internalUUID#948460, id#948461, displayId#948462, name#948463, baseUnitOfMeasure#948464, unitOfMeasures#948465, unitOfMeasureConversions#948466, productionAspect#948467, salesAspect#948468, procurementAspect#948469, productGroup#948470, filteredUnitOfMeasureConversions#948471, quantityNumerator#948472, quantityDenominator#948473]
(1079) Project
Arguments: [product#948445, plant#948446, orderDateTime#948447, productPlant#948458, systemId#948459, internalUUID#948460, id#948461, displayId#948462, name#948463, baseUnitOfMeasure#948464, unitOfMeasures#948465, unitOfMeasureConversions#948466, productionAspect#948467, salesAspect#948468, procurementAspect#948469, productGroup#948470, filteredUnitOfMeasureConversions#948471, quantityNumerator#948472, quantityDenominator#948473, (cast(quantityNumerator#948472 as double) / cast(quantityDenominator#948473 as double)) AS outboundUnit#948474]
(1080) Project
Arguments: [product#948445, plant#948446, orderDateTime#948447, productPlant#948458, systemId#948459, internalUUID#948460, id#948461, displayId#948462, name#948463, baseUnitOfMeasure#948464, unitOfMeasures#948465, unitOfMeasureConversions#948466, productionAspect#948467, salesAspect#948468, procurementAspect#948469, productGroup#948470, filteredUnitOfMeasureConversions#948471, quantityNumerator#948472, quantityDenominator#948473, CASE WHEN (isnull(outboundUnit#948474) OR (outboundUnit#948474 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#948474 END AS outboundUnit#948475]
(1081) Project
Arguments: [product#948445, plant#948446, orderDateTime#948447, productPlant#948458, outboundUnit#948475]
(1082) Join
Arguments: Inner, ((plantUuid#948437 = plant#948446) AND (productUuid#948439 = product#948445))
(1083) Filter
Arguments: (calculationDateTime#948433 <= orderDateTime#948447)
(1084) Project
Arguments: [plantUuid#948437 AS plant#948476, productUuid#948439 AS product#948477, storageLocId#948440, calculationDateTime#948433, quantity#948442]
(1085) Aggregate
Arguments: [plant#948476, product#948477, storageLocId#948440], [plant#948476, product#948477, storageLocId#948440, max(calculationDateTime#948433) AS max_calc_datetime#948478]
(1086) Join
Arguments: Inner, ((((plant#948366 <=> plant#948476) AND (product#948367 <=> product#948477)) AND (storageLocId#948330 <=> storageLocId#948440)) AND (calculationDateTime#948323 <=> max_calc_datetime#948478))
(1087) Project
Arguments: [plant#948366, product#948367, storageLocId#948330, calculationDateTime#948323, quantity#948332]
(1088) Aggregate
Arguments: [product#948367, plant#948366], [product#948367, plant#948366, sum(quantity#948332) AS quantitySum#948479, min(calculationDateTime#948323) AS minCalculationDateTime#948480]
(1089) Project
Arguments: [product#948367, plant#948366, quantitySum#948479, minCalculationDateTime#948480, round(quantitySum#948479, 0) AS roundedQuantitySum#948481]
(1090) Join
Arguments: LeftOuter, ((plant#948228 = plant#948366) AND (product#948227 = product#948367))
(1091) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, roundedQuantitySum#948481, minCalculationDateTime#948480]
(1092) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, roundedQuantitySum#948481, minCalculationDateTime#948480, CASE WHEN isnotnull(minCalculationDateTime#948480) THEN minCalculationDateTime#948480 ELSE orderDateTime#948229 END AS stockDatetime#948482]
(1093) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, roundedQuantitySum#948481, minCalculationDateTime#948480, stockDatetime#948482, CASE WHEN isnotnull(roundedQuantitySum#948481) THEN array(roundedQuantitySum#948481) ELSE array(0.0) END AS stockBatchQuantities#948483]
(1094) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, roundedQuantitySum#948481, minCalculationDateTime#948480, stockDatetime#948482, stockBatchQuantities#948483, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#948484]
(1095) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, roundedQuantitySum#948481, stockDatetime#948482, stockBatchQuantities#948483, stockBatchShelfLifeEndDatetimes#948484]
(1096) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, stockBatchShelfLifeEndDatetimes#948484]
(1097) LogicalRelation
Arguments: parquet, [product#948485, plant#948486, demandChannel#948487, demandStream#948488, considerVariance#948489, demandTimeBuckets#948490, demandPointInTimeStart#948491, demandPointInTimeEnd#948492, demandPointInTime#948493], false
(1098) Join
Arguments: LeftOuter, ((plant#948486 <=> plant#948228) AND (product#948485 <=> product#948227))
(1099) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, stockBatchShelfLifeEndDatetimes#948484, product#948485, plant#948486, demandChannel#948487, demandStream#948488, considerVariance#948489, demandTimeBuckets#948490, demandPointInTimeStart#948491, demandPointInTimeEnd#948492, demandPointInTime#948493, CASE WHEN isnotnull(product#948485) THEN struct(demandChannel, demandChannel#948487, demandStream, demandStream#948488, considerVariance, considerVariance#948489, demandTimeBuckets, demandTimeBuckets#948490, demandPointInTimeStart, demandPointInTimeStart#948491, demandPointInTimeEnd, demandPointInTimeEnd#948492, demandPointInTime, demandPointInTime#948493) 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#948494]
(1100) Aggregate
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, stockBatchShelfLifeEndDatetimes#948484], [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, stockBatchShelfLifeEndDatetimes#948484, collect_list(rawDemands#948494, 0, 0) AS rawDemands#948495]
(1101) SubqueryAlias
Arguments: wl
(1102) LogicalRelation
Arguments: parquet, [systemId#948496, internalUUID#948497, id#948498, displayId#948499, name#948500, category#948501, companyCode#948502, address#948503, mainDistributionChain#948504, mainPurchasingOrganization#948505, validPurchasingOrganizations#948506, productGroup#948507], false
(1103) Repartition
Arguments: 37, true
(1104) Project
Arguments: [systemId#948496, internalUUID#948497, id#948498, displayId#948499, name#948500, category#948501, companyCode#948502, address#948503, mainDistributionChain#948504, mainPurchasingOrganization#948505, validPurchasingOrganizations#948506, productGroup#948507, address#948503.timezone.code AS timezonecode#948508]
(1105) Join
Arguments: LeftOuter, (plant#948228 <=> internalUUID#948497)
(1106) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, stockBatchShelfLifeEndDatetimes#948484, rawDemands#948495, systemId#948496, internalUUID#948497, id#948498, displayId#948499, name#948500, category#948501, companyCode#948502, address#948503, mainDistributionChain#948504, mainPurchasingOrganization#948505, validPurchasingOrganizations#948506, productGroup#948507, CASE WHEN isnotnull(timezonecode#948508) THEN timezonecode#948508 ELSE UTC END AS timezonecode#948509]
(1107) Project
Arguments: [product#948227, plant#948228, orderDateTime#948229, productPlant#948240, outboundUnit#948257, stockDatetime#948482, stockBatchQuantities#948483, stockBatchShelfLifeEndDatetimes#948484, rawDemands#948495, timezonecode#948509]
(1108) DeserializeToObject
Arguments: createexternalrow(invoke(product#948227.toString()), invoke(plant#948228.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#948229)), if (isnull(productPlant#948240)) null else createexternalrow(invoke(productPlant#948240.systemId.toString()), invoke(productPlant#948240.internalUUID.toString()), if (isnull(productPlant#948240.plant)) null else createexternalrow(invoke(productPlant#948240.plant.internalRefUUID.toString()), invoke(productPlant#948240.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#948240.product)) null else createexternalrow(invoke(productPlant#948240.product.internalRefUUID.toString()), invoke(productPlant#948240.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#948240.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#948240.productionAspect)) null else createexternalrow(if (isnull(productPlant#948240.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#948240.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#948240.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#948240.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#948240.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#948240.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#948240.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#948240.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#948240.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#948240.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#948240.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#948240.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#948240.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#948240.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#948240.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#948240.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#948240.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#948240.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#948240.salesPlant)) null else createexternalrow(if (isnull(productPlant#948240.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#948240.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#948240.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, 74989), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#948240.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#948240.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#948240.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#948240.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#948257)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#948482)), mapobjects(lambdavariable(MapObject, DoubleType, true, 74990), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 74990) as double))), stockBatchQuantities#948483, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 74991), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 74991) as timestamp)))), stockBatchShelfLifeEndDatetimes#948484, 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, 74992), 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, 74992))) 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, 74992).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, 74992).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, 74992).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).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, 74992).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, 74992).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, 74992).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).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, 74992).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#948495, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#948509.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(1109) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, 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)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)], obj#945945: org.apache.spark.sql.Row
(1110) 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#948510, 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#948511, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74980), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74980), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74981), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74981), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74982), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74982), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74983), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74983), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74984), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74984), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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#948512, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74986), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74986), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74987), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74987), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74988), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74988), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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#948513]
(1111) Join
Arguments: LeftOuter, ((plant#948511 <=> plant#947970) AND (product#948510 <=> product#947969))
(1112) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, outboundUnit#947999, stockDatetime#948224, stockBatchQuantities#948225, stockBatchShelfLifeEndDatetimes#948226, plant#948511, dayBucketDemands#948512, pointInTimeDemands#948513]
(1113) Project
Arguments: [product#947969, plant#947970, orderDateTime#947971, productPlant#947982, outboundUnit#947999, stockDatetime#948224, stockBatchQuantities#948225, stockBatchShelfLifeEndDatetimes#948226, dayBucketDemands#948512, pointInTimeDemands#948513]
(1114) LogicalRelation
Arguments: parquet, [systemId#948514, internalUUID#948515, id#948516, displayId#948517, supplier#948518, type#948519, status#948520, isMarkedForDeletion#948521, items#948522], false
(1115) Repartition
Arguments: 37, true
(1116) Generate
Arguments: explode(items#948522), false, [item#948523]
(1117) Project
Arguments: [id#948516, internalUUID#948515, isMarkedForDeletion#948521, supplier#948518.internalRefUUID AS supplierUuid#948524, item#948523]
(1118) Filter
Arguments: (((NOT isMarkedForDeletion#948521 AND NOT item#948523.deletionIndicator) AND NOT item#948523.completeIndicator) AND NOT item#948523.returnIndicator)
(1119) Project
Arguments: [id#948516, internalUUID#948515, supplierUuid#948524, item#948523.plant.internalRefUUID AS plant#948525, item#948523.product.internalRefUUID AS product#948526, item#948523.storageLocation.internalRefUUID AS storageLocUuid#948527, item#948523.quantityUnit.code AS quantityUom#948528, item#948523.quantityUnit.internalRefUUID AS quantityUomUuid#948529, item#948523.quantityNumerator AS quantityNumerator#948530, item#948523.quantityDenominator AS quantityDenominator#948531, item#948523.scheduleLines AS scheduleLines#948532, item#948523.confirmations AS confirmations#948533]
(1120) Join
Arguments: Inner, ((product#947969 <=> product#948526) AND (plant#947970 <=> supplierUuid#948524))
(1121) Project
Arguments: [id#948516, internalUUID#948515, supplierUuid#948524, plant#948525, product#948526, storageLocUuid#948527, quantityUom#948528, quantityUomUuid#948529, quantityNumerator#948530, quantityDenominator#948531, scheduleLines#948532, confirmations#948533, stockDatetime#948224, plant#947970]
(1122) Project
Arguments: [id#948516, internalUUID#948515, supplierUuid#948524, product#948526, storageLocUuid#948527, quantityUom#948528, quantityUomUuid#948529, quantityNumerator#948530, quantityDenominator#948531, scheduleLines#948532, confirmations#948533, stockDatetime#948224, plant#947970]
(1123) Project
Arguments: [id#948516, internalUUID#948515, supplierUuid#948524, product#948526, storageLocUuid#948527, quantityUom#948528, quantityUomUuid#948529, quantityNumerator#948530, quantityDenominator#948531, scheduleLines#948532, confirmations#948533, stockDatetime#948224, plant#947970, filter(transform(filter(transform(scheduleLines#948532, lambdafunction(struct(openQty, (greatest((lambda x_144#947949.quantity - coalesce(lambda x_144#947949.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_144#947949.productAvailabilityDateTime, lambda x_144#947949.deliveryAt)), lambda x_144#947949, false)), lambdafunction((lambda x_145#947950.availabilityDatetime < stockDatetime#948224), lambda x_145#947950, false)), lambdafunction(struct(documentId, id#948516, documentUuid, internalUUID#948515, openQty, lambda x_146#947951.openQty, openQtyInBaseUnit, ((lambda x_146#947951.openQty * quantityNumerator#948530) / quantityDenominator#948531), qtyUom, quantityUom#948528, qtyUomUuid, quantityUomUuid#948529, availabilityDatetime, lambda x_146#947951.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_146#947951, false)), lambdafunction(NOT (lambda x_147#947952.openQty = 0.0), lambda x_147#947952, false)) AS openGoodsMovements#947948]
(1124) Aggregate
Arguments: [product#948526, plant#947970], [product#948526, plant#947970, flatten(collect_list(openGoodsMovements#947948, 0, 0)) AS openGoodsMovements#947953]
(1125) Filter
Arguments: (array_size(openGoodsMovements#947953) > 0)
(1126) Union
Arguments: false, false
(1127) Aggregate
Arguments: [product#946271, plant#946270], [product#946271, plant#946270, flatten(collect_list(openGoodsMovements#946371, 0, 0)) AS openGoodsMovements#948575]
(1128) Join
Arguments: LeftOuter, ((product#944305 = product#946271) AND (plant#944306 = plant#946270))
(1129) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovements#948575]
(1130) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, coalesce(openGoodsMovements#948575.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#949165, coalesce(openGoodsMovements#948575.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#949166, coalesce(openGoodsMovements#948575.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#949167]
(1131) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, 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#949267]
(1132) LogicalRelation
Arguments: parquet, [product#949464, plant#949465, orderDateTime#949466, planningStartDateTime#949467], false
(1133) RepartitionByExpression
Arguments: [product#949464, plant#949465], 37
(1134) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466]
(1135) LogicalRelation
Arguments: parquet, [systemId#949468, internalUUID#949469, plant#949470, product#949471, blockedForReplenishmentStartingFrom#949472, productionAspect#949473, salesPlant#949474, listing#949475, sourceOfSupplyCategory#949476], false
(1136) Repartition
Arguments: 37, true
(1137) Project
Arguments: [systemId#949468, internalUUID#949469, plant#949470, product#949471, blockedForReplenishmentStartingFrom#949472, productionAspect#949473, salesPlant#949474, listing#949475, sourceOfSupplyCategory#949476, struct(systemId, systemId#949468, internalUUID, internalUUID#949469, plant, plant#949470, product, product#949471, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949472, productionAspect, productionAspect#949473, salesPlant, salesPlant#949474, listing, listing#949475, sourceOfSupplyCategory, sourceOfSupplyCategory#949476) AS productPlant#949477]
(1138) Project
Arguments: [productPlant#949477]
(1139) Join
Arguments: LeftOuter, ((product#949464 <=> productPlant#949477.product.internalRefUUID) AND (plant#949465 <=> productPlant#949477.plant.internalRefUUID))
(1140) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477]
(1141) LogicalRelation
Arguments: parquet, [systemId#949478, internalUUID#949479, id#949480, displayId#949481, name#949482, baseUnitOfMeasure#949483, unitOfMeasures#949484, unitOfMeasureConversions#949485, productionAspect#949486, salesAspect#949487, procurementAspect#949488, productGroup#949489], false
(1142) Repartition
Arguments: 37, true
(1143) Join
Arguments: LeftOuter, (product#949464 = internalUUID#949479)
(1144) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, systemId#949478, internalUUID#949479, id#949480, displayId#949481, name#949482, baseUnitOfMeasure#949483, unitOfMeasures#949484, unitOfMeasureConversions#949485, productionAspect#949486, salesAspect#949487, procurementAspect#949488, productGroup#949489, filter(unitOfMeasureConversions#949485, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949477.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949477.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949483.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949483.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949490]
(1145) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949490.quantityNumerator), true, [quantityNumerator#949491]
(1146) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, systemId#949478, internalUUID#949479, id#949480, displayId#949481, name#949482, baseUnitOfMeasure#949483, unitOfMeasures#949484, unitOfMeasureConversions#949485, productionAspect#949486, salesAspect#949487, procurementAspect#949488, productGroup#949489, filteredUnitOfMeasureConversions#949490, quantityNumerator#949491]
(1147) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949490.quantityDenominator), true, [quantityDenominator#949492]
(1148) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, systemId#949478, internalUUID#949479, id#949480, displayId#949481, name#949482, baseUnitOfMeasure#949483, unitOfMeasures#949484, unitOfMeasureConversions#949485, productionAspect#949486, salesAspect#949487, procurementAspect#949488, productGroup#949489, filteredUnitOfMeasureConversions#949490, quantityNumerator#949491, quantityDenominator#949492]
(1149) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, systemId#949478, internalUUID#949479, id#949480, displayId#949481, name#949482, baseUnitOfMeasure#949483, unitOfMeasures#949484, unitOfMeasureConversions#949485, productionAspect#949486, salesAspect#949487, procurementAspect#949488, productGroup#949489, filteredUnitOfMeasureConversions#949490, quantityNumerator#949491, quantityDenominator#949492, (cast(quantityNumerator#949491 as double) / cast(quantityDenominator#949492 as double)) AS outboundUnit#949493]
(1150) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, systemId#949478, internalUUID#949479, id#949480, displayId#949481, name#949482, baseUnitOfMeasure#949483, unitOfMeasures#949484, unitOfMeasureConversions#949485, productionAspect#949486, salesAspect#949487, procurementAspect#949488, productGroup#949489, filteredUnitOfMeasureConversions#949490, quantityNumerator#949491, quantityDenominator#949492, CASE WHEN (isnull(outboundUnit#949493) OR (outboundUnit#949493 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#949493 END AS outboundUnit#949494]
(1151) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494]
(1152) LogicalRelation
Arguments: parquet, [systemId#949495, internalUUID#949496, product#949497, plant#949498, calculationDateTime#949499, stockQuantities#949500], false
(1153) Repartition
Arguments: 37, true
(1154) LogicalRelation
Arguments: parquet, [marketUnit#949501, description#949502, articleHierarchy#949503, defaultCurrency#949504, responsibilities#949505, replenishmentTypes#949506, distributionCenters#949507, assignedArticleHierarchyNodes#949508, minOrderQtySetting#949509, listingCheck#949510, odsSelection#949511, demandProfiles#949512, constraintProfiles#949513, optimizationProfiles#949514, orderGroupSplitProfiles#949515, supplierMinimumProfiles#949516, multipleRestrictionProfiles#949517, preferredUomSource#949518, handlingOfUnfulfilledDemands#949519, negligibleQuantitiesThreshold#949520, eventtype#949521], false
(1155) Repartition
Arguments: 37, true
(1156) Filter
Arguments: (marketUnit#949501 <=> IW_MU_CRP-125444_1)
(1157) Project
Arguments: [marketUnit#949501, description#949502, articleHierarchy#949503, defaultCurrency#949504, responsibilities#949505, replenishmentTypes#949506, distributionCenters#949507, assignedArticleHierarchyNodes#949508, minOrderQtySetting#949509, listingCheck#949510, odsSelection#949511, demandProfiles#949512, constraintProfiles#949513, optimizationProfiles#949514, orderGroupSplitProfiles#949515, supplierMinimumProfiles#949516, multipleRestrictionProfiles#949517, preferredUomSource#949518, handlingOfUnfulfilledDemands#949519, negligibleQuantitiesThreshold#949520, eventtype#949521]
(1158) Project
Arguments: [distributionCenters#949507]
(1159) Generate
Arguments: explode(distributionCenters#949507), false, [distributionCenters#949522]
(1160) Project
Arguments: [distributionCenters#949522]
(1161) Generate
Arguments: explode(distributionCenters#949522.storageLocations), false, [storageLocations#949523]
(1162) Project
Arguments: [distributionCenters#949522.id AS plantId#949524, distributionCenters#949522.internalRefUUID AS plantUuid#949525, storageLocations#949523]
(1163) Project
Arguments: [plantId#949524, plantUuid#949525, storageLocations#949523.id AS storageLocId#949526, storageLocations#949523.internalRefUUID AS storageLocUuid#949527]
(1164) LogicalRelation
Arguments: parquet, [product#949528, plant#949529, orderDateTime#949530, planningStartDateTime#949531], false
(1165) RepartitionByExpression
Arguments: [product#949528, plant#949529], 37
(1166) Project
Arguments: [product#949528, plant#949529, orderDateTime#949530]
(1167) LogicalRelation
Arguments: parquet, [systemId#949532, internalUUID#949533, plant#949534, product#949535, blockedForReplenishmentStartingFrom#949536, productionAspect#949537, salesPlant#949538, listing#949539, sourceOfSupplyCategory#949540], false
(1168) Repartition
Arguments: 37, true
(1169) Project
Arguments: [systemId#949532, internalUUID#949533, plant#949534, product#949535, blockedForReplenishmentStartingFrom#949536, productionAspect#949537, salesPlant#949538, listing#949539, sourceOfSupplyCategory#949540, struct(systemId, systemId#949532, internalUUID, internalUUID#949533, plant, plant#949534, product, product#949535, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949536, productionAspect, productionAspect#949537, salesPlant, salesPlant#949538, listing, listing#949539, sourceOfSupplyCategory, sourceOfSupplyCategory#949540) AS productPlant#949541]
(1170) Project
Arguments: [productPlant#949541]
(1171) Join
Arguments: LeftOuter, ((product#949528 <=> productPlant#949541.product.internalRefUUID) AND (plant#949529 <=> productPlant#949541.plant.internalRefUUID))
(1172) Project
Arguments: [product#949528, plant#949529, orderDateTime#949530, productPlant#949541]
(1173) LogicalRelation
Arguments: parquet, [systemId#949542, internalUUID#949543, id#949544, displayId#949545, name#949546, baseUnitOfMeasure#949547, unitOfMeasures#949548, unitOfMeasureConversions#949549, productionAspect#949550, salesAspect#949551, procurementAspect#949552, productGroup#949553], false
(1174) Repartition
Arguments: 37, true
(1175) Join
Arguments: LeftOuter, (product#949528 = internalUUID#949543)
(1176) Project
Arguments: [product#949528, plant#949529, orderDateTime#949530, productPlant#949541, systemId#949542, internalUUID#949543, id#949544, displayId#949545, name#949546, baseUnitOfMeasure#949547, unitOfMeasures#949548, unitOfMeasureConversions#949549, productionAspect#949550, salesAspect#949551, procurementAspect#949552, productGroup#949553, filter(unitOfMeasureConversions#949549, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949541.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949541.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949547.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949547.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949554]
(1177) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949554.quantityNumerator), true, [quantityNumerator#949555]
(1178) Project
Arguments: [product#949528, plant#949529, orderDateTime#949530, productPlant#949541, systemId#949542, internalUUID#949543, id#949544, displayId#949545, name#949546, baseUnitOfMeasure#949547, unitOfMeasures#949548, unitOfMeasureConversions#949549, productionAspect#949550, salesAspect#949551, procurementAspect#949552, productGroup#949553, filteredUnitOfMeasureConversions#949554, quantityNumerator#949555]
(1179) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949554.quantityDenominator), true, [quantityDenominator#949556]
(1180) Project
Arguments: [product#949528, plant#949529, orderDateTime#949530, productPlant#949541, systemId#949542, internalUUID#949543, id#949544, displayId#949545, name#949546, baseUnitOfMeasure#949547, unitOfMeasures#949548, unitOfMeasureConversions#949549, productionAspect#949550, salesAspect#949551, procurementAspect#949552, productGroup#949553, filteredUnitOfMeasureConversions#949554, quantityNumerator#949555, quantityDenominator#949556]
(1181) Project
Arguments: [product#949528, plant#949529, orderDateTime#949530, productPlant#949541, systemId#949542, internalUUID#949543, id#949544, displayId#949545, name#949546, baseUnitOfMeasure#949547, unitOfMeasures#949548, unitOfMeasureConversions#949549, productionAspect#949550, salesAspect#949551, procurementAspect#949552, productGroup#949553, filteredUnitOfMeasureConversions#949554, quantityNumerator#949555, quantityDenominator#949556, (cast(quantityNumerator#949555 as double) / cast(quantityDenominator#949556 as double)) AS outboundUnit#949557]
(1182) Project
Arguments: [product#949528, plant#949529, orderDateTime#949530, productPlant#949541, systemId#949542, internalUUID#949543, id#949544, displayId#949545, name#949546, baseUnitOfMeasure#949547, unitOfMeasures#949548, unitOfMeasureConversions#949549, productionAspect#949550, salesAspect#949551, procurementAspect#949552, productGroup#949553, filteredUnitOfMeasureConversions#949554, quantityNumerator#949555, quantityDenominator#949556, CASE WHEN (isnull(outboundUnit#949557) OR (outboundUnit#949557 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#949557 END AS outboundUnit#949558]
(1183) Project
Arguments: [product#949528, plant#949529, orderDateTime#949530, productPlant#949541, outboundUnit#949558]
(1184) Project
Arguments: [plant#949529]
(1185) Deduplicate
Arguments: [plant#949529]
(1186) Join
Arguments: Inner, (plantUuid#949525 = plant#949529)
(1187) Project
Arguments: [plantId#949524, plantUuid#949525, storageLocId#949526, storageLocUuid#949527]
(1188) Join
Arguments: Inner, (plant#949498.internalRefUUID <=> plantUuid#949525)
(1189) Generate
Arguments: explode(filter(stockQuantities#949500, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#949527) AND (lambda x#944569.storageLocation.Id = storageLocId#949526)), lambda x#944569, false))), false, [stockQuantity#949559]
(1190) Project
Arguments: [systemId#949495, internalUUID#949496, product#949497, plant#949498, calculationDateTime#949499, stockQuantities#949500, plantId#949524, plantUuid#949525, storageLocId#949526, storageLocUuid#949527, stockQuantity#949559]
(1191) Aggregate
Arguments: [plantUuid#949525, internalUUID#949496, plant#949498, product#949497, systemId#949495], [plantUuid#949525, internalUUID#949496, plant#949498, product#949497, systemId#949495, first(calculationDateTime#949499, false) AS calculationDateTime#949560, collect_list(stockQuantity#949559, 0, 0) AS stockQuantities#949561]
(1192) Project
Arguments: [systemId#949495, internalUUID#949496, product#949497, plant#949498, calculationDateTime#949560, stockQuantities#949561]
(1193) Generate
Arguments: explode(stockQuantities#949561), false, [stockQuantity#949562]
(1194) Project
Arguments: [systemId#949495, internalUUID#949496, product#949497, plant#949498, calculationDateTime#949560, stockQuantities#949561, stockQuantity#949562]
(1195) Project
Arguments: [plant#949498.id AS plant#949563, plant#949498.internalRefUUID AS plantUuid#949564, product#949497.id AS product#949565, product#949497.internalRefUUID AS productUuid#949566, calculationDateTime#949560, stockQuantity#949562.storagelocation.id AS storageLocId#949567, stockQuantity#949562.storagelocation.internalRefUUID AS storageLocUuid#949568, stockQuantity#949562.quantity.measure AS quantity#949569, stockQuantity#949562.specialStockIndicator.code AS specialStockIndicator#949570, stockQuantity#949562.stockType.code AS stockType#949571]
(1196) Filter
Arguments: ((specialStockIndicator#949570 = ) AND (stockType#949571 = 01))
(1197) LogicalRelation
Arguments: parquet, [product#949572, plant#949573, orderDateTime#949574, planningStartDateTime#949575], false
(1198) RepartitionByExpression
Arguments: [product#949572, plant#949573], 37
(1199) Project
Arguments: [product#949572, plant#949573, orderDateTime#949574]
(1200) LogicalRelation
Arguments: parquet, [systemId#949576, internalUUID#949577, plant#949578, product#949579, blockedForReplenishmentStartingFrom#949580, productionAspect#949581, salesPlant#949582, listing#949583, sourceOfSupplyCategory#949584], false
(1201) Repartition
Arguments: 37, true
(1202) Project
Arguments: [systemId#949576, internalUUID#949577, plant#949578, product#949579, blockedForReplenishmentStartingFrom#949580, productionAspect#949581, salesPlant#949582, listing#949583, sourceOfSupplyCategory#949584, struct(systemId, systemId#949576, internalUUID, internalUUID#949577, plant, plant#949578, product, product#949579, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949580, productionAspect, productionAspect#949581, salesPlant, salesPlant#949582, listing, listing#949583, sourceOfSupplyCategory, sourceOfSupplyCategory#949584) AS productPlant#949585]
(1203) Project
Arguments: [productPlant#949585]
(1204) Join
Arguments: LeftOuter, ((product#949572 <=> productPlant#949585.product.internalRefUUID) AND (plant#949573 <=> productPlant#949585.plant.internalRefUUID))
(1205) Project
Arguments: [product#949572, plant#949573, orderDateTime#949574, productPlant#949585]
(1206) LogicalRelation
Arguments: parquet, [systemId#949586, internalUUID#949587, id#949588, displayId#949589, name#949590, baseUnitOfMeasure#949591, unitOfMeasures#949592, unitOfMeasureConversions#949593, productionAspect#949594, salesAspect#949595, procurementAspect#949596, productGroup#949597], false
(1207) Repartition
Arguments: 37, true
(1208) Join
Arguments: LeftOuter, (product#949572 = internalUUID#949587)
(1209) Project
Arguments: [product#949572, plant#949573, orderDateTime#949574, productPlant#949585, systemId#949586, internalUUID#949587, id#949588, displayId#949589, name#949590, baseUnitOfMeasure#949591, unitOfMeasures#949592, unitOfMeasureConversions#949593, productionAspect#949594, salesAspect#949595, procurementAspect#949596, productGroup#949597, filter(unitOfMeasureConversions#949593, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949585.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949585.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949591.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949591.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949598]
(1210) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949598.quantityNumerator), true, [quantityNumerator#949599]
(1211) Project
Arguments: [product#949572, plant#949573, orderDateTime#949574, productPlant#949585, systemId#949586, internalUUID#949587, id#949588, displayId#949589, name#949590, baseUnitOfMeasure#949591, unitOfMeasures#949592, unitOfMeasureConversions#949593, productionAspect#949594, salesAspect#949595, procurementAspect#949596, productGroup#949597, filteredUnitOfMeasureConversions#949598, quantityNumerator#949599]
(1212) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949598.quantityDenominator), true, [quantityDenominator#949600]
(1213) Project
Arguments: [product#949572, plant#949573, orderDateTime#949574, productPlant#949585, systemId#949586, internalUUID#949587, id#949588, displayId#949589, name#949590, baseUnitOfMeasure#949591, unitOfMeasures#949592, unitOfMeasureConversions#949593, productionAspect#949594, salesAspect#949595, procurementAspect#949596, productGroup#949597, filteredUnitOfMeasureConversions#949598, quantityNumerator#949599, quantityDenominator#949600]
(1214) Project
Arguments: [product#949572, plant#949573, orderDateTime#949574, productPlant#949585, systemId#949586, internalUUID#949587, id#949588, displayId#949589, name#949590, baseUnitOfMeasure#949591, unitOfMeasures#949592, unitOfMeasureConversions#949593, productionAspect#949594, salesAspect#949595, procurementAspect#949596, productGroup#949597, filteredUnitOfMeasureConversions#949598, quantityNumerator#949599, quantityDenominator#949600, (cast(quantityNumerator#949599 as double) / cast(quantityDenominator#949600 as double)) AS outboundUnit#949601]
(1215) Project
Arguments: [product#949572, plant#949573, orderDateTime#949574, productPlant#949585, systemId#949586, internalUUID#949587, id#949588, displayId#949589, name#949590, baseUnitOfMeasure#949591, unitOfMeasures#949592, unitOfMeasureConversions#949593, productionAspect#949594, salesAspect#949595, procurementAspect#949596, productGroup#949597, filteredUnitOfMeasureConversions#949598, quantityNumerator#949599, quantityDenominator#949600, CASE WHEN (isnull(outboundUnit#949601) OR (outboundUnit#949601 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#949601 END AS outboundUnit#949602]
(1216) Project
Arguments: [product#949572, plant#949573, orderDateTime#949574, productPlant#949585, outboundUnit#949602]
(1217) Join
Arguments: Inner, ((plantUuid#949564 = plant#949573) AND (productUuid#949566 = product#949572))
(1218) Filter
Arguments: (calculationDateTime#949560 <= orderDateTime#949574)
(1219) Project
Arguments: [plantUuid#949564 AS plant#949603, productUuid#949566 AS product#949604, storageLocId#949567, calculationDateTime#949560, quantity#949569]
(1220) LogicalRelation
Arguments: parquet, [systemId#949605, internalUUID#949606, product#949607, plant#949608, calculationDateTime#949609, stockQuantities#949610], false
(1221) Repartition
Arguments: 37, true
(1222) LogicalRelation
Arguments: parquet, [marketUnit#949611, description#949612, articleHierarchy#949613, defaultCurrency#949614, responsibilities#949615, replenishmentTypes#949616, distributionCenters#949617, assignedArticleHierarchyNodes#949618, minOrderQtySetting#949619, listingCheck#949620, odsSelection#949621, demandProfiles#949622, constraintProfiles#949623, optimizationProfiles#949624, orderGroupSplitProfiles#949625, supplierMinimumProfiles#949626, multipleRestrictionProfiles#949627, preferredUomSource#949628, handlingOfUnfulfilledDemands#949629, negligibleQuantitiesThreshold#949630, eventtype#949631], false
(1223) Repartition
Arguments: 37, true
(1224) Filter
Arguments: (marketUnit#949611 <=> IW_MU_CRP-125444_1)
(1225) Project
Arguments: [marketUnit#949611, description#949612, articleHierarchy#949613, defaultCurrency#949614, responsibilities#949615, replenishmentTypes#949616, distributionCenters#949617, assignedArticleHierarchyNodes#949618, minOrderQtySetting#949619, listingCheck#949620, odsSelection#949621, demandProfiles#949622, constraintProfiles#949623, optimizationProfiles#949624, orderGroupSplitProfiles#949625, supplierMinimumProfiles#949626, multipleRestrictionProfiles#949627, preferredUomSource#949628, handlingOfUnfulfilledDemands#949629, negligibleQuantitiesThreshold#949630, eventtype#949631]
(1226) Project
Arguments: [distributionCenters#949617]
(1227) Generate
Arguments: explode(distributionCenters#949617), false, [distributionCenters#949632]
(1228) Project
Arguments: [distributionCenters#949632]
(1229) Generate
Arguments: explode(distributionCenters#949632.storageLocations), false, [storageLocations#949633]
(1230) Project
Arguments: [distributionCenters#949632.id AS plantId#949634, distributionCenters#949632.internalRefUUID AS plantUuid#949635, storageLocations#949633]
(1231) Project
Arguments: [plantId#949634, plantUuid#949635, storageLocations#949633.id AS storageLocId#949636, storageLocations#949633.internalRefUUID AS storageLocUuid#949637]
(1232) LogicalRelation
Arguments: parquet, [product#949638, plant#949639, orderDateTime#949640, planningStartDateTime#949641], false
(1233) RepartitionByExpression
Arguments: [product#949638, plant#949639], 37
(1234) Project
Arguments: [product#949638, plant#949639, orderDateTime#949640]
(1235) LogicalRelation
Arguments: parquet, [systemId#949642, internalUUID#949643, plant#949644, product#949645, blockedForReplenishmentStartingFrom#949646, productionAspect#949647, salesPlant#949648, listing#949649, sourceOfSupplyCategory#949650], false
(1236) Repartition
Arguments: 37, true
(1237) Project
Arguments: [systemId#949642, internalUUID#949643, plant#949644, product#949645, blockedForReplenishmentStartingFrom#949646, productionAspect#949647, salesPlant#949648, listing#949649, sourceOfSupplyCategory#949650, struct(systemId, systemId#949642, internalUUID, internalUUID#949643, plant, plant#949644, product, product#949645, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949646, productionAspect, productionAspect#949647, salesPlant, salesPlant#949648, listing, listing#949649, sourceOfSupplyCategory, sourceOfSupplyCategory#949650) AS productPlant#949651]
(1238) Project
Arguments: [productPlant#949651]
(1239) Join
Arguments: LeftOuter, ((product#949638 <=> productPlant#949651.product.internalRefUUID) AND (plant#949639 <=> productPlant#949651.plant.internalRefUUID))
(1240) Project
Arguments: [product#949638, plant#949639, orderDateTime#949640, productPlant#949651]
(1241) LogicalRelation
Arguments: parquet, [systemId#949652, internalUUID#949653, id#949654, displayId#949655, name#949656, baseUnitOfMeasure#949657, unitOfMeasures#949658, unitOfMeasureConversions#949659, productionAspect#949660, salesAspect#949661, procurementAspect#949662, productGroup#949663], false
(1242) Repartition
Arguments: 37, true
(1243) Join
Arguments: LeftOuter, (product#949638 = internalUUID#949653)
(1244) Project
Arguments: [product#949638, plant#949639, orderDateTime#949640, productPlant#949651, systemId#949652, internalUUID#949653, id#949654, displayId#949655, name#949656, baseUnitOfMeasure#949657, unitOfMeasures#949658, unitOfMeasureConversions#949659, productionAspect#949660, salesAspect#949661, procurementAspect#949662, productGroup#949663, filter(unitOfMeasureConversions#949659, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949651.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949651.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949657.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949657.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949664]
(1245) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949664.quantityNumerator), true, [quantityNumerator#949665]
(1246) Project
Arguments: [product#949638, plant#949639, orderDateTime#949640, productPlant#949651, systemId#949652, internalUUID#949653, id#949654, displayId#949655, name#949656, baseUnitOfMeasure#949657, unitOfMeasures#949658, unitOfMeasureConversions#949659, productionAspect#949660, salesAspect#949661, procurementAspect#949662, productGroup#949663, filteredUnitOfMeasureConversions#949664, quantityNumerator#949665]
(1247) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949664.quantityDenominator), true, [quantityDenominator#949666]
(1248) Project
Arguments: [product#949638, plant#949639, orderDateTime#949640, productPlant#949651, systemId#949652, internalUUID#949653, id#949654, displayId#949655, name#949656, baseUnitOfMeasure#949657, unitOfMeasures#949658, unitOfMeasureConversions#949659, productionAspect#949660, salesAspect#949661, procurementAspect#949662, productGroup#949663, filteredUnitOfMeasureConversions#949664, quantityNumerator#949665, quantityDenominator#949666]
(1249) Project
Arguments: [product#949638, plant#949639, orderDateTime#949640, productPlant#949651, systemId#949652, internalUUID#949653, id#949654, displayId#949655, name#949656, baseUnitOfMeasure#949657, unitOfMeasures#949658, unitOfMeasureConversions#949659, productionAspect#949660, salesAspect#949661, procurementAspect#949662, productGroup#949663, filteredUnitOfMeasureConversions#949664, quantityNumerator#949665, quantityDenominator#949666, (cast(quantityNumerator#949665 as double) / cast(quantityDenominator#949666 as double)) AS outboundUnit#949667]
(1250) Project
Arguments: [product#949638, plant#949639, orderDateTime#949640, productPlant#949651, systemId#949652, internalUUID#949653, id#949654, displayId#949655, name#949656, baseUnitOfMeasure#949657, unitOfMeasures#949658, unitOfMeasureConversions#949659, productionAspect#949660, salesAspect#949661, procurementAspect#949662, productGroup#949663, filteredUnitOfMeasureConversions#949664, quantityNumerator#949665, quantityDenominator#949666, CASE WHEN (isnull(outboundUnit#949667) OR (outboundUnit#949667 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#949667 END AS outboundUnit#949668]
(1251) Project
Arguments: [product#949638, plant#949639, orderDateTime#949640, productPlant#949651, outboundUnit#949668]
(1252) Project
Arguments: [plant#949639]
(1253) Deduplicate
Arguments: [plant#949639]
(1254) Join
Arguments: Inner, (plantUuid#949635 = plant#949639)
(1255) Project
Arguments: [plantId#949634, plantUuid#949635, storageLocId#949636, storageLocUuid#949637]
(1256) Join
Arguments: Inner, (plant#949608.internalRefUUID <=> plantUuid#949635)
(1257) Generate
Arguments: explode(filter(stockQuantities#949610, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#949637) AND (lambda x#944569.storageLocation.Id = storageLocId#949636)), lambda x#944569, false))), false, [stockQuantity#949669]
(1258) Project
Arguments: [systemId#949605, internalUUID#949606, product#949607, plant#949608, calculationDateTime#949609, stockQuantities#949610, plantId#949634, plantUuid#949635, storageLocId#949636, storageLocUuid#949637, stockQuantity#949669]
(1259) Aggregate
Arguments: [plantUuid#949635, internalUUID#949606, plant#949608, product#949607, systemId#949605], [plantUuid#949635, internalUUID#949606, plant#949608, product#949607, systemId#949605, first(calculationDateTime#949609, false) AS calculationDateTime#949670, collect_list(stockQuantity#949669, 0, 0) AS stockQuantities#949671]
(1260) Project
Arguments: [systemId#949605, internalUUID#949606, product#949607, plant#949608, calculationDateTime#949670, stockQuantities#949671]
(1261) Generate
Arguments: explode(stockQuantities#949671), false, [stockQuantity#949672]
(1262) Project
Arguments: [systemId#949605, internalUUID#949606, product#949607, plant#949608, calculationDateTime#949670, stockQuantities#949671, stockQuantity#949672]
(1263) Project
Arguments: [plant#949608.id AS plant#949673, plant#949608.internalRefUUID AS plantUuid#949674, product#949607.id AS product#949675, product#949607.internalRefUUID AS productUuid#949676, calculationDateTime#949670, stockQuantity#949672.storagelocation.id AS storageLocId#949677, stockQuantity#949672.storagelocation.internalRefUUID AS storageLocUuid#949678, stockQuantity#949672.quantity.measure AS quantity#949679, stockQuantity#949672.specialStockIndicator.code AS specialStockIndicator#949680, stockQuantity#949672.stockType.code AS stockType#949681]
(1264) Filter
Arguments: ((specialStockIndicator#949680 = ) AND (stockType#949681 = 01))
(1265) LogicalRelation
Arguments: parquet, [product#949682, plant#949683, orderDateTime#949684, planningStartDateTime#949685], false
(1266) RepartitionByExpression
Arguments: [product#949682, plant#949683], 37
(1267) Project
Arguments: [product#949682, plant#949683, orderDateTime#949684]
(1268) LogicalRelation
Arguments: parquet, [systemId#949686, internalUUID#949687, plant#949688, product#949689, blockedForReplenishmentStartingFrom#949690, productionAspect#949691, salesPlant#949692, listing#949693, sourceOfSupplyCategory#949694], false
(1269) Repartition
Arguments: 37, true
(1270) Project
Arguments: [systemId#949686, internalUUID#949687, plant#949688, product#949689, blockedForReplenishmentStartingFrom#949690, productionAspect#949691, salesPlant#949692, listing#949693, sourceOfSupplyCategory#949694, struct(systemId, systemId#949686, internalUUID, internalUUID#949687, plant, plant#949688, product, product#949689, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949690, productionAspect, productionAspect#949691, salesPlant, salesPlant#949692, listing, listing#949693, sourceOfSupplyCategory, sourceOfSupplyCategory#949694) AS productPlant#949695]
(1271) Project
Arguments: [productPlant#949695]
(1272) Join
Arguments: LeftOuter, ((product#949682 <=> productPlant#949695.product.internalRefUUID) AND (plant#949683 <=> productPlant#949695.plant.internalRefUUID))
(1273) Project
Arguments: [product#949682, plant#949683, orderDateTime#949684, productPlant#949695]
(1274) LogicalRelation
Arguments: parquet, [systemId#949696, internalUUID#949697, id#949698, displayId#949699, name#949700, baseUnitOfMeasure#949701, unitOfMeasures#949702, unitOfMeasureConversions#949703, productionAspect#949704, salesAspect#949705, procurementAspect#949706, productGroup#949707], false
(1275) Repartition
Arguments: 37, true
(1276) Join
Arguments: LeftOuter, (product#949682 = internalUUID#949697)
(1277) Project
Arguments: [product#949682, plant#949683, orderDateTime#949684, productPlant#949695, systemId#949696, internalUUID#949697, id#949698, displayId#949699, name#949700, baseUnitOfMeasure#949701, unitOfMeasures#949702, unitOfMeasureConversions#949703, productionAspect#949704, salesAspect#949705, procurementAspect#949706, productGroup#949707, filter(unitOfMeasureConversions#949703, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949695.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949695.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949701.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949701.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949708]
(1278) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949708.quantityNumerator), true, [quantityNumerator#949709]
(1279) Project
Arguments: [product#949682, plant#949683, orderDateTime#949684, productPlant#949695, systemId#949696, internalUUID#949697, id#949698, displayId#949699, name#949700, baseUnitOfMeasure#949701, unitOfMeasures#949702, unitOfMeasureConversions#949703, productionAspect#949704, salesAspect#949705, procurementAspect#949706, productGroup#949707, filteredUnitOfMeasureConversions#949708, quantityNumerator#949709]
(1280) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949708.quantityDenominator), true, [quantityDenominator#949710]
(1281) Project
Arguments: [product#949682, plant#949683, orderDateTime#949684, productPlant#949695, systemId#949696, internalUUID#949697, id#949698, displayId#949699, name#949700, baseUnitOfMeasure#949701, unitOfMeasures#949702, unitOfMeasureConversions#949703, productionAspect#949704, salesAspect#949705, procurementAspect#949706, productGroup#949707, filteredUnitOfMeasureConversions#949708, quantityNumerator#949709, quantityDenominator#949710]
(1282) Project
Arguments: [product#949682, plant#949683, orderDateTime#949684, productPlant#949695, systemId#949696, internalUUID#949697, id#949698, displayId#949699, name#949700, baseUnitOfMeasure#949701, unitOfMeasures#949702, unitOfMeasureConversions#949703, productionAspect#949704, salesAspect#949705, procurementAspect#949706, productGroup#949707, filteredUnitOfMeasureConversions#949708, quantityNumerator#949709, quantityDenominator#949710, (cast(quantityNumerator#949709 as double) / cast(quantityDenominator#949710 as double)) AS outboundUnit#949711]
(1283) Project
Arguments: [product#949682, plant#949683, orderDateTime#949684, productPlant#949695, systemId#949696, internalUUID#949697, id#949698, displayId#949699, name#949700, baseUnitOfMeasure#949701, unitOfMeasures#949702, unitOfMeasureConversions#949703, productionAspect#949704, salesAspect#949705, procurementAspect#949706, productGroup#949707, filteredUnitOfMeasureConversions#949708, quantityNumerator#949709, quantityDenominator#949710, CASE WHEN (isnull(outboundUnit#949711) OR (outboundUnit#949711 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#949711 END AS outboundUnit#949712]
(1284) Project
Arguments: [product#949682, plant#949683, orderDateTime#949684, productPlant#949695, outboundUnit#949712]
(1285) Join
Arguments: Inner, ((plantUuid#949674 = plant#949683) AND (productUuid#949676 = product#949682))
(1286) Filter
Arguments: (calculationDateTime#949670 <= orderDateTime#949684)
(1287) Project
Arguments: [plantUuid#949674 AS plant#949713, productUuid#949676 AS product#949714, storageLocId#949677, calculationDateTime#949670, quantity#949679]
(1288) Aggregate
Arguments: [plant#949713, product#949714, storageLocId#949677], [plant#949713, product#949714, storageLocId#949677, max(calculationDateTime#949670) AS max_calc_datetime#949715]
(1289) Join
Arguments: Inner, ((((plant#949603 <=> plant#949713) AND (product#949604 <=> product#949714)) AND (storageLocId#949567 <=> storageLocId#949677)) AND (calculationDateTime#949560 <=> max_calc_datetime#949715))
(1290) Project
Arguments: [plant#949603, product#949604, storageLocId#949567, calculationDateTime#949560, quantity#949569]
(1291) Aggregate
Arguments: [product#949604, plant#949603], [product#949604, plant#949603, sum(quantity#949569) AS quantitySum#949716, min(calculationDateTime#949560) AS minCalculationDateTime#949717]
(1292) Project
Arguments: [product#949604, plant#949603, quantitySum#949716, minCalculationDateTime#949717, round(quantitySum#949716, 0) AS roundedQuantitySum#949718]
(1293) Join
Arguments: LeftOuter, ((plant#949465 = plant#949603) AND (product#949464 = product#949604))
(1294) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, roundedQuantitySum#949718, minCalculationDateTime#949717]
(1295) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, roundedQuantitySum#949718, minCalculationDateTime#949717, CASE WHEN isnotnull(minCalculationDateTime#949717) THEN minCalculationDateTime#949717 ELSE orderDateTime#949466 END AS stockDatetime#949719]
(1296) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, roundedQuantitySum#949718, minCalculationDateTime#949717, stockDatetime#949719, CASE WHEN isnotnull(roundedQuantitySum#949718) THEN array(roundedQuantitySum#949718) ELSE array(0.0) END AS stockBatchQuantities#949720]
(1297) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, roundedQuantitySum#949718, minCalculationDateTime#949717, stockDatetime#949719, stockBatchQuantities#949720, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#949721]
(1298) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, roundedQuantitySum#949718, stockDatetime#949719, stockBatchQuantities#949720, stockBatchShelfLifeEndDatetimes#949721]
(1299) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, stockBatchShelfLifeEndDatetimes#949721]
(1300) LogicalRelation
Arguments: parquet, [product#949722, plant#949723, orderDateTime#949724, planningStartDateTime#949725], false
(1301) RepartitionByExpression
Arguments: [product#949722, plant#949723], 37
(1302) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724]
(1303) LogicalRelation
Arguments: parquet, [systemId#949726, internalUUID#949727, plant#949728, product#949729, blockedForReplenishmentStartingFrom#949730, productionAspect#949731, salesPlant#949732, listing#949733, sourceOfSupplyCategory#949734], false
(1304) Repartition
Arguments: 37, true
(1305) Project
Arguments: [systemId#949726, internalUUID#949727, plant#949728, product#949729, blockedForReplenishmentStartingFrom#949730, productionAspect#949731, salesPlant#949732, listing#949733, sourceOfSupplyCategory#949734, struct(systemId, systemId#949726, internalUUID, internalUUID#949727, plant, plant#949728, product, product#949729, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949730, productionAspect, productionAspect#949731, salesPlant, salesPlant#949732, listing, listing#949733, sourceOfSupplyCategory, sourceOfSupplyCategory#949734) AS productPlant#949735]
(1306) Project
Arguments: [productPlant#949735]
(1307) Join
Arguments: LeftOuter, ((product#949722 <=> productPlant#949735.product.internalRefUUID) AND (plant#949723 <=> productPlant#949735.plant.internalRefUUID))
(1308) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735]
(1309) LogicalRelation
Arguments: parquet, [systemId#949736, internalUUID#949737, id#949738, displayId#949739, name#949740, baseUnitOfMeasure#949741, unitOfMeasures#949742, unitOfMeasureConversions#949743, productionAspect#949744, salesAspect#949745, procurementAspect#949746, productGroup#949747], false
(1310) Repartition
Arguments: 37, true
(1311) Join
Arguments: LeftOuter, (product#949722 = internalUUID#949737)
(1312) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, systemId#949736, internalUUID#949737, id#949738, displayId#949739, name#949740, baseUnitOfMeasure#949741, unitOfMeasures#949742, unitOfMeasureConversions#949743, productionAspect#949744, salesAspect#949745, procurementAspect#949746, productGroup#949747, filter(unitOfMeasureConversions#949743, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949735.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949735.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949741.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949741.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949748]
(1313) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949748.quantityNumerator), true, [quantityNumerator#949749]
(1314) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, systemId#949736, internalUUID#949737, id#949738, displayId#949739, name#949740, baseUnitOfMeasure#949741, unitOfMeasures#949742, unitOfMeasureConversions#949743, productionAspect#949744, salesAspect#949745, procurementAspect#949746, productGroup#949747, filteredUnitOfMeasureConversions#949748, quantityNumerator#949749]
(1315) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949748.quantityDenominator), true, [quantityDenominator#949750]
(1316) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, systemId#949736, internalUUID#949737, id#949738, displayId#949739, name#949740, baseUnitOfMeasure#949741, unitOfMeasures#949742, unitOfMeasureConversions#949743, productionAspect#949744, salesAspect#949745, procurementAspect#949746, productGroup#949747, filteredUnitOfMeasureConversions#949748, quantityNumerator#949749, quantityDenominator#949750]
(1317) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, systemId#949736, internalUUID#949737, id#949738, displayId#949739, name#949740, baseUnitOfMeasure#949741, unitOfMeasures#949742, unitOfMeasureConversions#949743, productionAspect#949744, salesAspect#949745, procurementAspect#949746, productGroup#949747, filteredUnitOfMeasureConversions#949748, quantityNumerator#949749, quantityDenominator#949750, (cast(quantityNumerator#949749 as double) / cast(quantityDenominator#949750 as double)) AS outboundUnit#949751]
(1318) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, systemId#949736, internalUUID#949737, id#949738, displayId#949739, name#949740, baseUnitOfMeasure#949741, unitOfMeasures#949742, unitOfMeasureConversions#949743, productionAspect#949744, salesAspect#949745, procurementAspect#949746, productGroup#949747, filteredUnitOfMeasureConversions#949748, quantityNumerator#949749, quantityDenominator#949750, CASE WHEN (isnull(outboundUnit#949751) OR (outboundUnit#949751 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#949751 END AS outboundUnit#949752]
(1319) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752]
(1320) LogicalRelation
Arguments: parquet, [systemId#949753, internalUUID#949754, product#949755, plant#949756, calculationDateTime#949757, stockQuantities#949758], false
(1321) Repartition
Arguments: 37, true
(1322) LogicalRelation
Arguments: parquet, [marketUnit#949759, description#949760, articleHierarchy#949761, defaultCurrency#949762, responsibilities#949763, replenishmentTypes#949764, distributionCenters#949765, assignedArticleHierarchyNodes#949766, minOrderQtySetting#949767, listingCheck#949768, odsSelection#949769, demandProfiles#949770, constraintProfiles#949771, optimizationProfiles#949772, orderGroupSplitProfiles#949773, supplierMinimumProfiles#949774, multipleRestrictionProfiles#949775, preferredUomSource#949776, handlingOfUnfulfilledDemands#949777, negligibleQuantitiesThreshold#949778, eventtype#949779], false
(1323) Repartition
Arguments: 37, true
(1324) Filter
Arguments: (marketUnit#949759 <=> IW_MU_CRP-125444_1)
(1325) Project
Arguments: [marketUnit#949759, description#949760, articleHierarchy#949761, defaultCurrency#949762, responsibilities#949763, replenishmentTypes#949764, distributionCenters#949765, assignedArticleHierarchyNodes#949766, minOrderQtySetting#949767, listingCheck#949768, odsSelection#949769, demandProfiles#949770, constraintProfiles#949771, optimizationProfiles#949772, orderGroupSplitProfiles#949773, supplierMinimumProfiles#949774, multipleRestrictionProfiles#949775, preferredUomSource#949776, handlingOfUnfulfilledDemands#949777, negligibleQuantitiesThreshold#949778, eventtype#949779]
(1326) Project
Arguments: [distributionCenters#949765]
(1327) Generate
Arguments: explode(distributionCenters#949765), false, [distributionCenters#949780]
(1328) Project
Arguments: [distributionCenters#949780]
(1329) Generate
Arguments: explode(distributionCenters#949780.storageLocations), false, [storageLocations#949781]
(1330) Project
Arguments: [distributionCenters#949780.id AS plantId#949782, distributionCenters#949780.internalRefUUID AS plantUuid#949783, storageLocations#949781]
(1331) Project
Arguments: [plantId#949782, plantUuid#949783, storageLocations#949781.id AS storageLocId#949784, storageLocations#949781.internalRefUUID AS storageLocUuid#949785]
(1332) LogicalRelation
Arguments: parquet, [product#949786, plant#949787, orderDateTime#949788, planningStartDateTime#949789], false
(1333) RepartitionByExpression
Arguments: [product#949786, plant#949787], 37
(1334) Project
Arguments: [product#949786, plant#949787, orderDateTime#949788]
(1335) LogicalRelation
Arguments: parquet, [systemId#949790, internalUUID#949791, plant#949792, product#949793, blockedForReplenishmentStartingFrom#949794, productionAspect#949795, salesPlant#949796, listing#949797, sourceOfSupplyCategory#949798], false
(1336) Repartition
Arguments: 37, true
(1337) Project
Arguments: [systemId#949790, internalUUID#949791, plant#949792, product#949793, blockedForReplenishmentStartingFrom#949794, productionAspect#949795, salesPlant#949796, listing#949797, sourceOfSupplyCategory#949798, struct(systemId, systemId#949790, internalUUID, internalUUID#949791, plant, plant#949792, product, product#949793, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949794, productionAspect, productionAspect#949795, salesPlant, salesPlant#949796, listing, listing#949797, sourceOfSupplyCategory, sourceOfSupplyCategory#949798) AS productPlant#949799]
(1338) Project
Arguments: [productPlant#949799]
(1339) Join
Arguments: LeftOuter, ((product#949786 <=> productPlant#949799.product.internalRefUUID) AND (plant#949787 <=> productPlant#949799.plant.internalRefUUID))
(1340) Project
Arguments: [product#949786, plant#949787, orderDateTime#949788, productPlant#949799]
(1341) LogicalRelation
Arguments: parquet, [systemId#949800, internalUUID#949801, id#949802, displayId#949803, name#949804, baseUnitOfMeasure#949805, unitOfMeasures#949806, unitOfMeasureConversions#949807, productionAspect#949808, salesAspect#949809, procurementAspect#949810, productGroup#949811], false
(1342) Repartition
Arguments: 37, true
(1343) Join
Arguments: LeftOuter, (product#949786 = internalUUID#949801)
(1344) Project
Arguments: [product#949786, plant#949787, orderDateTime#949788, productPlant#949799, systemId#949800, internalUUID#949801, id#949802, displayId#949803, name#949804, baseUnitOfMeasure#949805, unitOfMeasures#949806, unitOfMeasureConversions#949807, productionAspect#949808, salesAspect#949809, procurementAspect#949810, productGroup#949811, filter(unitOfMeasureConversions#949807, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949799.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949799.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949805.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949805.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949812]
(1345) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949812.quantityNumerator), true, [quantityNumerator#949813]
(1346) Project
Arguments: [product#949786, plant#949787, orderDateTime#949788, productPlant#949799, systemId#949800, internalUUID#949801, id#949802, displayId#949803, name#949804, baseUnitOfMeasure#949805, unitOfMeasures#949806, unitOfMeasureConversions#949807, productionAspect#949808, salesAspect#949809, procurementAspect#949810, productGroup#949811, filteredUnitOfMeasureConversions#949812, quantityNumerator#949813]
(1347) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949812.quantityDenominator), true, [quantityDenominator#949814]
(1348) Project
Arguments: [product#949786, plant#949787, orderDateTime#949788, productPlant#949799, systemId#949800, internalUUID#949801, id#949802, displayId#949803, name#949804, baseUnitOfMeasure#949805, unitOfMeasures#949806, unitOfMeasureConversions#949807, productionAspect#949808, salesAspect#949809, procurementAspect#949810, productGroup#949811, filteredUnitOfMeasureConversions#949812, quantityNumerator#949813, quantityDenominator#949814]
(1349) Project
Arguments: [product#949786, plant#949787, orderDateTime#949788, productPlant#949799, systemId#949800, internalUUID#949801, id#949802, displayId#949803, name#949804, baseUnitOfMeasure#949805, unitOfMeasures#949806, unitOfMeasureConversions#949807, productionAspect#949808, salesAspect#949809, procurementAspect#949810, productGroup#949811, filteredUnitOfMeasureConversions#949812, quantityNumerator#949813, quantityDenominator#949814, (cast(quantityNumerator#949813 as double) / cast(quantityDenominator#949814 as double)) AS outboundUnit#949815]
(1350) Project
Arguments: [product#949786, plant#949787, orderDateTime#949788, productPlant#949799, systemId#949800, internalUUID#949801, id#949802, displayId#949803, name#949804, baseUnitOfMeasure#949805, unitOfMeasures#949806, unitOfMeasureConversions#949807, productionAspect#949808, salesAspect#949809, procurementAspect#949810, productGroup#949811, filteredUnitOfMeasureConversions#949812, quantityNumerator#949813, quantityDenominator#949814, CASE WHEN (isnull(outboundUnit#949815) OR (outboundUnit#949815 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#949815 END AS outboundUnit#949816]
(1351) Project
Arguments: [product#949786, plant#949787, orderDateTime#949788, productPlant#949799, outboundUnit#949816]
(1352) Project
Arguments: [plant#949787]
(1353) Deduplicate
Arguments: [plant#949787]
(1354) Join
Arguments: Inner, (plantUuid#949783 = plant#949787)
(1355) Project
Arguments: [plantId#949782, plantUuid#949783, storageLocId#949784, storageLocUuid#949785]
(1356) Join
Arguments: Inner, (plant#949756.internalRefUUID <=> plantUuid#949783)
(1357) Generate
Arguments: explode(filter(stockQuantities#949758, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#949785) AND (lambda x#944569.storageLocation.Id = storageLocId#949784)), lambda x#944569, false))), false, [stockQuantity#949817]
(1358) Project
Arguments: [systemId#949753, internalUUID#949754, product#949755, plant#949756, calculationDateTime#949757, stockQuantities#949758, plantId#949782, plantUuid#949783, storageLocId#949784, storageLocUuid#949785, stockQuantity#949817]
(1359) Aggregate
Arguments: [plantUuid#949783, internalUUID#949754, plant#949756, product#949755, systemId#949753], [plantUuid#949783, internalUUID#949754, plant#949756, product#949755, systemId#949753, first(calculationDateTime#949757, false) AS calculationDateTime#949818, collect_list(stockQuantity#949817, 0, 0) AS stockQuantities#949819]
(1360) Project
Arguments: [systemId#949753, internalUUID#949754, product#949755, plant#949756, calculationDateTime#949818, stockQuantities#949819]
(1361) Generate
Arguments: explode(stockQuantities#949819), false, [stockQuantity#949820]
(1362) Project
Arguments: [systemId#949753, internalUUID#949754, product#949755, plant#949756, calculationDateTime#949818, stockQuantities#949819, stockQuantity#949820]
(1363) Project
Arguments: [plant#949756.id AS plant#949821, plant#949756.internalRefUUID AS plantUuid#949822, product#949755.id AS product#949823, product#949755.internalRefUUID AS productUuid#949824, calculationDateTime#949818, stockQuantity#949820.storagelocation.id AS storageLocId#949825, stockQuantity#949820.storagelocation.internalRefUUID AS storageLocUuid#949826, stockQuantity#949820.quantity.measure AS quantity#949827, stockQuantity#949820.specialStockIndicator.code AS specialStockIndicator#949828, stockQuantity#949820.stockType.code AS stockType#949829]
(1364) Filter
Arguments: ((specialStockIndicator#949828 = ) AND (stockType#949829 = 01))
(1365) LogicalRelation
Arguments: parquet, [product#949830, plant#949831, orderDateTime#949832, planningStartDateTime#949833], false
(1366) RepartitionByExpression
Arguments: [product#949830, plant#949831], 37
(1367) Project
Arguments: [product#949830, plant#949831, orderDateTime#949832]
(1368) LogicalRelation
Arguments: parquet, [systemId#949834, internalUUID#949835, plant#949836, product#949837, blockedForReplenishmentStartingFrom#949838, productionAspect#949839, salesPlant#949840, listing#949841, sourceOfSupplyCategory#949842], false
(1369) Repartition
Arguments: 37, true
(1370) Project
Arguments: [systemId#949834, internalUUID#949835, plant#949836, product#949837, blockedForReplenishmentStartingFrom#949838, productionAspect#949839, salesPlant#949840, listing#949841, sourceOfSupplyCategory#949842, struct(systemId, systemId#949834, internalUUID, internalUUID#949835, plant, plant#949836, product, product#949837, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949838, productionAspect, productionAspect#949839, salesPlant, salesPlant#949840, listing, listing#949841, sourceOfSupplyCategory, sourceOfSupplyCategory#949842) AS productPlant#949843]
(1371) Project
Arguments: [productPlant#949843]
(1372) Join
Arguments: LeftOuter, ((product#949830 <=> productPlant#949843.product.internalRefUUID) AND (plant#949831 <=> productPlant#949843.plant.internalRefUUID))
(1373) Project
Arguments: [product#949830, plant#949831, orderDateTime#949832, productPlant#949843]
(1374) LogicalRelation
Arguments: parquet, [systemId#949844, internalUUID#949845, id#949846, displayId#949847, name#949848, baseUnitOfMeasure#949849, unitOfMeasures#949850, unitOfMeasureConversions#949851, productionAspect#949852, salesAspect#949853, procurementAspect#949854, productGroup#949855], false
(1375) Repartition
Arguments: 37, true
(1376) Join
Arguments: LeftOuter, (product#949830 = internalUUID#949845)
(1377) Project
Arguments: [product#949830, plant#949831, orderDateTime#949832, productPlant#949843, systemId#949844, internalUUID#949845, id#949846, displayId#949847, name#949848, baseUnitOfMeasure#949849, unitOfMeasures#949850, unitOfMeasureConversions#949851, productionAspect#949852, salesAspect#949853, procurementAspect#949854, productGroup#949855, filter(unitOfMeasureConversions#949851, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949843.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949843.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949849.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949849.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949856]
(1378) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949856.quantityNumerator), true, [quantityNumerator#949857]
(1379) Project
Arguments: [product#949830, plant#949831, orderDateTime#949832, productPlant#949843, systemId#949844, internalUUID#949845, id#949846, displayId#949847, name#949848, baseUnitOfMeasure#949849, unitOfMeasures#949850, unitOfMeasureConversions#949851, productionAspect#949852, salesAspect#949853, procurementAspect#949854, productGroup#949855, filteredUnitOfMeasureConversions#949856, quantityNumerator#949857]
(1380) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949856.quantityDenominator), true, [quantityDenominator#949858]
(1381) Project
Arguments: [product#949830, plant#949831, orderDateTime#949832, productPlant#949843, systemId#949844, internalUUID#949845, id#949846, displayId#949847, name#949848, baseUnitOfMeasure#949849, unitOfMeasures#949850, unitOfMeasureConversions#949851, productionAspect#949852, salesAspect#949853, procurementAspect#949854, productGroup#949855, filteredUnitOfMeasureConversions#949856, quantityNumerator#949857, quantityDenominator#949858]
(1382) Project
Arguments: [product#949830, plant#949831, orderDateTime#949832, productPlant#949843, systemId#949844, internalUUID#949845, id#949846, displayId#949847, name#949848, baseUnitOfMeasure#949849, unitOfMeasures#949850, unitOfMeasureConversions#949851, productionAspect#949852, salesAspect#949853, procurementAspect#949854, productGroup#949855, filteredUnitOfMeasureConversions#949856, quantityNumerator#949857, quantityDenominator#949858, (cast(quantityNumerator#949857 as double) / cast(quantityDenominator#949858 as double)) AS outboundUnit#949859]
(1383) Project
Arguments: [product#949830, plant#949831, orderDateTime#949832, productPlant#949843, systemId#949844, internalUUID#949845, id#949846, displayId#949847, name#949848, baseUnitOfMeasure#949849, unitOfMeasures#949850, unitOfMeasureConversions#949851, productionAspect#949852, salesAspect#949853, procurementAspect#949854, productGroup#949855, filteredUnitOfMeasureConversions#949856, quantityNumerator#949857, quantityDenominator#949858, CASE WHEN (isnull(outboundUnit#949859) OR (outboundUnit#949859 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#949859 END AS outboundUnit#949860]
(1384) Project
Arguments: [product#949830, plant#949831, orderDateTime#949832, productPlant#949843, outboundUnit#949860]
(1385) Join
Arguments: Inner, ((plantUuid#949822 = plant#949831) AND (productUuid#949824 = product#949830))
(1386) Filter
Arguments: (calculationDateTime#949818 <= orderDateTime#949832)
(1387) Project
Arguments: [plantUuid#949822 AS plant#949861, productUuid#949824 AS product#949862, storageLocId#949825, calculationDateTime#949818, quantity#949827]
(1388) LogicalRelation
Arguments: parquet, [systemId#949863, internalUUID#949864, product#949865, plant#949866, calculationDateTime#949867, stockQuantities#949868], false
(1389) Repartition
Arguments: 37, true
(1390) LogicalRelation
Arguments: parquet, [marketUnit#949869, description#949870, articleHierarchy#949871, defaultCurrency#949872, responsibilities#949873, replenishmentTypes#949874, distributionCenters#949875, assignedArticleHierarchyNodes#949876, minOrderQtySetting#949877, listingCheck#949878, odsSelection#949879, demandProfiles#949880, constraintProfiles#949881, optimizationProfiles#949882, orderGroupSplitProfiles#949883, supplierMinimumProfiles#949884, multipleRestrictionProfiles#949885, preferredUomSource#949886, handlingOfUnfulfilledDemands#949887, negligibleQuantitiesThreshold#949888, eventtype#949889], false
(1391) Repartition
Arguments: 37, true
(1392) Filter
Arguments: (marketUnit#949869 <=> IW_MU_CRP-125444_1)
(1393) Project
Arguments: [marketUnit#949869, description#949870, articleHierarchy#949871, defaultCurrency#949872, responsibilities#949873, replenishmentTypes#949874, distributionCenters#949875, assignedArticleHierarchyNodes#949876, minOrderQtySetting#949877, listingCheck#949878, odsSelection#949879, demandProfiles#949880, constraintProfiles#949881, optimizationProfiles#949882, orderGroupSplitProfiles#949883, supplierMinimumProfiles#949884, multipleRestrictionProfiles#949885, preferredUomSource#949886, handlingOfUnfulfilledDemands#949887, negligibleQuantitiesThreshold#949888, eventtype#949889]
(1394) Project
Arguments: [distributionCenters#949875]
(1395) Generate
Arguments: explode(distributionCenters#949875), false, [distributionCenters#949890]
(1396) Project
Arguments: [distributionCenters#949890]
(1397) Generate
Arguments: explode(distributionCenters#949890.storageLocations), false, [storageLocations#949891]
(1398) Project
Arguments: [distributionCenters#949890.id AS plantId#949892, distributionCenters#949890.internalRefUUID AS plantUuid#949893, storageLocations#949891]
(1399) Project
Arguments: [plantId#949892, plantUuid#949893, storageLocations#949891.id AS storageLocId#949894, storageLocations#949891.internalRefUUID AS storageLocUuid#949895]
(1400) LogicalRelation
Arguments: parquet, [product#949896, plant#949897, orderDateTime#949898, planningStartDateTime#949899], false
(1401) RepartitionByExpression
Arguments: [product#949896, plant#949897], 37
(1402) Project
Arguments: [product#949896, plant#949897, orderDateTime#949898]
(1403) LogicalRelation
Arguments: parquet, [systemId#949900, internalUUID#949901, plant#949902, product#949903, blockedForReplenishmentStartingFrom#949904, productionAspect#949905, salesPlant#949906, listing#949907, sourceOfSupplyCategory#949908], false
(1404) Repartition
Arguments: 37, true
(1405) Project
Arguments: [systemId#949900, internalUUID#949901, plant#949902, product#949903, blockedForReplenishmentStartingFrom#949904, productionAspect#949905, salesPlant#949906, listing#949907, sourceOfSupplyCategory#949908, struct(systemId, systemId#949900, internalUUID, internalUUID#949901, plant, plant#949902, product, product#949903, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949904, productionAspect, productionAspect#949905, salesPlant, salesPlant#949906, listing, listing#949907, sourceOfSupplyCategory, sourceOfSupplyCategory#949908) AS productPlant#949909]
(1406) Project
Arguments: [productPlant#949909]
(1407) Join
Arguments: LeftOuter, ((product#949896 <=> productPlant#949909.product.internalRefUUID) AND (plant#949897 <=> productPlant#949909.plant.internalRefUUID))
(1408) Project
Arguments: [product#949896, plant#949897, orderDateTime#949898, productPlant#949909]
(1409) LogicalRelation
Arguments: parquet, [systemId#949910, internalUUID#949911, id#949912, displayId#949913, name#949914, baseUnitOfMeasure#949915, unitOfMeasures#949916, unitOfMeasureConversions#949917, productionAspect#949918, salesAspect#949919, procurementAspect#949920, productGroup#949921], false
(1410) Repartition
Arguments: 37, true
(1411) Join
Arguments: LeftOuter, (product#949896 = internalUUID#949911)
(1412) Project
Arguments: [product#949896, plant#949897, orderDateTime#949898, productPlant#949909, systemId#949910, internalUUID#949911, id#949912, displayId#949913, name#949914, baseUnitOfMeasure#949915, unitOfMeasures#949916, unitOfMeasureConversions#949917, productionAspect#949918, salesAspect#949919, procurementAspect#949920, productGroup#949921, filter(unitOfMeasureConversions#949917, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949909.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949909.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949915.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949915.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949922]
(1413) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949922.quantityNumerator), true, [quantityNumerator#949923]
(1414) Project
Arguments: [product#949896, plant#949897, orderDateTime#949898, productPlant#949909, systemId#949910, internalUUID#949911, id#949912, displayId#949913, name#949914, baseUnitOfMeasure#949915, unitOfMeasures#949916, unitOfMeasureConversions#949917, productionAspect#949918, salesAspect#949919, procurementAspect#949920, productGroup#949921, filteredUnitOfMeasureConversions#949922, quantityNumerator#949923]
(1415) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949922.quantityDenominator), true, [quantityDenominator#949924]
(1416) Project
Arguments: [product#949896, plant#949897, orderDateTime#949898, productPlant#949909, systemId#949910, internalUUID#949911, id#949912, displayId#949913, name#949914, baseUnitOfMeasure#949915, unitOfMeasures#949916, unitOfMeasureConversions#949917, productionAspect#949918, salesAspect#949919, procurementAspect#949920, productGroup#949921, filteredUnitOfMeasureConversions#949922, quantityNumerator#949923, quantityDenominator#949924]
(1417) Project
Arguments: [product#949896, plant#949897, orderDateTime#949898, productPlant#949909, systemId#949910, internalUUID#949911, id#949912, displayId#949913, name#949914, baseUnitOfMeasure#949915, unitOfMeasures#949916, unitOfMeasureConversions#949917, productionAspect#949918, salesAspect#949919, procurementAspect#949920, productGroup#949921, filteredUnitOfMeasureConversions#949922, quantityNumerator#949923, quantityDenominator#949924, (cast(quantityNumerator#949923 as double) / cast(quantityDenominator#949924 as double)) AS outboundUnit#949925]
(1418) Project
Arguments: [product#949896, plant#949897, orderDateTime#949898, productPlant#949909, systemId#949910, internalUUID#949911, id#949912, displayId#949913, name#949914, baseUnitOfMeasure#949915, unitOfMeasures#949916, unitOfMeasureConversions#949917, productionAspect#949918, salesAspect#949919, procurementAspect#949920, productGroup#949921, filteredUnitOfMeasureConversions#949922, quantityNumerator#949923, quantityDenominator#949924, CASE WHEN (isnull(outboundUnit#949925) OR (outboundUnit#949925 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#949925 END AS outboundUnit#949926]
(1419) Project
Arguments: [product#949896, plant#949897, orderDateTime#949898, productPlant#949909, outboundUnit#949926]
(1420) Project
Arguments: [plant#949897]
(1421) Deduplicate
Arguments: [plant#949897]
(1422) Join
Arguments: Inner, (plantUuid#949893 = plant#949897)
(1423) Project
Arguments: [plantId#949892, plantUuid#949893, storageLocId#949894, storageLocUuid#949895]
(1424) Join
Arguments: Inner, (plant#949866.internalRefUUID <=> plantUuid#949893)
(1425) Generate
Arguments: explode(filter(stockQuantities#949868, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#949895) AND (lambda x#944569.storageLocation.Id = storageLocId#949894)), lambda x#944569, false))), false, [stockQuantity#949927]
(1426) Project
Arguments: [systemId#949863, internalUUID#949864, product#949865, plant#949866, calculationDateTime#949867, stockQuantities#949868, plantId#949892, plantUuid#949893, storageLocId#949894, storageLocUuid#949895, stockQuantity#949927]
(1427) Aggregate
Arguments: [plantUuid#949893, internalUUID#949864, plant#949866, product#949865, systemId#949863], [plantUuid#949893, internalUUID#949864, plant#949866, product#949865, systemId#949863, first(calculationDateTime#949867, false) AS calculationDateTime#949928, collect_list(stockQuantity#949927, 0, 0) AS stockQuantities#949929]
(1428) Project
Arguments: [systemId#949863, internalUUID#949864, product#949865, plant#949866, calculationDateTime#949928, stockQuantities#949929]
(1429) Generate
Arguments: explode(stockQuantities#949929), false, [stockQuantity#949930]
(1430) Project
Arguments: [systemId#949863, internalUUID#949864, product#949865, plant#949866, calculationDateTime#949928, stockQuantities#949929, stockQuantity#949930]
(1431) Project
Arguments: [plant#949866.id AS plant#949931, plant#949866.internalRefUUID AS plantUuid#949932, product#949865.id AS product#949933, product#949865.internalRefUUID AS productUuid#949934, calculationDateTime#949928, stockQuantity#949930.storagelocation.id AS storageLocId#949935, stockQuantity#949930.storagelocation.internalRefUUID AS storageLocUuid#949936, stockQuantity#949930.quantity.measure AS quantity#949937, stockQuantity#949930.specialStockIndicator.code AS specialStockIndicator#949938, stockQuantity#949930.stockType.code AS stockType#949939]
(1432) Filter
Arguments: ((specialStockIndicator#949938 = ) AND (stockType#949939 = 01))
(1433) LogicalRelation
Arguments: parquet, [product#949940, plant#949941, orderDateTime#949942, planningStartDateTime#949943], false
(1434) RepartitionByExpression
Arguments: [product#949940, plant#949941], 37
(1435) Project
Arguments: [product#949940, plant#949941, orderDateTime#949942]
(1436) LogicalRelation
Arguments: parquet, [systemId#949944, internalUUID#949945, plant#949946, product#949947, blockedForReplenishmentStartingFrom#949948, productionAspect#949949, salesPlant#949950, listing#949951, sourceOfSupplyCategory#949952], false
(1437) Repartition
Arguments: 37, true
(1438) Project
Arguments: [systemId#949944, internalUUID#949945, plant#949946, product#949947, blockedForReplenishmentStartingFrom#949948, productionAspect#949949, salesPlant#949950, listing#949951, sourceOfSupplyCategory#949952, struct(systemId, systemId#949944, internalUUID, internalUUID#949945, plant, plant#949946, product, product#949947, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#949948, productionAspect, productionAspect#949949, salesPlant, salesPlant#949950, listing, listing#949951, sourceOfSupplyCategory, sourceOfSupplyCategory#949952) AS productPlant#949953]
(1439) Project
Arguments: [productPlant#949953]
(1440) Join
Arguments: LeftOuter, ((product#949940 <=> productPlant#949953.product.internalRefUUID) AND (plant#949941 <=> productPlant#949953.plant.internalRefUUID))
(1441) Project
Arguments: [product#949940, plant#949941, orderDateTime#949942, productPlant#949953]
(1442) LogicalRelation
Arguments: parquet, [systemId#949954, internalUUID#949955, id#949956, displayId#949957, name#949958, baseUnitOfMeasure#949959, unitOfMeasures#949960, unitOfMeasureConversions#949961, productionAspect#949962, salesAspect#949963, procurementAspect#949964, productGroup#949965], false
(1443) Repartition
Arguments: 37, true
(1444) Join
Arguments: LeftOuter, (product#949940 = internalUUID#949955)
(1445) Project
Arguments: [product#949940, plant#949941, orderDateTime#949942, productPlant#949953, systemId#949954, internalUUID#949955, id#949956, displayId#949957, name#949958, baseUnitOfMeasure#949959, unitOfMeasures#949960, unitOfMeasureConversions#949961, productionAspect#949962, salesAspect#949963, procurementAspect#949964, productGroup#949965, filter(unitOfMeasureConversions#949961, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#949953.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#949953.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#949959.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#949959.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#949966]
(1446) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949966.quantityNumerator), true, [quantityNumerator#949967]
(1447) Project
Arguments: [product#949940, plant#949941, orderDateTime#949942, productPlant#949953, systemId#949954, internalUUID#949955, id#949956, displayId#949957, name#949958, baseUnitOfMeasure#949959, unitOfMeasures#949960, unitOfMeasureConversions#949961, productionAspect#949962, salesAspect#949963, procurementAspect#949964, productGroup#949965, filteredUnitOfMeasureConversions#949966, quantityNumerator#949967]
(1448) Generate
Arguments: explode(filteredUnitOfMeasureConversions#949966.quantityDenominator), true, [quantityDenominator#949968]
(1449) Project
Arguments: [product#949940, plant#949941, orderDateTime#949942, productPlant#949953, systemId#949954, internalUUID#949955, id#949956, displayId#949957, name#949958, baseUnitOfMeasure#949959, unitOfMeasures#949960, unitOfMeasureConversions#949961, productionAspect#949962, salesAspect#949963, procurementAspect#949964, productGroup#949965, filteredUnitOfMeasureConversions#949966, quantityNumerator#949967, quantityDenominator#949968]
(1450) Project
Arguments: [product#949940, plant#949941, orderDateTime#949942, productPlant#949953, systemId#949954, internalUUID#949955, id#949956, displayId#949957, name#949958, baseUnitOfMeasure#949959, unitOfMeasures#949960, unitOfMeasureConversions#949961, productionAspect#949962, salesAspect#949963, procurementAspect#949964, productGroup#949965, filteredUnitOfMeasureConversions#949966, quantityNumerator#949967, quantityDenominator#949968, (cast(quantityNumerator#949967 as double) / cast(quantityDenominator#949968 as double)) AS outboundUnit#949969]
(1451) Project
Arguments: [product#949940, plant#949941, orderDateTime#949942, productPlant#949953, systemId#949954, internalUUID#949955, id#949956, displayId#949957, name#949958, baseUnitOfMeasure#949959, unitOfMeasures#949960, unitOfMeasureConversions#949961, productionAspect#949962, salesAspect#949963, procurementAspect#949964, productGroup#949965, filteredUnitOfMeasureConversions#949966, quantityNumerator#949967, quantityDenominator#949968, CASE WHEN (isnull(outboundUnit#949969) OR (outboundUnit#949969 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#949969 END AS outboundUnit#949970]
(1452) Project
Arguments: [product#949940, plant#949941, orderDateTime#949942, productPlant#949953, outboundUnit#949970]
(1453) Join
Arguments: Inner, ((plantUuid#949932 = plant#949941) AND (productUuid#949934 = product#949940))
(1454) Filter
Arguments: (calculationDateTime#949928 <= orderDateTime#949942)
(1455) Project
Arguments: [plantUuid#949932 AS plant#949971, productUuid#949934 AS product#949972, storageLocId#949935, calculationDateTime#949928, quantity#949937]
(1456) Aggregate
Arguments: [plant#949971, product#949972, storageLocId#949935], [plant#949971, product#949972, storageLocId#949935, max(calculationDateTime#949928) AS max_calc_datetime#949973]
(1457) Join
Arguments: Inner, ((((plant#949861 <=> plant#949971) AND (product#949862 <=> product#949972)) AND (storageLocId#949825 <=> storageLocId#949935)) AND (calculationDateTime#949818 <=> max_calc_datetime#949973))
(1458) Project
Arguments: [plant#949861, product#949862, storageLocId#949825, calculationDateTime#949818, quantity#949827]
(1459) Aggregate
Arguments: [product#949862, plant#949861], [product#949862, plant#949861, sum(quantity#949827) AS quantitySum#949974, min(calculationDateTime#949818) AS minCalculationDateTime#949975]
(1460) Project
Arguments: [product#949862, plant#949861, quantitySum#949974, minCalculationDateTime#949975, round(quantitySum#949974, 0) AS roundedQuantitySum#949976]
(1461) Join
Arguments: LeftOuter, ((plant#949723 = plant#949861) AND (product#949722 = product#949862))
(1462) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, roundedQuantitySum#949976, minCalculationDateTime#949975]
(1463) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, roundedQuantitySum#949976, minCalculationDateTime#949975, CASE WHEN isnotnull(minCalculationDateTime#949975) THEN minCalculationDateTime#949975 ELSE orderDateTime#949724 END AS stockDatetime#949977]
(1464) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, roundedQuantitySum#949976, minCalculationDateTime#949975, stockDatetime#949977, CASE WHEN isnotnull(roundedQuantitySum#949976) THEN array(roundedQuantitySum#949976) ELSE array(0.0) END AS stockBatchQuantities#949978]
(1465) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, roundedQuantitySum#949976, minCalculationDateTime#949975, stockDatetime#949977, stockBatchQuantities#949978, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#949979]
(1466) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, roundedQuantitySum#949976, stockDatetime#949977, stockBatchQuantities#949978, stockBatchShelfLifeEndDatetimes#949979]
(1467) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, stockBatchShelfLifeEndDatetimes#949979]
(1468) LogicalRelation
Arguments: parquet, [product#949980, plant#949981, demandChannel#949982, demandStream#949983, considerVariance#949984, demandTimeBuckets#949985, demandPointInTimeStart#949986, demandPointInTimeEnd#949987, demandPointInTime#949988], false
(1469) Join
Arguments: LeftOuter, ((plant#949981 <=> plant#949723) AND (product#949980 <=> product#949722))
(1470) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, stockBatchShelfLifeEndDatetimes#949979, product#949980, plant#949981, demandChannel#949982, demandStream#949983, considerVariance#949984, demandTimeBuckets#949985, demandPointInTimeStart#949986, demandPointInTimeEnd#949987, demandPointInTime#949988, CASE WHEN isnotnull(product#949980) THEN struct(demandChannel, demandChannel#949982, demandStream, demandStream#949983, considerVariance, considerVariance#949984, demandTimeBuckets, demandTimeBuckets#949985, demandPointInTimeStart, demandPointInTimeStart#949986, demandPointInTimeEnd, demandPointInTimeEnd#949987, demandPointInTime, demandPointInTime#949988) 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#949989]
(1471) Aggregate
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, stockBatchShelfLifeEndDatetimes#949979], [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, stockBatchShelfLifeEndDatetimes#949979, collect_list(rawDemands#949989, 0, 0) AS rawDemands#949990]
(1472) SubqueryAlias
Arguments: wl
(1473) LogicalRelation
Arguments: parquet, [systemId#949991, internalUUID#949992, id#949993, displayId#949994, name#949995, category#949996, companyCode#949997, address#949998, mainDistributionChain#949999, mainPurchasingOrganization#950000, validPurchasingOrganizations#950001, productGroup#950002], false
(1474) Repartition
Arguments: 37, true
(1475) Project
Arguments: [systemId#949991, internalUUID#949992, id#949993, displayId#949994, name#949995, category#949996, companyCode#949997, address#949998, mainDistributionChain#949999, mainPurchasingOrganization#950000, validPurchasingOrganizations#950001, productGroup#950002, address#949998.timezone.code AS timezonecode#950003]
(1476) Join
Arguments: LeftOuter, (plant#949723 <=> internalUUID#949992)
(1477) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, stockBatchShelfLifeEndDatetimes#949979, rawDemands#949990, systemId#949991, internalUUID#949992, id#949993, displayId#949994, name#949995, category#949996, companyCode#949997, address#949998, mainDistributionChain#949999, mainPurchasingOrganization#950000, validPurchasingOrganizations#950001, productGroup#950002, CASE WHEN isnotnull(timezonecode#950003) THEN timezonecode#950003 ELSE UTC END AS timezonecode#950004]
(1478) Project
Arguments: [product#949722, plant#949723, orderDateTime#949724, productPlant#949735, outboundUnit#949752, stockDatetime#949977, stockBatchQuantities#949978, stockBatchShelfLifeEndDatetimes#949979, rawDemands#949990, timezonecode#950004]
(1479) DeserializeToObject
Arguments: createexternalrow(invoke(product#949722.toString()), invoke(plant#949723.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#949724)), if (isnull(productPlant#949735)) null else createexternalrow(invoke(productPlant#949735.systemId.toString()), invoke(productPlant#949735.internalUUID.toString()), if (isnull(productPlant#949735.plant)) null else createexternalrow(invoke(productPlant#949735.plant.internalRefUUID.toString()), invoke(productPlant#949735.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#949735.product)) null else createexternalrow(invoke(productPlant#949735.product.internalRefUUID.toString()), invoke(productPlant#949735.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#949735.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#949735.productionAspect)) null else createexternalrow(if (isnull(productPlant#949735.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#949735.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#949735.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#949735.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#949735.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#949735.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#949735.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#949735.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#949735.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#949735.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#949735.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#949735.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#949735.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#949735.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#949735.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#949735.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#949735.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#949735.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#949735.salesPlant)) null else createexternalrow(if (isnull(productPlant#949735.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#949735.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#949735.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, 74989), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#949735.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#949735.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#949735.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#949735.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#949752)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#949977)), mapobjects(lambdavariable(MapObject, DoubleType, true, 74990), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 74990) as double))), stockBatchQuantities#949978, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 74991), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 74991) as timestamp)))), stockBatchShelfLifeEndDatetimes#949979, 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, 74992), 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, 74992))) 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, 74992).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, 74992).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, 74992).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).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, 74992).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, 74992).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, 74992).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).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, 74992).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#949990, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#950004.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(1480) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, 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)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)], obj#945945: org.apache.spark.sql.Row
(1481) 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#950005, 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#950006, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74980), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74980), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74981), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74981), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74982), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74982), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74983), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74983), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74984), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74984), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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#950007, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74986), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74986), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74987), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74987), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74988), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74988), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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#950008]
(1482) Join
Arguments: LeftOuter, ((plant#950006 <=> plant#949465) AND (product#950005 <=> product#949464))
(1483) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, stockBatchShelfLifeEndDatetimes#949721, plant#950006, dayBucketDemands#950007, pointInTimeDemands#950008]
(1484) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, stockBatchShelfLifeEndDatetimes#949721, dayBucketDemands#950007, pointInTimeDemands#950008]
(1485) LogicalRelation
Arguments: parquet, [product#950009, plant#950010, orderDateTime#950011, planningStartDateTime#950012], false
(1486) RepartitionByExpression
Arguments: [product#950009, plant#950010], 37
(1487) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011]
(1488) LogicalRelation
Arguments: parquet, [systemId#950013, internalUUID#950014, plant#950015, product#950016, blockedForReplenishmentStartingFrom#950017, productionAspect#950018, salesPlant#950019, listing#950020, sourceOfSupplyCategory#950021], false
(1489) Repartition
Arguments: 37, true
(1490) Project
Arguments: [systemId#950013, internalUUID#950014, plant#950015, product#950016, blockedForReplenishmentStartingFrom#950017, productionAspect#950018, salesPlant#950019, listing#950020, sourceOfSupplyCategory#950021, struct(systemId, systemId#950013, internalUUID, internalUUID#950014, plant, plant#950015, product, product#950016, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950017, productionAspect, productionAspect#950018, salesPlant, salesPlant#950019, listing, listing#950020, sourceOfSupplyCategory, sourceOfSupplyCategory#950021) AS productPlant#950022]
(1491) Project
Arguments: [productPlant#950022]
(1492) Join
Arguments: LeftOuter, ((product#950009 <=> productPlant#950022.product.internalRefUUID) AND (plant#950010 <=> productPlant#950022.plant.internalRefUUID))
(1493) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022]
(1494) LogicalRelation
Arguments: parquet, [systemId#950023, internalUUID#950024, id#950025, displayId#950026, name#950027, baseUnitOfMeasure#950028, unitOfMeasures#950029, unitOfMeasureConversions#950030, productionAspect#950031, salesAspect#950032, procurementAspect#950033, productGroup#950034], false
(1495) Repartition
Arguments: 37, true
(1496) Join
Arguments: LeftOuter, (product#950009 = internalUUID#950024)
(1497) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, systemId#950023, internalUUID#950024, id#950025, displayId#950026, name#950027, baseUnitOfMeasure#950028, unitOfMeasures#950029, unitOfMeasureConversions#950030, productionAspect#950031, salesAspect#950032, procurementAspect#950033, productGroup#950034, filter(unitOfMeasureConversions#950030, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950022.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950022.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950028.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950028.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950035]
(1498) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950035.quantityNumerator), true, [quantityNumerator#950036]
(1499) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, systemId#950023, internalUUID#950024, id#950025, displayId#950026, name#950027, baseUnitOfMeasure#950028, unitOfMeasures#950029, unitOfMeasureConversions#950030, productionAspect#950031, salesAspect#950032, procurementAspect#950033, productGroup#950034, filteredUnitOfMeasureConversions#950035, quantityNumerator#950036]
(1500) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950035.quantityDenominator), true, [quantityDenominator#950037]
(1501) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, systemId#950023, internalUUID#950024, id#950025, displayId#950026, name#950027, baseUnitOfMeasure#950028, unitOfMeasures#950029, unitOfMeasureConversions#950030, productionAspect#950031, salesAspect#950032, procurementAspect#950033, productGroup#950034, filteredUnitOfMeasureConversions#950035, quantityNumerator#950036, quantityDenominator#950037]
(1502) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, systemId#950023, internalUUID#950024, id#950025, displayId#950026, name#950027, baseUnitOfMeasure#950028, unitOfMeasures#950029, unitOfMeasureConversions#950030, productionAspect#950031, salesAspect#950032, procurementAspect#950033, productGroup#950034, filteredUnitOfMeasureConversions#950035, quantityNumerator#950036, quantityDenominator#950037, (cast(quantityNumerator#950036 as double) / cast(quantityDenominator#950037 as double)) AS outboundUnit#950038]
(1503) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, systemId#950023, internalUUID#950024, id#950025, displayId#950026, name#950027, baseUnitOfMeasure#950028, unitOfMeasures#950029, unitOfMeasureConversions#950030, productionAspect#950031, salesAspect#950032, procurementAspect#950033, productGroup#950034, filteredUnitOfMeasureConversions#950035, quantityNumerator#950036, quantityDenominator#950037, CASE WHEN (isnull(outboundUnit#950038) OR (outboundUnit#950038 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950038 END AS outboundUnit#950039]
(1504) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, outboundUnit#950039]
(1505) LogicalRelation
Arguments: parquet, [systemId#950040, internalUUID#950041, product#950042, plant#950043, calculationDateTime#950044, stockQuantities#950045], false
(1506) Repartition
Arguments: 37, true
(1507) LogicalRelation
Arguments: parquet, [marketUnit#950046, description#950047, articleHierarchy#950048, defaultCurrency#950049, responsibilities#950050, replenishmentTypes#950051, distributionCenters#950052, assignedArticleHierarchyNodes#950053, minOrderQtySetting#950054, listingCheck#950055, odsSelection#950056, demandProfiles#950057, constraintProfiles#950058, optimizationProfiles#950059, orderGroupSplitProfiles#950060, supplierMinimumProfiles#950061, multipleRestrictionProfiles#950062, preferredUomSource#950063, handlingOfUnfulfilledDemands#950064, negligibleQuantitiesThreshold#950065, eventtype#950066], false
(1508) Repartition
Arguments: 37, true
(1509) Filter
Arguments: (marketUnit#950046 <=> IW_MU_CRP-125444_1)
(1510) Project
Arguments: [marketUnit#950046, description#950047, articleHierarchy#950048, defaultCurrency#950049, responsibilities#950050, replenishmentTypes#950051, distributionCenters#950052, assignedArticleHierarchyNodes#950053, minOrderQtySetting#950054, listingCheck#950055, odsSelection#950056, demandProfiles#950057, constraintProfiles#950058, optimizationProfiles#950059, orderGroupSplitProfiles#950060, supplierMinimumProfiles#950061, multipleRestrictionProfiles#950062, preferredUomSource#950063, handlingOfUnfulfilledDemands#950064, negligibleQuantitiesThreshold#950065, eventtype#950066]
(1511) Project
Arguments: [distributionCenters#950052]
(1512) Generate
Arguments: explode(distributionCenters#950052), false, [distributionCenters#950067]
(1513) Project
Arguments: [distributionCenters#950067]
(1514) Generate
Arguments: explode(distributionCenters#950067.storageLocations), false, [storageLocations#950068]
(1515) Project
Arguments: [distributionCenters#950067.id AS plantId#950069, distributionCenters#950067.internalRefUUID AS plantUuid#950070, storageLocations#950068]
(1516) Project
Arguments: [plantId#950069, plantUuid#950070, storageLocations#950068.id AS storageLocId#950071, storageLocations#950068.internalRefUUID AS storageLocUuid#950072]
(1517) LogicalRelation
Arguments: parquet, [product#950073, plant#950074, orderDateTime#950075, planningStartDateTime#950076], false
(1518) RepartitionByExpression
Arguments: [product#950073, plant#950074], 37
(1519) Project
Arguments: [product#950073, plant#950074, orderDateTime#950075]
(1520) LogicalRelation
Arguments: parquet, [systemId#950077, internalUUID#950078, plant#950079, product#950080, blockedForReplenishmentStartingFrom#950081, productionAspect#950082, salesPlant#950083, listing#950084, sourceOfSupplyCategory#950085], false
(1521) Repartition
Arguments: 37, true
(1522) Project
Arguments: [systemId#950077, internalUUID#950078, plant#950079, product#950080, blockedForReplenishmentStartingFrom#950081, productionAspect#950082, salesPlant#950083, listing#950084, sourceOfSupplyCategory#950085, struct(systemId, systemId#950077, internalUUID, internalUUID#950078, plant, plant#950079, product, product#950080, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950081, productionAspect, productionAspect#950082, salesPlant, salesPlant#950083, listing, listing#950084, sourceOfSupplyCategory, sourceOfSupplyCategory#950085) AS productPlant#950086]
(1523) Project
Arguments: [productPlant#950086]
(1524) Join
Arguments: LeftOuter, ((product#950073 <=> productPlant#950086.product.internalRefUUID) AND (plant#950074 <=> productPlant#950086.plant.internalRefUUID))
(1525) Project
Arguments: [product#950073, plant#950074, orderDateTime#950075, productPlant#950086]
(1526) LogicalRelation
Arguments: parquet, [systemId#950087, internalUUID#950088, id#950089, displayId#950090, name#950091, baseUnitOfMeasure#950092, unitOfMeasures#950093, unitOfMeasureConversions#950094, productionAspect#950095, salesAspect#950096, procurementAspect#950097, productGroup#950098], false
(1527) Repartition
Arguments: 37, true
(1528) Join
Arguments: LeftOuter, (product#950073 = internalUUID#950088)
(1529) Project
Arguments: [product#950073, plant#950074, orderDateTime#950075, productPlant#950086, systemId#950087, internalUUID#950088, id#950089, displayId#950090, name#950091, baseUnitOfMeasure#950092, unitOfMeasures#950093, unitOfMeasureConversions#950094, productionAspect#950095, salesAspect#950096, procurementAspect#950097, productGroup#950098, filter(unitOfMeasureConversions#950094, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950086.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950086.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950092.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950092.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950099]
(1530) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950099.quantityNumerator), true, [quantityNumerator#950100]
(1531) Project
Arguments: [product#950073, plant#950074, orderDateTime#950075, productPlant#950086, systemId#950087, internalUUID#950088, id#950089, displayId#950090, name#950091, baseUnitOfMeasure#950092, unitOfMeasures#950093, unitOfMeasureConversions#950094, productionAspect#950095, salesAspect#950096, procurementAspect#950097, productGroup#950098, filteredUnitOfMeasureConversions#950099, quantityNumerator#950100]
(1532) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950099.quantityDenominator), true, [quantityDenominator#950101]
(1533) Project
Arguments: [product#950073, plant#950074, orderDateTime#950075, productPlant#950086, systemId#950087, internalUUID#950088, id#950089, displayId#950090, name#950091, baseUnitOfMeasure#950092, unitOfMeasures#950093, unitOfMeasureConversions#950094, productionAspect#950095, salesAspect#950096, procurementAspect#950097, productGroup#950098, filteredUnitOfMeasureConversions#950099, quantityNumerator#950100, quantityDenominator#950101]
(1534) Project
Arguments: [product#950073, plant#950074, orderDateTime#950075, productPlant#950086, systemId#950087, internalUUID#950088, id#950089, displayId#950090, name#950091, baseUnitOfMeasure#950092, unitOfMeasures#950093, unitOfMeasureConversions#950094, productionAspect#950095, salesAspect#950096, procurementAspect#950097, productGroup#950098, filteredUnitOfMeasureConversions#950099, quantityNumerator#950100, quantityDenominator#950101, (cast(quantityNumerator#950100 as double) / cast(quantityDenominator#950101 as double)) AS outboundUnit#950102]
(1535) Project
Arguments: [product#950073, plant#950074, orderDateTime#950075, productPlant#950086, systemId#950087, internalUUID#950088, id#950089, displayId#950090, name#950091, baseUnitOfMeasure#950092, unitOfMeasures#950093, unitOfMeasureConversions#950094, productionAspect#950095, salesAspect#950096, procurementAspect#950097, productGroup#950098, filteredUnitOfMeasureConversions#950099, quantityNumerator#950100, quantityDenominator#950101, CASE WHEN (isnull(outboundUnit#950102) OR (outboundUnit#950102 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950102 END AS outboundUnit#950103]
(1536) Project
Arguments: [product#950073, plant#950074, orderDateTime#950075, productPlant#950086, outboundUnit#950103]
(1537) Project
Arguments: [plant#950074]
(1538) Deduplicate
Arguments: [plant#950074]
(1539) Join
Arguments: Inner, (plantUuid#950070 = plant#950074)
(1540) Project
Arguments: [plantId#950069, plantUuid#950070, storageLocId#950071, storageLocUuid#950072]
(1541) Join
Arguments: Inner, (plant#950043.internalRefUUID <=> plantUuid#950070)
(1542) Generate
Arguments: explode(filter(stockQuantities#950045, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#950072) AND (lambda x#944569.storageLocation.Id = storageLocId#950071)), lambda x#944569, false))), false, [stockQuantity#950104]
(1543) Project
Arguments: [systemId#950040, internalUUID#950041, product#950042, plant#950043, calculationDateTime#950044, stockQuantities#950045, plantId#950069, plantUuid#950070, storageLocId#950071, storageLocUuid#950072, stockQuantity#950104]
(1544) Aggregate
Arguments: [plantUuid#950070, internalUUID#950041, plant#950043, product#950042, systemId#950040], [plantUuid#950070, internalUUID#950041, plant#950043, product#950042, systemId#950040, first(calculationDateTime#950044, false) AS calculationDateTime#950105, collect_list(stockQuantity#950104, 0, 0) AS stockQuantities#950106]
(1545) Project
Arguments: [systemId#950040, internalUUID#950041, product#950042, plant#950043, calculationDateTime#950105, stockQuantities#950106]
(1546) Generate
Arguments: explode(stockQuantities#950106), false, [stockQuantity#950107]
(1547) Project
Arguments: [systemId#950040, internalUUID#950041, product#950042, plant#950043, calculationDateTime#950105, stockQuantities#950106, stockQuantity#950107]
(1548) Project
Arguments: [plant#950043.id AS plant#950108, plant#950043.internalRefUUID AS plantUuid#950109, product#950042.id AS product#950110, product#950042.internalRefUUID AS productUuid#950111, calculationDateTime#950105, stockQuantity#950107.storagelocation.id AS storageLocId#950112, stockQuantity#950107.storagelocation.internalRefUUID AS storageLocUuid#950113, stockQuantity#950107.quantity.measure AS quantity#950114, stockQuantity#950107.specialStockIndicator.code AS specialStockIndicator#950115, stockQuantity#950107.stockType.code AS stockType#950116]
(1549) Filter
Arguments: ((specialStockIndicator#950115 = ) AND (stockType#950116 = 01))
(1550) LogicalRelation
Arguments: parquet, [product#950117, plant#950118, orderDateTime#950119, planningStartDateTime#950120], false
(1551) RepartitionByExpression
Arguments: [product#950117, plant#950118], 37
(1552) Project
Arguments: [product#950117, plant#950118, orderDateTime#950119]
(1553) LogicalRelation
Arguments: parquet, [systemId#950121, internalUUID#950122, plant#950123, product#950124, blockedForReplenishmentStartingFrom#950125, productionAspect#950126, salesPlant#950127, listing#950128, sourceOfSupplyCategory#950129], false
(1554) Repartition
Arguments: 37, true
(1555) Project
Arguments: [systemId#950121, internalUUID#950122, plant#950123, product#950124, blockedForReplenishmentStartingFrom#950125, productionAspect#950126, salesPlant#950127, listing#950128, sourceOfSupplyCategory#950129, struct(systemId, systemId#950121, internalUUID, internalUUID#950122, plant, plant#950123, product, product#950124, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950125, productionAspect, productionAspect#950126, salesPlant, salesPlant#950127, listing, listing#950128, sourceOfSupplyCategory, sourceOfSupplyCategory#950129) AS productPlant#950130]
(1556) Project
Arguments: [productPlant#950130]
(1557) Join
Arguments: LeftOuter, ((product#950117 <=> productPlant#950130.product.internalRefUUID) AND (plant#950118 <=> productPlant#950130.plant.internalRefUUID))
(1558) Project
Arguments: [product#950117, plant#950118, orderDateTime#950119, productPlant#950130]
(1559) LogicalRelation
Arguments: parquet, [systemId#950131, internalUUID#950132, id#950133, displayId#950134, name#950135, baseUnitOfMeasure#950136, unitOfMeasures#950137, unitOfMeasureConversions#950138, productionAspect#950139, salesAspect#950140, procurementAspect#950141, productGroup#950142], false
(1560) Repartition
Arguments: 37, true
(1561) Join
Arguments: LeftOuter, (product#950117 = internalUUID#950132)
(1562) Project
Arguments: [product#950117, plant#950118, orderDateTime#950119, productPlant#950130, systemId#950131, internalUUID#950132, id#950133, displayId#950134, name#950135, baseUnitOfMeasure#950136, unitOfMeasures#950137, unitOfMeasureConversions#950138, productionAspect#950139, salesAspect#950140, procurementAspect#950141, productGroup#950142, filter(unitOfMeasureConversions#950138, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950130.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950130.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950136.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950136.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950143]
(1563) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950143.quantityNumerator), true, [quantityNumerator#950144]
(1564) Project
Arguments: [product#950117, plant#950118, orderDateTime#950119, productPlant#950130, systemId#950131, internalUUID#950132, id#950133, displayId#950134, name#950135, baseUnitOfMeasure#950136, unitOfMeasures#950137, unitOfMeasureConversions#950138, productionAspect#950139, salesAspect#950140, procurementAspect#950141, productGroup#950142, filteredUnitOfMeasureConversions#950143, quantityNumerator#950144]
(1565) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950143.quantityDenominator), true, [quantityDenominator#950145]
(1566) Project
Arguments: [product#950117, plant#950118, orderDateTime#950119, productPlant#950130, systemId#950131, internalUUID#950132, id#950133, displayId#950134, name#950135, baseUnitOfMeasure#950136, unitOfMeasures#950137, unitOfMeasureConversions#950138, productionAspect#950139, salesAspect#950140, procurementAspect#950141, productGroup#950142, filteredUnitOfMeasureConversions#950143, quantityNumerator#950144, quantityDenominator#950145]
(1567) Project
Arguments: [product#950117, plant#950118, orderDateTime#950119, productPlant#950130, systemId#950131, internalUUID#950132, id#950133, displayId#950134, name#950135, baseUnitOfMeasure#950136, unitOfMeasures#950137, unitOfMeasureConversions#950138, productionAspect#950139, salesAspect#950140, procurementAspect#950141, productGroup#950142, filteredUnitOfMeasureConversions#950143, quantityNumerator#950144, quantityDenominator#950145, (cast(quantityNumerator#950144 as double) / cast(quantityDenominator#950145 as double)) AS outboundUnit#950146]
(1568) Project
Arguments: [product#950117, plant#950118, orderDateTime#950119, productPlant#950130, systemId#950131, internalUUID#950132, id#950133, displayId#950134, name#950135, baseUnitOfMeasure#950136, unitOfMeasures#950137, unitOfMeasureConversions#950138, productionAspect#950139, salesAspect#950140, procurementAspect#950141, productGroup#950142, filteredUnitOfMeasureConversions#950143, quantityNumerator#950144, quantityDenominator#950145, CASE WHEN (isnull(outboundUnit#950146) OR (outboundUnit#950146 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950146 END AS outboundUnit#950147]
(1569) Project
Arguments: [product#950117, plant#950118, orderDateTime#950119, productPlant#950130, outboundUnit#950147]
(1570) Join
Arguments: Inner, ((plantUuid#950109 = plant#950118) AND (productUuid#950111 = product#950117))
(1571) Filter
Arguments: (calculationDateTime#950105 <= orderDateTime#950119)
(1572) Project
Arguments: [plantUuid#950109 AS plant#950148, productUuid#950111 AS product#950149, storageLocId#950112, calculationDateTime#950105, quantity#950114]
(1573) LogicalRelation
Arguments: parquet, [systemId#950150, internalUUID#950151, product#950152, plant#950153, calculationDateTime#950154, stockQuantities#950155], false
(1574) Repartition
Arguments: 37, true
(1575) LogicalRelation
Arguments: parquet, [marketUnit#950156, description#950157, articleHierarchy#950158, defaultCurrency#950159, responsibilities#950160, replenishmentTypes#950161, distributionCenters#950162, assignedArticleHierarchyNodes#950163, minOrderQtySetting#950164, listingCheck#950165, odsSelection#950166, demandProfiles#950167, constraintProfiles#950168, optimizationProfiles#950169, orderGroupSplitProfiles#950170, supplierMinimumProfiles#950171, multipleRestrictionProfiles#950172, preferredUomSource#950173, handlingOfUnfulfilledDemands#950174, negligibleQuantitiesThreshold#950175, eventtype#950176], false
(1576) Repartition
Arguments: 37, true
(1577) Filter
Arguments: (marketUnit#950156 <=> IW_MU_CRP-125444_1)
(1578) Project
Arguments: [marketUnit#950156, description#950157, articleHierarchy#950158, defaultCurrency#950159, responsibilities#950160, replenishmentTypes#950161, distributionCenters#950162, assignedArticleHierarchyNodes#950163, minOrderQtySetting#950164, listingCheck#950165, odsSelection#950166, demandProfiles#950167, constraintProfiles#950168, optimizationProfiles#950169, orderGroupSplitProfiles#950170, supplierMinimumProfiles#950171, multipleRestrictionProfiles#950172, preferredUomSource#950173, handlingOfUnfulfilledDemands#950174, negligibleQuantitiesThreshold#950175, eventtype#950176]
(1579) Project
Arguments: [distributionCenters#950162]
(1580) Generate
Arguments: explode(distributionCenters#950162), false, [distributionCenters#950177]
(1581) Project
Arguments: [distributionCenters#950177]
(1582) Generate
Arguments: explode(distributionCenters#950177.storageLocations), false, [storageLocations#950178]
(1583) Project
Arguments: [distributionCenters#950177.id AS plantId#950179, distributionCenters#950177.internalRefUUID AS plantUuid#950180, storageLocations#950178]
(1584) Project
Arguments: [plantId#950179, plantUuid#950180, storageLocations#950178.id AS storageLocId#950181, storageLocations#950178.internalRefUUID AS storageLocUuid#950182]
(1585) LogicalRelation
Arguments: parquet, [product#950183, plant#950184, orderDateTime#950185, planningStartDateTime#950186], false
(1586) RepartitionByExpression
Arguments: [product#950183, plant#950184], 37
(1587) Project
Arguments: [product#950183, plant#950184, orderDateTime#950185]
(1588) LogicalRelation
Arguments: parquet, [systemId#950187, internalUUID#950188, plant#950189, product#950190, blockedForReplenishmentStartingFrom#950191, productionAspect#950192, salesPlant#950193, listing#950194, sourceOfSupplyCategory#950195], false
(1589) Repartition
Arguments: 37, true
(1590) Project
Arguments: [systemId#950187, internalUUID#950188, plant#950189, product#950190, blockedForReplenishmentStartingFrom#950191, productionAspect#950192, salesPlant#950193, listing#950194, sourceOfSupplyCategory#950195, struct(systemId, systemId#950187, internalUUID, internalUUID#950188, plant, plant#950189, product, product#950190, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950191, productionAspect, productionAspect#950192, salesPlant, salesPlant#950193, listing, listing#950194, sourceOfSupplyCategory, sourceOfSupplyCategory#950195) AS productPlant#950196]
(1591) Project
Arguments: [productPlant#950196]
(1592) Join
Arguments: LeftOuter, ((product#950183 <=> productPlant#950196.product.internalRefUUID) AND (plant#950184 <=> productPlant#950196.plant.internalRefUUID))
(1593) Project
Arguments: [product#950183, plant#950184, orderDateTime#950185, productPlant#950196]
(1594) LogicalRelation
Arguments: parquet, [systemId#950197, internalUUID#950198, id#950199, displayId#950200, name#950201, baseUnitOfMeasure#950202, unitOfMeasures#950203, unitOfMeasureConversions#950204, productionAspect#950205, salesAspect#950206, procurementAspect#950207, productGroup#950208], false
(1595) Repartition
Arguments: 37, true
(1596) Join
Arguments: LeftOuter, (product#950183 = internalUUID#950198)
(1597) Project
Arguments: [product#950183, plant#950184, orderDateTime#950185, productPlant#950196, systemId#950197, internalUUID#950198, id#950199, displayId#950200, name#950201, baseUnitOfMeasure#950202, unitOfMeasures#950203, unitOfMeasureConversions#950204, productionAspect#950205, salesAspect#950206, procurementAspect#950207, productGroup#950208, filter(unitOfMeasureConversions#950204, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950196.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950196.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950202.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950202.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950209]
(1598) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950209.quantityNumerator), true, [quantityNumerator#950210]
(1599) Project
Arguments: [product#950183, plant#950184, orderDateTime#950185, productPlant#950196, systemId#950197, internalUUID#950198, id#950199, displayId#950200, name#950201, baseUnitOfMeasure#950202, unitOfMeasures#950203, unitOfMeasureConversions#950204, productionAspect#950205, salesAspect#950206, procurementAspect#950207, productGroup#950208, filteredUnitOfMeasureConversions#950209, quantityNumerator#950210]
(1600) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950209.quantityDenominator), true, [quantityDenominator#950211]
(1601) Project
Arguments: [product#950183, plant#950184, orderDateTime#950185, productPlant#950196, systemId#950197, internalUUID#950198, id#950199, displayId#950200, name#950201, baseUnitOfMeasure#950202, unitOfMeasures#950203, unitOfMeasureConversions#950204, productionAspect#950205, salesAspect#950206, procurementAspect#950207, productGroup#950208, filteredUnitOfMeasureConversions#950209, quantityNumerator#950210, quantityDenominator#950211]
(1602) Project
Arguments: [product#950183, plant#950184, orderDateTime#950185, productPlant#950196, systemId#950197, internalUUID#950198, id#950199, displayId#950200, name#950201, baseUnitOfMeasure#950202, unitOfMeasures#950203, unitOfMeasureConversions#950204, productionAspect#950205, salesAspect#950206, procurementAspect#950207, productGroup#950208, filteredUnitOfMeasureConversions#950209, quantityNumerator#950210, quantityDenominator#950211, (cast(quantityNumerator#950210 as double) / cast(quantityDenominator#950211 as double)) AS outboundUnit#950212]
(1603) Project
Arguments: [product#950183, plant#950184, orderDateTime#950185, productPlant#950196, systemId#950197, internalUUID#950198, id#950199, displayId#950200, name#950201, baseUnitOfMeasure#950202, unitOfMeasures#950203, unitOfMeasureConversions#950204, productionAspect#950205, salesAspect#950206, procurementAspect#950207, productGroup#950208, filteredUnitOfMeasureConversions#950209, quantityNumerator#950210, quantityDenominator#950211, CASE WHEN (isnull(outboundUnit#950212) OR (outboundUnit#950212 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950212 END AS outboundUnit#950213]
(1604) Project
Arguments: [product#950183, plant#950184, orderDateTime#950185, productPlant#950196, outboundUnit#950213]
(1605) Project
Arguments: [plant#950184]
(1606) Deduplicate
Arguments: [plant#950184]
(1607) Join
Arguments: Inner, (plantUuid#950180 = plant#950184)
(1608) Project
Arguments: [plantId#950179, plantUuid#950180, storageLocId#950181, storageLocUuid#950182]
(1609) Join
Arguments: Inner, (plant#950153.internalRefUUID <=> plantUuid#950180)
(1610) Generate
Arguments: explode(filter(stockQuantities#950155, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#950182) AND (lambda x#944569.storageLocation.Id = storageLocId#950181)), lambda x#944569, false))), false, [stockQuantity#950214]
(1611) Project
Arguments: [systemId#950150, internalUUID#950151, product#950152, plant#950153, calculationDateTime#950154, stockQuantities#950155, plantId#950179, plantUuid#950180, storageLocId#950181, storageLocUuid#950182, stockQuantity#950214]
(1612) Aggregate
Arguments: [plantUuid#950180, internalUUID#950151, plant#950153, product#950152, systemId#950150], [plantUuid#950180, internalUUID#950151, plant#950153, product#950152, systemId#950150, first(calculationDateTime#950154, false) AS calculationDateTime#950215, collect_list(stockQuantity#950214, 0, 0) AS stockQuantities#950216]
(1613) Project
Arguments: [systemId#950150, internalUUID#950151, product#950152, plant#950153, calculationDateTime#950215, stockQuantities#950216]
(1614) Generate
Arguments: explode(stockQuantities#950216), false, [stockQuantity#950217]
(1615) Project
Arguments: [systemId#950150, internalUUID#950151, product#950152, plant#950153, calculationDateTime#950215, stockQuantities#950216, stockQuantity#950217]
(1616) Project
Arguments: [plant#950153.id AS plant#950218, plant#950153.internalRefUUID AS plantUuid#950219, product#950152.id AS product#950220, product#950152.internalRefUUID AS productUuid#950221, calculationDateTime#950215, stockQuantity#950217.storagelocation.id AS storageLocId#950222, stockQuantity#950217.storagelocation.internalRefUUID AS storageLocUuid#950223, stockQuantity#950217.quantity.measure AS quantity#950224, stockQuantity#950217.specialStockIndicator.code AS specialStockIndicator#950225, stockQuantity#950217.stockType.code AS stockType#950226]
(1617) Filter
Arguments: ((specialStockIndicator#950225 = ) AND (stockType#950226 = 01))
(1618) LogicalRelation
Arguments: parquet, [product#950227, plant#950228, orderDateTime#950229, planningStartDateTime#950230], false
(1619) RepartitionByExpression
Arguments: [product#950227, plant#950228], 37
(1620) Project
Arguments: [product#950227, plant#950228, orderDateTime#950229]
(1621) LogicalRelation
Arguments: parquet, [systemId#950231, internalUUID#950232, plant#950233, product#950234, blockedForReplenishmentStartingFrom#950235, productionAspect#950236, salesPlant#950237, listing#950238, sourceOfSupplyCategory#950239], false
(1622) Repartition
Arguments: 37, true
(1623) Project
Arguments: [systemId#950231, internalUUID#950232, plant#950233, product#950234, blockedForReplenishmentStartingFrom#950235, productionAspect#950236, salesPlant#950237, listing#950238, sourceOfSupplyCategory#950239, struct(systemId, systemId#950231, internalUUID, internalUUID#950232, plant, plant#950233, product, product#950234, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950235, productionAspect, productionAspect#950236, salesPlant, salesPlant#950237, listing, listing#950238, sourceOfSupplyCategory, sourceOfSupplyCategory#950239) AS productPlant#950240]
(1624) Project
Arguments: [productPlant#950240]
(1625) Join
Arguments: LeftOuter, ((product#950227 <=> productPlant#950240.product.internalRefUUID) AND (plant#950228 <=> productPlant#950240.plant.internalRefUUID))
(1626) Project
Arguments: [product#950227, plant#950228, orderDateTime#950229, productPlant#950240]
(1627) LogicalRelation
Arguments: parquet, [systemId#950241, internalUUID#950242, id#950243, displayId#950244, name#950245, baseUnitOfMeasure#950246, unitOfMeasures#950247, unitOfMeasureConversions#950248, productionAspect#950249, salesAspect#950250, procurementAspect#950251, productGroup#950252], false
(1628) Repartition
Arguments: 37, true
(1629) Join
Arguments: LeftOuter, (product#950227 = internalUUID#950242)
(1630) Project
Arguments: [product#950227, plant#950228, orderDateTime#950229, productPlant#950240, systemId#950241, internalUUID#950242, id#950243, displayId#950244, name#950245, baseUnitOfMeasure#950246, unitOfMeasures#950247, unitOfMeasureConversions#950248, productionAspect#950249, salesAspect#950250, procurementAspect#950251, productGroup#950252, filter(unitOfMeasureConversions#950248, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950240.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950240.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950246.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950246.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950253]
(1631) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950253.quantityNumerator), true, [quantityNumerator#950254]
(1632) Project
Arguments: [product#950227, plant#950228, orderDateTime#950229, productPlant#950240, systemId#950241, internalUUID#950242, id#950243, displayId#950244, name#950245, baseUnitOfMeasure#950246, unitOfMeasures#950247, unitOfMeasureConversions#950248, productionAspect#950249, salesAspect#950250, procurementAspect#950251, productGroup#950252, filteredUnitOfMeasureConversions#950253, quantityNumerator#950254]
(1633) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950253.quantityDenominator), true, [quantityDenominator#950255]
(1634) Project
Arguments: [product#950227, plant#950228, orderDateTime#950229, productPlant#950240, systemId#950241, internalUUID#950242, id#950243, displayId#950244, name#950245, baseUnitOfMeasure#950246, unitOfMeasures#950247, unitOfMeasureConversions#950248, productionAspect#950249, salesAspect#950250, procurementAspect#950251, productGroup#950252, filteredUnitOfMeasureConversions#950253, quantityNumerator#950254, quantityDenominator#950255]
(1635) Project
Arguments: [product#950227, plant#950228, orderDateTime#950229, productPlant#950240, systemId#950241, internalUUID#950242, id#950243, displayId#950244, name#950245, baseUnitOfMeasure#950246, unitOfMeasures#950247, unitOfMeasureConversions#950248, productionAspect#950249, salesAspect#950250, procurementAspect#950251, productGroup#950252, filteredUnitOfMeasureConversions#950253, quantityNumerator#950254, quantityDenominator#950255, (cast(quantityNumerator#950254 as double) / cast(quantityDenominator#950255 as double)) AS outboundUnit#950256]
(1636) Project
Arguments: [product#950227, plant#950228, orderDateTime#950229, productPlant#950240, systemId#950241, internalUUID#950242, id#950243, displayId#950244, name#950245, baseUnitOfMeasure#950246, unitOfMeasures#950247, unitOfMeasureConversions#950248, productionAspect#950249, salesAspect#950250, procurementAspect#950251, productGroup#950252, filteredUnitOfMeasureConversions#950253, quantityNumerator#950254, quantityDenominator#950255, CASE WHEN (isnull(outboundUnit#950256) OR (outboundUnit#950256 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950256 END AS outboundUnit#950257]
(1637) Project
Arguments: [product#950227, plant#950228, orderDateTime#950229, productPlant#950240, outboundUnit#950257]
(1638) Join
Arguments: Inner, ((plantUuid#950219 = plant#950228) AND (productUuid#950221 = product#950227))
(1639) Filter
Arguments: (calculationDateTime#950215 <= orderDateTime#950229)
(1640) Project
Arguments: [plantUuid#950219 AS plant#950258, productUuid#950221 AS product#950259, storageLocId#950222, calculationDateTime#950215, quantity#950224]
(1641) Aggregate
Arguments: [plant#950258, product#950259, storageLocId#950222], [plant#950258, product#950259, storageLocId#950222, max(calculationDateTime#950215) AS max_calc_datetime#950260]
(1642) Join
Arguments: Inner, ((((plant#950148 <=> plant#950258) AND (product#950149 <=> product#950259)) AND (storageLocId#950112 <=> storageLocId#950222)) AND (calculationDateTime#950105 <=> max_calc_datetime#950260))
(1643) Project
Arguments: [plant#950148, product#950149, storageLocId#950112, calculationDateTime#950105, quantity#950114]
(1644) Aggregate
Arguments: [product#950149, plant#950148], [product#950149, plant#950148, sum(quantity#950114) AS quantitySum#950261, min(calculationDateTime#950105) AS minCalculationDateTime#950262]
(1645) Project
Arguments: [product#950149, plant#950148, quantitySum#950261, minCalculationDateTime#950262, round(quantitySum#950261, 0) AS roundedQuantitySum#950263]
(1646) Join
Arguments: LeftOuter, ((plant#950010 = plant#950148) AND (product#950009 = product#950149))
(1647) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, outboundUnit#950039, roundedQuantitySum#950263, minCalculationDateTime#950262]
(1648) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, outboundUnit#950039, roundedQuantitySum#950263, minCalculationDateTime#950262, CASE WHEN isnotnull(minCalculationDateTime#950262) THEN minCalculationDateTime#950262 ELSE orderDateTime#950011 END AS stockDatetime#950264]
(1649) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, outboundUnit#950039, roundedQuantitySum#950263, minCalculationDateTime#950262, stockDatetime#950264, CASE WHEN isnotnull(roundedQuantitySum#950263) THEN array(roundedQuantitySum#950263) ELSE array(0.0) END AS stockBatchQuantities#950265]
(1650) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, outboundUnit#950039, roundedQuantitySum#950263, minCalculationDateTime#950262, stockDatetime#950264, stockBatchQuantities#950265, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#950266]
(1651) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, outboundUnit#950039, roundedQuantitySum#950263, stockDatetime#950264, stockBatchQuantities#950265, stockBatchShelfLifeEndDatetimes#950266]
(1652) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, outboundUnit#950039, stockDatetime#950264, stockBatchQuantities#950265, stockBatchShelfLifeEndDatetimes#950266]
(1653) LogicalRelation
Arguments: parquet, [product#950267, plant#950268, orderDateTime#950269, planningStartDateTime#950270], false
(1654) RepartitionByExpression
Arguments: [product#950267, plant#950268], 37
(1655) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269]
(1656) LogicalRelation
Arguments: parquet, [systemId#950271, internalUUID#950272, plant#950273, product#950274, blockedForReplenishmentStartingFrom#950275, productionAspect#950276, salesPlant#950277, listing#950278, sourceOfSupplyCategory#950279], false
(1657) Repartition
Arguments: 37, true
(1658) Project
Arguments: [systemId#950271, internalUUID#950272, plant#950273, product#950274, blockedForReplenishmentStartingFrom#950275, productionAspect#950276, salesPlant#950277, listing#950278, sourceOfSupplyCategory#950279, struct(systemId, systemId#950271, internalUUID, internalUUID#950272, plant, plant#950273, product, product#950274, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950275, productionAspect, productionAspect#950276, salesPlant, salesPlant#950277, listing, listing#950278, sourceOfSupplyCategory, sourceOfSupplyCategory#950279) AS productPlant#950280]
(1659) Project
Arguments: [productPlant#950280]
(1660) Join
Arguments: LeftOuter, ((product#950267 <=> productPlant#950280.product.internalRefUUID) AND (plant#950268 <=> productPlant#950280.plant.internalRefUUID))
(1661) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280]
(1662) LogicalRelation
Arguments: parquet, [systemId#950281, internalUUID#950282, id#950283, displayId#950284, name#950285, baseUnitOfMeasure#950286, unitOfMeasures#950287, unitOfMeasureConversions#950288, productionAspect#950289, salesAspect#950290, procurementAspect#950291, productGroup#950292], false
(1663) Repartition
Arguments: 37, true
(1664) Join
Arguments: LeftOuter, (product#950267 = internalUUID#950282)
(1665) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, systemId#950281, internalUUID#950282, id#950283, displayId#950284, name#950285, baseUnitOfMeasure#950286, unitOfMeasures#950287, unitOfMeasureConversions#950288, productionAspect#950289, salesAspect#950290, procurementAspect#950291, productGroup#950292, filter(unitOfMeasureConversions#950288, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950280.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950280.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950286.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950286.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950293]
(1666) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950293.quantityNumerator), true, [quantityNumerator#950294]
(1667) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, systemId#950281, internalUUID#950282, id#950283, displayId#950284, name#950285, baseUnitOfMeasure#950286, unitOfMeasures#950287, unitOfMeasureConversions#950288, productionAspect#950289, salesAspect#950290, procurementAspect#950291, productGroup#950292, filteredUnitOfMeasureConversions#950293, quantityNumerator#950294]
(1668) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950293.quantityDenominator), true, [quantityDenominator#950295]
(1669) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, systemId#950281, internalUUID#950282, id#950283, displayId#950284, name#950285, baseUnitOfMeasure#950286, unitOfMeasures#950287, unitOfMeasureConversions#950288, productionAspect#950289, salesAspect#950290, procurementAspect#950291, productGroup#950292, filteredUnitOfMeasureConversions#950293, quantityNumerator#950294, quantityDenominator#950295]
(1670) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, systemId#950281, internalUUID#950282, id#950283, displayId#950284, name#950285, baseUnitOfMeasure#950286, unitOfMeasures#950287, unitOfMeasureConversions#950288, productionAspect#950289, salesAspect#950290, procurementAspect#950291, productGroup#950292, filteredUnitOfMeasureConversions#950293, quantityNumerator#950294, quantityDenominator#950295, (cast(quantityNumerator#950294 as double) / cast(quantityDenominator#950295 as double)) AS outboundUnit#950296]
(1671) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, systemId#950281, internalUUID#950282, id#950283, displayId#950284, name#950285, baseUnitOfMeasure#950286, unitOfMeasures#950287, unitOfMeasureConversions#950288, productionAspect#950289, salesAspect#950290, procurementAspect#950291, productGroup#950292, filteredUnitOfMeasureConversions#950293, quantityNumerator#950294, quantityDenominator#950295, CASE WHEN (isnull(outboundUnit#950296) OR (outboundUnit#950296 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950296 END AS outboundUnit#950297]
(1672) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, outboundUnit#950297]
(1673) LogicalRelation
Arguments: parquet, [systemId#950298, internalUUID#950299, product#950300, plant#950301, calculationDateTime#950302, stockQuantities#950303], false
(1674) Repartition
Arguments: 37, true
(1675) LogicalRelation
Arguments: parquet, [marketUnit#950304, description#950305, articleHierarchy#950306, defaultCurrency#950307, responsibilities#950308, replenishmentTypes#950309, distributionCenters#950310, assignedArticleHierarchyNodes#950311, minOrderQtySetting#950312, listingCheck#950313, odsSelection#950314, demandProfiles#950315, constraintProfiles#950316, optimizationProfiles#950317, orderGroupSplitProfiles#950318, supplierMinimumProfiles#950319, multipleRestrictionProfiles#950320, preferredUomSource#950321, handlingOfUnfulfilledDemands#950322, negligibleQuantitiesThreshold#950323, eventtype#950324], false
(1676) Repartition
Arguments: 37, true
(1677) Filter
Arguments: (marketUnit#950304 <=> IW_MU_CRP-125444_1)
(1678) Project
Arguments: [marketUnit#950304, description#950305, articleHierarchy#950306, defaultCurrency#950307, responsibilities#950308, replenishmentTypes#950309, distributionCenters#950310, assignedArticleHierarchyNodes#950311, minOrderQtySetting#950312, listingCheck#950313, odsSelection#950314, demandProfiles#950315, constraintProfiles#950316, optimizationProfiles#950317, orderGroupSplitProfiles#950318, supplierMinimumProfiles#950319, multipleRestrictionProfiles#950320, preferredUomSource#950321, handlingOfUnfulfilledDemands#950322, negligibleQuantitiesThreshold#950323, eventtype#950324]
(1679) Project
Arguments: [distributionCenters#950310]
(1680) Generate
Arguments: explode(distributionCenters#950310), false, [distributionCenters#950325]
(1681) Project
Arguments: [distributionCenters#950325]
(1682) Generate
Arguments: explode(distributionCenters#950325.storageLocations), false, [storageLocations#950326]
(1683) Project
Arguments: [distributionCenters#950325.id AS plantId#950327, distributionCenters#950325.internalRefUUID AS plantUuid#950328, storageLocations#950326]
(1684) Project
Arguments: [plantId#950327, plantUuid#950328, storageLocations#950326.id AS storageLocId#950329, storageLocations#950326.internalRefUUID AS storageLocUuid#950330]
(1685) LogicalRelation
Arguments: parquet, [product#950331, plant#950332, orderDateTime#950333, planningStartDateTime#950334], false
(1686) RepartitionByExpression
Arguments: [product#950331, plant#950332], 37
(1687) Project
Arguments: [product#950331, plant#950332, orderDateTime#950333]
(1688) LogicalRelation
Arguments: parquet, [systemId#950335, internalUUID#950336, plant#950337, product#950338, blockedForReplenishmentStartingFrom#950339, productionAspect#950340, salesPlant#950341, listing#950342, sourceOfSupplyCategory#950343], false
(1689) Repartition
Arguments: 37, true
(1690) Project
Arguments: [systemId#950335, internalUUID#950336, plant#950337, product#950338, blockedForReplenishmentStartingFrom#950339, productionAspect#950340, salesPlant#950341, listing#950342, sourceOfSupplyCategory#950343, struct(systemId, systemId#950335, internalUUID, internalUUID#950336, plant, plant#950337, product, product#950338, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950339, productionAspect, productionAspect#950340, salesPlant, salesPlant#950341, listing, listing#950342, sourceOfSupplyCategory, sourceOfSupplyCategory#950343) AS productPlant#950344]
(1691) Project
Arguments: [productPlant#950344]
(1692) Join
Arguments: LeftOuter, ((product#950331 <=> productPlant#950344.product.internalRefUUID) AND (plant#950332 <=> productPlant#950344.plant.internalRefUUID))
(1693) Project
Arguments: [product#950331, plant#950332, orderDateTime#950333, productPlant#950344]
(1694) LogicalRelation
Arguments: parquet, [systemId#950345, internalUUID#950346, id#950347, displayId#950348, name#950349, baseUnitOfMeasure#950350, unitOfMeasures#950351, unitOfMeasureConversions#950352, productionAspect#950353, salesAspect#950354, procurementAspect#950355, productGroup#950356], false
(1695) Repartition
Arguments: 37, true
(1696) Join
Arguments: LeftOuter, (product#950331 = internalUUID#950346)
(1697) Project
Arguments: [product#950331, plant#950332, orderDateTime#950333, productPlant#950344, systemId#950345, internalUUID#950346, id#950347, displayId#950348, name#950349, baseUnitOfMeasure#950350, unitOfMeasures#950351, unitOfMeasureConversions#950352, productionAspect#950353, salesAspect#950354, procurementAspect#950355, productGroup#950356, filter(unitOfMeasureConversions#950352, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950344.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950344.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950350.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950350.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950357]
(1698) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950357.quantityNumerator), true, [quantityNumerator#950358]
(1699) Project
Arguments: [product#950331, plant#950332, orderDateTime#950333, productPlant#950344, systemId#950345, internalUUID#950346, id#950347, displayId#950348, name#950349, baseUnitOfMeasure#950350, unitOfMeasures#950351, unitOfMeasureConversions#950352, productionAspect#950353, salesAspect#950354, procurementAspect#950355, productGroup#950356, filteredUnitOfMeasureConversions#950357, quantityNumerator#950358]
(1700) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950357.quantityDenominator), true, [quantityDenominator#950359]
(1701) Project
Arguments: [product#950331, plant#950332, orderDateTime#950333, productPlant#950344, systemId#950345, internalUUID#950346, id#950347, displayId#950348, name#950349, baseUnitOfMeasure#950350, unitOfMeasures#950351, unitOfMeasureConversions#950352, productionAspect#950353, salesAspect#950354, procurementAspect#950355, productGroup#950356, filteredUnitOfMeasureConversions#950357, quantityNumerator#950358, quantityDenominator#950359]
(1702) Project
Arguments: [product#950331, plant#950332, orderDateTime#950333, productPlant#950344, systemId#950345, internalUUID#950346, id#950347, displayId#950348, name#950349, baseUnitOfMeasure#950350, unitOfMeasures#950351, unitOfMeasureConversions#950352, productionAspect#950353, salesAspect#950354, procurementAspect#950355, productGroup#950356, filteredUnitOfMeasureConversions#950357, quantityNumerator#950358, quantityDenominator#950359, (cast(quantityNumerator#950358 as double) / cast(quantityDenominator#950359 as double)) AS outboundUnit#950360]
(1703) Project
Arguments: [product#950331, plant#950332, orderDateTime#950333, productPlant#950344, systemId#950345, internalUUID#950346, id#950347, displayId#950348, name#950349, baseUnitOfMeasure#950350, unitOfMeasures#950351, unitOfMeasureConversions#950352, productionAspect#950353, salesAspect#950354, procurementAspect#950355, productGroup#950356, filteredUnitOfMeasureConversions#950357, quantityNumerator#950358, quantityDenominator#950359, CASE WHEN (isnull(outboundUnit#950360) OR (outboundUnit#950360 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950360 END AS outboundUnit#950361]
(1704) Project
Arguments: [product#950331, plant#950332, orderDateTime#950333, productPlant#950344, outboundUnit#950361]
(1705) Project
Arguments: [plant#950332]
(1706) Deduplicate
Arguments: [plant#950332]
(1707) Join
Arguments: Inner, (plantUuid#950328 = plant#950332)
(1708) Project
Arguments: [plantId#950327, plantUuid#950328, storageLocId#950329, storageLocUuid#950330]
(1709) Join
Arguments: Inner, (plant#950301.internalRefUUID <=> plantUuid#950328)
(1710) Generate
Arguments: explode(filter(stockQuantities#950303, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#950330) AND (lambda x#944569.storageLocation.Id = storageLocId#950329)), lambda x#944569, false))), false, [stockQuantity#950362]
(1711) Project
Arguments: [systemId#950298, internalUUID#950299, product#950300, plant#950301, calculationDateTime#950302, stockQuantities#950303, plantId#950327, plantUuid#950328, storageLocId#950329, storageLocUuid#950330, stockQuantity#950362]
(1712) Aggregate
Arguments: [plantUuid#950328, internalUUID#950299, plant#950301, product#950300, systemId#950298], [plantUuid#950328, internalUUID#950299, plant#950301, product#950300, systemId#950298, first(calculationDateTime#950302, false) AS calculationDateTime#950363, collect_list(stockQuantity#950362, 0, 0) AS stockQuantities#950364]
(1713) Project
Arguments: [systemId#950298, internalUUID#950299, product#950300, plant#950301, calculationDateTime#950363, stockQuantities#950364]
(1714) Generate
Arguments: explode(stockQuantities#950364), false, [stockQuantity#950365]
(1715) Project
Arguments: [systemId#950298, internalUUID#950299, product#950300, plant#950301, calculationDateTime#950363, stockQuantities#950364, stockQuantity#950365]
(1716) Project
Arguments: [plant#950301.id AS plant#950366, plant#950301.internalRefUUID AS plantUuid#950367, product#950300.id AS product#950368, product#950300.internalRefUUID AS productUuid#950369, calculationDateTime#950363, stockQuantity#950365.storagelocation.id AS storageLocId#950370, stockQuantity#950365.storagelocation.internalRefUUID AS storageLocUuid#950371, stockQuantity#950365.quantity.measure AS quantity#950372, stockQuantity#950365.specialStockIndicator.code AS specialStockIndicator#950373, stockQuantity#950365.stockType.code AS stockType#950374]
(1717) Filter
Arguments: ((specialStockIndicator#950373 = ) AND (stockType#950374 = 01))
(1718) LogicalRelation
Arguments: parquet, [product#950375, plant#950376, orderDateTime#950377, planningStartDateTime#950378], false
(1719) RepartitionByExpression
Arguments: [product#950375, plant#950376], 37
(1720) Project
Arguments: [product#950375, plant#950376, orderDateTime#950377]
(1721) LogicalRelation
Arguments: parquet, [systemId#950379, internalUUID#950380, plant#950381, product#950382, blockedForReplenishmentStartingFrom#950383, productionAspect#950384, salesPlant#950385, listing#950386, sourceOfSupplyCategory#950387], false
(1722) Repartition
Arguments: 37, true
(1723) Project
Arguments: [systemId#950379, internalUUID#950380, plant#950381, product#950382, blockedForReplenishmentStartingFrom#950383, productionAspect#950384, salesPlant#950385, listing#950386, sourceOfSupplyCategory#950387, struct(systemId, systemId#950379, internalUUID, internalUUID#950380, plant, plant#950381, product, product#950382, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950383, productionAspect, productionAspect#950384, salesPlant, salesPlant#950385, listing, listing#950386, sourceOfSupplyCategory, sourceOfSupplyCategory#950387) AS productPlant#950388]
(1724) Project
Arguments: [productPlant#950388]
(1725) Join
Arguments: LeftOuter, ((product#950375 <=> productPlant#950388.product.internalRefUUID) AND (plant#950376 <=> productPlant#950388.plant.internalRefUUID))
(1726) Project
Arguments: [product#950375, plant#950376, orderDateTime#950377, productPlant#950388]
(1727) LogicalRelation
Arguments: parquet, [systemId#950389, internalUUID#950390, id#950391, displayId#950392, name#950393, baseUnitOfMeasure#950394, unitOfMeasures#950395, unitOfMeasureConversions#950396, productionAspect#950397, salesAspect#950398, procurementAspect#950399, productGroup#950400], false
(1728) Repartition
Arguments: 37, true
(1729) Join
Arguments: LeftOuter, (product#950375 = internalUUID#950390)
(1730) Project
Arguments: [product#950375, plant#950376, orderDateTime#950377, productPlant#950388, systemId#950389, internalUUID#950390, id#950391, displayId#950392, name#950393, baseUnitOfMeasure#950394, unitOfMeasures#950395, unitOfMeasureConversions#950396, productionAspect#950397, salesAspect#950398, procurementAspect#950399, productGroup#950400, filter(unitOfMeasureConversions#950396, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950388.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950388.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950394.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950394.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950401]
(1731) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950401.quantityNumerator), true, [quantityNumerator#950402]
(1732) Project
Arguments: [product#950375, plant#950376, orderDateTime#950377, productPlant#950388, systemId#950389, internalUUID#950390, id#950391, displayId#950392, name#950393, baseUnitOfMeasure#950394, unitOfMeasures#950395, unitOfMeasureConversions#950396, productionAspect#950397, salesAspect#950398, procurementAspect#950399, productGroup#950400, filteredUnitOfMeasureConversions#950401, quantityNumerator#950402]
(1733) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950401.quantityDenominator), true, [quantityDenominator#950403]
(1734) Project
Arguments: [product#950375, plant#950376, orderDateTime#950377, productPlant#950388, systemId#950389, internalUUID#950390, id#950391, displayId#950392, name#950393, baseUnitOfMeasure#950394, unitOfMeasures#950395, unitOfMeasureConversions#950396, productionAspect#950397, salesAspect#950398, procurementAspect#950399, productGroup#950400, filteredUnitOfMeasureConversions#950401, quantityNumerator#950402, quantityDenominator#950403]
(1735) Project
Arguments: [product#950375, plant#950376, orderDateTime#950377, productPlant#950388, systemId#950389, internalUUID#950390, id#950391, displayId#950392, name#950393, baseUnitOfMeasure#950394, unitOfMeasures#950395, unitOfMeasureConversions#950396, productionAspect#950397, salesAspect#950398, procurementAspect#950399, productGroup#950400, filteredUnitOfMeasureConversions#950401, quantityNumerator#950402, quantityDenominator#950403, (cast(quantityNumerator#950402 as double) / cast(quantityDenominator#950403 as double)) AS outboundUnit#950404]
(1736) Project
Arguments: [product#950375, plant#950376, orderDateTime#950377, productPlant#950388, systemId#950389, internalUUID#950390, id#950391, displayId#950392, name#950393, baseUnitOfMeasure#950394, unitOfMeasures#950395, unitOfMeasureConversions#950396, productionAspect#950397, salesAspect#950398, procurementAspect#950399, productGroup#950400, filteredUnitOfMeasureConversions#950401, quantityNumerator#950402, quantityDenominator#950403, CASE WHEN (isnull(outboundUnit#950404) OR (outboundUnit#950404 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950404 END AS outboundUnit#950405]
(1737) Project
Arguments: [product#950375, plant#950376, orderDateTime#950377, productPlant#950388, outboundUnit#950405]
(1738) Join
Arguments: Inner, ((plantUuid#950367 = plant#950376) AND (productUuid#950369 = product#950375))
(1739) Filter
Arguments: (calculationDateTime#950363 <= orderDateTime#950377)
(1740) Project
Arguments: [plantUuid#950367 AS plant#950406, productUuid#950369 AS product#950407, storageLocId#950370, calculationDateTime#950363, quantity#950372]
(1741) LogicalRelation
Arguments: parquet, [systemId#950408, internalUUID#950409, product#950410, plant#950411, calculationDateTime#950412, stockQuantities#950413], false
(1742) Repartition
Arguments: 37, true
(1743) LogicalRelation
Arguments: parquet, [marketUnit#950414, description#950415, articleHierarchy#950416, defaultCurrency#950417, responsibilities#950418, replenishmentTypes#950419, distributionCenters#950420, assignedArticleHierarchyNodes#950421, minOrderQtySetting#950422, listingCheck#950423, odsSelection#950424, demandProfiles#950425, constraintProfiles#950426, optimizationProfiles#950427, orderGroupSplitProfiles#950428, supplierMinimumProfiles#950429, multipleRestrictionProfiles#950430, preferredUomSource#950431, handlingOfUnfulfilledDemands#950432, negligibleQuantitiesThreshold#950433, eventtype#950434], false
(1744) Repartition
Arguments: 37, true
(1745) Filter
Arguments: (marketUnit#950414 <=> IW_MU_CRP-125444_1)
(1746) Project
Arguments: [marketUnit#950414, description#950415, articleHierarchy#950416, defaultCurrency#950417, responsibilities#950418, replenishmentTypes#950419, distributionCenters#950420, assignedArticleHierarchyNodes#950421, minOrderQtySetting#950422, listingCheck#950423, odsSelection#950424, demandProfiles#950425, constraintProfiles#950426, optimizationProfiles#950427, orderGroupSplitProfiles#950428, supplierMinimumProfiles#950429, multipleRestrictionProfiles#950430, preferredUomSource#950431, handlingOfUnfulfilledDemands#950432, negligibleQuantitiesThreshold#950433, eventtype#950434]
(1747) Project
Arguments: [distributionCenters#950420]
(1748) Generate
Arguments: explode(distributionCenters#950420), false, [distributionCenters#950435]
(1749) Project
Arguments: [distributionCenters#950435]
(1750) Generate
Arguments: explode(distributionCenters#950435.storageLocations), false, [storageLocations#950436]
(1751) Project
Arguments: [distributionCenters#950435.id AS plantId#950437, distributionCenters#950435.internalRefUUID AS plantUuid#950438, storageLocations#950436]
(1752) Project
Arguments: [plantId#950437, plantUuid#950438, storageLocations#950436.id AS storageLocId#950439, storageLocations#950436.internalRefUUID AS storageLocUuid#950440]
(1753) LogicalRelation
Arguments: parquet, [product#950441, plant#950442, orderDateTime#950443, planningStartDateTime#950444], false
(1754) RepartitionByExpression
Arguments: [product#950441, plant#950442], 37
(1755) Project
Arguments: [product#950441, plant#950442, orderDateTime#950443]
(1756) LogicalRelation
Arguments: parquet, [systemId#950445, internalUUID#950446, plant#950447, product#950448, blockedForReplenishmentStartingFrom#950449, productionAspect#950450, salesPlant#950451, listing#950452, sourceOfSupplyCategory#950453], false
(1757) Repartition
Arguments: 37, true
(1758) Project
Arguments: [systemId#950445, internalUUID#950446, plant#950447, product#950448, blockedForReplenishmentStartingFrom#950449, productionAspect#950450, salesPlant#950451, listing#950452, sourceOfSupplyCategory#950453, struct(systemId, systemId#950445, internalUUID, internalUUID#950446, plant, plant#950447, product, product#950448, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950449, productionAspect, productionAspect#950450, salesPlant, salesPlant#950451, listing, listing#950452, sourceOfSupplyCategory, sourceOfSupplyCategory#950453) AS productPlant#950454]
(1759) Project
Arguments: [productPlant#950454]
(1760) Join
Arguments: LeftOuter, ((product#950441 <=> productPlant#950454.product.internalRefUUID) AND (plant#950442 <=> productPlant#950454.plant.internalRefUUID))
(1761) Project
Arguments: [product#950441, plant#950442, orderDateTime#950443, productPlant#950454]
(1762) LogicalRelation
Arguments: parquet, [systemId#950455, internalUUID#950456, id#950457, displayId#950458, name#950459, baseUnitOfMeasure#950460, unitOfMeasures#950461, unitOfMeasureConversions#950462, productionAspect#950463, salesAspect#950464, procurementAspect#950465, productGroup#950466], false
(1763) Repartition
Arguments: 37, true
(1764) Join
Arguments: LeftOuter, (product#950441 = internalUUID#950456)
(1765) Project
Arguments: [product#950441, plant#950442, orderDateTime#950443, productPlant#950454, systemId#950455, internalUUID#950456, id#950457, displayId#950458, name#950459, baseUnitOfMeasure#950460, unitOfMeasures#950461, unitOfMeasureConversions#950462, productionAspect#950463, salesAspect#950464, procurementAspect#950465, productGroup#950466, filter(unitOfMeasureConversions#950462, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950454.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950454.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950460.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950460.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950467]
(1766) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950467.quantityNumerator), true, [quantityNumerator#950468]
(1767) Project
Arguments: [product#950441, plant#950442, orderDateTime#950443, productPlant#950454, systemId#950455, internalUUID#950456, id#950457, displayId#950458, name#950459, baseUnitOfMeasure#950460, unitOfMeasures#950461, unitOfMeasureConversions#950462, productionAspect#950463, salesAspect#950464, procurementAspect#950465, productGroup#950466, filteredUnitOfMeasureConversions#950467, quantityNumerator#950468]
(1768) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950467.quantityDenominator), true, [quantityDenominator#950469]
(1769) Project
Arguments: [product#950441, plant#950442, orderDateTime#950443, productPlant#950454, systemId#950455, internalUUID#950456, id#950457, displayId#950458, name#950459, baseUnitOfMeasure#950460, unitOfMeasures#950461, unitOfMeasureConversions#950462, productionAspect#950463, salesAspect#950464, procurementAspect#950465, productGroup#950466, filteredUnitOfMeasureConversions#950467, quantityNumerator#950468, quantityDenominator#950469]
(1770) Project
Arguments: [product#950441, plant#950442, orderDateTime#950443, productPlant#950454, systemId#950455, internalUUID#950456, id#950457, displayId#950458, name#950459, baseUnitOfMeasure#950460, unitOfMeasures#950461, unitOfMeasureConversions#950462, productionAspect#950463, salesAspect#950464, procurementAspect#950465, productGroup#950466, filteredUnitOfMeasureConversions#950467, quantityNumerator#950468, quantityDenominator#950469, (cast(quantityNumerator#950468 as double) / cast(quantityDenominator#950469 as double)) AS outboundUnit#950470]
(1771) Project
Arguments: [product#950441, plant#950442, orderDateTime#950443, productPlant#950454, systemId#950455, internalUUID#950456, id#950457, displayId#950458, name#950459, baseUnitOfMeasure#950460, unitOfMeasures#950461, unitOfMeasureConversions#950462, productionAspect#950463, salesAspect#950464, procurementAspect#950465, productGroup#950466, filteredUnitOfMeasureConversions#950467, quantityNumerator#950468, quantityDenominator#950469, CASE WHEN (isnull(outboundUnit#950470) OR (outboundUnit#950470 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950470 END AS outboundUnit#950471]
(1772) Project
Arguments: [product#950441, plant#950442, orderDateTime#950443, productPlant#950454, outboundUnit#950471]
(1773) Project
Arguments: [plant#950442]
(1774) Deduplicate
Arguments: [plant#950442]
(1775) Join
Arguments: Inner, (plantUuid#950438 = plant#950442)
(1776) Project
Arguments: [plantId#950437, plantUuid#950438, storageLocId#950439, storageLocUuid#950440]
(1777) Join
Arguments: Inner, (plant#950411.internalRefUUID <=> plantUuid#950438)
(1778) Generate
Arguments: explode(filter(stockQuantities#950413, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#950440) AND (lambda x#944569.storageLocation.Id = storageLocId#950439)), lambda x#944569, false))), false, [stockQuantity#950472]
(1779) Project
Arguments: [systemId#950408, internalUUID#950409, product#950410, plant#950411, calculationDateTime#950412, stockQuantities#950413, plantId#950437, plantUuid#950438, storageLocId#950439, storageLocUuid#950440, stockQuantity#950472]
(1780) Aggregate
Arguments: [plantUuid#950438, internalUUID#950409, plant#950411, product#950410, systemId#950408], [plantUuid#950438, internalUUID#950409, plant#950411, product#950410, systemId#950408, first(calculationDateTime#950412, false) AS calculationDateTime#950473, collect_list(stockQuantity#950472, 0, 0) AS stockQuantities#950474]
(1781) Project
Arguments: [systemId#950408, internalUUID#950409, product#950410, plant#950411, calculationDateTime#950473, stockQuantities#950474]
(1782) Generate
Arguments: explode(stockQuantities#950474), false, [stockQuantity#950475]
(1783) Project
Arguments: [systemId#950408, internalUUID#950409, product#950410, plant#950411, calculationDateTime#950473, stockQuantities#950474, stockQuantity#950475]
(1784) Project
Arguments: [plant#950411.id AS plant#950476, plant#950411.internalRefUUID AS plantUuid#950477, product#950410.id AS product#950478, product#950410.internalRefUUID AS productUuid#950479, calculationDateTime#950473, stockQuantity#950475.storagelocation.id AS storageLocId#950480, stockQuantity#950475.storagelocation.internalRefUUID AS storageLocUuid#950481, stockQuantity#950475.quantity.measure AS quantity#950482, stockQuantity#950475.specialStockIndicator.code AS specialStockIndicator#950483, stockQuantity#950475.stockType.code AS stockType#950484]
(1785) Filter
Arguments: ((specialStockIndicator#950483 = ) AND (stockType#950484 = 01))
(1786) LogicalRelation
Arguments: parquet, [product#950485, plant#950486, orderDateTime#950487, planningStartDateTime#950488], false
(1787) RepartitionByExpression
Arguments: [product#950485, plant#950486], 37
(1788) Project
Arguments: [product#950485, plant#950486, orderDateTime#950487]
(1789) LogicalRelation
Arguments: parquet, [systemId#950489, internalUUID#950490, plant#950491, product#950492, blockedForReplenishmentStartingFrom#950493, productionAspect#950494, salesPlant#950495, listing#950496, sourceOfSupplyCategory#950497], false
(1790) Repartition
Arguments: 37, true
(1791) Project
Arguments: [systemId#950489, internalUUID#950490, plant#950491, product#950492, blockedForReplenishmentStartingFrom#950493, productionAspect#950494, salesPlant#950495, listing#950496, sourceOfSupplyCategory#950497, struct(systemId, systemId#950489, internalUUID, internalUUID#950490, plant, plant#950491, product, product#950492, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950493, productionAspect, productionAspect#950494, salesPlant, salesPlant#950495, listing, listing#950496, sourceOfSupplyCategory, sourceOfSupplyCategory#950497) AS productPlant#950498]
(1792) Project
Arguments: [productPlant#950498]
(1793) Join
Arguments: LeftOuter, ((product#950485 <=> productPlant#950498.product.internalRefUUID) AND (plant#950486 <=> productPlant#950498.plant.internalRefUUID))
(1794) Project
Arguments: [product#950485, plant#950486, orderDateTime#950487, productPlant#950498]
(1795) LogicalRelation
Arguments: parquet, [systemId#950499, internalUUID#950500, id#950501, displayId#950502, name#950503, baseUnitOfMeasure#950504, unitOfMeasures#950505, unitOfMeasureConversions#950506, productionAspect#950507, salesAspect#950508, procurementAspect#950509, productGroup#950510], false
(1796) Repartition
Arguments: 37, true
(1797) Join
Arguments: LeftOuter, (product#950485 = internalUUID#950500)
(1798) Project
Arguments: [product#950485, plant#950486, orderDateTime#950487, productPlant#950498, systemId#950499, internalUUID#950500, id#950501, displayId#950502, name#950503, baseUnitOfMeasure#950504, unitOfMeasures#950505, unitOfMeasureConversions#950506, productionAspect#950507, salesAspect#950508, procurementAspect#950509, productGroup#950510, filter(unitOfMeasureConversions#950506, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950498.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950498.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950504.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950504.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950511]
(1799) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950511.quantityNumerator), true, [quantityNumerator#950512]
(1800) Project
Arguments: [product#950485, plant#950486, orderDateTime#950487, productPlant#950498, systemId#950499, internalUUID#950500, id#950501, displayId#950502, name#950503, baseUnitOfMeasure#950504, unitOfMeasures#950505, unitOfMeasureConversions#950506, productionAspect#950507, salesAspect#950508, procurementAspect#950509, productGroup#950510, filteredUnitOfMeasureConversions#950511, quantityNumerator#950512]
(1801) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950511.quantityDenominator), true, [quantityDenominator#950513]
(1802) Project
Arguments: [product#950485, plant#950486, orderDateTime#950487, productPlant#950498, systemId#950499, internalUUID#950500, id#950501, displayId#950502, name#950503, baseUnitOfMeasure#950504, unitOfMeasures#950505, unitOfMeasureConversions#950506, productionAspect#950507, salesAspect#950508, procurementAspect#950509, productGroup#950510, filteredUnitOfMeasureConversions#950511, quantityNumerator#950512, quantityDenominator#950513]
(1803) Project
Arguments: [product#950485, plant#950486, orderDateTime#950487, productPlant#950498, systemId#950499, internalUUID#950500, id#950501, displayId#950502, name#950503, baseUnitOfMeasure#950504, unitOfMeasures#950505, unitOfMeasureConversions#950506, productionAspect#950507, salesAspect#950508, procurementAspect#950509, productGroup#950510, filteredUnitOfMeasureConversions#950511, quantityNumerator#950512, quantityDenominator#950513, (cast(quantityNumerator#950512 as double) / cast(quantityDenominator#950513 as double)) AS outboundUnit#950514]
(1804) Project
Arguments: [product#950485, plant#950486, orderDateTime#950487, productPlant#950498, systemId#950499, internalUUID#950500, id#950501, displayId#950502, name#950503, baseUnitOfMeasure#950504, unitOfMeasures#950505, unitOfMeasureConversions#950506, productionAspect#950507, salesAspect#950508, procurementAspect#950509, productGroup#950510, filteredUnitOfMeasureConversions#950511, quantityNumerator#950512, quantityDenominator#950513, CASE WHEN (isnull(outboundUnit#950514) OR (outboundUnit#950514 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950514 END AS outboundUnit#950515]
(1805) Project
Arguments: [product#950485, plant#950486, orderDateTime#950487, productPlant#950498, outboundUnit#950515]
(1806) Join
Arguments: Inner, ((plantUuid#950477 = plant#950486) AND (productUuid#950479 = product#950485))
(1807) Filter
Arguments: (calculationDateTime#950473 <= orderDateTime#950487)
(1808) Project
Arguments: [plantUuid#950477 AS plant#950516, productUuid#950479 AS product#950517, storageLocId#950480, calculationDateTime#950473, quantity#950482]
(1809) Aggregate
Arguments: [plant#950516, product#950517, storageLocId#950480], [plant#950516, product#950517, storageLocId#950480, max(calculationDateTime#950473) AS max_calc_datetime#950518]
(1810) Join
Arguments: Inner, ((((plant#950406 <=> plant#950516) AND (product#950407 <=> product#950517)) AND (storageLocId#950370 <=> storageLocId#950480)) AND (calculationDateTime#950363 <=> max_calc_datetime#950518))
(1811) Project
Arguments: [plant#950406, product#950407, storageLocId#950370, calculationDateTime#950363, quantity#950372]
(1812) Aggregate
Arguments: [product#950407, plant#950406], [product#950407, plant#950406, sum(quantity#950372) AS quantitySum#950519, min(calculationDateTime#950363) AS minCalculationDateTime#950520]
(1813) Project
Arguments: [product#950407, plant#950406, quantitySum#950519, minCalculationDateTime#950520, round(quantitySum#950519, 0) AS roundedQuantitySum#950521]
(1814) Join
Arguments: LeftOuter, ((plant#950268 = plant#950406) AND (product#950267 = product#950407))
(1815) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, outboundUnit#950297, roundedQuantitySum#950521, minCalculationDateTime#950520]
(1816) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, outboundUnit#950297, roundedQuantitySum#950521, minCalculationDateTime#950520, CASE WHEN isnotnull(minCalculationDateTime#950520) THEN minCalculationDateTime#950520 ELSE orderDateTime#950269 END AS stockDatetime#950522]
(1817) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, outboundUnit#950297, roundedQuantitySum#950521, minCalculationDateTime#950520, stockDatetime#950522, CASE WHEN isnotnull(roundedQuantitySum#950521) THEN array(roundedQuantitySum#950521) ELSE array(0.0) END AS stockBatchQuantities#950523]
(1818) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, outboundUnit#950297, roundedQuantitySum#950521, minCalculationDateTime#950520, stockDatetime#950522, stockBatchQuantities#950523, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#950524]
(1819) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, outboundUnit#950297, roundedQuantitySum#950521, stockDatetime#950522, stockBatchQuantities#950523, stockBatchShelfLifeEndDatetimes#950524]
(1820) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, outboundUnit#950297, stockDatetime#950522, stockBatchQuantities#950523, stockBatchShelfLifeEndDatetimes#950524]
(1821) LogicalRelation
Arguments: parquet, [product#950525, plant#950526, demandChannel#950527, demandStream#950528, considerVariance#950529, demandTimeBuckets#950530, demandPointInTimeStart#950531, demandPointInTimeEnd#950532, demandPointInTime#950533], false
(1822) Join
Arguments: LeftOuter, ((plant#950526 <=> plant#950268) AND (product#950525 <=> product#950267))
(1823) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, outboundUnit#950297, stockDatetime#950522, stockBatchQuantities#950523, stockBatchShelfLifeEndDatetimes#950524, product#950525, plant#950526, demandChannel#950527, demandStream#950528, considerVariance#950529, demandTimeBuckets#950530, demandPointInTimeStart#950531, demandPointInTimeEnd#950532, demandPointInTime#950533, CASE WHEN isnotnull(product#950525) THEN struct(demandChannel, demandChannel#950527, demandStream, demandStream#950528, considerVariance, considerVariance#950529, demandTimeBuckets, demandTimeBuckets#950530, demandPointInTimeStart, demandPointInTimeStart#950531, demandPointInTimeEnd, demandPointInTimeEnd#950532, demandPointInTime, demandPointInTime#950533) 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#950534]
(1824) Aggregate
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, outboundUnit#950297, stockDatetime#950522, stockBatchQuantities#950523, stockBatchShelfLifeEndDatetimes#950524], [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, outboundUnit#950297, stockDatetime#950522, stockBatchQuantities#950523, stockBatchShelfLifeEndDatetimes#950524, collect_list(rawDemands#950534, 0, 0) AS rawDemands#950535]
(1825) SubqueryAlias
Arguments: wl
(1826) LogicalRelation
Arguments: parquet, [systemId#950536, internalUUID#950537, id#950538, displayId#950539, name#950540, category#950541, companyCode#950542, address#950543, mainDistributionChain#950544, mainPurchasingOrganization#950545, validPurchasingOrganizations#950546, productGroup#950547], false
(1827) Repartition
Arguments: 37, true
(1828) Project
Arguments: [systemId#950536, internalUUID#950537, id#950538, displayId#950539, name#950540, category#950541, companyCode#950542, address#950543, mainDistributionChain#950544, mainPurchasingOrganization#950545, validPurchasingOrganizations#950546, productGroup#950547, address#950543.timezone.code AS timezonecode#950548]
(1829) Join
Arguments: LeftOuter, (plant#950268 <=> internalUUID#950537)
(1830) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, outboundUnit#950297, stockDatetime#950522, stockBatchQuantities#950523, stockBatchShelfLifeEndDatetimes#950524, rawDemands#950535, systemId#950536, internalUUID#950537, id#950538, displayId#950539, name#950540, category#950541, companyCode#950542, address#950543, mainDistributionChain#950544, mainPurchasingOrganization#950545, validPurchasingOrganizations#950546, productGroup#950547, CASE WHEN isnotnull(timezonecode#950548) THEN timezonecode#950548 ELSE UTC END AS timezonecode#950549]
(1831) Project
Arguments: [product#950267, plant#950268, orderDateTime#950269, productPlant#950280, outboundUnit#950297, stockDatetime#950522, stockBatchQuantities#950523, stockBatchShelfLifeEndDatetimes#950524, rawDemands#950535, timezonecode#950549]
(1832) DeserializeToObject
Arguments: createexternalrow(invoke(product#950267.toString()), invoke(plant#950268.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#950269)), if (isnull(productPlant#950280)) null else createexternalrow(invoke(productPlant#950280.systemId.toString()), invoke(productPlant#950280.internalUUID.toString()), if (isnull(productPlant#950280.plant)) null else createexternalrow(invoke(productPlant#950280.plant.internalRefUUID.toString()), invoke(productPlant#950280.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#950280.product)) null else createexternalrow(invoke(productPlant#950280.product.internalRefUUID.toString()), invoke(productPlant#950280.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#950280.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#950280.productionAspect)) null else createexternalrow(if (isnull(productPlant#950280.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#950280.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#950280.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#950280.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#950280.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#950280.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#950280.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#950280.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#950280.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#950280.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#950280.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#950280.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#950280.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#950280.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#950280.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#950280.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#950280.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#950280.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#950280.salesPlant)) null else createexternalrow(if (isnull(productPlant#950280.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#950280.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#950280.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, 74989), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#950280.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#950280.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#950280.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#950280.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#950297)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#950522)), mapobjects(lambdavariable(MapObject, DoubleType, true, 74990), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 74990) as double))), stockBatchQuantities#950523, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 74991), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 74991) as timestamp)))), stockBatchShelfLifeEndDatetimes#950524, 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, 74992), 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, 74992))) 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, 74992).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, 74992).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, 74992).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).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, 74992).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, 74992).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, 74992).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).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, 74992).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#950535, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#950549.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(1833) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, 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)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)], obj#945945: org.apache.spark.sql.Row
(1834) 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#950550, 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#950551, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74980), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74980), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74981), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74981), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74982), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74982), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74983), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74983), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74984), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74984), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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#950552, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74986), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74986), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74987), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74987), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74988), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74988), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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#950553]
(1835) Join
Arguments: LeftOuter, ((plant#950551 <=> plant#950010) AND (product#950550 <=> product#950009))
(1836) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, outboundUnit#950039, stockDatetime#950264, stockBatchQuantities#950265, stockBatchShelfLifeEndDatetimes#950266, plant#950551, dayBucketDemands#950552, pointInTimeDemands#950553]
(1837) Project
Arguments: [product#950009, plant#950010, orderDateTime#950011, productPlant#950022, outboundUnit#950039, stockDatetime#950264, stockBatchQuantities#950265, stockBatchShelfLifeEndDatetimes#950266, dayBucketDemands#950552, pointInTimeDemands#950553]
(1838) LogicalRelation
Arguments: parquet, [marketUnit#950554, description#950555, articleHierarchy#950556, defaultCurrency#950557, responsibilities#950558, replenishmentTypes#950559, distributionCenters#950560, assignedArticleHierarchyNodes#950561, minOrderQtySetting#950562, listingCheck#950563, odsSelection#950564, demandProfiles#950565, constraintProfiles#950566, optimizationProfiles#950567, orderGroupSplitProfiles#950568, supplierMinimumProfiles#950569, multipleRestrictionProfiles#950570, preferredUomSource#950571, handlingOfUnfulfilledDemands#950572, negligibleQuantitiesThreshold#950573, eventtype#950574], false
(1839) Repartition
Arguments: 37, true
(1840) Filter
Arguments: (marketUnit#950554 <=> IW_MU_CRP-125444_1)
(1841) Project
Arguments: [marketUnit#950554, description#950555, articleHierarchy#950556, defaultCurrency#950557, responsibilities#950558, replenishmentTypes#950559, distributionCenters#950560, assignedArticleHierarchyNodes#950561, minOrderQtySetting#950562, listingCheck#950563, odsSelection#950564, demandProfiles#950565, constraintProfiles#950566, optimizationProfiles#950567, orderGroupSplitProfiles#950568, supplierMinimumProfiles#950569, multipleRestrictionProfiles#950570, preferredUomSource#950571, handlingOfUnfulfilledDemands#950572, negligibleQuantitiesThreshold#950573, eventtype#950574]
(1842) Project
Arguments: [distributionCenters#950560]
(1843) Generate
Arguments: explode(distributionCenters#950560), false, [distributionCenters#950575]
(1844) Project
Arguments: [distributionCenters#950575]
(1845) Generate
Arguments: explode(distributionCenters#950575.storageLocations), false, [storageLocations#950576]
(1846) Project
Arguments: [distributionCenters#950575.id AS plantId#950577, distributionCenters#950575.internalRefUUID AS plantUuid#950578, storageLocations#950576]
(1847) Project
Arguments: [plantId#950577, plantUuid#950578, storageLocations#950576.id AS storageLocId#950579, storageLocations#950576.internalRefUUID AS storageLocUuid#950580]
(1848) LogicalRelation
Arguments: parquet, [product#950581, plant#950582, orderDateTime#950583, planningStartDateTime#950584], false
(1849) RepartitionByExpression
Arguments: [product#950581, plant#950582], 37
(1850) Project
Arguments: [product#950581, plant#950582, orderDateTime#950583]
(1851) LogicalRelation
Arguments: parquet, [systemId#950585, internalUUID#950586, plant#950587, product#950588, blockedForReplenishmentStartingFrom#950589, productionAspect#950590, salesPlant#950591, listing#950592, sourceOfSupplyCategory#950593], false
(1852) Repartition
Arguments: 37, true
(1853) Project
Arguments: [systemId#950585, internalUUID#950586, plant#950587, product#950588, blockedForReplenishmentStartingFrom#950589, productionAspect#950590, salesPlant#950591, listing#950592, sourceOfSupplyCategory#950593, struct(systemId, systemId#950585, internalUUID, internalUUID#950586, plant, plant#950587, product, product#950588, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950589, productionAspect, productionAspect#950590, salesPlant, salesPlant#950591, listing, listing#950592, sourceOfSupplyCategory, sourceOfSupplyCategory#950593) AS productPlant#950594]
(1854) Project
Arguments: [productPlant#950594]
(1855) Join
Arguments: LeftOuter, ((product#950581 <=> productPlant#950594.product.internalRefUUID) AND (plant#950582 <=> productPlant#950594.plant.internalRefUUID))
(1856) Project
Arguments: [product#950581, plant#950582, orderDateTime#950583, productPlant#950594]
(1857) LogicalRelation
Arguments: parquet, [systemId#950595, internalUUID#950596, id#950597, displayId#950598, name#950599, baseUnitOfMeasure#950600, unitOfMeasures#950601, unitOfMeasureConversions#950602, productionAspect#950603, salesAspect#950604, procurementAspect#950605, productGroup#950606], false
(1858) Repartition
Arguments: 37, true
(1859) Join
Arguments: LeftOuter, (product#950581 = internalUUID#950596)
(1860) Project
Arguments: [product#950581, plant#950582, orderDateTime#950583, productPlant#950594, systemId#950595, internalUUID#950596, id#950597, displayId#950598, name#950599, baseUnitOfMeasure#950600, unitOfMeasures#950601, unitOfMeasureConversions#950602, productionAspect#950603, salesAspect#950604, procurementAspect#950605, productGroup#950606, filter(unitOfMeasureConversions#950602, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950594.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950594.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950600.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950600.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950607]
(1861) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950607.quantityNumerator), true, [quantityNumerator#950608]
(1862) Project
Arguments: [product#950581, plant#950582, orderDateTime#950583, productPlant#950594, systemId#950595, internalUUID#950596, id#950597, displayId#950598, name#950599, baseUnitOfMeasure#950600, unitOfMeasures#950601, unitOfMeasureConversions#950602, productionAspect#950603, salesAspect#950604, procurementAspect#950605, productGroup#950606, filteredUnitOfMeasureConversions#950607, quantityNumerator#950608]
(1863) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950607.quantityDenominator), true, [quantityDenominator#950609]
(1864) Project
Arguments: [product#950581, plant#950582, orderDateTime#950583, productPlant#950594, systemId#950595, internalUUID#950596, id#950597, displayId#950598, name#950599, baseUnitOfMeasure#950600, unitOfMeasures#950601, unitOfMeasureConversions#950602, productionAspect#950603, salesAspect#950604, procurementAspect#950605, productGroup#950606, filteredUnitOfMeasureConversions#950607, quantityNumerator#950608, quantityDenominator#950609]
(1865) Project
Arguments: [product#950581, plant#950582, orderDateTime#950583, productPlant#950594, systemId#950595, internalUUID#950596, id#950597, displayId#950598, name#950599, baseUnitOfMeasure#950600, unitOfMeasures#950601, unitOfMeasureConversions#950602, productionAspect#950603, salesAspect#950604, procurementAspect#950605, productGroup#950606, filteredUnitOfMeasureConversions#950607, quantityNumerator#950608, quantityDenominator#950609, (cast(quantityNumerator#950608 as double) / cast(quantityDenominator#950609 as double)) AS outboundUnit#950610]
(1866) Project
Arguments: [product#950581, plant#950582, orderDateTime#950583, productPlant#950594, systemId#950595, internalUUID#950596, id#950597, displayId#950598, name#950599, baseUnitOfMeasure#950600, unitOfMeasures#950601, unitOfMeasureConversions#950602, productionAspect#950603, salesAspect#950604, procurementAspect#950605, productGroup#950606, filteredUnitOfMeasureConversions#950607, quantityNumerator#950608, quantityDenominator#950609, CASE WHEN (isnull(outboundUnit#950610) OR (outboundUnit#950610 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950610 END AS outboundUnit#950611]
(1867) Project
Arguments: [product#950581, plant#950582, orderDateTime#950583, productPlant#950594, outboundUnit#950611]
(1868) Project
Arguments: [plant#950582]
(1869) Deduplicate
Arguments: [plant#950582]
(1870) Join
Arguments: Inner, (plantUuid#950578 = plant#950582)
(1871) Project
Arguments: [plantId#950577, plantUuid#950578, storageLocId#950579, storageLocUuid#950580]
(1872) Project
Arguments: [plantId#950577, plantUuid#950578 AS plant#950612, storageLocId#950579, storageLocUuid#950580]
(1873) Join
Arguments: Inner, (plant#950010 = plant#950612)
(1874) Project
Arguments: [plant#950010, product#950009, orderDateTime#950011, productPlant#950022, outboundUnit#950039, stockDatetime#950264, stockBatchQuantities#950265, stockBatchShelfLifeEndDatetimes#950266, dayBucketDemands#950552, pointInTimeDemands#950553, plantId#950577, storageLocId#950579, storageLocUuid#950580, plant#950612]
(1875) LogicalRelation
Arguments: parquet, [systemId#950613, internalUUID#950614, id#950615, displayId#950616, supplier#950617, type#950618, status#950619, isMarkedForDeletion#950620, items#950621], false
(1876) Repartition
Arguments: 37, true
(1877) Generate
Arguments: explode(items#950621), false, [item#950622]
(1878) Project
Arguments: [id#950615, internalUUID#950614, isMarkedForDeletion#950620, supplier#950617.internalRefUUID AS supplierUuid#950623, item#950622]
(1879) Filter
Arguments: (((NOT isMarkedForDeletion#950620 AND NOT item#950622.deletionIndicator) AND NOT item#950622.completeIndicator) AND NOT item#950622.returnIndicator)
(1880) Project
Arguments: [id#950615, internalUUID#950614, supplierUuid#950623, item#950622.plant.internalRefUUID AS plant#950624, item#950622.product.internalRefUUID AS product#950625, item#950622.storageLocation.internalRefUUID AS storageLocUuid#950626, item#950622.quantityUnit.code AS quantityUom#950627, item#950622.quantityUnit.internalRefUUID AS quantityUomUuid#950628, item#950622.quantityNumerator AS quantityNumerator#950629, item#950622.quantityDenominator AS quantityDenominator#950630, item#950622.scheduleLines AS scheduleLines#950631, item#950622.confirmations AS confirmations#950632]
(1881) Join
Arguments: Inner, (((product#950009 = product#950625) AND (plant#950010 = plant#950624)) AND (storageLocUuid#950580 = storageLocUuid#950626))
(1882) Project
Arguments: [product#950009, plant#950010, storageLocUuid#950580, orderDateTime#950011, productPlant#950022, outboundUnit#950039, stockDatetime#950264, stockBatchQuantities#950265, stockBatchShelfLifeEndDatetimes#950266, dayBucketDemands#950552, pointInTimeDemands#950553, plantId#950577, storageLocId#950579, id#950615, internalUUID#950614, supplierUuid#950623, quantityUom#950627, quantityUomUuid#950628, quantityNumerator#950629, quantityDenominator#950630, scheduleLines#950631, confirmations#950632, product#950625, plant#950624, storageLocUuid#950626, ... 1 more fields]
(1883) Project
Arguments: [id#950615, internalUUID#950614, supplierUuid#950623, plant#950624, product#950625, storageLocUuid#950626, quantityUom#950627, quantityUomUuid#950628, quantityNumerator#950629, quantityDenominator#950630, scheduleLines#950631, confirmations#950632, stockDatetime#950264]
(1884) Project
Arguments: [id#950615, internalUUID#950614, supplierUuid#950623, plant#950624, product#950625, storageLocUuid#950626, quantityUom#950627, quantityUomUuid#950628, quantityNumerator#950629, quantityDenominator#950630, scheduleLines#950631, confirmations#950632, stockDatetime#950264, array_size(filter(confirmations#950632, lambdafunction((((lambda x_140#946362.deletionIndicator = false) AND (lambda x_140#946362.isRelevantForConfirmation = true)) AND isnotnull(lambda x_140#946362.confirmedDeliveryAt)), lambda x_140#946362, false))) AS _w0#950633]
(1885) Window
Arguments: [sum(_w0#950633) windowspecdefinition(internalUUID#950614, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#950634L], [internalUUID#950614]
(1886) Project
Arguments: [id#950615, internalUUID#950614, supplierUuid#950623, plant#950624, product#950625, storageLocUuid#950626, quantityUom#950627, quantityUomUuid#950628, quantityNumerator#950629, quantityDenominator#950630, scheduleLines#950631, confirmations#950632, stockDatetime#950264, _w0#950633, _we0#950634L, filter(transform(CASE WHEN (_we0#950634L > cast(0 as bigint)) THEN transform(filter(confirmations#950632, lambdafunction((((lambda x_140#946363.deletionIndicator = false) AND (lambda x_140#946363.isRelevantForConfirmation = true)) AND isnotnull(lambda x_140#946363.confirmedDeliveryAt)), lambda x_140#946363, false)), lambdafunction(struct(openQty, greatest((lambda x_141#946366.confirmedQuantity - coalesce(lambda x_141#946366.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_141#946366.confirmedDeliveryAt), lambda x_141#946366, false)) ELSE transform(scheduleLines#950631, lambdafunction(struct(openQty, greatest((lambda x_139#946364.quantity - coalesce(lambda x_139#946364.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_139#946364.deliveryAt), lambda x_139#946364, false)) END, lambdafunction(struct(documentId, id#950615, documentUuid, internalUUID#950614, openQty, lambda x_142#946367.openQty, openQtyInBaseUnit, ((lambda x_142#946367.openQty * quantityNumerator#950629) / quantityDenominator#950630), qtyUom, quantityUom#950627, qtyUomUuid, quantityUomUuid#950628, availabilityDatetime, lambda x_142#946367.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_142#946367, false)), lambdafunction(NOT (lambda x_143#946368.openQty = 0.0), lambda x_143#946368, false)) AS openGoodsMovements#950635]
(1887) Project
Arguments: [id#950615, internalUUID#950614, supplierUuid#950623, plant#950624, product#950625, storageLocUuid#950626, quantityUom#950627, quantityUomUuid#950628, quantityNumerator#950629, quantityDenominator#950630, scheduleLines#950631, confirmations#950632, stockDatetime#950264, openGoodsMovements#950635]
(1888) Aggregate
Arguments: [product#950625, plant#950624], [product#950625, plant#950624, flatten(collect_list(openGoodsMovements#950635, 0, 0)) AS openGoodsMovements#950636]
(1889) Filter
Arguments: (array_size(openGoodsMovements#950636) > 0)
(1890) LogicalRelation
Arguments: parquet, [product#950637, plant#950638, orderDateTime#950639, planningStartDateTime#950640], false
(1891) RepartitionByExpression
Arguments: [product#950637, plant#950638], 37
(1892) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639]
(1893) LogicalRelation
Arguments: parquet, [systemId#950641, internalUUID#950642, plant#950643, product#950644, blockedForReplenishmentStartingFrom#950645, productionAspect#950646, salesPlant#950647, listing#950648, sourceOfSupplyCategory#950649], false
(1894) Repartition
Arguments: 37, true
(1895) Project
Arguments: [systemId#950641, internalUUID#950642, plant#950643, product#950644, blockedForReplenishmentStartingFrom#950645, productionAspect#950646, salesPlant#950647, listing#950648, sourceOfSupplyCategory#950649, struct(systemId, systemId#950641, internalUUID, internalUUID#950642, plant, plant#950643, product, product#950644, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950645, productionAspect, productionAspect#950646, salesPlant, salesPlant#950647, listing, listing#950648, sourceOfSupplyCategory, sourceOfSupplyCategory#950649) AS productPlant#950650]
(1896) Project
Arguments: [productPlant#950650]
(1897) Join
Arguments: LeftOuter, ((product#950637 <=> productPlant#950650.product.internalRefUUID) AND (plant#950638 <=> productPlant#950650.plant.internalRefUUID))
(1898) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650]
(1899) LogicalRelation
Arguments: parquet, [systemId#950651, internalUUID#950652, id#950653, displayId#950654, name#950655, baseUnitOfMeasure#950656, unitOfMeasures#950657, unitOfMeasureConversions#950658, productionAspect#950659, salesAspect#950660, procurementAspect#950661, productGroup#950662], false
(1900) Repartition
Arguments: 37, true
(1901) Join
Arguments: LeftOuter, (product#950637 = internalUUID#950652)
(1902) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, systemId#950651, internalUUID#950652, id#950653, displayId#950654, name#950655, baseUnitOfMeasure#950656, unitOfMeasures#950657, unitOfMeasureConversions#950658, productionAspect#950659, salesAspect#950660, procurementAspect#950661, productGroup#950662, filter(unitOfMeasureConversions#950658, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950650.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950650.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950656.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950656.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950663]
(1903) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950663.quantityNumerator), true, [quantityNumerator#950664]
(1904) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, systemId#950651, internalUUID#950652, id#950653, displayId#950654, name#950655, baseUnitOfMeasure#950656, unitOfMeasures#950657, unitOfMeasureConversions#950658, productionAspect#950659, salesAspect#950660, procurementAspect#950661, productGroup#950662, filteredUnitOfMeasureConversions#950663, quantityNumerator#950664]
(1905) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950663.quantityDenominator), true, [quantityDenominator#950665]
(1906) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, systemId#950651, internalUUID#950652, id#950653, displayId#950654, name#950655, baseUnitOfMeasure#950656, unitOfMeasures#950657, unitOfMeasureConversions#950658, productionAspect#950659, salesAspect#950660, procurementAspect#950661, productGroup#950662, filteredUnitOfMeasureConversions#950663, quantityNumerator#950664, quantityDenominator#950665]
(1907) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, systemId#950651, internalUUID#950652, id#950653, displayId#950654, name#950655, baseUnitOfMeasure#950656, unitOfMeasures#950657, unitOfMeasureConversions#950658, productionAspect#950659, salesAspect#950660, procurementAspect#950661, productGroup#950662, filteredUnitOfMeasureConversions#950663, quantityNumerator#950664, quantityDenominator#950665, (cast(quantityNumerator#950664 as double) / cast(quantityDenominator#950665 as double)) AS outboundUnit#950666]
(1908) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, systemId#950651, internalUUID#950652, id#950653, displayId#950654, name#950655, baseUnitOfMeasure#950656, unitOfMeasures#950657, unitOfMeasureConversions#950658, productionAspect#950659, salesAspect#950660, procurementAspect#950661, productGroup#950662, filteredUnitOfMeasureConversions#950663, quantityNumerator#950664, quantityDenominator#950665, CASE WHEN (isnull(outboundUnit#950666) OR (outboundUnit#950666 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950666 END AS outboundUnit#950667]
(1909) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, outboundUnit#950667]
(1910) LogicalRelation
Arguments: parquet, [systemId#950668, internalUUID#950669, product#950670, plant#950671, calculationDateTime#950672, stockQuantities#950673], false
(1911) Repartition
Arguments: 37, true
(1912) LogicalRelation
Arguments: parquet, [marketUnit#950674, description#950675, articleHierarchy#950676, defaultCurrency#950677, responsibilities#950678, replenishmentTypes#950679, distributionCenters#950680, assignedArticleHierarchyNodes#950681, minOrderQtySetting#950682, listingCheck#950683, odsSelection#950684, demandProfiles#950685, constraintProfiles#950686, optimizationProfiles#950687, orderGroupSplitProfiles#950688, supplierMinimumProfiles#950689, multipleRestrictionProfiles#950690, preferredUomSource#950691, handlingOfUnfulfilledDemands#950692, negligibleQuantitiesThreshold#950693, eventtype#950694], false
(1913) Repartition
Arguments: 37, true
(1914) Filter
Arguments: (marketUnit#950674 <=> IW_MU_CRP-125444_1)
(1915) Project
Arguments: [marketUnit#950674, description#950675, articleHierarchy#950676, defaultCurrency#950677, responsibilities#950678, replenishmentTypes#950679, distributionCenters#950680, assignedArticleHierarchyNodes#950681, minOrderQtySetting#950682, listingCheck#950683, odsSelection#950684, demandProfiles#950685, constraintProfiles#950686, optimizationProfiles#950687, orderGroupSplitProfiles#950688, supplierMinimumProfiles#950689, multipleRestrictionProfiles#950690, preferredUomSource#950691, handlingOfUnfulfilledDemands#950692, negligibleQuantitiesThreshold#950693, eventtype#950694]
(1916) Project
Arguments: [distributionCenters#950680]
(1917) Generate
Arguments: explode(distributionCenters#950680), false, [distributionCenters#950695]
(1918) Project
Arguments: [distributionCenters#950695]
(1919) Generate
Arguments: explode(distributionCenters#950695.storageLocations), false, [storageLocations#950696]
(1920) Project
Arguments: [distributionCenters#950695.id AS plantId#950697, distributionCenters#950695.internalRefUUID AS plantUuid#950698, storageLocations#950696]
(1921) Project
Arguments: [plantId#950697, plantUuid#950698, storageLocations#950696.id AS storageLocId#950699, storageLocations#950696.internalRefUUID AS storageLocUuid#950700]
(1922) LogicalRelation
Arguments: parquet, [product#950701, plant#950702, orderDateTime#950703, planningStartDateTime#950704], false
(1923) RepartitionByExpression
Arguments: [product#950701, plant#950702], 37
(1924) Project
Arguments: [product#950701, plant#950702, orderDateTime#950703]
(1925) LogicalRelation
Arguments: parquet, [systemId#950705, internalUUID#950706, plant#950707, product#950708, blockedForReplenishmentStartingFrom#950709, productionAspect#950710, salesPlant#950711, listing#950712, sourceOfSupplyCategory#950713], false
(1926) Repartition
Arguments: 37, true
(1927) Project
Arguments: [systemId#950705, internalUUID#950706, plant#950707, product#950708, blockedForReplenishmentStartingFrom#950709, productionAspect#950710, salesPlant#950711, listing#950712, sourceOfSupplyCategory#950713, struct(systemId, systemId#950705, internalUUID, internalUUID#950706, plant, plant#950707, product, product#950708, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950709, productionAspect, productionAspect#950710, salesPlant, salesPlant#950711, listing, listing#950712, sourceOfSupplyCategory, sourceOfSupplyCategory#950713) AS productPlant#950714]
(1928) Project
Arguments: [productPlant#950714]
(1929) Join
Arguments: LeftOuter, ((product#950701 <=> productPlant#950714.product.internalRefUUID) AND (plant#950702 <=> productPlant#950714.plant.internalRefUUID))
(1930) Project
Arguments: [product#950701, plant#950702, orderDateTime#950703, productPlant#950714]
(1931) LogicalRelation
Arguments: parquet, [systemId#950715, internalUUID#950716, id#950717, displayId#950718, name#950719, baseUnitOfMeasure#950720, unitOfMeasures#950721, unitOfMeasureConversions#950722, productionAspect#950723, salesAspect#950724, procurementAspect#950725, productGroup#950726], false
(1932) Repartition
Arguments: 37, true
(1933) Join
Arguments: LeftOuter, (product#950701 = internalUUID#950716)
(1934) Project
Arguments: [product#950701, plant#950702, orderDateTime#950703, productPlant#950714, systemId#950715, internalUUID#950716, id#950717, displayId#950718, name#950719, baseUnitOfMeasure#950720, unitOfMeasures#950721, unitOfMeasureConversions#950722, productionAspect#950723, salesAspect#950724, procurementAspect#950725, productGroup#950726, filter(unitOfMeasureConversions#950722, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950714.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950714.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950720.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950720.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950727]
(1935) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950727.quantityNumerator), true, [quantityNumerator#950728]
(1936) Project
Arguments: [product#950701, plant#950702, orderDateTime#950703, productPlant#950714, systemId#950715, internalUUID#950716, id#950717, displayId#950718, name#950719, baseUnitOfMeasure#950720, unitOfMeasures#950721, unitOfMeasureConversions#950722, productionAspect#950723, salesAspect#950724, procurementAspect#950725, productGroup#950726, filteredUnitOfMeasureConversions#950727, quantityNumerator#950728]
(1937) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950727.quantityDenominator), true, [quantityDenominator#950729]
(1938) Project
Arguments: [product#950701, plant#950702, orderDateTime#950703, productPlant#950714, systemId#950715, internalUUID#950716, id#950717, displayId#950718, name#950719, baseUnitOfMeasure#950720, unitOfMeasures#950721, unitOfMeasureConversions#950722, productionAspect#950723, salesAspect#950724, procurementAspect#950725, productGroup#950726, filteredUnitOfMeasureConversions#950727, quantityNumerator#950728, quantityDenominator#950729]
(1939) Project
Arguments: [product#950701, plant#950702, orderDateTime#950703, productPlant#950714, systemId#950715, internalUUID#950716, id#950717, displayId#950718, name#950719, baseUnitOfMeasure#950720, unitOfMeasures#950721, unitOfMeasureConversions#950722, productionAspect#950723, salesAspect#950724, procurementAspect#950725, productGroup#950726, filteredUnitOfMeasureConversions#950727, quantityNumerator#950728, quantityDenominator#950729, (cast(quantityNumerator#950728 as double) / cast(quantityDenominator#950729 as double)) AS outboundUnit#950730]
(1940) Project
Arguments: [product#950701, plant#950702, orderDateTime#950703, productPlant#950714, systemId#950715, internalUUID#950716, id#950717, displayId#950718, name#950719, baseUnitOfMeasure#950720, unitOfMeasures#950721, unitOfMeasureConversions#950722, productionAspect#950723, salesAspect#950724, procurementAspect#950725, productGroup#950726, filteredUnitOfMeasureConversions#950727, quantityNumerator#950728, quantityDenominator#950729, CASE WHEN (isnull(outboundUnit#950730) OR (outboundUnit#950730 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950730 END AS outboundUnit#950731]
(1941) Project
Arguments: [product#950701, plant#950702, orderDateTime#950703, productPlant#950714, outboundUnit#950731]
(1942) Project
Arguments: [plant#950702]
(1943) Deduplicate
Arguments: [plant#950702]
(1944) Join
Arguments: Inner, (plantUuid#950698 = plant#950702)
(1945) Project
Arguments: [plantId#950697, plantUuid#950698, storageLocId#950699, storageLocUuid#950700]
(1946) Join
Arguments: Inner, (plant#950671.internalRefUUID <=> plantUuid#950698)
(1947) Generate
Arguments: explode(filter(stockQuantities#950673, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#950700) AND (lambda x#944569.storageLocation.Id = storageLocId#950699)), lambda x#944569, false))), false, [stockQuantity#950732]
(1948) Project
Arguments: [systemId#950668, internalUUID#950669, product#950670, plant#950671, calculationDateTime#950672, stockQuantities#950673, plantId#950697, plantUuid#950698, storageLocId#950699, storageLocUuid#950700, stockQuantity#950732]
(1949) Aggregate
Arguments: [plantUuid#950698, internalUUID#950669, plant#950671, product#950670, systemId#950668], [plantUuid#950698, internalUUID#950669, plant#950671, product#950670, systemId#950668, first(calculationDateTime#950672, false) AS calculationDateTime#950733, collect_list(stockQuantity#950732, 0, 0) AS stockQuantities#950734]
(1950) Project
Arguments: [systemId#950668, internalUUID#950669, product#950670, plant#950671, calculationDateTime#950733, stockQuantities#950734]
(1951) Generate
Arguments: explode(stockQuantities#950734), false, [stockQuantity#950735]
(1952) Project
Arguments: [systemId#950668, internalUUID#950669, product#950670, plant#950671, calculationDateTime#950733, stockQuantities#950734, stockQuantity#950735]
(1953) Project
Arguments: [plant#950671.id AS plant#950736, plant#950671.internalRefUUID AS plantUuid#950737, product#950670.id AS product#950738, product#950670.internalRefUUID AS productUuid#950739, calculationDateTime#950733, stockQuantity#950735.storagelocation.id AS storageLocId#950740, stockQuantity#950735.storagelocation.internalRefUUID AS storageLocUuid#950741, stockQuantity#950735.quantity.measure AS quantity#950742, stockQuantity#950735.specialStockIndicator.code AS specialStockIndicator#950743, stockQuantity#950735.stockType.code AS stockType#950744]
(1954) Filter
Arguments: ((specialStockIndicator#950743 = ) AND (stockType#950744 = 01))
(1955) LogicalRelation
Arguments: parquet, [product#950745, plant#950746, orderDateTime#950747, planningStartDateTime#950748], false
(1956) RepartitionByExpression
Arguments: [product#950745, plant#950746], 37
(1957) Project
Arguments: [product#950745, plant#950746, orderDateTime#950747]
(1958) LogicalRelation
Arguments: parquet, [systemId#950749, internalUUID#950750, plant#950751, product#950752, blockedForReplenishmentStartingFrom#950753, productionAspect#950754, salesPlant#950755, listing#950756, sourceOfSupplyCategory#950757], false
(1959) Repartition
Arguments: 37, true
(1960) Project
Arguments: [systemId#950749, internalUUID#950750, plant#950751, product#950752, blockedForReplenishmentStartingFrom#950753, productionAspect#950754, salesPlant#950755, listing#950756, sourceOfSupplyCategory#950757, struct(systemId, systemId#950749, internalUUID, internalUUID#950750, plant, plant#950751, product, product#950752, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950753, productionAspect, productionAspect#950754, salesPlant, salesPlant#950755, listing, listing#950756, sourceOfSupplyCategory, sourceOfSupplyCategory#950757) AS productPlant#950758]
(1961) Project
Arguments: [productPlant#950758]
(1962) Join
Arguments: LeftOuter, ((product#950745 <=> productPlant#950758.product.internalRefUUID) AND (plant#950746 <=> productPlant#950758.plant.internalRefUUID))
(1963) Project
Arguments: [product#950745, plant#950746, orderDateTime#950747, productPlant#950758]
(1964) LogicalRelation
Arguments: parquet, [systemId#950759, internalUUID#950760, id#950761, displayId#950762, name#950763, baseUnitOfMeasure#950764, unitOfMeasures#950765, unitOfMeasureConversions#950766, productionAspect#950767, salesAspect#950768, procurementAspect#950769, productGroup#950770], false
(1965) Repartition
Arguments: 37, true
(1966) Join
Arguments: LeftOuter, (product#950745 = internalUUID#950760)
(1967) Project
Arguments: [product#950745, plant#950746, orderDateTime#950747, productPlant#950758, systemId#950759, internalUUID#950760, id#950761, displayId#950762, name#950763, baseUnitOfMeasure#950764, unitOfMeasures#950765, unitOfMeasureConversions#950766, productionAspect#950767, salesAspect#950768, procurementAspect#950769, productGroup#950770, filter(unitOfMeasureConversions#950766, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950758.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950758.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950764.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950764.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950771]
(1968) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950771.quantityNumerator), true, [quantityNumerator#950772]
(1969) Project
Arguments: [product#950745, plant#950746, orderDateTime#950747, productPlant#950758, systemId#950759, internalUUID#950760, id#950761, displayId#950762, name#950763, baseUnitOfMeasure#950764, unitOfMeasures#950765, unitOfMeasureConversions#950766, productionAspect#950767, salesAspect#950768, procurementAspect#950769, productGroup#950770, filteredUnitOfMeasureConversions#950771, quantityNumerator#950772]
(1970) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950771.quantityDenominator), true, [quantityDenominator#950773]
(1971) Project
Arguments: [product#950745, plant#950746, orderDateTime#950747, productPlant#950758, systemId#950759, internalUUID#950760, id#950761, displayId#950762, name#950763, baseUnitOfMeasure#950764, unitOfMeasures#950765, unitOfMeasureConversions#950766, productionAspect#950767, salesAspect#950768, procurementAspect#950769, productGroup#950770, filteredUnitOfMeasureConversions#950771, quantityNumerator#950772, quantityDenominator#950773]
(1972) Project
Arguments: [product#950745, plant#950746, orderDateTime#950747, productPlant#950758, systemId#950759, internalUUID#950760, id#950761, displayId#950762, name#950763, baseUnitOfMeasure#950764, unitOfMeasures#950765, unitOfMeasureConversions#950766, productionAspect#950767, salesAspect#950768, procurementAspect#950769, productGroup#950770, filteredUnitOfMeasureConversions#950771, quantityNumerator#950772, quantityDenominator#950773, (cast(quantityNumerator#950772 as double) / cast(quantityDenominator#950773 as double)) AS outboundUnit#950774]
(1973) Project
Arguments: [product#950745, plant#950746, orderDateTime#950747, productPlant#950758, systemId#950759, internalUUID#950760, id#950761, displayId#950762, name#950763, baseUnitOfMeasure#950764, unitOfMeasures#950765, unitOfMeasureConversions#950766, productionAspect#950767, salesAspect#950768, procurementAspect#950769, productGroup#950770, filteredUnitOfMeasureConversions#950771, quantityNumerator#950772, quantityDenominator#950773, CASE WHEN (isnull(outboundUnit#950774) OR (outboundUnit#950774 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950774 END AS outboundUnit#950775]
(1974) Project
Arguments: [product#950745, plant#950746, orderDateTime#950747, productPlant#950758, outboundUnit#950775]
(1975) Join
Arguments: Inner, ((plantUuid#950737 = plant#950746) AND (productUuid#950739 = product#950745))
(1976) Filter
Arguments: (calculationDateTime#950733 <= orderDateTime#950747)
(1977) Project
Arguments: [plantUuid#950737 AS plant#950776, productUuid#950739 AS product#950777, storageLocId#950740, calculationDateTime#950733, quantity#950742]
(1978) LogicalRelation
Arguments: parquet, [systemId#950778, internalUUID#950779, product#950780, plant#950781, calculationDateTime#950782, stockQuantities#950783], false
(1979) Repartition
Arguments: 37, true
(1980) LogicalRelation
Arguments: parquet, [marketUnit#950784, description#950785, articleHierarchy#950786, defaultCurrency#950787, responsibilities#950788, replenishmentTypes#950789, distributionCenters#950790, assignedArticleHierarchyNodes#950791, minOrderQtySetting#950792, listingCheck#950793, odsSelection#950794, demandProfiles#950795, constraintProfiles#950796, optimizationProfiles#950797, orderGroupSplitProfiles#950798, supplierMinimumProfiles#950799, multipleRestrictionProfiles#950800, preferredUomSource#950801, handlingOfUnfulfilledDemands#950802, negligibleQuantitiesThreshold#950803, eventtype#950804], false
(1981) Repartition
Arguments: 37, true
(1982) Filter
Arguments: (marketUnit#950784 <=> IW_MU_CRP-125444_1)
(1983) Project
Arguments: [marketUnit#950784, description#950785, articleHierarchy#950786, defaultCurrency#950787, responsibilities#950788, replenishmentTypes#950789, distributionCenters#950790, assignedArticleHierarchyNodes#950791, minOrderQtySetting#950792, listingCheck#950793, odsSelection#950794, demandProfiles#950795, constraintProfiles#950796, optimizationProfiles#950797, orderGroupSplitProfiles#950798, supplierMinimumProfiles#950799, multipleRestrictionProfiles#950800, preferredUomSource#950801, handlingOfUnfulfilledDemands#950802, negligibleQuantitiesThreshold#950803, eventtype#950804]
(1984) Project
Arguments: [distributionCenters#950790]
(1985) Generate
Arguments: explode(distributionCenters#950790), false, [distributionCenters#950805]
(1986) Project
Arguments: [distributionCenters#950805]
(1987) Generate
Arguments: explode(distributionCenters#950805.storageLocations), false, [storageLocations#950806]
(1988) Project
Arguments: [distributionCenters#950805.id AS plantId#950807, distributionCenters#950805.internalRefUUID AS plantUuid#950808, storageLocations#950806]
(1989) Project
Arguments: [plantId#950807, plantUuid#950808, storageLocations#950806.id AS storageLocId#950809, storageLocations#950806.internalRefUUID AS storageLocUuid#950810]
(1990) LogicalRelation
Arguments: parquet, [product#950811, plant#950812, orderDateTime#950813, planningStartDateTime#950814], false
(1991) RepartitionByExpression
Arguments: [product#950811, plant#950812], 37
(1992) Project
Arguments: [product#950811, plant#950812, orderDateTime#950813]
(1993) LogicalRelation
Arguments: parquet, [systemId#950815, internalUUID#950816, plant#950817, product#950818, blockedForReplenishmentStartingFrom#950819, productionAspect#950820, salesPlant#950821, listing#950822, sourceOfSupplyCategory#950823], false
(1994) Repartition
Arguments: 37, true
(1995) Project
Arguments: [systemId#950815, internalUUID#950816, plant#950817, product#950818, blockedForReplenishmentStartingFrom#950819, productionAspect#950820, salesPlant#950821, listing#950822, sourceOfSupplyCategory#950823, struct(systemId, systemId#950815, internalUUID, internalUUID#950816, plant, plant#950817, product, product#950818, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950819, productionAspect, productionAspect#950820, salesPlant, salesPlant#950821, listing, listing#950822, sourceOfSupplyCategory, sourceOfSupplyCategory#950823) AS productPlant#950824]
(1996) Project
Arguments: [productPlant#950824]
(1997) Join
Arguments: LeftOuter, ((product#950811 <=> productPlant#950824.product.internalRefUUID) AND (plant#950812 <=> productPlant#950824.plant.internalRefUUID))
(1998) Project
Arguments: [product#950811, plant#950812, orderDateTime#950813, productPlant#950824]
(1999) LogicalRelation
Arguments: parquet, [systemId#950825, internalUUID#950826, id#950827, displayId#950828, name#950829, baseUnitOfMeasure#950830, unitOfMeasures#950831, unitOfMeasureConversions#950832, productionAspect#950833, salesAspect#950834, procurementAspect#950835, productGroup#950836], false
(2000) Repartition
Arguments: 37, true
(2001) Join
Arguments: LeftOuter, (product#950811 = internalUUID#950826)
(2002) Project
Arguments: [product#950811, plant#950812, orderDateTime#950813, productPlant#950824, systemId#950825, internalUUID#950826, id#950827, displayId#950828, name#950829, baseUnitOfMeasure#950830, unitOfMeasures#950831, unitOfMeasureConversions#950832, productionAspect#950833, salesAspect#950834, procurementAspect#950835, productGroup#950836, filter(unitOfMeasureConversions#950832, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950824.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950824.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950830.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950830.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950837]
(2003) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950837.quantityNumerator), true, [quantityNumerator#950838]
(2004) Project
Arguments: [product#950811, plant#950812, orderDateTime#950813, productPlant#950824, systemId#950825, internalUUID#950826, id#950827, displayId#950828, name#950829, baseUnitOfMeasure#950830, unitOfMeasures#950831, unitOfMeasureConversions#950832, productionAspect#950833, salesAspect#950834, procurementAspect#950835, productGroup#950836, filteredUnitOfMeasureConversions#950837, quantityNumerator#950838]
(2005) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950837.quantityDenominator), true, [quantityDenominator#950839]
(2006) Project
Arguments: [product#950811, plant#950812, orderDateTime#950813, productPlant#950824, systemId#950825, internalUUID#950826, id#950827, displayId#950828, name#950829, baseUnitOfMeasure#950830, unitOfMeasures#950831, unitOfMeasureConversions#950832, productionAspect#950833, salesAspect#950834, procurementAspect#950835, productGroup#950836, filteredUnitOfMeasureConversions#950837, quantityNumerator#950838, quantityDenominator#950839]
(2007) Project
Arguments: [product#950811, plant#950812, orderDateTime#950813, productPlant#950824, systemId#950825, internalUUID#950826, id#950827, displayId#950828, name#950829, baseUnitOfMeasure#950830, unitOfMeasures#950831, unitOfMeasureConversions#950832, productionAspect#950833, salesAspect#950834, procurementAspect#950835, productGroup#950836, filteredUnitOfMeasureConversions#950837, quantityNumerator#950838, quantityDenominator#950839, (cast(quantityNumerator#950838 as double) / cast(quantityDenominator#950839 as double)) AS outboundUnit#950840]
(2008) Project
Arguments: [product#950811, plant#950812, orderDateTime#950813, productPlant#950824, systemId#950825, internalUUID#950826, id#950827, displayId#950828, name#950829, baseUnitOfMeasure#950830, unitOfMeasures#950831, unitOfMeasureConversions#950832, productionAspect#950833, salesAspect#950834, procurementAspect#950835, productGroup#950836, filteredUnitOfMeasureConversions#950837, quantityNumerator#950838, quantityDenominator#950839, CASE WHEN (isnull(outboundUnit#950840) OR (outboundUnit#950840 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950840 END AS outboundUnit#950841]
(2009) Project
Arguments: [product#950811, plant#950812, orderDateTime#950813, productPlant#950824, outboundUnit#950841]
(2010) Project
Arguments: [plant#950812]
(2011) Deduplicate
Arguments: [plant#950812]
(2012) Join
Arguments: Inner, (plantUuid#950808 = plant#950812)
(2013) Project
Arguments: [plantId#950807, plantUuid#950808, storageLocId#950809, storageLocUuid#950810]
(2014) Join
Arguments: Inner, (plant#950781.internalRefUUID <=> plantUuid#950808)
(2015) Generate
Arguments: explode(filter(stockQuantities#950783, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#950810) AND (lambda x#944569.storageLocation.Id = storageLocId#950809)), lambda x#944569, false))), false, [stockQuantity#950842]
(2016) Project
Arguments: [systemId#950778, internalUUID#950779, product#950780, plant#950781, calculationDateTime#950782, stockQuantities#950783, plantId#950807, plantUuid#950808, storageLocId#950809, storageLocUuid#950810, stockQuantity#950842]
(2017) Aggregate
Arguments: [plantUuid#950808, internalUUID#950779, plant#950781, product#950780, systemId#950778], [plantUuid#950808, internalUUID#950779, plant#950781, product#950780, systemId#950778, first(calculationDateTime#950782, false) AS calculationDateTime#950843, collect_list(stockQuantity#950842, 0, 0) AS stockQuantities#950844]
(2018) Project
Arguments: [systemId#950778, internalUUID#950779, product#950780, plant#950781, calculationDateTime#950843, stockQuantities#950844]
(2019) Generate
Arguments: explode(stockQuantities#950844), false, [stockQuantity#950845]
(2020) Project
Arguments: [systemId#950778, internalUUID#950779, product#950780, plant#950781, calculationDateTime#950843, stockQuantities#950844, stockQuantity#950845]
(2021) Project
Arguments: [plant#950781.id AS plant#950846, plant#950781.internalRefUUID AS plantUuid#950847, product#950780.id AS product#950848, product#950780.internalRefUUID AS productUuid#950849, calculationDateTime#950843, stockQuantity#950845.storagelocation.id AS storageLocId#950850, stockQuantity#950845.storagelocation.internalRefUUID AS storageLocUuid#950851, stockQuantity#950845.quantity.measure AS quantity#950852, stockQuantity#950845.specialStockIndicator.code AS specialStockIndicator#950853, stockQuantity#950845.stockType.code AS stockType#950854]
(2022) Filter
Arguments: ((specialStockIndicator#950853 = ) AND (stockType#950854 = 01))
(2023) LogicalRelation
Arguments: parquet, [product#950855, plant#950856, orderDateTime#950857, planningStartDateTime#950858], false
(2024) RepartitionByExpression
Arguments: [product#950855, plant#950856], 37
(2025) Project
Arguments: [product#950855, plant#950856, orderDateTime#950857]
(2026) LogicalRelation
Arguments: parquet, [systemId#950859, internalUUID#950860, plant#950861, product#950862, blockedForReplenishmentStartingFrom#950863, productionAspect#950864, salesPlant#950865, listing#950866, sourceOfSupplyCategory#950867], false
(2027) Repartition
Arguments: 37, true
(2028) Project
Arguments: [systemId#950859, internalUUID#950860, plant#950861, product#950862, blockedForReplenishmentStartingFrom#950863, productionAspect#950864, salesPlant#950865, listing#950866, sourceOfSupplyCategory#950867, struct(systemId, systemId#950859, internalUUID, internalUUID#950860, plant, plant#950861, product, product#950862, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950863, productionAspect, productionAspect#950864, salesPlant, salesPlant#950865, listing, listing#950866, sourceOfSupplyCategory, sourceOfSupplyCategory#950867) AS productPlant#950868]
(2029) Project
Arguments: [productPlant#950868]
(2030) Join
Arguments: LeftOuter, ((product#950855 <=> productPlant#950868.product.internalRefUUID) AND (plant#950856 <=> productPlant#950868.plant.internalRefUUID))
(2031) Project
Arguments: [product#950855, plant#950856, orderDateTime#950857, productPlant#950868]
(2032) LogicalRelation
Arguments: parquet, [systemId#950869, internalUUID#950870, id#950871, displayId#950872, name#950873, baseUnitOfMeasure#950874, unitOfMeasures#950875, unitOfMeasureConversions#950876, productionAspect#950877, salesAspect#950878, procurementAspect#950879, productGroup#950880], false
(2033) Repartition
Arguments: 37, true
(2034) Join
Arguments: LeftOuter, (product#950855 = internalUUID#950870)
(2035) Project
Arguments: [product#950855, plant#950856, orderDateTime#950857, productPlant#950868, systemId#950869, internalUUID#950870, id#950871, displayId#950872, name#950873, baseUnitOfMeasure#950874, unitOfMeasures#950875, unitOfMeasureConversions#950876, productionAspect#950877, salesAspect#950878, procurementAspect#950879, productGroup#950880, filter(unitOfMeasureConversions#950876, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950868.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950868.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950874.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950874.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950881]
(2036) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950881.quantityNumerator), true, [quantityNumerator#950882]
(2037) Project
Arguments: [product#950855, plant#950856, orderDateTime#950857, productPlant#950868, systemId#950869, internalUUID#950870, id#950871, displayId#950872, name#950873, baseUnitOfMeasure#950874, unitOfMeasures#950875, unitOfMeasureConversions#950876, productionAspect#950877, salesAspect#950878, procurementAspect#950879, productGroup#950880, filteredUnitOfMeasureConversions#950881, quantityNumerator#950882]
(2038) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950881.quantityDenominator), true, [quantityDenominator#950883]
(2039) Project
Arguments: [product#950855, plant#950856, orderDateTime#950857, productPlant#950868, systemId#950869, internalUUID#950870, id#950871, displayId#950872, name#950873, baseUnitOfMeasure#950874, unitOfMeasures#950875, unitOfMeasureConversions#950876, productionAspect#950877, salesAspect#950878, procurementAspect#950879, productGroup#950880, filteredUnitOfMeasureConversions#950881, quantityNumerator#950882, quantityDenominator#950883]
(2040) Project
Arguments: [product#950855, plant#950856, orderDateTime#950857, productPlant#950868, systemId#950869, internalUUID#950870, id#950871, displayId#950872, name#950873, baseUnitOfMeasure#950874, unitOfMeasures#950875, unitOfMeasureConversions#950876, productionAspect#950877, salesAspect#950878, procurementAspect#950879, productGroup#950880, filteredUnitOfMeasureConversions#950881, quantityNumerator#950882, quantityDenominator#950883, (cast(quantityNumerator#950882 as double) / cast(quantityDenominator#950883 as double)) AS outboundUnit#950884]
(2041) Project
Arguments: [product#950855, plant#950856, orderDateTime#950857, productPlant#950868, systemId#950869, internalUUID#950870, id#950871, displayId#950872, name#950873, baseUnitOfMeasure#950874, unitOfMeasures#950875, unitOfMeasureConversions#950876, productionAspect#950877, salesAspect#950878, procurementAspect#950879, productGroup#950880, filteredUnitOfMeasureConversions#950881, quantityNumerator#950882, quantityDenominator#950883, CASE WHEN (isnull(outboundUnit#950884) OR (outboundUnit#950884 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950884 END AS outboundUnit#950885]
(2042) Project
Arguments: [product#950855, plant#950856, orderDateTime#950857, productPlant#950868, outboundUnit#950885]
(2043) Join
Arguments: Inner, ((plantUuid#950847 = plant#950856) AND (productUuid#950849 = product#950855))
(2044) Filter
Arguments: (calculationDateTime#950843 <= orderDateTime#950857)
(2045) Project
Arguments: [plantUuid#950847 AS plant#950886, productUuid#950849 AS product#950887, storageLocId#950850, calculationDateTime#950843, quantity#950852]
(2046) Aggregate
Arguments: [plant#950886, product#950887, storageLocId#950850], [plant#950886, product#950887, storageLocId#950850, max(calculationDateTime#950843) AS max_calc_datetime#950888]
(2047) Join
Arguments: Inner, ((((plant#950776 <=> plant#950886) AND (product#950777 <=> product#950887)) AND (storageLocId#950740 <=> storageLocId#950850)) AND (calculationDateTime#950733 <=> max_calc_datetime#950888))
(2048) Project
Arguments: [plant#950776, product#950777, storageLocId#950740, calculationDateTime#950733, quantity#950742]
(2049) Aggregate
Arguments: [product#950777, plant#950776], [product#950777, plant#950776, sum(quantity#950742) AS quantitySum#950889, min(calculationDateTime#950733) AS minCalculationDateTime#950890]
(2050) Project
Arguments: [product#950777, plant#950776, quantitySum#950889, minCalculationDateTime#950890, round(quantitySum#950889, 0) AS roundedQuantitySum#950891]
(2051) Join
Arguments: LeftOuter, ((plant#950638 = plant#950776) AND (product#950637 = product#950777))
(2052) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, outboundUnit#950667, roundedQuantitySum#950891, minCalculationDateTime#950890]
(2053) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, outboundUnit#950667, roundedQuantitySum#950891, minCalculationDateTime#950890, CASE WHEN isnotnull(minCalculationDateTime#950890) THEN minCalculationDateTime#950890 ELSE orderDateTime#950639 END AS stockDatetime#950892]
(2054) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, outboundUnit#950667, roundedQuantitySum#950891, minCalculationDateTime#950890, stockDatetime#950892, CASE WHEN isnotnull(roundedQuantitySum#950891) THEN array(roundedQuantitySum#950891) ELSE array(0.0) END AS stockBatchQuantities#950893]
(2055) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, outboundUnit#950667, roundedQuantitySum#950891, minCalculationDateTime#950890, stockDatetime#950892, stockBatchQuantities#950893, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#950894]
(2056) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, outboundUnit#950667, roundedQuantitySum#950891, stockDatetime#950892, stockBatchQuantities#950893, stockBatchShelfLifeEndDatetimes#950894]
(2057) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, outboundUnit#950667, stockDatetime#950892, stockBatchQuantities#950893, stockBatchShelfLifeEndDatetimes#950894]
(2058) LogicalRelation
Arguments: parquet, [product#950895, plant#950896, orderDateTime#950897, planningStartDateTime#950898], false
(2059) RepartitionByExpression
Arguments: [product#950895, plant#950896], 37
(2060) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897]
(2061) LogicalRelation
Arguments: parquet, [systemId#950899, internalUUID#950900, plant#950901, product#950902, blockedForReplenishmentStartingFrom#950903, productionAspect#950904, salesPlant#950905, listing#950906, sourceOfSupplyCategory#950907], false
(2062) Repartition
Arguments: 37, true
(2063) Project
Arguments: [systemId#950899, internalUUID#950900, plant#950901, product#950902, blockedForReplenishmentStartingFrom#950903, productionAspect#950904, salesPlant#950905, listing#950906, sourceOfSupplyCategory#950907, struct(systemId, systemId#950899, internalUUID, internalUUID#950900, plant, plant#950901, product, product#950902, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950903, productionAspect, productionAspect#950904, salesPlant, salesPlant#950905, listing, listing#950906, sourceOfSupplyCategory, sourceOfSupplyCategory#950907) AS productPlant#950908]
(2064) Project
Arguments: [productPlant#950908]
(2065) Join
Arguments: LeftOuter, ((product#950895 <=> productPlant#950908.product.internalRefUUID) AND (plant#950896 <=> productPlant#950908.plant.internalRefUUID))
(2066) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908]
(2067) LogicalRelation
Arguments: parquet, [systemId#950909, internalUUID#950910, id#950911, displayId#950912, name#950913, baseUnitOfMeasure#950914, unitOfMeasures#950915, unitOfMeasureConversions#950916, productionAspect#950917, salesAspect#950918, procurementAspect#950919, productGroup#950920], false
(2068) Repartition
Arguments: 37, true
(2069) Join
Arguments: LeftOuter, (product#950895 = internalUUID#950910)
(2070) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, systemId#950909, internalUUID#950910, id#950911, displayId#950912, name#950913, baseUnitOfMeasure#950914, unitOfMeasures#950915, unitOfMeasureConversions#950916, productionAspect#950917, salesAspect#950918, procurementAspect#950919, productGroup#950920, filter(unitOfMeasureConversions#950916, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950908.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950908.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950914.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950914.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950921]
(2071) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950921.quantityNumerator), true, [quantityNumerator#950922]
(2072) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, systemId#950909, internalUUID#950910, id#950911, displayId#950912, name#950913, baseUnitOfMeasure#950914, unitOfMeasures#950915, unitOfMeasureConversions#950916, productionAspect#950917, salesAspect#950918, procurementAspect#950919, productGroup#950920, filteredUnitOfMeasureConversions#950921, quantityNumerator#950922]
(2073) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950921.quantityDenominator), true, [quantityDenominator#950923]
(2074) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, systemId#950909, internalUUID#950910, id#950911, displayId#950912, name#950913, baseUnitOfMeasure#950914, unitOfMeasures#950915, unitOfMeasureConversions#950916, productionAspect#950917, salesAspect#950918, procurementAspect#950919, productGroup#950920, filteredUnitOfMeasureConversions#950921, quantityNumerator#950922, quantityDenominator#950923]
(2075) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, systemId#950909, internalUUID#950910, id#950911, displayId#950912, name#950913, baseUnitOfMeasure#950914, unitOfMeasures#950915, unitOfMeasureConversions#950916, productionAspect#950917, salesAspect#950918, procurementAspect#950919, productGroup#950920, filteredUnitOfMeasureConversions#950921, quantityNumerator#950922, quantityDenominator#950923, (cast(quantityNumerator#950922 as double) / cast(quantityDenominator#950923 as double)) AS outboundUnit#950924]
(2076) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, systemId#950909, internalUUID#950910, id#950911, displayId#950912, name#950913, baseUnitOfMeasure#950914, unitOfMeasures#950915, unitOfMeasureConversions#950916, productionAspect#950917, salesAspect#950918, procurementAspect#950919, productGroup#950920, filteredUnitOfMeasureConversions#950921, quantityNumerator#950922, quantityDenominator#950923, CASE WHEN (isnull(outboundUnit#950924) OR (outboundUnit#950924 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950924 END AS outboundUnit#950925]
(2077) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925]
(2078) LogicalRelation
Arguments: parquet, [systemId#950926, internalUUID#950927, product#950928, plant#950929, calculationDateTime#950930, stockQuantities#950931], false
(2079) Repartition
Arguments: 37, true
(2080) LogicalRelation
Arguments: parquet, [marketUnit#950932, description#950933, articleHierarchy#950934, defaultCurrency#950935, responsibilities#950936, replenishmentTypes#950937, distributionCenters#950938, assignedArticleHierarchyNodes#950939, minOrderQtySetting#950940, listingCheck#950941, odsSelection#950942, demandProfiles#950943, constraintProfiles#950944, optimizationProfiles#950945, orderGroupSplitProfiles#950946, supplierMinimumProfiles#950947, multipleRestrictionProfiles#950948, preferredUomSource#950949, handlingOfUnfulfilledDemands#950950, negligibleQuantitiesThreshold#950951, eventtype#950952], false
(2081) Repartition
Arguments: 37, true
(2082) Filter
Arguments: (marketUnit#950932 <=> IW_MU_CRP-125444_1)
(2083) Project
Arguments: [marketUnit#950932, description#950933, articleHierarchy#950934, defaultCurrency#950935, responsibilities#950936, replenishmentTypes#950937, distributionCenters#950938, assignedArticleHierarchyNodes#950939, minOrderQtySetting#950940, listingCheck#950941, odsSelection#950942, demandProfiles#950943, constraintProfiles#950944, optimizationProfiles#950945, orderGroupSplitProfiles#950946, supplierMinimumProfiles#950947, multipleRestrictionProfiles#950948, preferredUomSource#950949, handlingOfUnfulfilledDemands#950950, negligibleQuantitiesThreshold#950951, eventtype#950952]
(2084) Project
Arguments: [distributionCenters#950938]
(2085) Generate
Arguments: explode(distributionCenters#950938), false, [distributionCenters#950953]
(2086) Project
Arguments: [distributionCenters#950953]
(2087) Generate
Arguments: explode(distributionCenters#950953.storageLocations), false, [storageLocations#950954]
(2088) Project
Arguments: [distributionCenters#950953.id AS plantId#950955, distributionCenters#950953.internalRefUUID AS plantUuid#950956, storageLocations#950954]
(2089) Project
Arguments: [plantId#950955, plantUuid#950956, storageLocations#950954.id AS storageLocId#950957, storageLocations#950954.internalRefUUID AS storageLocUuid#950958]
(2090) LogicalRelation
Arguments: parquet, [product#950959, plant#950960, orderDateTime#950961, planningStartDateTime#950962], false
(2091) RepartitionByExpression
Arguments: [product#950959, plant#950960], 37
(2092) Project
Arguments: [product#950959, plant#950960, orderDateTime#950961]
(2093) LogicalRelation
Arguments: parquet, [systemId#950963, internalUUID#950964, plant#950965, product#950966, blockedForReplenishmentStartingFrom#950967, productionAspect#950968, salesPlant#950969, listing#950970, sourceOfSupplyCategory#950971], false
(2094) Repartition
Arguments: 37, true
(2095) Project
Arguments: [systemId#950963, internalUUID#950964, plant#950965, product#950966, blockedForReplenishmentStartingFrom#950967, productionAspect#950968, salesPlant#950969, listing#950970, sourceOfSupplyCategory#950971, struct(systemId, systemId#950963, internalUUID, internalUUID#950964, plant, plant#950965, product, product#950966, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#950967, productionAspect, productionAspect#950968, salesPlant, salesPlant#950969, listing, listing#950970, sourceOfSupplyCategory, sourceOfSupplyCategory#950971) AS productPlant#950972]
(2096) Project
Arguments: [productPlant#950972]
(2097) Join
Arguments: LeftOuter, ((product#950959 <=> productPlant#950972.product.internalRefUUID) AND (plant#950960 <=> productPlant#950972.plant.internalRefUUID))
(2098) Project
Arguments: [product#950959, plant#950960, orderDateTime#950961, productPlant#950972]
(2099) LogicalRelation
Arguments: parquet, [systemId#950973, internalUUID#950974, id#950975, displayId#950976, name#950977, baseUnitOfMeasure#950978, unitOfMeasures#950979, unitOfMeasureConversions#950980, productionAspect#950981, salesAspect#950982, procurementAspect#950983, productGroup#950984], false
(2100) Repartition
Arguments: 37, true
(2101) Join
Arguments: LeftOuter, (product#950959 = internalUUID#950974)
(2102) Project
Arguments: [product#950959, plant#950960, orderDateTime#950961, productPlant#950972, systemId#950973, internalUUID#950974, id#950975, displayId#950976, name#950977, baseUnitOfMeasure#950978, unitOfMeasures#950979, unitOfMeasureConversions#950980, productionAspect#950981, salesAspect#950982, procurementAspect#950983, productGroup#950984, filter(unitOfMeasureConversions#950980, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#950972.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#950972.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#950978.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#950978.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#950985]
(2103) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950985.quantityNumerator), true, [quantityNumerator#950986]
(2104) Project
Arguments: [product#950959, plant#950960, orderDateTime#950961, productPlant#950972, systemId#950973, internalUUID#950974, id#950975, displayId#950976, name#950977, baseUnitOfMeasure#950978, unitOfMeasures#950979, unitOfMeasureConversions#950980, productionAspect#950981, salesAspect#950982, procurementAspect#950983, productGroup#950984, filteredUnitOfMeasureConversions#950985, quantityNumerator#950986]
(2105) Generate
Arguments: explode(filteredUnitOfMeasureConversions#950985.quantityDenominator), true, [quantityDenominator#950987]
(2106) Project
Arguments: [product#950959, plant#950960, orderDateTime#950961, productPlant#950972, systemId#950973, internalUUID#950974, id#950975, displayId#950976, name#950977, baseUnitOfMeasure#950978, unitOfMeasures#950979, unitOfMeasureConversions#950980, productionAspect#950981, salesAspect#950982, procurementAspect#950983, productGroup#950984, filteredUnitOfMeasureConversions#950985, quantityNumerator#950986, quantityDenominator#950987]
(2107) Project
Arguments: [product#950959, plant#950960, orderDateTime#950961, productPlant#950972, systemId#950973, internalUUID#950974, id#950975, displayId#950976, name#950977, baseUnitOfMeasure#950978, unitOfMeasures#950979, unitOfMeasureConversions#950980, productionAspect#950981, salesAspect#950982, procurementAspect#950983, productGroup#950984, filteredUnitOfMeasureConversions#950985, quantityNumerator#950986, quantityDenominator#950987, (cast(quantityNumerator#950986 as double) / cast(quantityDenominator#950987 as double)) AS outboundUnit#950988]
(2108) Project
Arguments: [product#950959, plant#950960, orderDateTime#950961, productPlant#950972, systemId#950973, internalUUID#950974, id#950975, displayId#950976, name#950977, baseUnitOfMeasure#950978, unitOfMeasures#950979, unitOfMeasureConversions#950980, productionAspect#950981, salesAspect#950982, procurementAspect#950983, productGroup#950984, filteredUnitOfMeasureConversions#950985, quantityNumerator#950986, quantityDenominator#950987, CASE WHEN (isnull(outboundUnit#950988) OR (outboundUnit#950988 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#950988 END AS outboundUnit#950989]
(2109) Project
Arguments: [product#950959, plant#950960, orderDateTime#950961, productPlant#950972, outboundUnit#950989]
(2110) Project
Arguments: [plant#950960]
(2111) Deduplicate
Arguments: [plant#950960]
(2112) Join
Arguments: Inner, (plantUuid#950956 = plant#950960)
(2113) Project
Arguments: [plantId#950955, plantUuid#950956, storageLocId#950957, storageLocUuid#950958]
(2114) Join
Arguments: Inner, (plant#950929.internalRefUUID <=> plantUuid#950956)
(2115) Generate
Arguments: explode(filter(stockQuantities#950931, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#950958) AND (lambda x#944569.storageLocation.Id = storageLocId#950957)), lambda x#944569, false))), false, [stockQuantity#950990]
(2116) Project
Arguments: [systemId#950926, internalUUID#950927, product#950928, plant#950929, calculationDateTime#950930, stockQuantities#950931, plantId#950955, plantUuid#950956, storageLocId#950957, storageLocUuid#950958, stockQuantity#950990]
(2117) Aggregate
Arguments: [plantUuid#950956, internalUUID#950927, plant#950929, product#950928, systemId#950926], [plantUuid#950956, internalUUID#950927, plant#950929, product#950928, systemId#950926, first(calculationDateTime#950930, false) AS calculationDateTime#950991, collect_list(stockQuantity#950990, 0, 0) AS stockQuantities#950992]
(2118) Project
Arguments: [systemId#950926, internalUUID#950927, product#950928, plant#950929, calculationDateTime#950991, stockQuantities#950992]
(2119) Generate
Arguments: explode(stockQuantities#950992), false, [stockQuantity#950993]
(2120) Project
Arguments: [systemId#950926, internalUUID#950927, product#950928, plant#950929, calculationDateTime#950991, stockQuantities#950992, stockQuantity#950993]
(2121) Project
Arguments: [plant#950929.id AS plant#950994, plant#950929.internalRefUUID AS plantUuid#950995, product#950928.id AS product#950996, product#950928.internalRefUUID AS productUuid#950997, calculationDateTime#950991, stockQuantity#950993.storagelocation.id AS storageLocId#950998, stockQuantity#950993.storagelocation.internalRefUUID AS storageLocUuid#950999, stockQuantity#950993.quantity.measure AS quantity#951000, stockQuantity#950993.specialStockIndicator.code AS specialStockIndicator#951001, stockQuantity#950993.stockType.code AS stockType#951002]
(2122) Filter
Arguments: ((specialStockIndicator#951001 = ) AND (stockType#951002 = 01))
(2123) LogicalRelation
Arguments: parquet, [product#951003, plant#951004, orderDateTime#951005, planningStartDateTime#951006], false
(2124) RepartitionByExpression
Arguments: [product#951003, plant#951004], 37
(2125) Project
Arguments: [product#951003, plant#951004, orderDateTime#951005]
(2126) LogicalRelation
Arguments: parquet, [systemId#951007, internalUUID#951008, plant#951009, product#951010, blockedForReplenishmentStartingFrom#951011, productionAspect#951012, salesPlant#951013, listing#951014, sourceOfSupplyCategory#951015], false
(2127) Repartition
Arguments: 37, true
(2128) Project
Arguments: [systemId#951007, internalUUID#951008, plant#951009, product#951010, blockedForReplenishmentStartingFrom#951011, productionAspect#951012, salesPlant#951013, listing#951014, sourceOfSupplyCategory#951015, struct(systemId, systemId#951007, internalUUID, internalUUID#951008, plant, plant#951009, product, product#951010, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#951011, productionAspect, productionAspect#951012, salesPlant, salesPlant#951013, listing, listing#951014, sourceOfSupplyCategory, sourceOfSupplyCategory#951015) AS productPlant#951016]
(2129) Project
Arguments: [productPlant#951016]
(2130) Join
Arguments: LeftOuter, ((product#951003 <=> productPlant#951016.product.internalRefUUID) AND (plant#951004 <=> productPlant#951016.plant.internalRefUUID))
(2131) Project
Arguments: [product#951003, plant#951004, orderDateTime#951005, productPlant#951016]
(2132) LogicalRelation
Arguments: parquet, [systemId#951017, internalUUID#951018, id#951019, displayId#951020, name#951021, baseUnitOfMeasure#951022, unitOfMeasures#951023, unitOfMeasureConversions#951024, productionAspect#951025, salesAspect#951026, procurementAspect#951027, productGroup#951028], false
(2133) Repartition
Arguments: 37, true
(2134) Join
Arguments: LeftOuter, (product#951003 = internalUUID#951018)
(2135) Project
Arguments: [product#951003, plant#951004, orderDateTime#951005, productPlant#951016, systemId#951017, internalUUID#951018, id#951019, displayId#951020, name#951021, baseUnitOfMeasure#951022, unitOfMeasures#951023, unitOfMeasureConversions#951024, productionAspect#951025, salesAspect#951026, procurementAspect#951027, productGroup#951028, filter(unitOfMeasureConversions#951024, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#951016.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#951016.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#951022.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#951022.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#951029]
(2136) Generate
Arguments: explode(filteredUnitOfMeasureConversions#951029.quantityNumerator), true, [quantityNumerator#951030]
(2137) Project
Arguments: [product#951003, plant#951004, orderDateTime#951005, productPlant#951016, systemId#951017, internalUUID#951018, id#951019, displayId#951020, name#951021, baseUnitOfMeasure#951022, unitOfMeasures#951023, unitOfMeasureConversions#951024, productionAspect#951025, salesAspect#951026, procurementAspect#951027, productGroup#951028, filteredUnitOfMeasureConversions#951029, quantityNumerator#951030]
(2138) Generate
Arguments: explode(filteredUnitOfMeasureConversions#951029.quantityDenominator), true, [quantityDenominator#951031]
(2139) Project
Arguments: [product#951003, plant#951004, orderDateTime#951005, productPlant#951016, systemId#951017, internalUUID#951018, id#951019, displayId#951020, name#951021, baseUnitOfMeasure#951022, unitOfMeasures#951023, unitOfMeasureConversions#951024, productionAspect#951025, salesAspect#951026, procurementAspect#951027, productGroup#951028, filteredUnitOfMeasureConversions#951029, quantityNumerator#951030, quantityDenominator#951031]
(2140) Project
Arguments: [product#951003, plant#951004, orderDateTime#951005, productPlant#951016, systemId#951017, internalUUID#951018, id#951019, displayId#951020, name#951021, baseUnitOfMeasure#951022, unitOfMeasures#951023, unitOfMeasureConversions#951024, productionAspect#951025, salesAspect#951026, procurementAspect#951027, productGroup#951028, filteredUnitOfMeasureConversions#951029, quantityNumerator#951030, quantityDenominator#951031, (cast(quantityNumerator#951030 as double) / cast(quantityDenominator#951031 as double)) AS outboundUnit#951032]
(2141) Project
Arguments: [product#951003, plant#951004, orderDateTime#951005, productPlant#951016, systemId#951017, internalUUID#951018, id#951019, displayId#951020, name#951021, baseUnitOfMeasure#951022, unitOfMeasures#951023, unitOfMeasureConversions#951024, productionAspect#951025, salesAspect#951026, procurementAspect#951027, productGroup#951028, filteredUnitOfMeasureConversions#951029, quantityNumerator#951030, quantityDenominator#951031, CASE WHEN (isnull(outboundUnit#951032) OR (outboundUnit#951032 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#951032 END AS outboundUnit#951033]
(2142) Project
Arguments: [product#951003, plant#951004, orderDateTime#951005, productPlant#951016, outboundUnit#951033]
(2143) Join
Arguments: Inner, ((plantUuid#950995 = plant#951004) AND (productUuid#950997 = product#951003))
(2144) Filter
Arguments: (calculationDateTime#950991 <= orderDateTime#951005)
(2145) Project
Arguments: [plantUuid#950995 AS plant#951034, productUuid#950997 AS product#951035, storageLocId#950998, calculationDateTime#950991, quantity#951000]
(2146) LogicalRelation
Arguments: parquet, [systemId#951036, internalUUID#951037, product#951038, plant#951039, calculationDateTime#951040, stockQuantities#951041], false
(2147) Repartition
Arguments: 37, true
(2148) LogicalRelation
Arguments: parquet, [marketUnit#951042, description#951043, articleHierarchy#951044, defaultCurrency#951045, responsibilities#951046, replenishmentTypes#951047, distributionCenters#951048, assignedArticleHierarchyNodes#951049, minOrderQtySetting#951050, listingCheck#951051, odsSelection#951052, demandProfiles#951053, constraintProfiles#951054, optimizationProfiles#951055, orderGroupSplitProfiles#951056, supplierMinimumProfiles#951057, multipleRestrictionProfiles#951058, preferredUomSource#951059, handlingOfUnfulfilledDemands#951060, negligibleQuantitiesThreshold#951061, eventtype#951062], false
(2149) Repartition
Arguments: 37, true
(2150) Filter
Arguments: (marketUnit#951042 <=> IW_MU_CRP-125444_1)
(2151) Project
Arguments: [marketUnit#951042, description#951043, articleHierarchy#951044, defaultCurrency#951045, responsibilities#951046, replenishmentTypes#951047, distributionCenters#951048, assignedArticleHierarchyNodes#951049, minOrderQtySetting#951050, listingCheck#951051, odsSelection#951052, demandProfiles#951053, constraintProfiles#951054, optimizationProfiles#951055, orderGroupSplitProfiles#951056, supplierMinimumProfiles#951057, multipleRestrictionProfiles#951058, preferredUomSource#951059, handlingOfUnfulfilledDemands#951060, negligibleQuantitiesThreshold#951061, eventtype#951062]
(2152) Project
Arguments: [distributionCenters#951048]
(2153) Generate
Arguments: explode(distributionCenters#951048), false, [distributionCenters#951063]
(2154) Project
Arguments: [distributionCenters#951063]
(2155) Generate
Arguments: explode(distributionCenters#951063.storageLocations), false, [storageLocations#951064]
(2156) Project
Arguments: [distributionCenters#951063.id AS plantId#951065, distributionCenters#951063.internalRefUUID AS plantUuid#951066, storageLocations#951064]
(2157) Project
Arguments: [plantId#951065, plantUuid#951066, storageLocations#951064.id AS storageLocId#951067, storageLocations#951064.internalRefUUID AS storageLocUuid#951068]
(2158) LogicalRelation
Arguments: parquet, [product#951069, plant#951070, orderDateTime#951071, planningStartDateTime#951072], false
(2159) RepartitionByExpression
Arguments: [product#951069, plant#951070], 37
(2160) Project
Arguments: [product#951069, plant#951070, orderDateTime#951071]
(2161) LogicalRelation
Arguments: parquet, [systemId#951073, internalUUID#951074, plant#951075, product#951076, blockedForReplenishmentStartingFrom#951077, productionAspect#951078, salesPlant#951079, listing#951080, sourceOfSupplyCategory#951081], false
(2162) Repartition
Arguments: 37, true
(2163) Project
Arguments: [systemId#951073, internalUUID#951074, plant#951075, product#951076, blockedForReplenishmentStartingFrom#951077, productionAspect#951078, salesPlant#951079, listing#951080, sourceOfSupplyCategory#951081, struct(systemId, systemId#951073, internalUUID, internalUUID#951074, plant, plant#951075, product, product#951076, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#951077, productionAspect, productionAspect#951078, salesPlant, salesPlant#951079, listing, listing#951080, sourceOfSupplyCategory, sourceOfSupplyCategory#951081) AS productPlant#951082]
(2164) Project
Arguments: [productPlant#951082]
(2165) Join
Arguments: LeftOuter, ((product#951069 <=> productPlant#951082.product.internalRefUUID) AND (plant#951070 <=> productPlant#951082.plant.internalRefUUID))
(2166) Project
Arguments: [product#951069, plant#951070, orderDateTime#951071, productPlant#951082]
(2167) LogicalRelation
Arguments: parquet, [systemId#951083, internalUUID#951084, id#951085, displayId#951086, name#951087, baseUnitOfMeasure#951088, unitOfMeasures#951089, unitOfMeasureConversions#951090, productionAspect#951091, salesAspect#951092, procurementAspect#951093, productGroup#951094], false
(2168) Repartition
Arguments: 37, true
(2169) Join
Arguments: LeftOuter, (product#951069 = internalUUID#951084)
(2170) Project
Arguments: [product#951069, plant#951070, orderDateTime#951071, productPlant#951082, systemId#951083, internalUUID#951084, id#951085, displayId#951086, name#951087, baseUnitOfMeasure#951088, unitOfMeasures#951089, unitOfMeasureConversions#951090, productionAspect#951091, salesAspect#951092, procurementAspect#951093, productGroup#951094, filter(unitOfMeasureConversions#951090, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#951082.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#951082.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#951088.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#951088.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#951095]
(2171) Generate
Arguments: explode(filteredUnitOfMeasureConversions#951095.quantityNumerator), true, [quantityNumerator#951096]
(2172) Project
Arguments: [product#951069, plant#951070, orderDateTime#951071, productPlant#951082, systemId#951083, internalUUID#951084, id#951085, displayId#951086, name#951087, baseUnitOfMeasure#951088, unitOfMeasures#951089, unitOfMeasureConversions#951090, productionAspect#951091, salesAspect#951092, procurementAspect#951093, productGroup#951094, filteredUnitOfMeasureConversions#951095, quantityNumerator#951096]
(2173) Generate
Arguments: explode(filteredUnitOfMeasureConversions#951095.quantityDenominator), true, [quantityDenominator#951097]
(2174) Project
Arguments: [product#951069, plant#951070, orderDateTime#951071, productPlant#951082, systemId#951083, internalUUID#951084, id#951085, displayId#951086, name#951087, baseUnitOfMeasure#951088, unitOfMeasures#951089, unitOfMeasureConversions#951090, productionAspect#951091, salesAspect#951092, procurementAspect#951093, productGroup#951094, filteredUnitOfMeasureConversions#951095, quantityNumerator#951096, quantityDenominator#951097]
(2175) Project
Arguments: [product#951069, plant#951070, orderDateTime#951071, productPlant#951082, systemId#951083, internalUUID#951084, id#951085, displayId#951086, name#951087, baseUnitOfMeasure#951088, unitOfMeasures#951089, unitOfMeasureConversions#951090, productionAspect#951091, salesAspect#951092, procurementAspect#951093, productGroup#951094, filteredUnitOfMeasureConversions#951095, quantityNumerator#951096, quantityDenominator#951097, (cast(quantityNumerator#951096 as double) / cast(quantityDenominator#951097 as double)) AS outboundUnit#951098]
(2176) Project
Arguments: [product#951069, plant#951070, orderDateTime#951071, productPlant#951082, systemId#951083, internalUUID#951084, id#951085, displayId#951086, name#951087, baseUnitOfMeasure#951088, unitOfMeasures#951089, unitOfMeasureConversions#951090, productionAspect#951091, salesAspect#951092, procurementAspect#951093, productGroup#951094, filteredUnitOfMeasureConversions#951095, quantityNumerator#951096, quantityDenominator#951097, CASE WHEN (isnull(outboundUnit#951098) OR (outboundUnit#951098 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#951098 END AS outboundUnit#951099]
(2177) Project
Arguments: [product#951069, plant#951070, orderDateTime#951071, productPlant#951082, outboundUnit#951099]
(2178) Project
Arguments: [plant#951070]
(2179) Deduplicate
Arguments: [plant#951070]
(2180) Join
Arguments: Inner, (plantUuid#951066 = plant#951070)
(2181) Project
Arguments: [plantId#951065, plantUuid#951066, storageLocId#951067, storageLocUuid#951068]
(2182) Join
Arguments: Inner, (plant#951039.internalRefUUID <=> plantUuid#951066)
(2183) Generate
Arguments: explode(filter(stockQuantities#951041, lambdafunction(((lambda x#944569.storageLocation.internalRefUuid = storageLocUuid#951068) AND (lambda x#944569.storageLocation.Id = storageLocId#951067)), lambda x#944569, false))), false, [stockQuantity#951100]
(2184) Project
Arguments: [systemId#951036, internalUUID#951037, product#951038, plant#951039, calculationDateTime#951040, stockQuantities#951041, plantId#951065, plantUuid#951066, storageLocId#951067, storageLocUuid#951068, stockQuantity#951100]
(2185) Aggregate
Arguments: [plantUuid#951066, internalUUID#951037, plant#951039, product#951038, systemId#951036], [plantUuid#951066, internalUUID#951037, plant#951039, product#951038, systemId#951036, first(calculationDateTime#951040, false) AS calculationDateTime#951101, collect_list(stockQuantity#951100, 0, 0) AS stockQuantities#951102]
(2186) Project
Arguments: [systemId#951036, internalUUID#951037, product#951038, plant#951039, calculationDateTime#951101, stockQuantities#951102]
(2187) Generate
Arguments: explode(stockQuantities#951102), false, [stockQuantity#951103]
(2188) Project
Arguments: [systemId#951036, internalUUID#951037, product#951038, plant#951039, calculationDateTime#951101, stockQuantities#951102, stockQuantity#951103]
(2189) Project
Arguments: [plant#951039.id AS plant#951104, plant#951039.internalRefUUID AS plantUuid#951105, product#951038.id AS product#951106, product#951038.internalRefUUID AS productUuid#951107, calculationDateTime#951101, stockQuantity#951103.storagelocation.id AS storageLocId#951108, stockQuantity#951103.storagelocation.internalRefUUID AS storageLocUuid#951109, stockQuantity#951103.quantity.measure AS quantity#951110, stockQuantity#951103.specialStockIndicator.code AS specialStockIndicator#951111, stockQuantity#951103.stockType.code AS stockType#951112]
(2190) Filter
Arguments: ((specialStockIndicator#951111 = ) AND (stockType#951112 = 01))
(2191) LogicalRelation
Arguments: parquet, [product#951113, plant#951114, orderDateTime#951115, planningStartDateTime#951116], false
(2192) RepartitionByExpression
Arguments: [product#951113, plant#951114], 37
(2193) Project
Arguments: [product#951113, plant#951114, orderDateTime#951115]
(2194) LogicalRelation
Arguments: parquet, [systemId#951117, internalUUID#951118, plant#951119, product#951120, blockedForReplenishmentStartingFrom#951121, productionAspect#951122, salesPlant#951123, listing#951124, sourceOfSupplyCategory#951125], false
(2195) Repartition
Arguments: 37, true
(2196) Project
Arguments: [systemId#951117, internalUUID#951118, plant#951119, product#951120, blockedForReplenishmentStartingFrom#951121, productionAspect#951122, salesPlant#951123, listing#951124, sourceOfSupplyCategory#951125, struct(systemId, systemId#951117, internalUUID, internalUUID#951118, plant, plant#951119, product, product#951120, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#951121, productionAspect, productionAspect#951122, salesPlant, salesPlant#951123, listing, listing#951124, sourceOfSupplyCategory, sourceOfSupplyCategory#951125) AS productPlant#951126]
(2197) Project
Arguments: [productPlant#951126]
(2198) Join
Arguments: LeftOuter, ((product#951113 <=> productPlant#951126.product.internalRefUUID) AND (plant#951114 <=> productPlant#951126.plant.internalRefUUID))
(2199) Project
Arguments: [product#951113, plant#951114, orderDateTime#951115, productPlant#951126]
(2200) LogicalRelation
Arguments: parquet, [systemId#951127, internalUUID#951128, id#951129, displayId#951130, name#951131, baseUnitOfMeasure#951132, unitOfMeasures#951133, unitOfMeasureConversions#951134, productionAspect#951135, salesAspect#951136, procurementAspect#951137, productGroup#951138], false
(2201) Repartition
Arguments: 37, true
(2202) Join
Arguments: LeftOuter, (product#951113 = internalUUID#951128)
(2203) Project
Arguments: [product#951113, plant#951114, orderDateTime#951115, productPlant#951126, systemId#951127, internalUUID#951128, id#951129, displayId#951130, name#951131, baseUnitOfMeasure#951132, unitOfMeasures#951133, unitOfMeasureConversions#951134, productionAspect#951135, salesAspect#951136, procurementAspect#951137, productGroup#951138, filter(unitOfMeasureConversions#951134, lambdafunction((((lambda u#944410.measurementUnit1.code = productPlant#951126.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#944410.measurementUnit1.internalRefUUID = productPlant#951126.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#944410.measurementUnit2.code = baseUnitOfMeasure#951132.code) AND (lambda u#944410.measurementUnit2.internalRefUUID = baseUnitOfMeasure#951132.internalRefUUID))), lambda u#944410, false)) AS filteredUnitOfMeasureConversions#951139]
(2204) Generate
Arguments: explode(filteredUnitOfMeasureConversions#951139.quantityNumerator), true, [quantityNumerator#951140]
(2205) Project
Arguments: [product#951113, plant#951114, orderDateTime#951115, productPlant#951126, systemId#951127, internalUUID#951128, id#951129, displayId#951130, name#951131, baseUnitOfMeasure#951132, unitOfMeasures#951133, unitOfMeasureConversions#951134, productionAspect#951135, salesAspect#951136, procurementAspect#951137, productGroup#951138, filteredUnitOfMeasureConversions#951139, quantityNumerator#951140]
(2206) Generate
Arguments: explode(filteredUnitOfMeasureConversions#951139.quantityDenominator), true, [quantityDenominator#951141]
(2207) Project
Arguments: [product#951113, plant#951114, orderDateTime#951115, productPlant#951126, systemId#951127, internalUUID#951128, id#951129, displayId#951130, name#951131, baseUnitOfMeasure#951132, unitOfMeasures#951133, unitOfMeasureConversions#951134, productionAspect#951135, salesAspect#951136, procurementAspect#951137, productGroup#951138, filteredUnitOfMeasureConversions#951139, quantityNumerator#951140, quantityDenominator#951141]
(2208) Project
Arguments: [product#951113, plant#951114, orderDateTime#951115, productPlant#951126, systemId#951127, internalUUID#951128, id#951129, displayId#951130, name#951131, baseUnitOfMeasure#951132, unitOfMeasures#951133, unitOfMeasureConversions#951134, productionAspect#951135, salesAspect#951136, procurementAspect#951137, productGroup#951138, filteredUnitOfMeasureConversions#951139, quantityNumerator#951140, quantityDenominator#951141, (cast(quantityNumerator#951140 as double) / cast(quantityDenominator#951141 as double)) AS outboundUnit#951142]
(2209) Project
Arguments: [product#951113, plant#951114, orderDateTime#951115, productPlant#951126, systemId#951127, internalUUID#951128, id#951129, displayId#951130, name#951131, baseUnitOfMeasure#951132, unitOfMeasures#951133, unitOfMeasureConversions#951134, productionAspect#951135, salesAspect#951136, procurementAspect#951137, productGroup#951138, filteredUnitOfMeasureConversions#951139, quantityNumerator#951140, quantityDenominator#951141, CASE WHEN (isnull(outboundUnit#951142) OR (outboundUnit#951142 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#951142 END AS outboundUnit#951143]
(2210) Project
Arguments: [product#951113, plant#951114, orderDateTime#951115, productPlant#951126, outboundUnit#951143]
(2211) Join
Arguments: Inner, ((plantUuid#951105 = plant#951114) AND (productUuid#951107 = product#951113))
(2212) Filter
Arguments: (calculationDateTime#951101 <= orderDateTime#951115)
(2213) Project
Arguments: [plantUuid#951105 AS plant#951144, productUuid#951107 AS product#951145, storageLocId#951108, calculationDateTime#951101, quantity#951110]
(2214) Aggregate
Arguments: [plant#951144, product#951145, storageLocId#951108], [plant#951144, product#951145, storageLocId#951108, max(calculationDateTime#951101) AS max_calc_datetime#951146]
(2215) Join
Arguments: Inner, ((((plant#951034 <=> plant#951144) AND (product#951035 <=> product#951145)) AND (storageLocId#950998 <=> storageLocId#951108)) AND (calculationDateTime#950991 <=> max_calc_datetime#951146))
(2216) Project
Arguments: [plant#951034, product#951035, storageLocId#950998, calculationDateTime#950991, quantity#951000]
(2217) Aggregate
Arguments: [product#951035, plant#951034], [product#951035, plant#951034, sum(quantity#951000) AS quantitySum#951147, min(calculationDateTime#950991) AS minCalculationDateTime#951148]
(2218) Project
Arguments: [product#951035, plant#951034, quantitySum#951147, minCalculationDateTime#951148, round(quantitySum#951147, 0) AS roundedQuantitySum#951149]
(2219) Join
Arguments: LeftOuter, ((plant#950896 = plant#951034) AND (product#950895 = product#951035))
(2220) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, roundedQuantitySum#951149, minCalculationDateTime#951148]
(2221) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, roundedQuantitySum#951149, minCalculationDateTime#951148, CASE WHEN isnotnull(minCalculationDateTime#951148) THEN minCalculationDateTime#951148 ELSE orderDateTime#950897 END AS stockDatetime#951150]
(2222) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, roundedQuantitySum#951149, minCalculationDateTime#951148, stockDatetime#951150, CASE WHEN isnotnull(roundedQuantitySum#951149) THEN array(roundedQuantitySum#951149) ELSE array(0.0) END AS stockBatchQuantities#951151]
(2223) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, roundedQuantitySum#951149, minCalculationDateTime#951148, stockDatetime#951150, stockBatchQuantities#951151, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#951152]
(2224) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, roundedQuantitySum#951149, stockDatetime#951150, stockBatchQuantities#951151, stockBatchShelfLifeEndDatetimes#951152]
(2225) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, stockBatchShelfLifeEndDatetimes#951152]
(2226) LogicalRelation
Arguments: parquet, [product#951153, plant#951154, demandChannel#951155, demandStream#951156, considerVariance#951157, demandTimeBuckets#951158, demandPointInTimeStart#951159, demandPointInTimeEnd#951160, demandPointInTime#951161], false
(2227) Join
Arguments: LeftOuter, ((plant#951154 <=> plant#950896) AND (product#951153 <=> product#950895))
(2228) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, stockBatchShelfLifeEndDatetimes#951152, product#951153, plant#951154, demandChannel#951155, demandStream#951156, considerVariance#951157, demandTimeBuckets#951158, demandPointInTimeStart#951159, demandPointInTimeEnd#951160, demandPointInTime#951161, CASE WHEN isnotnull(product#951153) THEN struct(demandChannel, demandChannel#951155, demandStream, demandStream#951156, considerVariance, considerVariance#951157, demandTimeBuckets, demandTimeBuckets#951158, demandPointInTimeStart, demandPointInTimeStart#951159, demandPointInTimeEnd, demandPointInTimeEnd#951160, demandPointInTime, demandPointInTime#951161) 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#951162]
(2229) Aggregate
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, stockBatchShelfLifeEndDatetimes#951152], [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, stockBatchShelfLifeEndDatetimes#951152, collect_list(rawDemands#951162, 0, 0) AS rawDemands#951163]
(2230) SubqueryAlias
Arguments: wl
(2231) LogicalRelation
Arguments: parquet, [systemId#951164, internalUUID#951165, id#951166, displayId#951167, name#951168, category#951169, companyCode#951170, address#951171, mainDistributionChain#951172, mainPurchasingOrganization#951173, validPurchasingOrganizations#951174, productGroup#951175], false
(2232) Repartition
Arguments: 37, true
(2233) Project
Arguments: [systemId#951164, internalUUID#951165, id#951166, displayId#951167, name#951168, category#951169, companyCode#951170, address#951171, mainDistributionChain#951172, mainPurchasingOrganization#951173, validPurchasingOrganizations#951174, productGroup#951175, address#951171.timezone.code AS timezonecode#951176]
(2234) Join
Arguments: LeftOuter, (plant#950896 <=> internalUUID#951165)
(2235) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, stockBatchShelfLifeEndDatetimes#951152, rawDemands#951163, systemId#951164, internalUUID#951165, id#951166, displayId#951167, name#951168, category#951169, companyCode#951170, address#951171, mainDistributionChain#951172, mainPurchasingOrganization#951173, validPurchasingOrganizations#951174, productGroup#951175, CASE WHEN isnotnull(timezonecode#951176) THEN timezonecode#951176 ELSE UTC END AS timezonecode#951177]
(2236) Project
Arguments: [product#950895, plant#950896, orderDateTime#950897, productPlant#950908, outboundUnit#950925, stockDatetime#951150, stockBatchQuantities#951151, stockBatchShelfLifeEndDatetimes#951152, rawDemands#951163, timezonecode#951177]
(2237) DeserializeToObject
Arguments: createexternalrow(invoke(product#950895.toString()), invoke(plant#950896.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#950897)), if (isnull(productPlant#950908)) null else createexternalrow(invoke(productPlant#950908.systemId.toString()), invoke(productPlant#950908.internalUUID.toString()), if (isnull(productPlant#950908.plant)) null else createexternalrow(invoke(productPlant#950908.plant.internalRefUUID.toString()), invoke(productPlant#950908.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#950908.product)) null else createexternalrow(invoke(productPlant#950908.product.internalRefUUID.toString()), invoke(productPlant#950908.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#950908.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#950908.productionAspect)) null else createexternalrow(if (isnull(productPlant#950908.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#950908.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#950908.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#950908.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#950908.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#950908.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#950908.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#950908.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#950908.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#950908.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#950908.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#950908.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#950908.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#950908.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#950908.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#950908.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#950908.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#950908.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#950908.salesPlant)) null else createexternalrow(if (isnull(productPlant#950908.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#950908.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#950908.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, 74989), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 74989).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#950908.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#950908.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#950908.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#950908.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#950925)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#951150)), mapobjects(lambdavariable(MapObject, DoubleType, true, 74990), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 74990) as double))), stockBatchQuantities#951151, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 74991), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 74991) as timestamp)))), stockBatchShelfLifeEndDatetimes#951152, 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, 74992), 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, 74992))) 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, 74992).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, 74992).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, 74992).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74993).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, 74992).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, 74992).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, 74992).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 74994).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, 74992).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#951163, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#951177.toString()), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)), obj#945940: org.apache.spark.sql.Row
(2238) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@353c8b73, 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)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false), StructField(timezonecode,StringType,true)], obj#945945: org.apache.spark.sql.Row
(2239) 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#951178, 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#951179, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74980), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74980), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74981), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74981), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74982), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74982), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74983), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74983), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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, 74979), 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, 74979), 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, 74979), 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, 74984), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74984), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74979), 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#951180, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74986), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74986), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74987), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74987), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74988), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74988), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 74985), 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, 74985), 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, 74985), 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, 74985), 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, 74985), 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#951181]
(2240) Join
Arguments: LeftOuter, ((plant#951179 <=> plant#950638) AND (product#951178 <=> product#950637))
(2241) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, outboundUnit#950667, stockDatetime#950892, stockBatchQuantities#950893, stockBatchShelfLifeEndDatetimes#950894, plant#951179, dayBucketDemands#951180, pointInTimeDemands#951181]
(2242) Project
Arguments: [product#950637, plant#950638, orderDateTime#950639, productPlant#950650, outboundUnit#950667, stockDatetime#950892, stockBatchQuantities#950893, stockBatchShelfLifeEndDatetimes#950894, dayBucketDemands#951180, pointInTimeDemands#951181]
(2243) LogicalRelation
Arguments: parquet, [systemId#951182, internalUUID#951183, id#951184, displayId#951185, supplier#951186, type#951187, status#951188, isMarkedForDeletion#951189, items#951190], false
(2244) Repartition
Arguments: 37, true
(2245) Generate
Arguments: explode(items#951190), false, [item#951191]
(2246) Project
Arguments: [id#951184, internalUUID#951183, isMarkedForDeletion#951189, supplier#951186.internalRefUUID AS supplierUuid#951192, item#951191]
(2247) Filter
Arguments: (((NOT isMarkedForDeletion#951189 AND NOT item#951191.deletionIndicator) AND NOT item#951191.completeIndicator) AND NOT item#951191.returnIndicator)
(2248) Project
Arguments: [id#951184, internalUUID#951183, supplierUuid#951192, item#951191.plant.internalRefUUID AS plant#951193, item#951191.product.internalRefUUID AS product#951194, item#951191.storageLocation.internalRefUUID AS storageLocUuid#951195, item#951191.quantityUnit.code AS quantityUom#951196, item#951191.quantityUnit.internalRefUUID AS quantityUomUuid#951197, item#951191.quantityNumerator AS quantityNumerator#951198, item#951191.quantityDenominator AS quantityDenominator#951199, item#951191.scheduleLines AS scheduleLines#951200, item#951191.confirmations AS confirmations#951201]
(2249) Join
Arguments: Inner, ((product#950637 <=> product#951194) AND (plant#950638 <=> supplierUuid#951192))
(2250) Project
Arguments: [id#951184, internalUUID#951183, supplierUuid#951192, plant#951193, product#951194, storageLocUuid#951195, quantityUom#951196, quantityUomUuid#951197, quantityNumerator#951198, quantityDenominator#951199, scheduleLines#951200, confirmations#951201, stockDatetime#950892, plant#950638]
(2251) Project
Arguments: [id#951184, internalUUID#951183, supplierUuid#951192, product#951194, storageLocUuid#951195, quantityUom#951196, quantityUomUuid#951197, quantityNumerator#951198, quantityDenominator#951199, scheduleLines#951200, confirmations#951201, stockDatetime#950892, plant#950638]
(2252) Project
Arguments: [id#951184, internalUUID#951183, supplierUuid#951192, product#951194, storageLocUuid#951195, quantityUom#951196, quantityUomUuid#951197, quantityNumerator#951198, quantityDenominator#951199, scheduleLines#951200, confirmations#951201, stockDatetime#950892, plant#950638, filter(transform(filter(transform(scheduleLines#951200, lambdafunction(struct(openQty, (greatest((lambda x_144#947949.quantity - coalesce(lambda x_144#947949.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_144#947949.productAvailabilityDateTime, lambda x_144#947949.deliveryAt)), lambda x_144#947949, false)), lambdafunction((lambda x_145#947950.availabilityDatetime < stockDatetime#950892), lambda x_145#947950, false)), lambdafunction(struct(documentId, id#951184, documentUuid, internalUUID#951183, openQty, lambda x_146#947951.openQty, openQtyInBaseUnit, ((lambda x_146#947951.openQty * quantityNumerator#951198) / quantityDenominator#951199), qtyUom, quantityUom#951196, qtyUomUuid, quantityUomUuid#951197, availabilityDatetime, lambda x_146#947951.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_146#947951, false)), lambdafunction(NOT (lambda x_147#947952.openQty = 0.0), lambda x_147#947952, false)) AS openGoodsMovements#951202]
(2253) Aggregate
Arguments: [product#951194, plant#950638], [product#951194, plant#950638, flatten(collect_list(openGoodsMovements#951202, 0, 0)) AS openGoodsMovements#951203]
(2254) Filter
Arguments: (array_size(openGoodsMovements#951203) > 0)
(2255) Union
Arguments: false, false
(2256) Aggregate
Arguments: [product#950625, plant#950624], [product#950625, plant#950624, flatten(collect_list(openGoodsMovements#950636, 0, 0)) AS openGoodsMovements#951204]
(2257) Join
Arguments: LeftOuter, ((product#949464 = product#950625) AND (plant#949465 = plant#950624))
(2258) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, stockBatchShelfLifeEndDatetimes#949721, dayBucketDemands#950007, pointInTimeDemands#950008, openGoodsMovements#951204]
(2259) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, stockBatchShelfLifeEndDatetimes#949721, dayBucketDemands#950007, pointInTimeDemands#950008, coalesce(openGoodsMovements#951204.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#951205, coalesce(openGoodsMovements#951204.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#951206, coalesce(openGoodsMovements#951204.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#951207]
(2260) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, stockBatchShelfLifeEndDatetimes#949721, dayBucketDemands#950007, pointInTimeDemands#950008, openGoodsMovementQuantities#951205, openGoodsMovementAvailabilityDatetimes#951206, openGoodsMovementShelfLifeEndDatetimes#951207, 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#951208]
(2261) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, stockBatchShelfLifeEndDatetimes#949721, dayBucketDemands#950007, pointInTimeDemands#950008, openGoodsMovementQuantities#951205, openGoodsMovementAvailabilityDatetimes#951206, openGoodsMovementShelfLifeEndDatetimes#951207, configuration#951208, productPlant#949477.listing AS listing#949406]
(2262) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, stockBatchShelfLifeEndDatetimes#949721, dayBucketDemands#950007, pointInTimeDemands#950008, openGoodsMovementQuantities#951205, openGoodsMovementAvailabilityDatetimes#951206, openGoodsMovementShelfLifeEndDatetimes#951207, configuration#951208, CASE WHEN isnotnull(listing#949406) THEN listing#949406 ELSE cast(array() as array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>) END AS listing#949408]
(2263) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, stockBatchShelfLifeEndDatetimes#949721, dayBucketDemands#950007, pointInTimeDemands#950008, openGoodsMovementQuantities#951205, openGoodsMovementAvailabilityDatetimes#951206, openGoodsMovementShelfLifeEndDatetimes#951207, configuration#951208, filter(listing#949408, lambdafunction((lambda listing#949410.isListed = true), lambda listing#949410, false)) AS listing#949409]
(2264) Project
Arguments: [product#949464, plant#949465, orderDateTime#949466, productPlant#949477, outboundUnit#949494, stockDatetime#949719, stockBatchQuantities#949720, stockBatchShelfLifeEndDatetimes#949721, dayBucketDemands#950007, pointInTimeDemands#950008, openGoodsMovementQuantities#951205, openGoodsMovementAvailabilityDatetimes#951206, openGoodsMovementShelfLifeEndDatetimes#951207, configuration#951208, array_sort(listing#949409, lambdafunction(if ((isnull(lambda left#949412) AND isnull(lambda right#949413))) 0 else if (isnull(lambda left#949412)) 1 else if (isnull(lambda right#949413)) -1 else if ((lambda left#949412 < lambda right#949413)) -1 else if ((lambda left#949412 > lambda right#949413)) 1 else 0, lambda left#949412, lambda right#949413, false), false) AS listing#949411]
(2265) DeserializeToObject
Arguments: createexternalrow(invoke(product#949464.toString()), invoke(plant#949465.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#949466)), if (isnull(productPlant#949477)) null else createexternalrow(invoke(productPlant#949477.systemId.toString()), invoke(productPlant#949477.internalUUID.toString()), if (isnull(productPlant#949477.plant)) null else createexternalrow(invoke(productPlant#949477.plant.internalRefUUID.toString()), invoke(productPlant#949477.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#949477.product)) null else createexternalrow(invoke(productPlant#949477.product.internalRefUUID.toString()), invoke(productPlant#949477.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#949477.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#949477.productionAspect)) null else createexternalrow(if (isnull(productPlant#949477.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#949477.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#949477.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#949477.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#949477.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#949477.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#949477.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#949477.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#949477.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#949477.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#949477.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#949477.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#949477.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#949477.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)), if (isnull(productPlant#949477.salesPlant)) null else createexternalrow(if (isnull(productPlant#949477.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#949477.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#949477.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, 75699), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 75699))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 75699).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 75699).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 75699).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#949477.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#949477.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#949477.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#949477.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), static_invoke(java.lang.Double.valueOf(outboundUnit#949494)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#949719)), mapobjects(lambdavariable(MapObject, DoubleType, true, 75700), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 75700) as double))), stockBatchQuantities#949720, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 75701), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 75701) as timestamp)))), stockBatchShelfLifeEndDatetimes#949721, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, 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, 75702), assertnotnull(if (isnull(lambdavariable(MapObject, 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, 75702))) null else createexternalrow(invoke(lambdavariable(MapObject, 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, 75702).demandChannel.toString()), invoke(lambdavariable(MapObject, 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, 75702).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, 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, 75702).considerVariance)), mapobjects(lambdavariable(MapObject, DoubleType, false, 75703), assertnotnull(static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, false, 75703) as double)))), lambdavariable(MapObject, 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, 75702).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 75704), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 75704) as double))), lambdavariable(MapObject, 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, 75702).demandVariances, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 75705), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 75705) as timestamp)))), lambdavariable(MapObject, 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, 75702).anchorDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StringType, false, 75706), assertnotnull(invoke(cast(lambdavariable(MapObject, StringType, false, 75706) as string).toString())), lambdavariable(MapObject, 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, 75702).anchorWeekdays, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, IntegerType, false, 75707), assertnotnull(static_invoke(java.lang.Integer.valueOf(cast(lambdavariable(MapObject, IntegerType, false, 75707) as int)))), lambdavariable(MapObject, 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, 75702).anchorIndices, Some(class scala.collection.mutable.ArraySeq)), 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))), dayBucketDemands#950007, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, 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, 75708), assertnotnull(if (isnull(lambdavariable(MapObject, 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, 75708))) null else createexternalrow(invoke(lambdavariable(MapObject, 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, 75708).demandChannel.toString()), invoke(lambdavariable(MapObject, 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, 75708).demandStream.toString()), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, 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, 75708).considerVariance)), mapobjects(lambdavariable(MapObject, TimestampType, false, 75709), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 75709) as timestamp)))), lambdavariable(MapObject, 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, 75708).demandDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, false, 75710), assertnotnull(static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, false, 75710) as double)))), lambdavariable(MapObject, 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, 75708).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 75711), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 75711) as double))), lambdavariable(MapObject, 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, 75708).demandVariances, 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(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, 75708).horizonStartDatetime)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, 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, 75708).horizonEndDatetime)), 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))), pointInTimeDemands#950008, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 75712), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 75712) as double))), openGoodsMovementQuantities#951205, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, 75713), static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, true, 75713) as timestamp))), openGoodsMovementAvailabilityDatetimes#951206, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 75714), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 75714) as timestamp)))), openGoodsMovementShelfLifeEndDatetimes#951207, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 75715), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 75715))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 75715).configurationValidityDatetime)), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 75715).configurationName.toString()), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 75715).configurationValue.toString()), StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false))), configuration#951208, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 75716), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 75716))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 75716).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 75716).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 75716).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), listing#949411, 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)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(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),true), StructField(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),true), ... 5 more fields), obj#949444: org.apache.spark.sql.Row
(2266) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801ff9ec8@c142349, 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)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(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),true), StructField(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),true), StructField(openGoodsMovementQuantities,ArrayType(DoubleType,true),false), StructField(openGoodsMovementAvailabilityDatetimes,ArrayType(TimestampType,true),false), StructField(openGoodsMovementShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(configuration,ArrayType(StructType(StructField(configurationValidityDatetime,TimestampType,false),StructField(configurationName,StringType,false),StructField(configurationValue,StringType,false)),false),false), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)], obj#949451: org.apache.spark.sql.Row
(2267) 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#949458, 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#949459, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 75695), static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 75695), StringType, ObjectType(class java.lang.String)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 2, timeDependentSettingsName), ArrayType(StringType,true), ObjectType(class java.lang.Object)), None)) AS timeDependentSettingsName#949460, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 75696), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 75696), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 3, timeDependentSettingsStartDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None)) AS timeDependentSettingsStartDatetime#949461, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 75697), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 75697), TimestampType, ObjectType(class java.sql.Timestamp)))), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 4, timeDependentSettingsEndDatetime), ArrayType(TimestampType,true), ObjectType(class java.lang.Object)), None)) AS timeDependentSettingsEndDatetime#949462, assertnotnull(if (invoke(class [D.isInstance(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object))))) static_invoke(ArrayData.toArrayData(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)))) else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 75698), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 75698), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 5, timeDependentSettingsValue), ArrayType(DoubleType,true), ObjectType(class java.lang.Object)), None)) AS timeDependentSettingsValue#949463]
(2268) Join
Arguments: LeftOuter, ((product#944305 = product#949458) AND (plant#944306 = plant#949459))
(2269) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, configuration#949267, timeDependentSettingsName#949460, timeDependentSettingsStartDatetime#949461, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
(2270) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, configuration#949267, CASE WHEN isnotnull(timeDependentSettingsName#949460) THEN timeDependentSettingsName#949460 ELSE cast(array() as array<string>) END AS timeDependentSettingsName#951335, timeDependentSettingsStartDatetime#949461, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
(2271) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, configuration#949267, timeDependentSettingsName#951335, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#949461) THEN timeDependentSettingsStartDatetime#949461 ELSE cast(array() as array<timestamp>) END AS timeDependentSettingsStartDatetime#951336, timeDependentSettingsEndDatetime#949462, timeDependentSettingsValue#949463]
(2272) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, configuration#949267, timeDependentSettingsName#951335, timeDependentSettingsStartDatetime#951336, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#949462) THEN timeDependentSettingsEndDatetime#949462 ELSE cast(array() as array<timestamp>) END AS timeDependentSettingsEndDatetime#951337, timeDependentSettingsValue#949463]
(2273) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, productPlant#944371, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, configuration#949267, timeDependentSettingsName#951335, timeDependentSettingsStartDatetime#951336, timeDependentSettingsEndDatetime#951337, CASE WHEN isnotnull(timeDependentSettingsValue#949463) THEN timeDependentSettingsValue#949463 ELSE cast(array() as array<double>) END AS timeDependentSettingsValue#951338]
(2274) Project
Arguments: [product#944305, plant#944306, orderDateTime#944307, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, configuration#949267, timeDependentSettingsName#951335, timeDependentSettingsStartDatetime#951336, timeDependentSettingsEndDatetime#951337, timeDependentSettingsValue#951338]
(2275) Project
Arguments: [product#944305, plant#944306, outboundUnit#944422, stockDatetime#944811, stockBatchQuantities#944812, stockBatchShelfLifeEndDatetimes#944813, dayBucketDemands#945952, pointInTimeDemands#945953, openGoodsMovementQuantities#949165, openGoodsMovementAvailabilityDatetimes#949166, openGoodsMovementShelfLifeEndDatetimes#949167, configuration#949267, timeDependentSettingsName#951335, timeDependentSettingsStartDatetime#951336, timeDependentSettingsEndDatetime#951337, timeDependentSettingsValue#951338]