== Physical Plan ==
Execute SaveIntoDataSourceCommand (1)
+- SaveIntoDataSourceCommand (2)
+- Project (2271)
+- Project (2270)
+- Project (2269)
+- Project (2268)
+- Project (2267)
+- Project (2266)
+- Project (2265)
+- Join (2264)
:- Project (1129)
: +- Project (1128)
: +- Project (1127)
: +- Join (1126)
: :- 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 (1125)
: +- Union (1124)
: :- Filter (759)
: : +- Aggregate (758)
: : +- Project (757)
: : +- Project (756)
: : +- Window (755)
: : +- Project (754)
: : +- Project (753)
: : +- Project (752)
: : +- Join (751)
: : :- 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 (750)
: : +- Filter (749)
: : +- Project (748)
: : +- Generate (747)
: : +- LocalRelation (746)
: +- Filter (1123)
: +- Aggregate (1122)
: +- Project (1121)
: +- Project (1120)
: +- Project (1119)
: +- Join (1118)
: :- Project (1112)
: : +- Project (1111)
: : +- Join (1110)
: : :- Project (927)
: : : +- Project (926)
: : : +- Project (925)
: : : +- Project (924)
: : : +- Project (923)
: : : +- Project (922)
: : : +- Join (921)
: : : :- Project (779)
: : : : +- Project (778)
: : : : +- Project (777)
: : : : +- Project (776)
: : : : +- Generate (775)
: : : : +- Project (774)
: : : : +- Generate (773)
: : : : +- Project (772)
: : : : +- Join (771)
: : : : :- Project (768)
: : : : : +- Join (767)
: : : : : :- Project (762)
: : : : : : +- RepartitionByExpression (761)
: : : : : : +- LogicalRelation (760)
: : : : : +- Project (766)
: : : : : +- Project (765)
: : : : : +- Repartition (764)
: : : : : +- LogicalRelation (763)
: : : : +- Repartition (770)
: : : : +- LogicalRelation (769)
: : : +- Project (920)
: : : +- Aggregate (919)
: : : +- Project (918)
: : : +- Join (917)
: : : :- Project (847)
: : : : +- Filter (846)
: : : : +- Join (845)
: : : : :- Filter (824)
: : : : : +- Project (823)
: : : : : +- Project (822)
: : : : : +- Generate (821)
: : : : : +- Project (820)
: : : : : +- Aggregate (819)
: : : : : +- Project (818)
: : : : : +- Generate (817)
: : : : : +- Join (816)
: : : : : :- Repartition (781)
: : : : : : +- LogicalRelation (780)
: : : : : +- Project (815)
: : : : : +- Join (814)
: : : : : :- Project (791)
: : : : : : +- Project (790)
: : : : : : +- Generate (789)
: : : : : : +- Project (788)
: : : : : : +- Generate (787)
: : : : : : +- Project (786)
: : : : : : +- Project (785)
: : : : : : +- Filter (784)
: : : : : : +- Repartition (783)
: : : : : : +- LogicalRelation (782)
: : : : : +- Deduplicate (813)
: : : : : +- Project (812)
: : : : : +- Project (811)
: : : : : +- Project (810)
: : : : : +- Project (809)
: : : : : +- Project (808)
: : : : : +- Generate (807)
: : : : : +- Project (806)
: : : : : +- Generate (805)
: : : : : +- Project (804)
: : : : : +- Join (803)
: : : : : :- Project (800)
: : : : : : +- Join (799)
: : : : : : :- Project (794)
: : : : : : : +- RepartitionByExpression (793)
: : : : : : : +- LogicalRelation (792)
: : : : : : +- Project (798)
: : : : : : +- Project (797)
: : : : : : +- Repartition (796)
: : : : : : +- LogicalRelation (795)
: : : : : +- Repartition (802)
: : : : : +- LogicalRelation (801)
: : : : +- Project (844)
: : : : +- Project (843)
: : : : +- Project (842)
: : : : +- Project (841)
: : : : +- Generate (840)
: : : : +- Project (839)
: : : : +- Generate (838)
: : : : +- Project (837)
: : : : +- Join (836)
: : : : :- Project (833)
: : : : : +- Join (832)
: : : : : :- Project (827)
: : : : : : +- RepartitionByExpression (826)
: : : : : : +- LogicalRelation (825)
: : : : : +- Project (831)
: : : : : +- Project (830)
: : : : : +- Repartition (829)
: : : : : +- LogicalRelation (828)
: : : : +- Repartition (835)
: : : : +- LogicalRelation (834)
: : : +- Aggregate (916)
: : : +- Project (915)
: : : +- Filter (914)
: : : +- Join (913)
: : : :- Filter (892)
: : : : +- Project (891)
: : : : +- Project (890)
: : : : +- Generate (889)
: : : : +- Project (888)
: : : : +- Aggregate (887)
: : : : +- Project (886)
: : : : +- Generate (885)
: : : : +- Join (884)
: : : : :- Repartition (849)
: : : : : +- LogicalRelation (848)
: : : : +- Project (883)
: : : : +- Join (882)
: : : : :- Project (859)
: : : : : +- Project (858)
: : : : : +- Generate (857)
: : : : : +- Project (856)
: : : : : +- Generate (855)
: : : : : +- Project (854)
: : : : : +- Project (853)
: : : : : +- Filter (852)
: : : : : +- Repartition (851)
: : : : : +- LogicalRelation (850)
: : : : +- Deduplicate (881)
: : : : +- Project (880)
: : : : +- Project (879)
: : : : +- Project (878)
: : : : +- Project (877)
: : : : +- Project (876)
: : : : +- Generate (875)
: : : : +- Project (874)
: : : : +- Generate (873)
: : : : +- Project (872)
: : : : +- Join (871)
: : : : :- Project (868)
: : : : : +- Join (867)
: : : : : :- Project (862)
: : : : : : +- RepartitionByExpression (861)
: : : : : : +- LogicalRelation (860)
: : : : : +- Project (866)
: : : : : +- Project (865)
: : : : : +- Repartition (864)
: : : : : +- LogicalRelation (863)
: : : : +- Repartition (870)
: : : : +- LogicalRelation (869)
: : : +- Project (912)
: : : +- Project (911)
: : : +- Project (910)
: : : +- Project (909)
: : : +- Generate (908)
: : : +- Project (907)
: : : +- Generate (906)
: : : +- Project (905)
: : : +- Join (904)
: : : :- Project (901)
: : : : +- Join (900)
: : : : :- Project (895)
: : : : : +- RepartitionByExpression (894)
: : : : : +- LogicalRelation (893)
: : : : +- Project (899)
: : : : +- Project (898)
: : : : +- Repartition (897)
: : : : +- LogicalRelation (896)
: : : +- Repartition (903)
: : : +- LogicalRelation (902)
: : +- SerializeFromObject (1109)
: : +- MapElements (1108)
: : +- DeserializeToObject (1107)
: : +- Project (1106)
: : +- Project (1105)
: : +- Join (1104)
: : :- SubqueryAlias (1100)
: : : +- Aggregate (1099)
: : : +- Project (1098)
: : : +- Join (1097)
: : : :- Project (1095)
: : : : +- Project (1094)
: : : : +- Project (1093)
: : : : +- Project (1092)
: : : : +- Project (1091)
: : : : +- Project (1090)
: : : : +- Join (1089)
: : : : :- Project (947)
: : : : : +- Project (946)
: : : : : +- Project (945)
: : : : : +- Project (944)
: : : : : +- Generate (943)
: : : : : +- Project (942)
: : : : : +- Generate (941)
: : : : : +- Project (940)
: : : : : +- Join (939)
: : : : : :- Project (936)
: : : : : : +- Join (935)
: : : : : : :- Project (930)
: : : : : : : +- RepartitionByExpression (929)
: : : : : : : +- LogicalRelation (928)
: : : : : : +- Project (934)
: : : : : : +- Project (933)
: : : : : : +- Repartition (932)
: : : : : : +- LogicalRelation (931)
: : : : : +- Repartition (938)
: : : : : +- LogicalRelation (937)
: : : : +- Project (1088)
: : : : +- Aggregate (1087)
: : : : +- Project (1086)
: : : : +- Join (1085)
: : : : :- Project (1015)
: : : : : +- Filter (1014)
: : : : : +- Join (1013)
: : : : : :- Filter (992)
: : : : : : +- Project (991)
: : : : : : +- Project (990)
: : : : : : +- Generate (989)
: : : : : : +- Project (988)
: : : : : : +- Aggregate (987)
: : : : : : +- Project (986)
: : : : : : +- Generate (985)
: : : : : : +- Join (984)
: : : : : : :- Repartition (949)
: : : : : : : +- LogicalRelation (948)
: : : : : : +- Project (983)
: : : : : : +- Join (982)
: : : : : : :- Project (959)
: : : : : : : +- Project (958)
: : : : : : : +- Generate (957)
: : : : : : : +- Project (956)
: : : : : : : +- Generate (955)
: : : : : : : +- Project (954)
: : : : : : : +- Project (953)
: : : : : : : +- Filter (952)
: : : : : : : +- Repartition (951)
: : : : : : : +- LogicalRelation (950)
: : : : : : +- Deduplicate (981)
: : : : : : +- Project (980)
: : : : : : +- Project (979)
: : : : : : +- Project (978)
: : : : : : +- Project (977)
: : : : : : +- Project (976)
: : : : : : +- Generate (975)
: : : : : : +- Project (974)
: : : : : : +- Generate (973)
: : : : : : +- Project (972)
: : : : : : +- Join (971)
: : : : : : :- Project (968)
: : : : : : : +- Join (967)
: : : : : : : :- Project (962)
: : : : : : : : +- RepartitionByExpression (961)
: : : : : : : : +- LogicalRelation (960)
: : : : : : : +- Project (966)
: : : : : : : +- Project (965)
: : : : : : : +- Repartition (964)
: : : : : : : +- LogicalRelation (963)
: : : : : : +- Repartition (970)
: : : : : : +- LogicalRelation (969)
: : : : : +- Project (1012)
: : : : : +- Project (1011)
: : : : : +- Project (1010)
: : : : : +- Project (1009)
: : : : : +- Generate (1008)
: : : : : +- Project (1007)
: : : : : +- Generate (1006)
: : : : : +- Project (1005)
: : : : : +- Join (1004)
: : : : : :- Project (1001)
: : : : : : +- Join (1000)
: : : : : : :- Project (995)
: : : : : : : +- RepartitionByExpression (994)
: : : : : : : +- LogicalRelation (993)
: : : : : : +- Project (999)
: : : : : : +- Project (998)
: : : : : : +- Repartition (997)
: : : : : : +- LogicalRelation (996)
: : : : : +- Repartition (1003)
: : : : : +- LogicalRelation (1002)
: : : : +- Aggregate (1084)
: : : : +- Project (1083)
: : : : +- Filter (1082)
: : : : +- Join (1081)
: : : : :- Filter (1060)
: : : : : +- Project (1059)
: : : : : +- Project (1058)
: : : : : +- Generate (1057)
: : : : : +- Project (1056)
: : : : : +- Aggregate (1055)
: : : : : +- Project (1054)
: : : : : +- Generate (1053)
: : : : : +- Join (1052)
: : : : : :- Repartition (1017)
: : : : : : +- LogicalRelation (1016)
: : : : : +- Project (1051)
: : : : : +- Join (1050)
: : : : : :- Project (1027)
: : : : : : +- Project (1026)
: : : : : : +- Generate (1025)
: : : : : : +- Project (1024)
: : : : : : +- Generate (1023)
: : : : : : +- Project (1022)
: : : : : : +- Project (1021)
: : : : : : +- Filter (1020)
: : : : : : +- Repartition (1019)
: : : : : : +- LogicalRelation (1018)
: : : : : +- Deduplicate (1049)
: : : : : +- Project (1048)
: : : : : +- Project (1047)
: : : : : +- Project (1046)
: : : : : +- Project (1045)
: : : : : +- Project (1044)
: : : : : +- Generate (1043)
: : : : : +- Project (1042)
: : : : : +- Generate (1041)
: : : : : +- Project (1040)
: : : : : +- Join (1039)
: : : : : :- Project (1036)
: : : : : : +- Join (1035)
: : : : : : :- Project (1030)
: : : : : : : +- RepartitionByExpression (1029)
: : : : : : : +- LogicalRelation (1028)
: : : : : : +- Project (1034)
: : : : : : +- Project (1033)
: : : : : : +- Repartition (1032)
: : : : : : +- LogicalRelation (1031)
: : : : : +- Repartition (1038)
: : : : : +- LogicalRelation (1037)
: : : : +- Project (1080)
: : : : +- Project (1079)
: : : : +- Project (1078)
: : : : +- Project (1077)
: : : : +- Generate (1076)
: : : : +- Project (1075)
: : : : +- Generate (1074)
: : : : +- Project (1073)
: : : : +- Join (1072)
: : : : :- Project (1069)
: : : : : +- Join (1068)
: : : : : :- Project (1063)
: : : : : : +- RepartitionByExpression (1062)
: : : : : : +- LogicalRelation (1061)
: : : : : +- Project (1067)
: : : : : +- Project (1066)
: : : : : +- Repartition (1065)
: : : : : +- LogicalRelation (1064)
: : : : +- Repartition (1071)
: : : : +- LogicalRelation (1070)
: : : +- LogicalRelation (1096)
: : +- Project (1103)
: : +- Repartition (1102)
: : +- LogicalRelation (1101)
: +- Project (1117)
: +- Filter (1116)
: +- Project (1115)
: +- Generate (1114)
: +- LocalRelation (1113)
+- SerializeFromObject (2263)
+- MapElements (2262)
+- DeserializeToObject (2261)
+- Project (2260)
+- Project (2259)
+- Project (2258)
+- Project (2257)
+- Project (2256)
+- Project (2255)
+- Project (2254)
+- Join (2253)
:- Project (1482)
: +- Project (1481)
: +- Join (1480)
: :- Project (1297)
: : +- Project (1296)
: : +- Project (1295)
: : +- Project (1294)
: : +- Project (1293)
: : +- Project (1292)
: : +- Join (1291)
: : :- Project (1149)
: : : +- Project (1148)
: : : +- Project (1147)
: : : +- Project (1146)
: : : +- Generate (1145)
: : : +- Project (1144)
: : : +- Generate (1143)
: : : +- Project (1142)
: : : +- Join (1141)
: : : :- Project (1138)
: : : : +- Join (1137)
: : : : :- Project (1132)
: : : : : +- RepartitionByExpression (1131)
: : : : : +- LogicalRelation (1130)
: : : : +- Project (1136)
: : : : +- Project (1135)
: : : : +- Repartition (1134)
: : : : +- LogicalRelation (1133)
: : : +- Repartition (1140)
: : : +- LogicalRelation (1139)
: : +- Project (1290)
: : +- Aggregate (1289)
: : +- Project (1288)
: : +- Join (1287)
: : :- Project (1217)
: : : +- Filter (1216)
: : : +- Join (1215)
: : : :- Filter (1194)
: : : : +- Project (1193)
: : : : +- Project (1192)
: : : : +- Generate (1191)
: : : : +- Project (1190)
: : : : +- Aggregate (1189)
: : : : +- Project (1188)
: : : : +- Generate (1187)
: : : : +- Join (1186)
: : : : :- Repartition (1151)
: : : : : +- LogicalRelation (1150)
: : : : +- Project (1185)
: : : : +- Join (1184)
: : : : :- Project (1161)
: : : : : +- Project (1160)
: : : : : +- Generate (1159)
: : : : : +- Project (1158)
: : : : : +- Generate (1157)
: : : : : +- Project (1156)
: : : : : +- Project (1155)
: : : : : +- Filter (1154)
: : : : : +- Repartition (1153)
: : : : : +- LogicalRelation (1152)
: : : : +- Deduplicate (1183)
: : : : +- Project (1182)
: : : : +- Project (1181)
: : : : +- Project (1180)
: : : : +- Project (1179)
: : : : +- Project (1178)
: : : : +- Generate (1177)
: : : : +- Project (1176)
: : : : +- Generate (1175)
: : : : +- Project (1174)
: : : : +- Join (1173)
: : : : :- Project (1170)
: : : : : +- Join (1169)
: : : : : :- Project (1164)
: : : : : : +- RepartitionByExpression (1163)
: : : : : : +- LogicalRelation (1162)
: : : : : +- Project (1168)
: : : : : +- Project (1167)
: : : : : +- Repartition (1166)
: : : : : +- LogicalRelation (1165)
: : : : +- Repartition (1172)
: : : : +- LogicalRelation (1171)
: : : +- Project (1214)
: : : +- Project (1213)
: : : +- Project (1212)
: : : +- Project (1211)
: : : +- Generate (1210)
: : : +- Project (1209)
: : : +- Generate (1208)
: : : +- Project (1207)
: : : +- Join (1206)
: : : :- Project (1203)
: : : : +- Join (1202)
: : : : :- Project (1197)
: : : : : +- RepartitionByExpression (1196)
: : : : : +- LogicalRelation (1195)
: : : : +- Project (1201)
: : : : +- Project (1200)
: : : : +- Repartition (1199)
: : : : +- LogicalRelation (1198)
: : : +- Repartition (1205)
: : : +- LogicalRelation (1204)
: : +- Aggregate (1286)
: : +- Project (1285)
: : +- Filter (1284)
: : +- Join (1283)
: : :- Filter (1262)
: : : +- Project (1261)
: : : +- Project (1260)
: : : +- Generate (1259)
: : : +- Project (1258)
: : : +- Aggregate (1257)
: : : +- Project (1256)
: : : +- Generate (1255)
: : : +- Join (1254)
: : : :- Repartition (1219)
: : : : +- LogicalRelation (1218)
: : : +- Project (1253)
: : : +- Join (1252)
: : : :- Project (1229)
: : : : +- Project (1228)
: : : : +- Generate (1227)
: : : : +- Project (1226)
: : : : +- Generate (1225)
: : : : +- Project (1224)
: : : : +- Project (1223)
: : : : +- Filter (1222)
: : : : +- Repartition (1221)
: : : : +- LogicalRelation (1220)
: : : +- Deduplicate (1251)
: : : +- Project (1250)
: : : +- Project (1249)
: : : +- Project (1248)
: : : +- Project (1247)
: : : +- Project (1246)
: : : +- Generate (1245)
: : : +- Project (1244)
: : : +- Generate (1243)
: : : +- Project (1242)
: : : +- Join (1241)
: : : :- Project (1238)
: : : : +- Join (1237)
: : : : :- Project (1232)
: : : : : +- RepartitionByExpression (1231)
: : : : : +- LogicalRelation (1230)
: : : : +- Project (1236)
: : : : +- Project (1235)
: : : : +- Repartition (1234)
: : : : +- LogicalRelation (1233)
: : : +- Repartition (1240)
: : : +- LogicalRelation (1239)
: : +- Project (1282)
: : +- Project (1281)
: : +- Project (1280)
: : +- Project (1279)
: : +- Generate (1278)
: : +- Project (1277)
: : +- Generate (1276)
: : +- Project (1275)
: : +- Join (1274)
: : :- Project (1271)
: : : +- Join (1270)
: : : :- Project (1265)
: : : : +- RepartitionByExpression (1264)
: : : : +- LogicalRelation (1263)
: : : +- Project (1269)
: : : +- Project (1268)
: : : +- Repartition (1267)
: : : +- LogicalRelation (1266)
: : +- Repartition (1273)
: : +- LogicalRelation (1272)
: +- SerializeFromObject (1479)
: +- MapElements (1478)
: +- DeserializeToObject (1477)
: +- Project (1476)
: +- Project (1475)
: +- Join (1474)
: :- SubqueryAlias (1470)
: : +- Aggregate (1469)
: : +- Project (1468)
: : +- Join (1467)
: : :- Project (1465)
: : : +- Project (1464)
: : : +- Project (1463)
: : : +- Project (1462)
: : : +- Project (1461)
: : : +- Project (1460)
: : : +- Join (1459)
: : : :- Project (1317)
: : : : +- Project (1316)
: : : : +- Project (1315)
: : : : +- Project (1314)
: : : : +- Generate (1313)
: : : : +- Project (1312)
: : : : +- Generate (1311)
: : : : +- Project (1310)
: : : : +- Join (1309)
: : : : :- Project (1306)
: : : : : +- Join (1305)
: : : : : :- Project (1300)
: : : : : : +- RepartitionByExpression (1299)
: : : : : : +- LogicalRelation (1298)
: : : : : +- Project (1304)
: : : : : +- Project (1303)
: : : : : +- Repartition (1302)
: : : : : +- LogicalRelation (1301)
: : : : +- Repartition (1308)
: : : : +- LogicalRelation (1307)
: : : +- Project (1458)
: : : +- Aggregate (1457)
: : : +- Project (1456)
: : : +- Join (1455)
: : : :- Project (1385)
: : : : +- Filter (1384)
: : : : +- Join (1383)
: : : : :- Filter (1362)
: : : : : +- Project (1361)
: : : : : +- Project (1360)
: : : : : +- Generate (1359)
: : : : : +- Project (1358)
: : : : : +- Aggregate (1357)
: : : : : +- Project (1356)
: : : : : +- Generate (1355)
: : : : : +- Join (1354)
: : : : : :- Repartition (1319)
: : : : : : +- LogicalRelation (1318)
: : : : : +- Project (1353)
: : : : : +- Join (1352)
: : : : : :- Project (1329)
: : : : : : +- Project (1328)
: : : : : : +- Generate (1327)
: : : : : : +- Project (1326)
: : : : : : +- Generate (1325)
: : : : : : +- Project (1324)
: : : : : : +- Project (1323)
: : : : : : +- Filter (1322)
: : : : : : +- Repartition (1321)
: : : : : : +- LogicalRelation (1320)
: : : : : +- Deduplicate (1351)
: : : : : +- Project (1350)
: : : : : +- Project (1349)
: : : : : +- Project (1348)
: : : : : +- Project (1347)
: : : : : +- Project (1346)
: : : : : +- Generate (1345)
: : : : : +- Project (1344)
: : : : : +- Generate (1343)
: : : : : +- Project (1342)
: : : : : +- Join (1341)
: : : : : :- Project (1338)
: : : : : : +- Join (1337)
: : : : : : :- Project (1332)
: : : : : : : +- RepartitionByExpression (1331)
: : : : : : : +- LogicalRelation (1330)
: : : : : : +- Project (1336)
: : : : : : +- Project (1335)
: : : : : : +- Repartition (1334)
: : : : : : +- LogicalRelation (1333)
: : : : : +- Repartition (1340)
: : : : : +- LogicalRelation (1339)
: : : : +- Project (1382)
: : : : +- Project (1381)
: : : : +- Project (1380)
: : : : +- Project (1379)
: : : : +- Generate (1378)
: : : : +- Project (1377)
: : : : +- Generate (1376)
: : : : +- Project (1375)
: : : : +- Join (1374)
: : : : :- Project (1371)
: : : : : +- Join (1370)
: : : : : :- Project (1365)
: : : : : : +- RepartitionByExpression (1364)
: : : : : : +- LogicalRelation (1363)
: : : : : +- Project (1369)
: : : : : +- Project (1368)
: : : : : +- Repartition (1367)
: : : : : +- LogicalRelation (1366)
: : : : +- Repartition (1373)
: : : : +- LogicalRelation (1372)
: : : +- Aggregate (1454)
: : : +- Project (1453)
: : : +- Filter (1452)
: : : +- Join (1451)
: : : :- Filter (1430)
: : : : +- Project (1429)
: : : : +- Project (1428)
: : : : +- Generate (1427)
: : : : +- Project (1426)
: : : : +- Aggregate (1425)
: : : : +- Project (1424)
: : : : +- Generate (1423)
: : : : +- Join (1422)
: : : : :- Repartition (1387)
: : : : : +- LogicalRelation (1386)
: : : : +- Project (1421)
: : : : +- Join (1420)
: : : : :- Project (1397)
: : : : : +- Project (1396)
: : : : : +- Generate (1395)
: : : : : +- Project (1394)
: : : : : +- Generate (1393)
: : : : : +- Project (1392)
: : : : : +- Project (1391)
: : : : : +- Filter (1390)
: : : : : +- Repartition (1389)
: : : : : +- LogicalRelation (1388)
: : : : +- Deduplicate (1419)
: : : : +- Project (1418)
: : : : +- Project (1417)
: : : : +- Project (1416)
: : : : +- Project (1415)
: : : : +- Project (1414)
: : : : +- Generate (1413)
: : : : +- Project (1412)
: : : : +- Generate (1411)
: : : : +- Project (1410)
: : : : +- Join (1409)
: : : : :- Project (1406)
: : : : : +- Join (1405)
: : : : : :- Project (1400)
: : : : : : +- RepartitionByExpression (1399)
: : : : : : +- LogicalRelation (1398)
: : : : : +- Project (1404)
: : : : : +- Project (1403)
: : : : : +- Repartition (1402)
: : : : : +- LogicalRelation (1401)
: : : : +- Repartition (1408)
: : : : +- LogicalRelation (1407)
: : : +- Project (1450)
: : : +- Project (1449)
: : : +- Project (1448)
: : : +- Project (1447)
: : : +- Generate (1446)
: : : +- Project (1445)
: : : +- Generate (1444)
: : : +- Project (1443)
: : : +- Join (1442)
: : : :- Project (1439)
: : : : +- Join (1438)
: : : : :- Project (1433)
: : : : : +- RepartitionByExpression (1432)
: : : : : +- LogicalRelation (1431)
: : : : +- Project (1437)
: : : : +- Project (1436)
: : : : +- Repartition (1435)
: : : : +- LogicalRelation (1434)
: : : +- Repartition (1441)
: : : +- LogicalRelation (1440)
: : +- LogicalRelation (1466)
: +- Project (1473)
: +- Repartition (1472)
: +- LogicalRelation (1471)
+- Aggregate (2252)
+- Union (2251)
:- Filter (1886)
: +- Aggregate (1885)
: +- Project (1884)
: +- Project (1883)
: +- Window (1882)
: +- Project (1881)
: +- Project (1880)
: +- Project (1879)
: +- Join (1878)
: :- Project (1872)
: : +- Join (1871)
: : :- Project (1835)
: : : +- Project (1834)
: : : +- Join (1833)
: : : :- Project (1650)
: : : : +- Project (1649)
: : : : +- Project (1648)
: : : : +- Project (1647)
: : : : +- Project (1646)
: : : : +- Project (1645)
: : : : +- Join (1644)
: : : : :- Project (1502)
: : : : : +- Project (1501)
: : : : : +- Project (1500)
: : : : : +- Project (1499)
: : : : : +- Generate (1498)
: : : : : +- Project (1497)
: : : : : +- Generate (1496)
: : : : : +- Project (1495)
: : : : : +- Join (1494)
: : : : : :- Project (1491)
: : : : : : +- Join (1490)
: : : : : : :- Project (1485)
: : : : : : : +- RepartitionByExpression (1484)
: : : : : : : +- LogicalRelation (1483)
: : : : : : +- Project (1489)
: : : : : : +- Project (1488)
: : : : : : +- Repartition (1487)
: : : : : : +- LogicalRelation (1486)
: : : : : +- Repartition (1493)
: : : : : +- LogicalRelation (1492)
: : : : +- Project (1643)
: : : : +- Aggregate (1642)
: : : : +- Project (1641)
: : : : +- Join (1640)
: : : : :- Project (1570)
: : : : : +- Filter (1569)
: : : : : +- Join (1568)
: : : : : :- Filter (1547)
: : : : : : +- Project (1546)
: : : : : : +- Project (1545)
: : : : : : +- Generate (1544)
: : : : : : +- Project (1543)
: : : : : : +- Aggregate (1542)
: : : : : : +- Project (1541)
: : : : : : +- Generate (1540)
: : : : : : +- Join (1539)
: : : : : : :- Repartition (1504)
: : : : : : : +- LogicalRelation (1503)
: : : : : : +- Project (1538)
: : : : : : +- Join (1537)
: : : : : : :- Project (1514)
: : : : : : : +- Project (1513)
: : : : : : : +- Generate (1512)
: : : : : : : +- Project (1511)
: : : : : : : +- Generate (1510)
: : : : : : : +- Project (1509)
: : : : : : : +- Project (1508)
: : : : : : : +- Filter (1507)
: : : : : : : +- Repartition (1506)
: : : : : : : +- LogicalRelation (1505)
: : : : : : +- Deduplicate (1536)
: : : : : : +- Project (1535)
: : : : : : +- Project (1534)
: : : : : : +- Project (1533)
: : : : : : +- Project (1532)
: : : : : : +- Project (1531)
: : : : : : +- Generate (1530)
: : : : : : +- Project (1529)
: : : : : : +- Generate (1528)
: : : : : : +- Project (1527)
: : : : : : +- Join (1526)
: : : : : : :- Project (1523)
: : : : : : : +- Join (1522)
: : : : : : : :- Project (1517)
: : : : : : : : +- RepartitionByExpression (1516)
: : : : : : : : +- LogicalRelation (1515)
: : : : : : : +- Project (1521)
: : : : : : : +- Project (1520)
: : : : : : : +- Repartition (1519)
: : : : : : : +- LogicalRelation (1518)
: : : : : : +- Repartition (1525)
: : : : : : +- LogicalRelation (1524)
: : : : : +- Project (1567)
: : : : : +- Project (1566)
: : : : : +- Project (1565)
: : : : : +- Project (1564)
: : : : : +- Generate (1563)
: : : : : +- Project (1562)
: : : : : +- Generate (1561)
: : : : : +- Project (1560)
: : : : : +- Join (1559)
: : : : : :- Project (1556)
: : : : : : +- Join (1555)
: : : : : : :- Project (1550)
: : : : : : : +- RepartitionByExpression (1549)
: : : : : : : +- LogicalRelation (1548)
: : : : : : +- Project (1554)
: : : : : : +- Project (1553)
: : : : : : +- Repartition (1552)
: : : : : : +- LogicalRelation (1551)
: : : : : +- Repartition (1558)
: : : : : +- LogicalRelation (1557)
: : : : +- Aggregate (1639)
: : : : +- Project (1638)
: : : : +- Filter (1637)
: : : : +- Join (1636)
: : : : :- Filter (1615)
: : : : : +- Project (1614)
: : : : : +- Project (1613)
: : : : : +- Generate (1612)
: : : : : +- Project (1611)
: : : : : +- Aggregate (1610)
: : : : : +- Project (1609)
: : : : : +- Generate (1608)
: : : : : +- Join (1607)
: : : : : :- Repartition (1572)
: : : : : : +- LogicalRelation (1571)
: : : : : +- Project (1606)
: : : : : +- Join (1605)
: : : : : :- Project (1582)
: : : : : : +- Project (1581)
: : : : : : +- Generate (1580)
: : : : : : +- Project (1579)
: : : : : : +- Generate (1578)
: : : : : : +- Project (1577)
: : : : : : +- Project (1576)
: : : : : : +- Filter (1575)
: : : : : : +- Repartition (1574)
: : : : : : +- LogicalRelation (1573)
: : : : : +- Deduplicate (1604)
: : : : : +- Project (1603)
: : : : : +- Project (1602)
: : : : : +- Project (1601)
: : : : : +- Project (1600)
: : : : : +- Project (1599)
: : : : : +- Generate (1598)
: : : : : +- Project (1597)
: : : : : +- Generate (1596)
: : : : : +- Project (1595)
: : : : : +- Join (1594)
: : : : : :- Project (1591)
: : : : : : +- Join (1590)
: : : : : : :- Project (1585)
: : : : : : : +- RepartitionByExpression (1584)
: : : : : : : +- LogicalRelation (1583)
: : : : : : +- Project (1589)
: : : : : : +- Project (1588)
: : : : : : +- Repartition (1587)
: : : : : : +- LogicalRelation (1586)
: : : : : +- Repartition (1593)
: : : : : +- LogicalRelation (1592)
: : : : +- Project (1635)
: : : : +- Project (1634)
: : : : +- Project (1633)
: : : : +- Project (1632)
: : : : +- Generate (1631)
: : : : +- Project (1630)
: : : : +- Generate (1629)
: : : : +- Project (1628)
: : : : +- Join (1627)
: : : : :- Project (1624)
: : : : : +- Join (1623)
: : : : : :- Project (1618)
: : : : : : +- RepartitionByExpression (1617)
: : : : : : +- LogicalRelation (1616)
: : : : : +- Project (1622)
: : : : : +- Project (1621)
: : : : : +- Repartition (1620)
: : : : : +- LogicalRelation (1619)
: : : : +- Repartition (1626)
: : : : +- LogicalRelation (1625)
: : : +- SerializeFromObject (1832)
: : : +- MapElements (1831)
: : : +- DeserializeToObject (1830)
: : : +- Project (1829)
: : : +- Project (1828)
: : : +- Join (1827)
: : : :- SubqueryAlias (1823)
: : : : +- Aggregate (1822)
: : : : +- Project (1821)
: : : : +- Join (1820)
: : : : :- Project (1818)
: : : : : +- Project (1817)
: : : : : +- Project (1816)
: : : : : +- Project (1815)
: : : : : +- Project (1814)
: : : : : +- Project (1813)
: : : : : +- Join (1812)
: : : : : :- Project (1670)
: : : : : : +- Project (1669)
: : : : : : +- Project (1668)
: : : : : : +- Project (1667)
: : : : : : +- Generate (1666)
: : : : : : +- Project (1665)
: : : : : : +- Generate (1664)
: : : : : : +- Project (1663)
: : : : : : +- Join (1662)
: : : : : : :- Project (1659)
: : : : : : : +- Join (1658)
: : : : : : : :- Project (1653)
: : : : : : : : +- RepartitionByExpression (1652)
: : : : : : : : +- LogicalRelation (1651)
: : : : : : : +- Project (1657)
: : : : : : : +- Project (1656)
: : : : : : : +- Repartition (1655)
: : : : : : : +- LogicalRelation (1654)
: : : : : : +- Repartition (1661)
: : : : : : +- LogicalRelation (1660)
: : : : : +- Project (1811)
: : : : : +- Aggregate (1810)
: : : : : +- Project (1809)
: : : : : +- Join (1808)
: : : : : :- Project (1738)
: : : : : : +- Filter (1737)
: : : : : : +- Join (1736)
: : : : : : :- Filter (1715)
: : : : : : : +- Project (1714)
: : : : : : : +- Project (1713)
: : : : : : : +- Generate (1712)
: : : : : : : +- Project (1711)
: : : : : : : +- Aggregate (1710)
: : : : : : : +- Project (1709)
: : : : : : : +- Generate (1708)
: : : : : : : +- Join (1707)
: : : : : : : :- Repartition (1672)
: : : : : : : : +- LogicalRelation (1671)
: : : : : : : +- Project (1706)
: : : : : : : +- Join (1705)
: : : : : : : :- Project (1682)
: : : : : : : : +- Project (1681)
: : : : : : : : +- Generate (1680)
: : : : : : : : +- Project (1679)
: : : : : : : : +- Generate (1678)
: : : : : : : : +- Project (1677)
: : : : : : : : +- Project (1676)
: : : : : : : : +- Filter (1675)
: : : : : : : : +- Repartition (1674)
: : : : : : : : +- LogicalRelation (1673)
: : : : : : : +- Deduplicate (1704)
: : : : : : : +- Project (1703)
: : : : : : : +- Project (1702)
: : : : : : : +- Project (1701)
: : : : : : : +- Project (1700)
: : : : : : : +- Project (1699)
: : : : : : : +- Generate (1698)
: : : : : : : +- Project (1697)
: : : : : : : +- Generate (1696)
: : : : : : : +- Project (1695)
: : : : : : : +- Join (1694)
: : : : : : : :- Project (1691)
: : : : : : : : +- Join (1690)
: : : : : : : : :- Project (1685)
: : : : : : : : : +- RepartitionByExpression (1684)
: : : : : : : : : +- LogicalRelation (1683)
: : : : : : : : +- Project (1689)
: : : : : : : : +- Project (1688)
: : : : : : : : +- Repartition (1687)
: : : : : : : : +- LogicalRelation (1686)
: : : : : : : +- Repartition (1693)
: : : : : : : +- LogicalRelation (1692)
: : : : : : +- Project (1735)
: : : : : : +- Project (1734)
: : : : : : +- Project (1733)
: : : : : : +- Project (1732)
: : : : : : +- Generate (1731)
: : : : : : +- Project (1730)
: : : : : : +- Generate (1729)
: : : : : : +- Project (1728)
: : : : : : +- Join (1727)
: : : : : : :- Project (1724)
: : : : : : : +- Join (1723)
: : : : : : : :- Project (1718)
: : : : : : : : +- RepartitionByExpression (1717)
: : : : : : : : +- LogicalRelation (1716)
: : : : : : : +- Project (1722)
: : : : : : : +- Project (1721)
: : : : : : : +- Repartition (1720)
: : : : : : : +- LogicalRelation (1719)
: : : : : : +- Repartition (1726)
: : : : : : +- LogicalRelation (1725)
: : : : : +- Aggregate (1807)
: : : : : +- Project (1806)
: : : : : +- Filter (1805)
: : : : : +- Join (1804)
: : : : : :- Filter (1783)
: : : : : : +- Project (1782)
: : : : : : +- Project (1781)
: : : : : : +- Generate (1780)
: : : : : : +- Project (1779)
: : : : : : +- Aggregate (1778)
: : : : : : +- Project (1777)
: : : : : : +- Generate (1776)
: : : : : : +- Join (1775)
: : : : : : :- Repartition (1740)
: : : : : : : +- LogicalRelation (1739)
: : : : : : +- Project (1774)
: : : : : : +- Join (1773)
: : : : : : :- Project (1750)
: : : : : : : +- Project (1749)
: : : : : : : +- Generate (1748)
: : : : : : : +- Project (1747)
: : : : : : : +- Generate (1746)
: : : : : : : +- Project (1745)
: : : : : : : +- Project (1744)
: : : : : : : +- Filter (1743)
: : : : : : : +- Repartition (1742)
: : : : : : : +- LogicalRelation (1741)
: : : : : : +- Deduplicate (1772)
: : : : : : +- Project (1771)
: : : : : : +- Project (1770)
: : : : : : +- Project (1769)
: : : : : : +- Project (1768)
: : : : : : +- Project (1767)
: : : : : : +- Generate (1766)
: : : : : : +- Project (1765)
: : : : : : +- Generate (1764)
: : : : : : +- Project (1763)
: : : : : : +- Join (1762)
: : : : : : :- Project (1759)
: : : : : : : +- Join (1758)
: : : : : : : :- Project (1753)
: : : : : : : : +- RepartitionByExpression (1752)
: : : : : : : : +- LogicalRelation (1751)
: : : : : : : +- Project (1757)
: : : : : : : +- Project (1756)
: : : : : : : +- Repartition (1755)
: : : : : : : +- LogicalRelation (1754)
: : : : : : +- Repartition (1761)
: : : : : : +- LogicalRelation (1760)
: : : : : +- Project (1803)
: : : : : +- Project (1802)
: : : : : +- Project (1801)
: : : : : +- Project (1800)
: : : : : +- Generate (1799)
: : : : : +- Project (1798)
: : : : : +- Generate (1797)
: : : : : +- Project (1796)
: : : : : +- Join (1795)
: : : : : :- Project (1792)
: : : : : : +- Join (1791)
: : : : : : :- Project (1786)
: : : : : : : +- RepartitionByExpression (1785)
: : : : : : : +- LogicalRelation (1784)
: : : : : : +- Project (1790)
: : : : : : +- Project (1789)
: : : : : : +- Repartition (1788)
: : : : : : +- LogicalRelation (1787)
: : : : : +- Repartition (1794)
: : : : : +- LogicalRelation (1793)
: : : : +- LogicalRelation (1819)
: : : +- Project (1826)
: : : +- Repartition (1825)
: : : +- LogicalRelation (1824)
: : +- Project (1870)
: : +- Project (1869)
: : +- Join (1868)
: : :- Project (1845)
: : : +- Project (1844)
: : : +- Generate (1843)
: : : +- Project (1842)
: : : +- Generate (1841)
: : : +- Project (1840)
: : : +- Project (1839)
: : : +- Filter (1838)
: : : +- Repartition (1837)
: : : +- LogicalRelation (1836)
: : +- Deduplicate (1867)
: : +- Project (1866)
: : +- Project (1865)
: : +- Project (1864)
: : +- Project (1863)
: : +- Project (1862)
: : +- Generate (1861)
: : +- Project (1860)
: : +- Generate (1859)
: : +- Project (1858)
: : +- Join (1857)
: : :- Project (1854)
: : : +- Join (1853)
: : : :- Project (1848)
: : : : +- RepartitionByExpression (1847)
: : : : +- LogicalRelation (1846)
: : : +- Project (1852)
: : : +- Project (1851)
: : : +- Repartition (1850)
: : : +- LogicalRelation (1849)
: : +- Repartition (1856)
: : +- LogicalRelation (1855)
: +- Project (1877)
: +- Filter (1876)
: +- Project (1875)
: +- Generate (1874)
: +- LocalRelation (1873)
+- Filter (2250)
+- Aggregate (2249)
+- Project (2248)
+- Project (2247)
+- Project (2246)
+- Join (2245)
:- Project (2239)
: +- Project (2238)
: +- Join (2237)
: :- Project (2054)
: : +- Project (2053)
: : +- Project (2052)
: : +- Project (2051)
: : +- Project (2050)
: : +- Project (2049)
: : +- Join (2048)
: : :- Project (1906)
: : : +- Project (1905)
: : : +- Project (1904)
: : : +- Project (1903)
: : : +- Generate (1902)
: : : +- Project (1901)
: : : +- Generate (1900)
: : : +- Project (1899)
: : : +- Join (1898)
: : : :- Project (1895)
: : : : +- Join (1894)
: : : : :- Project (1889)
: : : : : +- RepartitionByExpression (1888)
: : : : : +- LogicalRelation (1887)
: : : : +- Project (1893)
: : : : +- Project (1892)
: : : : +- Repartition (1891)
: : : : +- LogicalRelation (1890)
: : : +- Repartition (1897)
: : : +- LogicalRelation (1896)
: : +- Project (2047)
: : +- Aggregate (2046)
: : +- Project (2045)
: : +- Join (2044)
: : :- Project (1974)
: : : +- Filter (1973)
: : : +- Join (1972)
: : : :- Filter (1951)
: : : : +- Project (1950)
: : : : +- Project (1949)
: : : : +- Generate (1948)
: : : : +- Project (1947)
: : : : +- Aggregate (1946)
: : : : +- Project (1945)
: : : : +- Generate (1944)
: : : : +- Join (1943)
: : : : :- Repartition (1908)
: : : : : +- LogicalRelation (1907)
: : : : +- Project (1942)
: : : : +- Join (1941)
: : : : :- Project (1918)
: : : : : +- Project (1917)
: : : : : +- Generate (1916)
: : : : : +- Project (1915)
: : : : : +- Generate (1914)
: : : : : +- Project (1913)
: : : : : +- Project (1912)
: : : : : +- Filter (1911)
: : : : : +- Repartition (1910)
: : : : : +- LogicalRelation (1909)
: : : : +- Deduplicate (1940)
: : : : +- Project (1939)
: : : : +- Project (1938)
: : : : +- Project (1937)
: : : : +- Project (1936)
: : : : +- Project (1935)
: : : : +- Generate (1934)
: : : : +- Project (1933)
: : : : +- Generate (1932)
: : : : +- Project (1931)
: : : : +- Join (1930)
: : : : :- Project (1927)
: : : : : +- Join (1926)
: : : : : :- Project (1921)
: : : : : : +- RepartitionByExpression (1920)
: : : : : : +- LogicalRelation (1919)
: : : : : +- Project (1925)
: : : : : +- Project (1924)
: : : : : +- Repartition (1923)
: : : : : +- LogicalRelation (1922)
: : : : +- Repartition (1929)
: : : : +- LogicalRelation (1928)
: : : +- Project (1971)
: : : +- Project (1970)
: : : +- Project (1969)
: : : +- Project (1968)
: : : +- Generate (1967)
: : : +- Project (1966)
: : : +- Generate (1965)
: : : +- Project (1964)
: : : +- Join (1963)
: : : :- Project (1960)
: : : : +- Join (1959)
: : : : :- Project (1954)
: : : : : +- RepartitionByExpression (1953)
: : : : : +- LogicalRelation (1952)
: : : : +- Project (1958)
: : : : +- Project (1957)
: : : : +- Repartition (1956)
: : : : +- LogicalRelation (1955)
: : : +- Repartition (1962)
: : : +- LogicalRelation (1961)
: : +- Aggregate (2043)
: : +- Project (2042)
: : +- Filter (2041)
: : +- Join (2040)
: : :- Filter (2019)
: : : +- Project (2018)
: : : +- Project (2017)
: : : +- Generate (2016)
: : : +- Project (2015)
: : : +- Aggregate (2014)
: : : +- Project (2013)
: : : +- Generate (2012)
: : : +- Join (2011)
: : : :- Repartition (1976)
: : : : +- LogicalRelation (1975)
: : : +- Project (2010)
: : : +- Join (2009)
: : : :- Project (1986)
: : : : +- Project (1985)
: : : : +- Generate (1984)
: : : : +- Project (1983)
: : : : +- Generate (1982)
: : : : +- Project (1981)
: : : : +- Project (1980)
: : : : +- Filter (1979)
: : : : +- Repartition (1978)
: : : : +- LogicalRelation (1977)
: : : +- Deduplicate (2008)
: : : +- Project (2007)
: : : +- Project (2006)
: : : +- Project (2005)
: : : +- Project (2004)
: : : +- Project (2003)
: : : +- Generate (2002)
: : : +- Project (2001)
: : : +- Generate (2000)
: : : +- Project (1999)
: : : +- Join (1998)
: : : :- Project (1995)
: : : : +- Join (1994)
: : : : :- Project (1989)
: : : : : +- RepartitionByExpression (1988)
: : : : : +- LogicalRelation (1987)
: : : : +- Project (1993)
: : : : +- Project (1992)
: : : : +- Repartition (1991)
: : : : +- LogicalRelation (1990)
: : : +- Repartition (1997)
: : : +- LogicalRelation (1996)
: : +- Project (2039)
: : +- Project (2038)
: : +- Project (2037)
: : +- Project (2036)
: : +- Generate (2035)
: : +- Project (2034)
: : +- Generate (2033)
: : +- Project (2032)
: : +- Join (2031)
: : :- Project (2028)
: : : +- Join (2027)
: : : :- Project (2022)
: : : : +- RepartitionByExpression (2021)
: : : : +- LogicalRelation (2020)
: : : +- Project (2026)
: : : +- Project (2025)
: : : +- Repartition (2024)
: : : +- LogicalRelation (2023)
: : +- Repartition (2030)
: : +- LogicalRelation (2029)
: +- SerializeFromObject (2236)
: +- MapElements (2235)
: +- DeserializeToObject (2234)
: +- Project (2233)
: +- Project (2232)
: +- Join (2231)
: :- SubqueryAlias (2227)
: : +- Aggregate (2226)
: : +- Project (2225)
: : +- Join (2224)
: : :- Project (2222)
: : : +- Project (2221)
: : : +- Project (2220)
: : : +- Project (2219)
: : : +- Project (2218)
: : : +- Project (2217)
: : : +- Join (2216)
: : : :- Project (2074)
: : : : +- Project (2073)
: : : : +- Project (2072)
: : : : +- Project (2071)
: : : : +- Generate (2070)
: : : : +- Project (2069)
: : : : +- Generate (2068)
: : : : +- Project (2067)
: : : : +- Join (2066)
: : : : :- Project (2063)
: : : : : +- Join (2062)
: : : : : :- Project (2057)
: : : : : : +- RepartitionByExpression (2056)
: : : : : : +- LogicalRelation (2055)
: : : : : +- Project (2061)
: : : : : +- Project (2060)
: : : : : +- Repartition (2059)
: : : : : +- LogicalRelation (2058)
: : : : +- Repartition (2065)
: : : : +- LogicalRelation (2064)
: : : +- Project (2215)
: : : +- Aggregate (2214)
: : : +- Project (2213)
: : : +- Join (2212)
: : : :- Project (2142)
: : : : +- Filter (2141)
: : : : +- Join (2140)
: : : : :- Filter (2119)
: : : : : +- Project (2118)
: : : : : +- Project (2117)
: : : : : +- Generate (2116)
: : : : : +- Project (2115)
: : : : : +- Aggregate (2114)
: : : : : +- Project (2113)
: : : : : +- Generate (2112)
: : : : : +- Join (2111)
: : : : : :- Repartition (2076)
: : : : : : +- LogicalRelation (2075)
: : : : : +- Project (2110)
: : : : : +- Join (2109)
: : : : : :- Project (2086)
: : : : : : +- Project (2085)
: : : : : : +- Generate (2084)
: : : : : : +- Project (2083)
: : : : : : +- Generate (2082)
: : : : : : +- Project (2081)
: : : : : : +- Project (2080)
: : : : : : +- Filter (2079)
: : : : : : +- Repartition (2078)
: : : : : : +- LogicalRelation (2077)
: : : : : +- Deduplicate (2108)
: : : : : +- Project (2107)
: : : : : +- Project (2106)
: : : : : +- Project (2105)
: : : : : +- Project (2104)
: : : : : +- Project (2103)
: : : : : +- Generate (2102)
: : : : : +- Project (2101)
: : : : : +- Generate (2100)
: : : : : +- Project (2099)
: : : : : +- Join (2098)
: : : : : :- Project (2095)
: : : : : : +- Join (2094)
: : : : : : :- Project (2089)
: : : : : : : +- RepartitionByExpression (2088)
: : : : : : : +- LogicalRelation (2087)
: : : : : : +- Project (2093)
: : : : : : +- Project (2092)
: : : : : : +- Repartition (2091)
: : : : : : +- LogicalRelation (2090)
: : : : : +- Repartition (2097)
: : : : : +- LogicalRelation (2096)
: : : : +- Project (2139)
: : : : +- Project (2138)
: : : : +- Project (2137)
: : : : +- Project (2136)
: : : : +- Generate (2135)
: : : : +- Project (2134)
: : : : +- Generate (2133)
: : : : +- Project (2132)
: : : : +- Join (2131)
: : : : :- Project (2128)
: : : : : +- Join (2127)
: : : : : :- Project (2122)
: : : : : : +- RepartitionByExpression (2121)
: : : : : : +- LogicalRelation (2120)
: : : : : +- Project (2126)
: : : : : +- Project (2125)
: : : : : +- Repartition (2124)
: : : : : +- LogicalRelation (2123)
: : : : +- Repartition (2130)
: : : : +- LogicalRelation (2129)
: : : +- Aggregate (2211)
: : : +- Project (2210)
: : : +- Filter (2209)
: : : +- Join (2208)
: : : :- Filter (2187)
: : : : +- Project (2186)
: : : : +- Project (2185)
: : : : +- Generate (2184)
: : : : +- Project (2183)
: : : : +- Aggregate (2182)
: : : : +- Project (2181)
: : : : +- Generate (2180)
: : : : +- Join (2179)
: : : : :- Repartition (2144)
: : : : : +- LogicalRelation (2143)
: : : : +- Project (2178)
: : : : +- Join (2177)
: : : : :- Project (2154)
: : : : : +- Project (2153)
: : : : : +- Generate (2152)
: : : : : +- Project (2151)
: : : : : +- Generate (2150)
: : : : : +- Project (2149)
: : : : : +- Project (2148)
: : : : : +- Filter (2147)
: : : : : +- Repartition (2146)
: : : : : +- LogicalRelation (2145)
: : : : +- Deduplicate (2176)
: : : : +- Project (2175)
: : : : +- Project (2174)
: : : : +- Project (2173)
: : : : +- Project (2172)
: : : : +- Project (2171)
: : : : +- Generate (2170)
: : : : +- Project (2169)
: : : : +- Generate (2168)
: : : : +- Project (2167)
: : : : +- Join (2166)
: : : : :- Project (2163)
: : : : : +- Join (2162)
: : : : : :- Project (2157)
: : : : : : +- RepartitionByExpression (2156)
: : : : : : +- LogicalRelation (2155)
: : : : : +- Project (2161)
: : : : : +- Project (2160)
: : : : : +- Repartition (2159)
: : : : : +- LogicalRelation (2158)
: : : : +- Repartition (2165)
: : : : +- LogicalRelation (2164)
: : : +- Project (2207)
: : : +- Project (2206)
: : : +- Project (2205)
: : : +- Project (2204)
: : : +- Generate (2203)
: : : +- Project (2202)
: : : +- Generate (2201)
: : : +- Project (2200)
: : : +- Join (2199)
: : : :- Project (2196)
: : : : +- Join (2195)
: : : : :- Project (2190)
: : : : : +- RepartitionByExpression (2189)
: : : : : +- LogicalRelation (2188)
: : : : +- Project (2194)
: : : : +- Project (2193)
: : : : +- Repartition (2192)
: : : : +- LogicalRelation (2191)
: : : +- Repartition (2198)
: : : +- LogicalRelation (2197)
: : +- LogicalRelation (2223)
: +- Project (2230)
: +- Repartition (2229)
: +- LogicalRelation (2228)
+- Project (2244)
+- Filter (2243)
+- Project (2242)
+- Generate (2241)
+- LocalRelation (2240)
(1) Execute SaveIntoDataSourceCommand
Output: []
(2) SaveIntoDataSourceCommand
Arguments: org.apache.spark.sql.delta.sources.DeltaDataSource@625abec4, [path=hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-quantity-kpi-service/internal/data-snapshot/10000000348/0_1_10000000348], Overwrite
(3) LogicalRelation
Arguments: parquet, [product#905388, plant#905389, orderDateTime#905390, planningStartDateTime#905391], false
(4) RepartitionByExpression
Arguments: [product#905388, plant#905389], 37
(5) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390]
(6) LogicalRelation
Arguments: parquet, [systemId#905415, internalUUID#905416, plant#905417, product#905418, blockedForReplenishmentStartingFrom#905419, productionAspect#905420, salesPlant#905421, listing#905422, sourceOfSupplyCategory#905423], false
(7) Repartition
Arguments: 37, true
(8) Project
Arguments: [systemId#905415, internalUUID#905416, plant#905417, product#905418, blockedForReplenishmentStartingFrom#905419, productionAspect#905420, salesPlant#905421, listing#905422, sourceOfSupplyCategory#905423, struct(systemId, systemId#905415, internalUUID, internalUUID#905416, plant, plant#905417, product, product#905418, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#905419, productionAspect, productionAspect#905420, salesPlant, salesPlant#905421, listing, listing#905422, sourceOfSupplyCategory, sourceOfSupplyCategory#905423) AS productPlant#905425]
(9) Project
Arguments: [productPlant#905425]
(10) Join
Arguments: LeftOuter, ((product#905388 <=> productPlant#905425.product.internalRefUUID) AND (plant#905389 <=> productPlant#905425.plant.internalRefUUID))
(11) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425]
(12) LogicalRelation
Arguments: parquet, [systemId#905450, internalUUID#905451, id#905452, displayId#905453, name#905454, baseUnitOfMeasure#905455, unitOfMeasures#905456, unitOfMeasureConversions#905457, productionAspect#905458, salesAspect#905459, procurementAspect#905460, productGroup#905461], false
(13) Repartition
Arguments: 37, true
(14) Join
Arguments: LeftOuter, (product#905388 = internalUUID#905451)
(15) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, systemId#905450, internalUUID#905451, id#905452, displayId#905453, name#905454, baseUnitOfMeasure#905455, unitOfMeasures#905456, unitOfMeasureConversions#905457, productionAspect#905458, salesAspect#905459, procurementAspect#905460, productGroup#905461, filter(unitOfMeasureConversions#905457, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#905425.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#905425.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905455.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905455.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905463]
(16) Generate
Arguments: explode(filteredUnitOfMeasureConversions#905463.quantityNumerator), true, [quantityNumerator#905471]
(17) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, systemId#905450, internalUUID#905451, id#905452, displayId#905453, name#905454, baseUnitOfMeasure#905455, unitOfMeasures#905456, unitOfMeasureConversions#905457, productionAspect#905458, salesAspect#905459, procurementAspect#905460, productGroup#905461, filteredUnitOfMeasureConversions#905463, quantityNumerator#905471]
(18) Generate
Arguments: explode(filteredUnitOfMeasureConversions#905463.quantityDenominator), true, [quantityDenominator#905474]
(19) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, systemId#905450, internalUUID#905451, id#905452, displayId#905453, name#905454, baseUnitOfMeasure#905455, unitOfMeasures#905456, unitOfMeasureConversions#905457, productionAspect#905458, salesAspect#905459, procurementAspect#905460, productGroup#905461, filteredUnitOfMeasureConversions#905463, quantityNumerator#905471, quantityDenominator#905474]
(20) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, systemId#905450, internalUUID#905451, id#905452, displayId#905453, name#905454, baseUnitOfMeasure#905455, unitOfMeasures#905456, unitOfMeasureConversions#905457, productionAspect#905458, salesAspect#905459, procurementAspect#905460, productGroup#905461, filteredUnitOfMeasureConversions#905463, quantityNumerator#905471, quantityDenominator#905474, (cast(quantityNumerator#905471 as double) / cast(quantityDenominator#905474 as double)) AS outboundUnit#905475]
(21) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, systemId#905450, internalUUID#905451, id#905452, displayId#905453, name#905454, baseUnitOfMeasure#905455, unitOfMeasures#905456, unitOfMeasureConversions#905457, productionAspect#905458, salesAspect#905459, procurementAspect#905460, productGroup#905461, filteredUnitOfMeasureConversions#905463, quantityNumerator#905471, quantityDenominator#905474, CASE WHEN (isnull(outboundUnit#905475) OR (outboundUnit#905475 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#905475 END AS outboundUnit#905476]
(22) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476]
(23) LogicalRelation
Arguments: parquet, [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590], false
(24) Repartition
Arguments: 37, true
(25) LogicalRelation
Arguments: parquet, [marketUnit#905528, description#905529, articleHierarchy#905530, defaultCurrency#905531, responsibilities#905532, replenishmentTypes#905533, distributionCenters#905534, assignedArticleHierarchyNodes#905535, minOrderQtySetting#905536, listingCheck#905537, odsSelection#905538, demandProfiles#905539, constraintProfiles#905540, optimizationProfiles#905541, orderGroupSplitProfiles#905542, supplierMinimumProfiles#905543, multipleRestrictionProfiles#905544, preferredUomSource#905545, handlingOfUnfulfilledDemands#905546, negligibleQuantitiesThreshold#905547, eventtype#905548], false
(26) Repartition
Arguments: 37, true
(27) Filter
Arguments: (marketUnit#905528 <=> AUTO_ALL_ProdLoc)
(28) Project
Arguments: [marketUnit#905528, description#905529, articleHierarchy#905530, defaultCurrency#905531, responsibilities#905532, replenishmentTypes#905533, distributionCenters#905534, assignedArticleHierarchyNodes#905535, minOrderQtySetting#905536, listingCheck#905537, odsSelection#905538, demandProfiles#905539, constraintProfiles#905540, optimizationProfiles#905541, orderGroupSplitProfiles#905542, supplierMinimumProfiles#905543, multipleRestrictionProfiles#905544, preferredUomSource#905545, handlingOfUnfulfilledDemands#905546, negligibleQuantitiesThreshold#905547, eventtype#905548]
(29) Project
Arguments: [distributionCenters#905534]
(30) Generate
Arguments: explode(distributionCenters#905534), false, [distributionCenters#905551]
(31) Project
Arguments: [distributionCenters#905551]
(32) Generate
Arguments: explode(distributionCenters#905551.storageLocations), false, [storageLocations#905558]
(33) Project
Arguments: [distributionCenters#905551.id AS plantId#905552, distributionCenters#905551.internalRefUUID AS plantUuid#905553, storageLocations#905558]
(34) Project
Arguments: [plantId#905552, plantUuid#905553, storageLocations#905558.id AS storageLocId#905559, storageLocations#905558.internalRefUUID AS storageLocUuid#905560]
(35) LogicalRelation
Arguments: parquet, [product#905802, plant#905803, orderDateTime#905804, planningStartDateTime#905805], false
(36) RepartitionByExpression
Arguments: [product#905802, plant#905803], 37
(37) Project
Arguments: [product#905802, plant#905803, orderDateTime#905804]
(38) LogicalRelation
Arguments: parquet, [systemId#905806, internalUUID#905807, plant#905808, product#905809, blockedForReplenishmentStartingFrom#905810, productionAspect#905811, salesPlant#905812, listing#905813, sourceOfSupplyCategory#905814], false
(39) Repartition
Arguments: 37, true
(40) Project
Arguments: [systemId#905806, internalUUID#905807, plant#905808, product#905809, blockedForReplenishmentStartingFrom#905810, productionAspect#905811, salesPlant#905812, listing#905813, sourceOfSupplyCategory#905814, struct(systemId, systemId#905806, internalUUID, internalUUID#905807, plant, plant#905808, product, product#905809, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#905810, productionAspect, productionAspect#905811, salesPlant, salesPlant#905812, listing, listing#905813, sourceOfSupplyCategory, sourceOfSupplyCategory#905814) AS productPlant#905815]
(41) Project
Arguments: [productPlant#905815]
(42) Join
Arguments: LeftOuter, ((product#905802 <=> productPlant#905815.product.internalRefUUID) AND (plant#905803 <=> productPlant#905815.plant.internalRefUUID))
(43) Project
Arguments: [product#905802, plant#905803, orderDateTime#905804, productPlant#905815]
(44) LogicalRelation
Arguments: parquet, [systemId#905816, internalUUID#905817, id#905818, displayId#905819, name#905820, baseUnitOfMeasure#905821, unitOfMeasures#905822, unitOfMeasureConversions#905823, productionAspect#905824, salesAspect#905825, procurementAspect#905826, productGroup#905827], false
(45) Repartition
Arguments: 37, true
(46) Join
Arguments: LeftOuter, (product#905802 = internalUUID#905817)
(47) Project
Arguments: [product#905802, plant#905803, orderDateTime#905804, productPlant#905815, systemId#905816, internalUUID#905817, id#905818, displayId#905819, name#905820, baseUnitOfMeasure#905821, unitOfMeasures#905822, unitOfMeasureConversions#905823, productionAspect#905824, salesAspect#905825, procurementAspect#905826, productGroup#905827, filter(unitOfMeasureConversions#905823, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#905815.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#905815.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905821.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905821.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905828]
(48) Generate
Arguments: explode(filteredUnitOfMeasureConversions#905828.quantityNumerator), true, [quantityNumerator#905829]
(49) Project
Arguments: [product#905802, plant#905803, orderDateTime#905804, productPlant#905815, systemId#905816, internalUUID#905817, id#905818, displayId#905819, name#905820, baseUnitOfMeasure#905821, unitOfMeasures#905822, unitOfMeasureConversions#905823, productionAspect#905824, salesAspect#905825, procurementAspect#905826, productGroup#905827, filteredUnitOfMeasureConversions#905828, quantityNumerator#905829]
(50) Generate
Arguments: explode(filteredUnitOfMeasureConversions#905828.quantityDenominator), true, [quantityDenominator#905830]
(51) Project
Arguments: [product#905802, plant#905803, orderDateTime#905804, productPlant#905815, systemId#905816, internalUUID#905817, id#905818, displayId#905819, name#905820, baseUnitOfMeasure#905821, unitOfMeasures#905822, unitOfMeasureConversions#905823, productionAspect#905824, salesAspect#905825, procurementAspect#905826, productGroup#905827, filteredUnitOfMeasureConversions#905828, quantityNumerator#905829, quantityDenominator#905830]
(52) Project
Arguments: [product#905802, plant#905803, orderDateTime#905804, productPlant#905815, systemId#905816, internalUUID#905817, id#905818, displayId#905819, name#905820, baseUnitOfMeasure#905821, unitOfMeasures#905822, unitOfMeasureConversions#905823, productionAspect#905824, salesAspect#905825, procurementAspect#905826, productGroup#905827, filteredUnitOfMeasureConversions#905828, quantityNumerator#905829, quantityDenominator#905830, (cast(quantityNumerator#905829 as double) / cast(quantityDenominator#905830 as double)) AS outboundUnit#905831]
(53) Project
Arguments: [product#905802, plant#905803, orderDateTime#905804, productPlant#905815, systemId#905816, internalUUID#905817, id#905818, displayId#905819, name#905820, baseUnitOfMeasure#905821, unitOfMeasures#905822, unitOfMeasureConversions#905823, productionAspect#905824, salesAspect#905825, procurementAspect#905826, productGroup#905827, filteredUnitOfMeasureConversions#905828, quantityNumerator#905829, quantityDenominator#905830, CASE WHEN (isnull(outboundUnit#905831) OR (outboundUnit#905831 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#905831 END AS outboundUnit#905832]
(54) Project
Arguments: [product#905802, plant#905803, orderDateTime#905804, productPlant#905815, outboundUnit#905832]
(55) Project
Arguments: [plant#905803]
(56) Deduplicate
Arguments: [plant#905803]
(57) Join
Arguments: Inner, (plantUuid#905553 = plant#905803)
(58) Project
Arguments: [plantId#905552, plantUuid#905553, storageLocId#905559, storageLocUuid#905560]
(59) Join
Arguments: Inner, (plant#905588.internalRefUUID <=> plantUuid#905553)
(60) Generate
Arguments: explode(filter(stockQuantities#905590, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#905560) AND (lambda x#905594.storageLocation.Id = storageLocId#905559)), lambda x#905594, false))), false, [stockQuantity#905595]
(61) Project
Arguments: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905589, stockQuantities#905590, plantId#905552, plantUuid#905553, storageLocId#905559, storageLocUuid#905560, stockQuantity#905595]
(62) Aggregate
Arguments: [plantUuid#905553, internalUUID#905586, plant#905588, product#905587, systemId#905585], [plantUuid#905553, internalUUID#905586, plant#905588, product#905587, systemId#905585, first(calculationDateTime#905589, false) AS calculationDateTime#905596, collect_list(stockQuantity#905595, 0, 0) AS stockQuantities#905597]
(63) Project
Arguments: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905596, stockQuantities#905597]
(64) Generate
Arguments: explode(stockQuantities#905597), false, [stockQuantity#905612]
(65) Project
Arguments: [systemId#905585, internalUUID#905586, product#905587, plant#905588, calculationDateTime#905596, stockQuantities#905597, stockQuantity#905612]
(66) Project
Arguments: [plant#905588.id AS plant#905613, plant#905588.internalRefUUID AS plantUuid#905614, product#905587.id AS product#905615, product#905587.internalRefUUID AS productUuid#905616, calculationDateTime#905596, stockQuantity#905612.storagelocation.id AS storageLocId#905617, stockQuantity#905612.storagelocation.internalRefUUID AS storageLocUuid#905618, stockQuantity#905612.quantity.measure AS quantity#905619, stockQuantity#905612.specialStockIndicator.code AS specialStockIndicator#905620, stockQuantity#905612.stockType.code AS stockType#905621]
(67) Filter
Arguments: ((specialStockIndicator#905620 = ) AND (stockType#905621 = 01))
(68) LogicalRelation
Arguments: parquet, [product#905631, plant#905632, orderDateTime#905633, planningStartDateTime#905634], false
(69) RepartitionByExpression
Arguments: [product#905631, plant#905632], 37
(70) Project
Arguments: [product#905631, plant#905632, orderDateTime#905633]
(71) LogicalRelation
Arguments: parquet, [systemId#905635, internalUUID#905636, plant#905637, product#905638, blockedForReplenishmentStartingFrom#905639, productionAspect#905640, salesPlant#905641, listing#905642, sourceOfSupplyCategory#905643], false
(72) Repartition
Arguments: 37, true
(73) Project
Arguments: [systemId#905635, internalUUID#905636, plant#905637, product#905638, blockedForReplenishmentStartingFrom#905639, productionAspect#905640, salesPlant#905641, listing#905642, sourceOfSupplyCategory#905643, struct(systemId, systemId#905635, internalUUID, internalUUID#905636, plant, plant#905637, product, product#905638, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#905639, productionAspect, productionAspect#905640, salesPlant, salesPlant#905641, listing, listing#905642, sourceOfSupplyCategory, sourceOfSupplyCategory#905643) AS productPlant#905644]
(74) Project
Arguments: [productPlant#905644]
(75) Join
Arguments: LeftOuter, ((product#905631 <=> productPlant#905644.product.internalRefUUID) AND (plant#905632 <=> productPlant#905644.plant.internalRefUUID))
(76) Project
Arguments: [product#905631, plant#905632, orderDateTime#905633, productPlant#905644]
(77) LogicalRelation
Arguments: parquet, [systemId#905645, internalUUID#905646, id#905647, displayId#905648, name#905649, baseUnitOfMeasure#905650, unitOfMeasures#905651, unitOfMeasureConversions#905652, productionAspect#905653, salesAspect#905654, procurementAspect#905655, productGroup#905656], false
(78) Repartition
Arguments: 37, true
(79) Join
Arguments: LeftOuter, (product#905631 = internalUUID#905646)
(80) Project
Arguments: [product#905631, plant#905632, orderDateTime#905633, productPlant#905644, systemId#905645, internalUUID#905646, id#905647, displayId#905648, name#905649, baseUnitOfMeasure#905650, unitOfMeasures#905651, unitOfMeasureConversions#905652, productionAspect#905653, salesAspect#905654, procurementAspect#905655, productGroup#905656, filter(unitOfMeasureConversions#905652, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#905644.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#905644.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905650.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905650.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905657]
(81) Generate
Arguments: explode(filteredUnitOfMeasureConversions#905657.quantityNumerator), true, [quantityNumerator#905658]
(82) Project
Arguments: [product#905631, plant#905632, orderDateTime#905633, productPlant#905644, systemId#905645, internalUUID#905646, id#905647, displayId#905648, name#905649, baseUnitOfMeasure#905650, unitOfMeasures#905651, unitOfMeasureConversions#905652, productionAspect#905653, salesAspect#905654, procurementAspect#905655, productGroup#905656, filteredUnitOfMeasureConversions#905657, quantityNumerator#905658]
(83) Generate
Arguments: explode(filteredUnitOfMeasureConversions#905657.quantityDenominator), true, [quantityDenominator#905659]
(84) Project
Arguments: [product#905631, plant#905632, orderDateTime#905633, productPlant#905644, systemId#905645, internalUUID#905646, id#905647, displayId#905648, name#905649, baseUnitOfMeasure#905650, unitOfMeasures#905651, unitOfMeasureConversions#905652, productionAspect#905653, salesAspect#905654, procurementAspect#905655, productGroup#905656, filteredUnitOfMeasureConversions#905657, quantityNumerator#905658, quantityDenominator#905659]
(85) Project
Arguments: [product#905631, plant#905632, orderDateTime#905633, productPlant#905644, systemId#905645, internalUUID#905646, id#905647, displayId#905648, name#905649, baseUnitOfMeasure#905650, unitOfMeasures#905651, unitOfMeasureConversions#905652, productionAspect#905653, salesAspect#905654, procurementAspect#905655, productGroup#905656, filteredUnitOfMeasureConversions#905657, quantityNumerator#905658, quantityDenominator#905659, (cast(quantityNumerator#905658 as double) / cast(quantityDenominator#905659 as double)) AS outboundUnit#905660]
(86) Project
Arguments: [product#905631, plant#905632, orderDateTime#905633, productPlant#905644, systemId#905645, internalUUID#905646, id#905647, displayId#905648, name#905649, baseUnitOfMeasure#905650, unitOfMeasures#905651, unitOfMeasureConversions#905652, productionAspect#905653, salesAspect#905654, procurementAspect#905655, productGroup#905656, filteredUnitOfMeasureConversions#905657, quantityNumerator#905658, quantityDenominator#905659, CASE WHEN (isnull(outboundUnit#905660) OR (outboundUnit#905660 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#905660 END AS outboundUnit#905661]
(87) Project
Arguments: [product#905631, plant#905632, orderDateTime#905633, productPlant#905644, outboundUnit#905661]
(88) Join
Arguments: Inner, ((plantUuid#905614 = plant#905632) AND (productUuid#905616 = product#905631))
(89) Filter
Arguments: (calculationDateTime#905596 <= orderDateTime#905633)
(90) Project
Arguments: [plantUuid#905614 AS plant#905665, productUuid#905616 AS product#905666, storageLocId#905617, calculationDateTime#905596, quantity#905619]
(91) LogicalRelation
Arguments: parquet, [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, stockQuantities#905679], false
(92) Repartition
Arguments: 37, true
(93) LogicalRelation
Arguments: parquet, [marketUnit#905680, description#905681, articleHierarchy#905682, defaultCurrency#905683, responsibilities#905684, replenishmentTypes#905685, distributionCenters#905686, assignedArticleHierarchyNodes#905687, minOrderQtySetting#905688, listingCheck#905689, odsSelection#905690, demandProfiles#905691, constraintProfiles#905692, optimizationProfiles#905693, orderGroupSplitProfiles#905694, supplierMinimumProfiles#905695, multipleRestrictionProfiles#905696, preferredUomSource#905697, handlingOfUnfulfilledDemands#905698, negligibleQuantitiesThreshold#905699, eventtype#905700], false
(94) Repartition
Arguments: 37, true
(95) Filter
Arguments: (marketUnit#905680 <=> AUTO_ALL_ProdLoc)
(96) Project
Arguments: [marketUnit#905680, description#905681, articleHierarchy#905682, defaultCurrency#905683, responsibilities#905684, replenishmentTypes#905685, distributionCenters#905686, assignedArticleHierarchyNodes#905687, minOrderQtySetting#905688, listingCheck#905689, odsSelection#905690, demandProfiles#905691, constraintProfiles#905692, optimizationProfiles#905693, orderGroupSplitProfiles#905694, supplierMinimumProfiles#905695, multipleRestrictionProfiles#905696, preferredUomSource#905697, handlingOfUnfulfilledDemands#905698, negligibleQuantitiesThreshold#905699, eventtype#905700]
(97) Project
Arguments: [distributionCenters#905686]
(98) Generate
Arguments: explode(distributionCenters#905686), false, [distributionCenters#905701]
(99) Project
Arguments: [distributionCenters#905701]
(100) Generate
Arguments: explode(distributionCenters#905701.storageLocations), false, [storageLocations#905702]
(101) Project
Arguments: [distributionCenters#905701.id AS plantId#905703, distributionCenters#905701.internalRefUUID AS plantUuid#905704, storageLocations#905702]
(102) Project
Arguments: [plantId#905703, plantUuid#905704, storageLocations#905702.id AS storageLocId#905705, storageLocations#905702.internalRefUUID AS storageLocUuid#905706]
(103) LogicalRelation
Arguments: parquet, [product#905707, plant#905708, orderDateTime#905709, planningStartDateTime#905710], false
(104) RepartitionByExpression
Arguments: [product#905707, plant#905708], 37
(105) Project
Arguments: [product#905707, plant#905708, orderDateTime#905709]
(106) LogicalRelation
Arguments: parquet, [systemId#905711, internalUUID#905712, plant#905713, product#905714, blockedForReplenishmentStartingFrom#905715, productionAspect#905716, salesPlant#905717, listing#905718, sourceOfSupplyCategory#905719], false
(107) Repartition
Arguments: 37, true
(108) Project
Arguments: [systemId#905711, internalUUID#905712, plant#905713, product#905714, blockedForReplenishmentStartingFrom#905715, productionAspect#905716, salesPlant#905717, listing#905718, sourceOfSupplyCategory#905719, struct(systemId, systemId#905711, internalUUID, internalUUID#905712, plant, plant#905713, product, product#905714, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#905715, productionAspect, productionAspect#905716, salesPlant, salesPlant#905717, listing, listing#905718, sourceOfSupplyCategory, sourceOfSupplyCategory#905719) AS productPlant#905720]
(109) Project
Arguments: [productPlant#905720]
(110) Join
Arguments: LeftOuter, ((product#905707 <=> productPlant#905720.product.internalRefUUID) AND (plant#905708 <=> productPlant#905720.plant.internalRefUUID))
(111) Project
Arguments: [product#905707, plant#905708, orderDateTime#905709, productPlant#905720]
(112) LogicalRelation
Arguments: parquet, [systemId#905721, internalUUID#905722, id#905723, displayId#905724, name#905725, baseUnitOfMeasure#905726, unitOfMeasures#905727, unitOfMeasureConversions#905728, productionAspect#905729, salesAspect#905730, procurementAspect#905731, productGroup#905732], false
(113) Repartition
Arguments: 37, true
(114) Join
Arguments: LeftOuter, (product#905707 = internalUUID#905722)
(115) Project
Arguments: [product#905707, plant#905708, orderDateTime#905709, productPlant#905720, systemId#905721, internalUUID#905722, id#905723, displayId#905724, name#905725, baseUnitOfMeasure#905726, unitOfMeasures#905727, unitOfMeasureConversions#905728, productionAspect#905729, salesAspect#905730, procurementAspect#905731, productGroup#905732, filter(unitOfMeasureConversions#905728, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#905720.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#905720.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905726.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905726.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905733]
(116) Generate
Arguments: explode(filteredUnitOfMeasureConversions#905733.quantityNumerator), true, [quantityNumerator#905734]
(117) Project
Arguments: [product#905707, plant#905708, orderDateTime#905709, productPlant#905720, systemId#905721, internalUUID#905722, id#905723, displayId#905724, name#905725, baseUnitOfMeasure#905726, unitOfMeasures#905727, unitOfMeasureConversions#905728, productionAspect#905729, salesAspect#905730, procurementAspect#905731, productGroup#905732, filteredUnitOfMeasureConversions#905733, quantityNumerator#905734]
(118) Generate
Arguments: explode(filteredUnitOfMeasureConversions#905733.quantityDenominator), true, [quantityDenominator#905735]
(119) Project
Arguments: [product#905707, plant#905708, orderDateTime#905709, productPlant#905720, systemId#905721, internalUUID#905722, id#905723, displayId#905724, name#905725, baseUnitOfMeasure#905726, unitOfMeasures#905727, unitOfMeasureConversions#905728, productionAspect#905729, salesAspect#905730, procurementAspect#905731, productGroup#905732, filteredUnitOfMeasureConversions#905733, quantityNumerator#905734, quantityDenominator#905735]
(120) Project
Arguments: [product#905707, plant#905708, orderDateTime#905709, productPlant#905720, systemId#905721, internalUUID#905722, id#905723, displayId#905724, name#905725, baseUnitOfMeasure#905726, unitOfMeasures#905727, unitOfMeasureConversions#905728, productionAspect#905729, salesAspect#905730, procurementAspect#905731, productGroup#905732, filteredUnitOfMeasureConversions#905733, quantityNumerator#905734, quantityDenominator#905735, (cast(quantityNumerator#905734 as double) / cast(quantityDenominator#905735 as double)) AS outboundUnit#905736]
(121) Project
Arguments: [product#905707, plant#905708, orderDateTime#905709, productPlant#905720, systemId#905721, internalUUID#905722, id#905723, displayId#905724, name#905725, baseUnitOfMeasure#905726, unitOfMeasures#905727, unitOfMeasureConversions#905728, productionAspect#905729, salesAspect#905730, procurementAspect#905731, productGroup#905732, filteredUnitOfMeasureConversions#905733, quantityNumerator#905734, quantityDenominator#905735, CASE WHEN (isnull(outboundUnit#905736) OR (outboundUnit#905736 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#905736 END AS outboundUnit#905737]
(122) Project
Arguments: [product#905707, plant#905708, orderDateTime#905709, productPlant#905720, outboundUnit#905737]
(123) Project
Arguments: [plant#905708]
(124) Deduplicate
Arguments: [plant#905708]
(125) Join
Arguments: Inner, (plantUuid#905704 = plant#905708)
(126) Project
Arguments: [plantId#905703, plantUuid#905704, storageLocId#905705, storageLocUuid#905706]
(127) Join
Arguments: Inner, (plant#905677.internalRefUUID <=> plantUuid#905704)
(128) Generate
Arguments: explode(filter(stockQuantities#905679, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#905706) AND (lambda x#905594.storageLocation.Id = storageLocId#905705)), lambda x#905594, false))), false, [stockQuantity#905738]
(129) Project
Arguments: [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905678, stockQuantities#905679, plantId#905703, plantUuid#905704, storageLocId#905705, storageLocUuid#905706, stockQuantity#905738]
(130) Aggregate
Arguments: [plantUuid#905704, internalUUID#905675, plant#905677, product#905676, systemId#905674], [plantUuid#905704, internalUUID#905675, plant#905677, product#905676, systemId#905674, first(calculationDateTime#905678, false) AS calculationDateTime#905739, collect_list(stockQuantity#905738, 0, 0) AS stockQuantities#905740]
(131) Project
Arguments: [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905739, stockQuantities#905740]
(132) Generate
Arguments: explode(stockQuantities#905740), false, [stockQuantity#905741]
(133) Project
Arguments: [systemId#905674, internalUUID#905675, product#905676, plant#905677, calculationDateTime#905739, stockQuantities#905740, stockQuantity#905741]
(134) Project
Arguments: [plant#905677.id AS plant#905742, plant#905677.internalRefUUID AS plantUuid#905743, product#905676.id AS product#905744, product#905676.internalRefUUID AS productUuid#905745, calculationDateTime#905739, stockQuantity#905741.storagelocation.id AS storageLocId#905746, stockQuantity#905741.storagelocation.internalRefUUID AS storageLocUuid#905747, stockQuantity#905741.quantity.measure AS quantity#905748, stockQuantity#905741.specialStockIndicator.code AS specialStockIndicator#905749, stockQuantity#905741.stockType.code AS stockType#905750]
(135) Filter
Arguments: ((specialStockIndicator#905749 = ) AND (stockType#905750 = 01))
(136) LogicalRelation
Arguments: parquet, [product#905751, plant#905752, orderDateTime#905753, planningStartDateTime#905754], false
(137) RepartitionByExpression
Arguments: [product#905751, plant#905752], 37
(138) Project
Arguments: [product#905751, plant#905752, orderDateTime#905753]
(139) LogicalRelation
Arguments: parquet, [systemId#905755, internalUUID#905756, plant#905757, product#905758, blockedForReplenishmentStartingFrom#905759, productionAspect#905760, salesPlant#905761, listing#905762, sourceOfSupplyCategory#905763], false
(140) Repartition
Arguments: 37, true
(141) Project
Arguments: [systemId#905755, internalUUID#905756, plant#905757, product#905758, blockedForReplenishmentStartingFrom#905759, productionAspect#905760, salesPlant#905761, listing#905762, sourceOfSupplyCategory#905763, struct(systemId, systemId#905755, internalUUID, internalUUID#905756, plant, plant#905757, product, product#905758, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#905759, productionAspect, productionAspect#905760, salesPlant, salesPlant#905761, listing, listing#905762, sourceOfSupplyCategory, sourceOfSupplyCategory#905763) AS productPlant#905764]
(142) Project
Arguments: [productPlant#905764]
(143) Join
Arguments: LeftOuter, ((product#905751 <=> productPlant#905764.product.internalRefUUID) AND (plant#905752 <=> productPlant#905764.plant.internalRefUUID))
(144) Project
Arguments: [product#905751, plant#905752, orderDateTime#905753, productPlant#905764]
(145) LogicalRelation
Arguments: parquet, [systemId#905765, internalUUID#905766, id#905767, displayId#905768, name#905769, baseUnitOfMeasure#905770, unitOfMeasures#905771, unitOfMeasureConversions#905772, productionAspect#905773, salesAspect#905774, procurementAspect#905775, productGroup#905776], false
(146) Repartition
Arguments: 37, true
(147) Join
Arguments: LeftOuter, (product#905751 = internalUUID#905766)
(148) Project
Arguments: [product#905751, plant#905752, orderDateTime#905753, productPlant#905764, systemId#905765, internalUUID#905766, id#905767, displayId#905768, name#905769, baseUnitOfMeasure#905770, unitOfMeasures#905771, unitOfMeasureConversions#905772, productionAspect#905773, salesAspect#905774, procurementAspect#905775, productGroup#905776, filter(unitOfMeasureConversions#905772, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#905764.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#905764.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#905770.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#905770.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#905777]
(149) Generate
Arguments: explode(filteredUnitOfMeasureConversions#905777.quantityNumerator), true, [quantityNumerator#905778]
(150) Project
Arguments: [product#905751, plant#905752, orderDateTime#905753, productPlant#905764, systemId#905765, internalUUID#905766, id#905767, displayId#905768, name#905769, baseUnitOfMeasure#905770, unitOfMeasures#905771, unitOfMeasureConversions#905772, productionAspect#905773, salesAspect#905774, procurementAspect#905775, productGroup#905776, filteredUnitOfMeasureConversions#905777, quantityNumerator#905778]
(151) Generate
Arguments: explode(filteredUnitOfMeasureConversions#905777.quantityDenominator), true, [quantityDenominator#905779]
(152) Project
Arguments: [product#905751, plant#905752, orderDateTime#905753, productPlant#905764, systemId#905765, internalUUID#905766, id#905767, displayId#905768, name#905769, baseUnitOfMeasure#905770, unitOfMeasures#905771, unitOfMeasureConversions#905772, productionAspect#905773, salesAspect#905774, procurementAspect#905775, productGroup#905776, filteredUnitOfMeasureConversions#905777, quantityNumerator#905778, quantityDenominator#905779]
(153) Project
Arguments: [product#905751, plant#905752, orderDateTime#905753, productPlant#905764, systemId#905765, internalUUID#905766, id#905767, displayId#905768, name#905769, baseUnitOfMeasure#905770, unitOfMeasures#905771, unitOfMeasureConversions#905772, productionAspect#905773, salesAspect#905774, procurementAspect#905775, productGroup#905776, filteredUnitOfMeasureConversions#905777, quantityNumerator#905778, quantityDenominator#905779, (cast(quantityNumerator#905778 as double) / cast(quantityDenominator#905779 as double)) AS outboundUnit#905780]
(154) Project
Arguments: [product#905751, plant#905752, orderDateTime#905753, productPlant#905764, systemId#905765, internalUUID#905766, id#905767, displayId#905768, name#905769, baseUnitOfMeasure#905770, unitOfMeasures#905771, unitOfMeasureConversions#905772, productionAspect#905773, salesAspect#905774, procurementAspect#905775, productGroup#905776, filteredUnitOfMeasureConversions#905777, quantityNumerator#905778, quantityDenominator#905779, CASE WHEN (isnull(outboundUnit#905780) OR (outboundUnit#905780 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#905780 END AS outboundUnit#905781]
(155) Project
Arguments: [product#905751, plant#905752, orderDateTime#905753, productPlant#905764, outboundUnit#905781]
(156) Join
Arguments: Inner, ((plantUuid#905743 = plant#905752) AND (productUuid#905745 = product#905751))
(157) Filter
Arguments: (calculationDateTime#905739 <= orderDateTime#905753)
(158) Project
Arguments: [plantUuid#905743 AS plant#905782, productUuid#905745 AS product#905783, storageLocId#905746, calculationDateTime#905739, quantity#905748]
(159) Aggregate
Arguments: [plant#905782, product#905783, storageLocId#905746], [plant#905782, product#905783, storageLocId#905746, max(calculationDateTime#905739) AS max_calc_datetime#905667]
(160) Join
Arguments: Inner, ((((plant#905665 <=> plant#905782) AND (product#905666 <=> product#905783)) AND (storageLocId#905617 <=> storageLocId#905746)) AND (calculationDateTime#905596 <=> max_calc_datetime#905667))
(161) Project
Arguments: [plant#905665, product#905666, storageLocId#905617, calculationDateTime#905596, quantity#905619]
(162) Aggregate
Arguments: [product#905666, plant#905665], [product#905666, plant#905665, sum(quantity#905619) AS quantitySum#905792, min(calculationDateTime#905596) AS minCalculationDateTime#905793]
(163) Project
Arguments: [product#905666, plant#905665, quantitySum#905792, minCalculationDateTime#905793, round(quantitySum#905792, 0) AS roundedQuantitySum#905801]
(164) Join
Arguments: LeftOuter, ((plant#905389 = plant#905665) AND (product#905388 = product#905666))
(165) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, roundedQuantitySum#905801, minCalculationDateTime#905793]
(166) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, roundedQuantitySum#905801, minCalculationDateTime#905793, CASE WHEN isnotnull(minCalculationDateTime#905793) THEN minCalculationDateTime#905793 ELSE orderDateTime#905390 END AS stockDatetime#905836]
(167) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, roundedQuantitySum#905801, minCalculationDateTime#905793, stockDatetime#905836, CASE WHEN isnotnull(roundedQuantitySum#905801) THEN array(roundedQuantitySum#905801) ELSE array(0.0) END AS stockBatchQuantities#905837]
(168) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, roundedQuantitySum#905801, minCalculationDateTime#905793, stockDatetime#905836, stockBatchQuantities#905837, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#905838]
(169) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, roundedQuantitySum#905801, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838]
(170) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838]
(171) LogicalRelation
Arguments: parquet, [product#906956, plant#906957, orderDateTime#906958, planningStartDateTime#906959], false
(172) RepartitionByExpression
Arguments: [product#906956, plant#906957], 37
(173) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958]
(174) LogicalRelation
Arguments: parquet, [systemId#906960, internalUUID#906961, plant#906962, product#906963, blockedForReplenishmentStartingFrom#906964, productionAspect#906965, salesPlant#906966, listing#906967, sourceOfSupplyCategory#906968], false
(175) Repartition
Arguments: 37, true
(176) Project
Arguments: [systemId#906960, internalUUID#906961, plant#906962, product#906963, blockedForReplenishmentStartingFrom#906964, productionAspect#906965, salesPlant#906966, listing#906967, sourceOfSupplyCategory#906968, struct(systemId, systemId#906960, internalUUID, internalUUID#906961, plant, plant#906962, product, product#906963, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#906964, productionAspect, productionAspect#906965, salesPlant, salesPlant#906966, listing, listing#906967, sourceOfSupplyCategory, sourceOfSupplyCategory#906968) AS productPlant#906969]
(177) Project
Arguments: [productPlant#906969]
(178) Join
Arguments: LeftOuter, ((product#906956 <=> productPlant#906969.product.internalRefUUID) AND (plant#906957 <=> productPlant#906969.plant.internalRefUUID))
(179) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969]
(180) LogicalRelation
Arguments: parquet, [systemId#906970, internalUUID#906971, id#906972, displayId#906973, name#906974, baseUnitOfMeasure#906975, unitOfMeasures#906976, unitOfMeasureConversions#906977, productionAspect#906978, salesAspect#906979, procurementAspect#906980, productGroup#906981], false
(181) Repartition
Arguments: 37, true
(182) Join
Arguments: LeftOuter, (product#906956 = internalUUID#906971)
(183) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, systemId#906970, internalUUID#906971, id#906972, displayId#906973, name#906974, baseUnitOfMeasure#906975, unitOfMeasures#906976, unitOfMeasureConversions#906977, productionAspect#906978, salesAspect#906979, procurementAspect#906980, productGroup#906981, filter(unitOfMeasureConversions#906977, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#906969.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#906969.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#906975.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#906975.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#906982]
(184) Generate
Arguments: explode(filteredUnitOfMeasureConversions#906982.quantityNumerator), true, [quantityNumerator#906983]
(185) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, systemId#906970, internalUUID#906971, id#906972, displayId#906973, name#906974, baseUnitOfMeasure#906975, unitOfMeasures#906976, unitOfMeasureConversions#906977, productionAspect#906978, salesAspect#906979, procurementAspect#906980, productGroup#906981, filteredUnitOfMeasureConversions#906982, quantityNumerator#906983]
(186) Generate
Arguments: explode(filteredUnitOfMeasureConversions#906982.quantityDenominator), true, [quantityDenominator#906984]
(187) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, systemId#906970, internalUUID#906971, id#906972, displayId#906973, name#906974, baseUnitOfMeasure#906975, unitOfMeasures#906976, unitOfMeasureConversions#906977, productionAspect#906978, salesAspect#906979, procurementAspect#906980, productGroup#906981, filteredUnitOfMeasureConversions#906982, quantityNumerator#906983, quantityDenominator#906984]
(188) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, systemId#906970, internalUUID#906971, id#906972, displayId#906973, name#906974, baseUnitOfMeasure#906975, unitOfMeasures#906976, unitOfMeasureConversions#906977, productionAspect#906978, salesAspect#906979, procurementAspect#906980, productGroup#906981, filteredUnitOfMeasureConversions#906982, quantityNumerator#906983, quantityDenominator#906984, (cast(quantityNumerator#906983 as double) / cast(quantityDenominator#906984 as double)) AS outboundUnit#906985]
(189) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, systemId#906970, internalUUID#906971, id#906972, displayId#906973, name#906974, baseUnitOfMeasure#906975, unitOfMeasures#906976, unitOfMeasureConversions#906977, productionAspect#906978, salesAspect#906979, procurementAspect#906980, productGroup#906981, filteredUnitOfMeasureConversions#906982, quantityNumerator#906983, quantityDenominator#906984, CASE WHEN (isnull(outboundUnit#906985) OR (outboundUnit#906985 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#906985 END AS outboundUnit#906986]
(190) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986]
(191) LogicalRelation
Arguments: parquet, [systemId#906987, internalUUID#906988, product#906989, plant#906990, calculationDateTime#906991, stockQuantities#906992], false
(192) Repartition
Arguments: 37, true
(193) LogicalRelation
Arguments: parquet, [marketUnit#906993, description#906994, articleHierarchy#906995, defaultCurrency#906996, responsibilities#906997, replenishmentTypes#906998, distributionCenters#906999, assignedArticleHierarchyNodes#907000, minOrderQtySetting#907001, listingCheck#907002, odsSelection#907003, demandProfiles#907004, constraintProfiles#907005, optimizationProfiles#907006, orderGroupSplitProfiles#907007, supplierMinimumProfiles#907008, multipleRestrictionProfiles#907009, preferredUomSource#907010, handlingOfUnfulfilledDemands#907011, negligibleQuantitiesThreshold#907012, eventtype#907013], false
(194) Repartition
Arguments: 37, true
(195) Filter
Arguments: (marketUnit#906993 <=> AUTO_ALL_ProdLoc)
(196) Project
Arguments: [marketUnit#906993, description#906994, articleHierarchy#906995, defaultCurrency#906996, responsibilities#906997, replenishmentTypes#906998, distributionCenters#906999, assignedArticleHierarchyNodes#907000, minOrderQtySetting#907001, listingCheck#907002, odsSelection#907003, demandProfiles#907004, constraintProfiles#907005, optimizationProfiles#907006, orderGroupSplitProfiles#907007, supplierMinimumProfiles#907008, multipleRestrictionProfiles#907009, preferredUomSource#907010, handlingOfUnfulfilledDemands#907011, negligibleQuantitiesThreshold#907012, eventtype#907013]
(197) Project
Arguments: [distributionCenters#906999]
(198) Generate
Arguments: explode(distributionCenters#906999), false, [distributionCenters#907014]
(199) Project
Arguments: [distributionCenters#907014]
(200) Generate
Arguments: explode(distributionCenters#907014.storageLocations), false, [storageLocations#907015]
(201) Project
Arguments: [distributionCenters#907014.id AS plantId#907016, distributionCenters#907014.internalRefUUID AS plantUuid#907017, storageLocations#907015]
(202) Project
Arguments: [plantId#907016, plantUuid#907017, storageLocations#907015.id AS storageLocId#907018, storageLocations#907015.internalRefUUID AS storageLocUuid#907019]
(203) LogicalRelation
Arguments: parquet, [product#907020, plant#907021, orderDateTime#907022, planningStartDateTime#907023], false
(204) RepartitionByExpression
Arguments: [product#907020, plant#907021], 37
(205) Project
Arguments: [product#907020, plant#907021, orderDateTime#907022]
(206) LogicalRelation
Arguments: parquet, [systemId#907024, internalUUID#907025, plant#907026, product#907027, blockedForReplenishmentStartingFrom#907028, productionAspect#907029, salesPlant#907030, listing#907031, sourceOfSupplyCategory#907032], false
(207) Repartition
Arguments: 37, true
(208) Project
Arguments: [systemId#907024, internalUUID#907025, plant#907026, product#907027, blockedForReplenishmentStartingFrom#907028, productionAspect#907029, salesPlant#907030, listing#907031, sourceOfSupplyCategory#907032, struct(systemId, systemId#907024, internalUUID, internalUUID#907025, plant, plant#907026, product, product#907027, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907028, productionAspect, productionAspect#907029, salesPlant, salesPlant#907030, listing, listing#907031, sourceOfSupplyCategory, sourceOfSupplyCategory#907032) AS productPlant#907033]
(209) Project
Arguments: [productPlant#907033]
(210) Join
Arguments: LeftOuter, ((product#907020 <=> productPlant#907033.product.internalRefUUID) AND (plant#907021 <=> productPlant#907033.plant.internalRefUUID))
(211) Project
Arguments: [product#907020, plant#907021, orderDateTime#907022, productPlant#907033]
(212) LogicalRelation
Arguments: parquet, [systemId#907034, internalUUID#907035, id#907036, displayId#907037, name#907038, baseUnitOfMeasure#907039, unitOfMeasures#907040, unitOfMeasureConversions#907041, productionAspect#907042, salesAspect#907043, procurementAspect#907044, productGroup#907045], false
(213) Repartition
Arguments: 37, true
(214) Join
Arguments: LeftOuter, (product#907020 = internalUUID#907035)
(215) Project
Arguments: [product#907020, plant#907021, orderDateTime#907022, productPlant#907033, systemId#907034, internalUUID#907035, id#907036, displayId#907037, name#907038, baseUnitOfMeasure#907039, unitOfMeasures#907040, unitOfMeasureConversions#907041, productionAspect#907042, salesAspect#907043, procurementAspect#907044, productGroup#907045, filter(unitOfMeasureConversions#907041, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907033.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907033.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907039.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907039.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907046]
(216) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907046.quantityNumerator), true, [quantityNumerator#907047]
(217) Project
Arguments: [product#907020, plant#907021, orderDateTime#907022, productPlant#907033, systemId#907034, internalUUID#907035, id#907036, displayId#907037, name#907038, baseUnitOfMeasure#907039, unitOfMeasures#907040, unitOfMeasureConversions#907041, productionAspect#907042, salesAspect#907043, procurementAspect#907044, productGroup#907045, filteredUnitOfMeasureConversions#907046, quantityNumerator#907047]
(218) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907046.quantityDenominator), true, [quantityDenominator#907048]
(219) Project
Arguments: [product#907020, plant#907021, orderDateTime#907022, productPlant#907033, systemId#907034, internalUUID#907035, id#907036, displayId#907037, name#907038, baseUnitOfMeasure#907039, unitOfMeasures#907040, unitOfMeasureConversions#907041, productionAspect#907042, salesAspect#907043, procurementAspect#907044, productGroup#907045, filteredUnitOfMeasureConversions#907046, quantityNumerator#907047, quantityDenominator#907048]
(220) Project
Arguments: [product#907020, plant#907021, orderDateTime#907022, productPlant#907033, systemId#907034, internalUUID#907035, id#907036, displayId#907037, name#907038, baseUnitOfMeasure#907039, unitOfMeasures#907040, unitOfMeasureConversions#907041, productionAspect#907042, salesAspect#907043, procurementAspect#907044, productGroup#907045, filteredUnitOfMeasureConversions#907046, quantityNumerator#907047, quantityDenominator#907048, (cast(quantityNumerator#907047 as double) / cast(quantityDenominator#907048 as double)) AS outboundUnit#907049]
(221) Project
Arguments: [product#907020, plant#907021, orderDateTime#907022, productPlant#907033, systemId#907034, internalUUID#907035, id#907036, displayId#907037, name#907038, baseUnitOfMeasure#907039, unitOfMeasures#907040, unitOfMeasureConversions#907041, productionAspect#907042, salesAspect#907043, procurementAspect#907044, productGroup#907045, filteredUnitOfMeasureConversions#907046, quantityNumerator#907047, quantityDenominator#907048, CASE WHEN (isnull(outboundUnit#907049) OR (outboundUnit#907049 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907049 END AS outboundUnit#907050]
(222) Project
Arguments: [product#907020, plant#907021, orderDateTime#907022, productPlant#907033, outboundUnit#907050]
(223) Project
Arguments: [plant#907021]
(224) Deduplicate
Arguments: [plant#907021]
(225) Join
Arguments: Inner, (plantUuid#907017 = plant#907021)
(226) Project
Arguments: [plantId#907016, plantUuid#907017, storageLocId#907018, storageLocUuid#907019]
(227) Join
Arguments: Inner, (plant#906990.internalRefUUID <=> plantUuid#907017)
(228) Generate
Arguments: explode(filter(stockQuantities#906992, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#907019) AND (lambda x#905594.storageLocation.Id = storageLocId#907018)), lambda x#905594, false))), false, [stockQuantity#907051]
(229) Project
Arguments: [systemId#906987, internalUUID#906988, product#906989, plant#906990, calculationDateTime#906991, stockQuantities#906992, plantId#907016, plantUuid#907017, storageLocId#907018, storageLocUuid#907019, stockQuantity#907051]
(230) Aggregate
Arguments: [plantUuid#907017, internalUUID#906988, plant#906990, product#906989, systemId#906987], [plantUuid#907017, internalUUID#906988, plant#906990, product#906989, systemId#906987, first(calculationDateTime#906991, false) AS calculationDateTime#907052, collect_list(stockQuantity#907051, 0, 0) AS stockQuantities#907053]
(231) Project
Arguments: [systemId#906987, internalUUID#906988, product#906989, plant#906990, calculationDateTime#907052, stockQuantities#907053]
(232) Generate
Arguments: explode(stockQuantities#907053), false, [stockQuantity#907054]
(233) Project
Arguments: [systemId#906987, internalUUID#906988, product#906989, plant#906990, calculationDateTime#907052, stockQuantities#907053, stockQuantity#907054]
(234) Project
Arguments: [plant#906990.id AS plant#907055, plant#906990.internalRefUUID AS plantUuid#907056, product#906989.id AS product#907057, product#906989.internalRefUUID AS productUuid#907058, calculationDateTime#907052, stockQuantity#907054.storagelocation.id AS storageLocId#907059, stockQuantity#907054.storagelocation.internalRefUUID AS storageLocUuid#907060, stockQuantity#907054.quantity.measure AS quantity#907061, stockQuantity#907054.specialStockIndicator.code AS specialStockIndicator#907062, stockQuantity#907054.stockType.code AS stockType#907063]
(235) Filter
Arguments: ((specialStockIndicator#907062 = ) AND (stockType#907063 = 01))
(236) LogicalRelation
Arguments: parquet, [product#907064, plant#907065, orderDateTime#907066, planningStartDateTime#907067], false
(237) RepartitionByExpression
Arguments: [product#907064, plant#907065], 37
(238) Project
Arguments: [product#907064, plant#907065, orderDateTime#907066]
(239) LogicalRelation
Arguments: parquet, [systemId#907068, internalUUID#907069, plant#907070, product#907071, blockedForReplenishmentStartingFrom#907072, productionAspect#907073, salesPlant#907074, listing#907075, sourceOfSupplyCategory#907076], false
(240) Repartition
Arguments: 37, true
(241) Project
Arguments: [systemId#907068, internalUUID#907069, plant#907070, product#907071, blockedForReplenishmentStartingFrom#907072, productionAspect#907073, salesPlant#907074, listing#907075, sourceOfSupplyCategory#907076, struct(systemId, systemId#907068, internalUUID, internalUUID#907069, plant, plant#907070, product, product#907071, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907072, productionAspect, productionAspect#907073, salesPlant, salesPlant#907074, listing, listing#907075, sourceOfSupplyCategory, sourceOfSupplyCategory#907076) AS productPlant#907077]
(242) Project
Arguments: [productPlant#907077]
(243) Join
Arguments: LeftOuter, ((product#907064 <=> productPlant#907077.product.internalRefUUID) AND (plant#907065 <=> productPlant#907077.plant.internalRefUUID))
(244) Project
Arguments: [product#907064, plant#907065, orderDateTime#907066, productPlant#907077]
(245) LogicalRelation
Arguments: parquet, [systemId#907078, internalUUID#907079, id#907080, displayId#907081, name#907082, baseUnitOfMeasure#907083, unitOfMeasures#907084, unitOfMeasureConversions#907085, productionAspect#907086, salesAspect#907087, procurementAspect#907088, productGroup#907089], false
(246) Repartition
Arguments: 37, true
(247) Join
Arguments: LeftOuter, (product#907064 = internalUUID#907079)
(248) Project
Arguments: [product#907064, plant#907065, orderDateTime#907066, productPlant#907077, systemId#907078, internalUUID#907079, id#907080, displayId#907081, name#907082, baseUnitOfMeasure#907083, unitOfMeasures#907084, unitOfMeasureConversions#907085, productionAspect#907086, salesAspect#907087, procurementAspect#907088, productGroup#907089, filter(unitOfMeasureConversions#907085, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907077.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907077.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907083.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907083.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907090]
(249) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907090.quantityNumerator), true, [quantityNumerator#907091]
(250) Project
Arguments: [product#907064, plant#907065, orderDateTime#907066, productPlant#907077, systemId#907078, internalUUID#907079, id#907080, displayId#907081, name#907082, baseUnitOfMeasure#907083, unitOfMeasures#907084, unitOfMeasureConversions#907085, productionAspect#907086, salesAspect#907087, procurementAspect#907088, productGroup#907089, filteredUnitOfMeasureConversions#907090, quantityNumerator#907091]
(251) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907090.quantityDenominator), true, [quantityDenominator#907092]
(252) Project
Arguments: [product#907064, plant#907065, orderDateTime#907066, productPlant#907077, systemId#907078, internalUUID#907079, id#907080, displayId#907081, name#907082, baseUnitOfMeasure#907083, unitOfMeasures#907084, unitOfMeasureConversions#907085, productionAspect#907086, salesAspect#907087, procurementAspect#907088, productGroup#907089, filteredUnitOfMeasureConversions#907090, quantityNumerator#907091, quantityDenominator#907092]
(253) Project
Arguments: [product#907064, plant#907065, orderDateTime#907066, productPlant#907077, systemId#907078, internalUUID#907079, id#907080, displayId#907081, name#907082, baseUnitOfMeasure#907083, unitOfMeasures#907084, unitOfMeasureConversions#907085, productionAspect#907086, salesAspect#907087, procurementAspect#907088, productGroup#907089, filteredUnitOfMeasureConversions#907090, quantityNumerator#907091, quantityDenominator#907092, (cast(quantityNumerator#907091 as double) / cast(quantityDenominator#907092 as double)) AS outboundUnit#907093]
(254) Project
Arguments: [product#907064, plant#907065, orderDateTime#907066, productPlant#907077, systemId#907078, internalUUID#907079, id#907080, displayId#907081, name#907082, baseUnitOfMeasure#907083, unitOfMeasures#907084, unitOfMeasureConversions#907085, productionAspect#907086, salesAspect#907087, procurementAspect#907088, productGroup#907089, filteredUnitOfMeasureConversions#907090, quantityNumerator#907091, quantityDenominator#907092, CASE WHEN (isnull(outboundUnit#907093) OR (outboundUnit#907093 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907093 END AS outboundUnit#907094]
(255) Project
Arguments: [product#907064, plant#907065, orderDateTime#907066, productPlant#907077, outboundUnit#907094]
(256) Join
Arguments: Inner, ((plantUuid#907056 = plant#907065) AND (productUuid#907058 = product#907064))
(257) Filter
Arguments: (calculationDateTime#907052 <= orderDateTime#907066)
(258) Project
Arguments: [plantUuid#907056 AS plant#907095, productUuid#907058 AS product#907096, storageLocId#907059, calculationDateTime#907052, quantity#907061]
(259) LogicalRelation
Arguments: parquet, [systemId#907097, internalUUID#907098, product#907099, plant#907100, calculationDateTime#907101, stockQuantities#907102], false
(260) Repartition
Arguments: 37, true
(261) LogicalRelation
Arguments: parquet, [marketUnit#907103, description#907104, articleHierarchy#907105, defaultCurrency#907106, responsibilities#907107, replenishmentTypes#907108, distributionCenters#907109, assignedArticleHierarchyNodes#907110, minOrderQtySetting#907111, listingCheck#907112, odsSelection#907113, demandProfiles#907114, constraintProfiles#907115, optimizationProfiles#907116, orderGroupSplitProfiles#907117, supplierMinimumProfiles#907118, multipleRestrictionProfiles#907119, preferredUomSource#907120, handlingOfUnfulfilledDemands#907121, negligibleQuantitiesThreshold#907122, eventtype#907123], false
(262) Repartition
Arguments: 37, true
(263) Filter
Arguments: (marketUnit#907103 <=> AUTO_ALL_ProdLoc)
(264) Project
Arguments: [marketUnit#907103, description#907104, articleHierarchy#907105, defaultCurrency#907106, responsibilities#907107, replenishmentTypes#907108, distributionCenters#907109, assignedArticleHierarchyNodes#907110, minOrderQtySetting#907111, listingCheck#907112, odsSelection#907113, demandProfiles#907114, constraintProfiles#907115, optimizationProfiles#907116, orderGroupSplitProfiles#907117, supplierMinimumProfiles#907118, multipleRestrictionProfiles#907119, preferredUomSource#907120, handlingOfUnfulfilledDemands#907121, negligibleQuantitiesThreshold#907122, eventtype#907123]
(265) Project
Arguments: [distributionCenters#907109]
(266) Generate
Arguments: explode(distributionCenters#907109), false, [distributionCenters#907124]
(267) Project
Arguments: [distributionCenters#907124]
(268) Generate
Arguments: explode(distributionCenters#907124.storageLocations), false, [storageLocations#907125]
(269) Project
Arguments: [distributionCenters#907124.id AS plantId#907126, distributionCenters#907124.internalRefUUID AS plantUuid#907127, storageLocations#907125]
(270) Project
Arguments: [plantId#907126, plantUuid#907127, storageLocations#907125.id AS storageLocId#907128, storageLocations#907125.internalRefUUID AS storageLocUuid#907129]
(271) LogicalRelation
Arguments: parquet, [product#907130, plant#907131, orderDateTime#907132, planningStartDateTime#907133], false
(272) RepartitionByExpression
Arguments: [product#907130, plant#907131], 37
(273) Project
Arguments: [product#907130, plant#907131, orderDateTime#907132]
(274) LogicalRelation
Arguments: parquet, [systemId#907134, internalUUID#907135, plant#907136, product#907137, blockedForReplenishmentStartingFrom#907138, productionAspect#907139, salesPlant#907140, listing#907141, sourceOfSupplyCategory#907142], false
(275) Repartition
Arguments: 37, true
(276) Project
Arguments: [systemId#907134, internalUUID#907135, plant#907136, product#907137, blockedForReplenishmentStartingFrom#907138, productionAspect#907139, salesPlant#907140, listing#907141, sourceOfSupplyCategory#907142, struct(systemId, systemId#907134, internalUUID, internalUUID#907135, plant, plant#907136, product, product#907137, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907138, productionAspect, productionAspect#907139, salesPlant, salesPlant#907140, listing, listing#907141, sourceOfSupplyCategory, sourceOfSupplyCategory#907142) AS productPlant#907143]
(277) Project
Arguments: [productPlant#907143]
(278) Join
Arguments: LeftOuter, ((product#907130 <=> productPlant#907143.product.internalRefUUID) AND (plant#907131 <=> productPlant#907143.plant.internalRefUUID))
(279) Project
Arguments: [product#907130, plant#907131, orderDateTime#907132, productPlant#907143]
(280) LogicalRelation
Arguments: parquet, [systemId#907144, internalUUID#907145, id#907146, displayId#907147, name#907148, baseUnitOfMeasure#907149, unitOfMeasures#907150, unitOfMeasureConversions#907151, productionAspect#907152, salesAspect#907153, procurementAspect#907154, productGroup#907155], false
(281) Repartition
Arguments: 37, true
(282) Join
Arguments: LeftOuter, (product#907130 = internalUUID#907145)
(283) Project
Arguments: [product#907130, plant#907131, orderDateTime#907132, productPlant#907143, systemId#907144, internalUUID#907145, id#907146, displayId#907147, name#907148, baseUnitOfMeasure#907149, unitOfMeasures#907150, unitOfMeasureConversions#907151, productionAspect#907152, salesAspect#907153, procurementAspect#907154, productGroup#907155, filter(unitOfMeasureConversions#907151, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907143.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907143.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907149.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907149.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907156]
(284) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907156.quantityNumerator), true, [quantityNumerator#907157]
(285) Project
Arguments: [product#907130, plant#907131, orderDateTime#907132, productPlant#907143, systemId#907144, internalUUID#907145, id#907146, displayId#907147, name#907148, baseUnitOfMeasure#907149, unitOfMeasures#907150, unitOfMeasureConversions#907151, productionAspect#907152, salesAspect#907153, procurementAspect#907154, productGroup#907155, filteredUnitOfMeasureConversions#907156, quantityNumerator#907157]
(286) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907156.quantityDenominator), true, [quantityDenominator#907158]
(287) Project
Arguments: [product#907130, plant#907131, orderDateTime#907132, productPlant#907143, systemId#907144, internalUUID#907145, id#907146, displayId#907147, name#907148, baseUnitOfMeasure#907149, unitOfMeasures#907150, unitOfMeasureConversions#907151, productionAspect#907152, salesAspect#907153, procurementAspect#907154, productGroup#907155, filteredUnitOfMeasureConversions#907156, quantityNumerator#907157, quantityDenominator#907158]
(288) Project
Arguments: [product#907130, plant#907131, orderDateTime#907132, productPlant#907143, systemId#907144, internalUUID#907145, id#907146, displayId#907147, name#907148, baseUnitOfMeasure#907149, unitOfMeasures#907150, unitOfMeasureConversions#907151, productionAspect#907152, salesAspect#907153, procurementAspect#907154, productGroup#907155, filteredUnitOfMeasureConversions#907156, quantityNumerator#907157, quantityDenominator#907158, (cast(quantityNumerator#907157 as double) / cast(quantityDenominator#907158 as double)) AS outboundUnit#907159]
(289) Project
Arguments: [product#907130, plant#907131, orderDateTime#907132, productPlant#907143, systemId#907144, internalUUID#907145, id#907146, displayId#907147, name#907148, baseUnitOfMeasure#907149, unitOfMeasures#907150, unitOfMeasureConversions#907151, productionAspect#907152, salesAspect#907153, procurementAspect#907154, productGroup#907155, filteredUnitOfMeasureConversions#907156, quantityNumerator#907157, quantityDenominator#907158, CASE WHEN (isnull(outboundUnit#907159) OR (outboundUnit#907159 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907159 END AS outboundUnit#907160]
(290) Project
Arguments: [product#907130, plant#907131, orderDateTime#907132, productPlant#907143, outboundUnit#907160]
(291) Project
Arguments: [plant#907131]
(292) Deduplicate
Arguments: [plant#907131]
(293) Join
Arguments: Inner, (plantUuid#907127 = plant#907131)
(294) Project
Arguments: [plantId#907126, plantUuid#907127, storageLocId#907128, storageLocUuid#907129]
(295) Join
Arguments: Inner, (plant#907100.internalRefUUID <=> plantUuid#907127)
(296) Generate
Arguments: explode(filter(stockQuantities#907102, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#907129) AND (lambda x#905594.storageLocation.Id = storageLocId#907128)), lambda x#905594, false))), false, [stockQuantity#907161]
(297) Project
Arguments: [systemId#907097, internalUUID#907098, product#907099, plant#907100, calculationDateTime#907101, stockQuantities#907102, plantId#907126, plantUuid#907127, storageLocId#907128, storageLocUuid#907129, stockQuantity#907161]
(298) Aggregate
Arguments: [plantUuid#907127, internalUUID#907098, plant#907100, product#907099, systemId#907097], [plantUuid#907127, internalUUID#907098, plant#907100, product#907099, systemId#907097, first(calculationDateTime#907101, false) AS calculationDateTime#907162, collect_list(stockQuantity#907161, 0, 0) AS stockQuantities#907163]
(299) Project
Arguments: [systemId#907097, internalUUID#907098, product#907099, plant#907100, calculationDateTime#907162, stockQuantities#907163]
(300) Generate
Arguments: explode(stockQuantities#907163), false, [stockQuantity#907164]
(301) Project
Arguments: [systemId#907097, internalUUID#907098, product#907099, plant#907100, calculationDateTime#907162, stockQuantities#907163, stockQuantity#907164]
(302) Project
Arguments: [plant#907100.id AS plant#907165, plant#907100.internalRefUUID AS plantUuid#907166, product#907099.id AS product#907167, product#907099.internalRefUUID AS productUuid#907168, calculationDateTime#907162, stockQuantity#907164.storagelocation.id AS storageLocId#907169, stockQuantity#907164.storagelocation.internalRefUUID AS storageLocUuid#907170, stockQuantity#907164.quantity.measure AS quantity#907171, stockQuantity#907164.specialStockIndicator.code AS specialStockIndicator#907172, stockQuantity#907164.stockType.code AS stockType#907173]
(303) Filter
Arguments: ((specialStockIndicator#907172 = ) AND (stockType#907173 = 01))
(304) LogicalRelation
Arguments: parquet, [product#907174, plant#907175, orderDateTime#907176, planningStartDateTime#907177], false
(305) RepartitionByExpression
Arguments: [product#907174, plant#907175], 37
(306) Project
Arguments: [product#907174, plant#907175, orderDateTime#907176]
(307) LogicalRelation
Arguments: parquet, [systemId#907178, internalUUID#907179, plant#907180, product#907181, blockedForReplenishmentStartingFrom#907182, productionAspect#907183, salesPlant#907184, listing#907185, sourceOfSupplyCategory#907186], false
(308) Repartition
Arguments: 37, true
(309) Project
Arguments: [systemId#907178, internalUUID#907179, plant#907180, product#907181, blockedForReplenishmentStartingFrom#907182, productionAspect#907183, salesPlant#907184, listing#907185, sourceOfSupplyCategory#907186, struct(systemId, systemId#907178, internalUUID, internalUUID#907179, plant, plant#907180, product, product#907181, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907182, productionAspect, productionAspect#907183, salesPlant, salesPlant#907184, listing, listing#907185, sourceOfSupplyCategory, sourceOfSupplyCategory#907186) AS productPlant#907187]
(310) Project
Arguments: [productPlant#907187]
(311) Join
Arguments: LeftOuter, ((product#907174 <=> productPlant#907187.product.internalRefUUID) AND (plant#907175 <=> productPlant#907187.plant.internalRefUUID))
(312) Project
Arguments: [product#907174, plant#907175, orderDateTime#907176, productPlant#907187]
(313) LogicalRelation
Arguments: parquet, [systemId#907188, internalUUID#907189, id#907190, displayId#907191, name#907192, baseUnitOfMeasure#907193, unitOfMeasures#907194, unitOfMeasureConversions#907195, productionAspect#907196, salesAspect#907197, procurementAspect#907198, productGroup#907199], false
(314) Repartition
Arguments: 37, true
(315) Join
Arguments: LeftOuter, (product#907174 = internalUUID#907189)
(316) Project
Arguments: [product#907174, plant#907175, orderDateTime#907176, productPlant#907187, systemId#907188, internalUUID#907189, id#907190, displayId#907191, name#907192, baseUnitOfMeasure#907193, unitOfMeasures#907194, unitOfMeasureConversions#907195, productionAspect#907196, salesAspect#907197, procurementAspect#907198, productGroup#907199, filter(unitOfMeasureConversions#907195, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907187.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907187.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907193.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907193.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907200]
(317) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907200.quantityNumerator), true, [quantityNumerator#907201]
(318) Project
Arguments: [product#907174, plant#907175, orderDateTime#907176, productPlant#907187, systemId#907188, internalUUID#907189, id#907190, displayId#907191, name#907192, baseUnitOfMeasure#907193, unitOfMeasures#907194, unitOfMeasureConversions#907195, productionAspect#907196, salesAspect#907197, procurementAspect#907198, productGroup#907199, filteredUnitOfMeasureConversions#907200, quantityNumerator#907201]
(319) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907200.quantityDenominator), true, [quantityDenominator#907202]
(320) Project
Arguments: [product#907174, plant#907175, orderDateTime#907176, productPlant#907187, systemId#907188, internalUUID#907189, id#907190, displayId#907191, name#907192, baseUnitOfMeasure#907193, unitOfMeasures#907194, unitOfMeasureConversions#907195, productionAspect#907196, salesAspect#907197, procurementAspect#907198, productGroup#907199, filteredUnitOfMeasureConversions#907200, quantityNumerator#907201, quantityDenominator#907202]
(321) Project
Arguments: [product#907174, plant#907175, orderDateTime#907176, productPlant#907187, systemId#907188, internalUUID#907189, id#907190, displayId#907191, name#907192, baseUnitOfMeasure#907193, unitOfMeasures#907194, unitOfMeasureConversions#907195, productionAspect#907196, salesAspect#907197, procurementAspect#907198, productGroup#907199, filteredUnitOfMeasureConversions#907200, quantityNumerator#907201, quantityDenominator#907202, (cast(quantityNumerator#907201 as double) / cast(quantityDenominator#907202 as double)) AS outboundUnit#907203]
(322) Project
Arguments: [product#907174, plant#907175, orderDateTime#907176, productPlant#907187, systemId#907188, internalUUID#907189, id#907190, displayId#907191, name#907192, baseUnitOfMeasure#907193, unitOfMeasures#907194, unitOfMeasureConversions#907195, productionAspect#907196, salesAspect#907197, procurementAspect#907198, productGroup#907199, filteredUnitOfMeasureConversions#907200, quantityNumerator#907201, quantityDenominator#907202, CASE WHEN (isnull(outboundUnit#907203) OR (outboundUnit#907203 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907203 END AS outboundUnit#907204]
(323) Project
Arguments: [product#907174, plant#907175, orderDateTime#907176, productPlant#907187, outboundUnit#907204]
(324) Join
Arguments: Inner, ((plantUuid#907166 = plant#907175) AND (productUuid#907168 = product#907174))
(325) Filter
Arguments: (calculationDateTime#907162 <= orderDateTime#907176)
(326) Project
Arguments: [plantUuid#907166 AS plant#907205, productUuid#907168 AS product#907206, storageLocId#907169, calculationDateTime#907162, quantity#907171]
(327) Aggregate
Arguments: [plant#907205, product#907206, storageLocId#907169], [plant#907205, product#907206, storageLocId#907169, max(calculationDateTime#907162) AS max_calc_datetime#907207]
(328) Join
Arguments: Inner, ((((plant#907095 <=> plant#907205) AND (product#907096 <=> product#907206)) AND (storageLocId#907059 <=> storageLocId#907169)) AND (calculationDateTime#907052 <=> max_calc_datetime#907207))
(329) Project
Arguments: [plant#907095, product#907096, storageLocId#907059, calculationDateTime#907052, quantity#907061]
(330) Aggregate
Arguments: [product#907096, plant#907095], [product#907096, plant#907095, sum(quantity#907061) AS quantitySum#907208, min(calculationDateTime#907052) AS minCalculationDateTime#907209]
(331) Project
Arguments: [product#907096, plant#907095, quantitySum#907208, minCalculationDateTime#907209, round(quantitySum#907208, 0) AS roundedQuantitySum#907210]
(332) Join
Arguments: LeftOuter, ((plant#906957 = plant#907095) AND (product#906956 = product#907096))
(333) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, roundedQuantitySum#907210, minCalculationDateTime#907209]
(334) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, roundedQuantitySum#907210, minCalculationDateTime#907209, CASE WHEN isnotnull(minCalculationDateTime#907209) THEN minCalculationDateTime#907209 ELSE orderDateTime#906958 END AS stockDatetime#907211]
(335) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, roundedQuantitySum#907210, minCalculationDateTime#907209, stockDatetime#907211, CASE WHEN isnotnull(roundedQuantitySum#907210) THEN array(roundedQuantitySum#907210) ELSE array(0.0) END AS stockBatchQuantities#907212]
(336) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, roundedQuantitySum#907210, minCalculationDateTime#907209, stockDatetime#907211, stockBatchQuantities#907212, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#907213]
(337) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, roundedQuantitySum#907210, stockDatetime#907211, stockBatchQuantities#907212, stockBatchShelfLifeEndDatetimes#907213]
(338) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, stockBatchShelfLifeEndDatetimes#907213]
(339) LogicalRelation
Arguments: parquet, [product#905839, plant#905840, demandChannel#905841, demandStream#905842, considerVariance#905843, demandTimeBuckets#905844, demandPointInTimeStart#905845, demandPointInTimeEnd#905846, demandPointInTime#905847], false
(340) Join
Arguments: LeftOuter, ((plant#905840 <=> plant#906957) AND (product#905839 <=> product#906956))
(341) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, stockBatchShelfLifeEndDatetimes#907213, product#905839, plant#905840, demandChannel#905841, demandStream#905842, considerVariance#905843, demandTimeBuckets#905844, demandPointInTimeStart#905845, demandPointInTimeEnd#905846, demandPointInTime#905847, CASE WHEN isnotnull(product#905839) THEN struct(demandChannel, demandChannel#905841, demandStream, demandStream#905842, considerVariance, considerVariance#905843, demandTimeBuckets, demandTimeBuckets#905844, demandPointInTimeStart, demandPointInTimeStart#905845, demandPointInTimeEnd, demandPointInTimeEnd#905846, demandPointInTime, demandPointInTime#905847) 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#905849]
(342) Aggregate
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, stockBatchShelfLifeEndDatetimes#907213], [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, stockBatchShelfLifeEndDatetimes#907213, collect_list(rawDemands#905849, 0, 0) AS rawDemands#905850]
(343) SubqueryAlias
Arguments: wl
(344) LogicalRelation
Arguments: parquet, [systemId#906906, internalUUID#906907, id#906908, displayId#906909, name#906910, category#906911, companyCode#906912, address#906913, mainDistributionChain#906914, mainPurchasingOrganization#906915, validPurchasingOrganizations#906916, productGroup#906917], false
(345) Repartition
Arguments: 37, true
(346) Project
Arguments: [systemId#906906, internalUUID#906907, id#906908, displayId#906909, name#906910, category#906911, companyCode#906912, address#906913, mainDistributionChain#906914, mainPurchasingOrganization#906915, validPurchasingOrganizations#906916, productGroup#906917, address#906913.timezone.code AS timezonecode#906919]
(347) Join
Arguments: LeftOuter, (plant#906957 <=> internalUUID#906907)
(348) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, stockBatchShelfLifeEndDatetimes#907213, rawDemands#905850, systemId#906906, internalUUID#906907, id#906908, displayId#906909, name#906910, category#906911, companyCode#906912, address#906913, mainDistributionChain#906914, mainPurchasingOrganization#906915, validPurchasingOrganizations#906916, productGroup#906917, CASE WHEN isnotnull(timezonecode#906919) THEN timezonecode#906919 ELSE UTC END AS timezonecode#906921]
(349) Project
Arguments: [product#906956, plant#906957, orderDateTime#906958, productPlant#906969, outboundUnit#906986, stockDatetime#907211, stockBatchQuantities#907212, stockBatchShelfLifeEndDatetimes#907213, rawDemands#905850, timezonecode#906921]
(350) DeserializeToObject
Arguments: createexternalrow(invoke(product#906956.toString()), invoke(plant#906957.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#906958)), if (isnull(productPlant#906969)) null else createexternalrow(invoke(productPlant#906969.systemId.toString()), invoke(productPlant#906969.internalUUID.toString()), if (isnull(productPlant#906969.plant)) null else createexternalrow(invoke(productPlant#906969.plant.internalRefUUID.toString()), invoke(productPlant#906969.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#906969.product)) null else createexternalrow(invoke(productPlant#906969.product.internalRefUUID.toString()), invoke(productPlant#906969.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#906969.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#906969.productionAspect)) null else createexternalrow(if (isnull(productPlant#906969.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#906969.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#906969.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#906969.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#906969.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#906969.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#906969.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#906969.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#906969.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#906969.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#906969.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#906969.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#906969.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#906969.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#906969.salesPlant)) null else createexternalrow(if (isnull(productPlant#906969.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#906969.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#906969.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, 71540), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#906969.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#906969.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#906969.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#906969.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#906986)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#907211)), mapobjects(lambdavariable(MapObject, DoubleType, true, 71541), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 71541) as double))), stockBatchQuantities#907212, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 71542), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 71542) as timestamp)))), stockBatchShelfLifeEndDatetimes#907213, 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, 71543), 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, 71543))) 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, 71543).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, 71543).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, 71543).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).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, 71543).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, 71543).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, 71543).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).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, 71543).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#905850, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#906921.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#906942: org.apache.spark.sql.Row
(351) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@4013ddf1, 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#906947: 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#906952, 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#906953, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71531), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71531), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71532), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71532), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71533), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71533), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71534), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71534), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71535), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71535), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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#906954, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71537), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71537), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71538), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71538), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71539), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71539), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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#906955]
(353) Join
Arguments: LeftOuter, ((plant#906953 <=> plant#905389) AND (product#906952 <=> product#905388))
(354) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, plant#906953, dayBucketDemands#906954, pointInTimeDemands#906955]
(355) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955]
(356) LogicalRelation
Arguments: parquet, [product#908016, plant#908017, orderDateTime#908018, planningStartDateTime#908019], false
(357) RepartitionByExpression
Arguments: [product#908016, plant#908017], 37
(358) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018]
(359) LogicalRelation
Arguments: parquet, [systemId#908020, internalUUID#908021, plant#908022, product#908023, blockedForReplenishmentStartingFrom#908024, productionAspect#908025, salesPlant#908026, listing#908027, sourceOfSupplyCategory#908028], false
(360) Repartition
Arguments: 37, true
(361) Project
Arguments: [systemId#908020, internalUUID#908021, plant#908022, product#908023, blockedForReplenishmentStartingFrom#908024, productionAspect#908025, salesPlant#908026, listing#908027, sourceOfSupplyCategory#908028, struct(systemId, systemId#908020, internalUUID, internalUUID#908021, plant, plant#908022, product, product#908023, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#908024, productionAspect, productionAspect#908025, salesPlant, salesPlant#908026, listing, listing#908027, sourceOfSupplyCategory, sourceOfSupplyCategory#908028) AS productPlant#908029]
(362) Project
Arguments: [productPlant#908029]
(363) Join
Arguments: LeftOuter, ((product#908016 <=> productPlant#908029.product.internalRefUUID) AND (plant#908017 <=> productPlant#908029.plant.internalRefUUID))
(364) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029]
(365) LogicalRelation
Arguments: parquet, [systemId#908030, internalUUID#908031, id#908032, displayId#908033, name#908034, baseUnitOfMeasure#908035, unitOfMeasures#908036, unitOfMeasureConversions#908037, productionAspect#908038, salesAspect#908039, procurementAspect#908040, productGroup#908041], false
(366) Repartition
Arguments: 37, true
(367) Join
Arguments: LeftOuter, (product#908016 = internalUUID#908031)
(368) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, systemId#908030, internalUUID#908031, id#908032, displayId#908033, name#908034, baseUnitOfMeasure#908035, unitOfMeasures#908036, unitOfMeasureConversions#908037, productionAspect#908038, salesAspect#908039, procurementAspect#908040, productGroup#908041, filter(unitOfMeasureConversions#908037, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#908029.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#908029.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#908035.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#908035.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#908042]
(369) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908042.quantityNumerator), true, [quantityNumerator#908043]
(370) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, systemId#908030, internalUUID#908031, id#908032, displayId#908033, name#908034, baseUnitOfMeasure#908035, unitOfMeasures#908036, unitOfMeasureConversions#908037, productionAspect#908038, salesAspect#908039, procurementAspect#908040, productGroup#908041, filteredUnitOfMeasureConversions#908042, quantityNumerator#908043]
(371) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908042.quantityDenominator), true, [quantityDenominator#908044]
(372) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, systemId#908030, internalUUID#908031, id#908032, displayId#908033, name#908034, baseUnitOfMeasure#908035, unitOfMeasures#908036, unitOfMeasureConversions#908037, productionAspect#908038, salesAspect#908039, procurementAspect#908040, productGroup#908041, filteredUnitOfMeasureConversions#908042, quantityNumerator#908043, quantityDenominator#908044]
(373) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, systemId#908030, internalUUID#908031, id#908032, displayId#908033, name#908034, baseUnitOfMeasure#908035, unitOfMeasures#908036, unitOfMeasureConversions#908037, productionAspect#908038, salesAspect#908039, procurementAspect#908040, productGroup#908041, filteredUnitOfMeasureConversions#908042, quantityNumerator#908043, quantityDenominator#908044, (cast(quantityNumerator#908043 as double) / cast(quantityDenominator#908044 as double)) AS outboundUnit#908045]
(374) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, systemId#908030, internalUUID#908031, id#908032, displayId#908033, name#908034, baseUnitOfMeasure#908035, unitOfMeasures#908036, unitOfMeasureConversions#908037, productionAspect#908038, salesAspect#908039, procurementAspect#908040, productGroup#908041, filteredUnitOfMeasureConversions#908042, quantityNumerator#908043, quantityDenominator#908044, CASE WHEN (isnull(outboundUnit#908045) OR (outboundUnit#908045 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#908045 END AS outboundUnit#908046]
(375) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, outboundUnit#908046]
(376) LogicalRelation
Arguments: parquet, [systemId#908047, internalUUID#908048, product#908049, plant#908050, calculationDateTime#908051, stockQuantities#908052], false
(377) Repartition
Arguments: 37, true
(378) LogicalRelation
Arguments: parquet, [marketUnit#908053, description#908054, articleHierarchy#908055, defaultCurrency#908056, responsibilities#908057, replenishmentTypes#908058, distributionCenters#908059, assignedArticleHierarchyNodes#908060, minOrderQtySetting#908061, listingCheck#908062, odsSelection#908063, demandProfiles#908064, constraintProfiles#908065, optimizationProfiles#908066, orderGroupSplitProfiles#908067, supplierMinimumProfiles#908068, multipleRestrictionProfiles#908069, preferredUomSource#908070, handlingOfUnfulfilledDemands#908071, negligibleQuantitiesThreshold#908072, eventtype#908073], false
(379) Repartition
Arguments: 37, true
(380) Filter
Arguments: (marketUnit#908053 <=> AUTO_ALL_ProdLoc)
(381) Project
Arguments: [marketUnit#908053, description#908054, articleHierarchy#908055, defaultCurrency#908056, responsibilities#908057, replenishmentTypes#908058, distributionCenters#908059, assignedArticleHierarchyNodes#908060, minOrderQtySetting#908061, listingCheck#908062, odsSelection#908063, demandProfiles#908064, constraintProfiles#908065, optimizationProfiles#908066, orderGroupSplitProfiles#908067, supplierMinimumProfiles#908068, multipleRestrictionProfiles#908069, preferredUomSource#908070, handlingOfUnfulfilledDemands#908071, negligibleQuantitiesThreshold#908072, eventtype#908073]
(382) Project
Arguments: [distributionCenters#908059]
(383) Generate
Arguments: explode(distributionCenters#908059), false, [distributionCenters#908074]
(384) Project
Arguments: [distributionCenters#908074]
(385) Generate
Arguments: explode(distributionCenters#908074.storageLocations), false, [storageLocations#908075]
(386) Project
Arguments: [distributionCenters#908074.id AS plantId#908076, distributionCenters#908074.internalRefUUID AS plantUuid#908077, storageLocations#908075]
(387) Project
Arguments: [plantId#908076, plantUuid#908077, storageLocations#908075.id AS storageLocId#908078, storageLocations#908075.internalRefUUID AS storageLocUuid#908079]
(388) LogicalRelation
Arguments: parquet, [product#908080, plant#908081, orderDateTime#908082, planningStartDateTime#908083], false
(389) RepartitionByExpression
Arguments: [product#908080, plant#908081], 37
(390) Project
Arguments: [product#908080, plant#908081, orderDateTime#908082]
(391) LogicalRelation
Arguments: parquet, [systemId#908084, internalUUID#908085, plant#908086, product#908087, blockedForReplenishmentStartingFrom#908088, productionAspect#908089, salesPlant#908090, listing#908091, sourceOfSupplyCategory#908092], false
(392) Repartition
Arguments: 37, true
(393) Project
Arguments: [systemId#908084, internalUUID#908085, plant#908086, product#908087, blockedForReplenishmentStartingFrom#908088, productionAspect#908089, salesPlant#908090, listing#908091, sourceOfSupplyCategory#908092, struct(systemId, systemId#908084, internalUUID, internalUUID#908085, plant, plant#908086, product, product#908087, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#908088, productionAspect, productionAspect#908089, salesPlant, salesPlant#908090, listing, listing#908091, sourceOfSupplyCategory, sourceOfSupplyCategory#908092) AS productPlant#908093]
(394) Project
Arguments: [productPlant#908093]
(395) Join
Arguments: LeftOuter, ((product#908080 <=> productPlant#908093.product.internalRefUUID) AND (plant#908081 <=> productPlant#908093.plant.internalRefUUID))
(396) Project
Arguments: [product#908080, plant#908081, orderDateTime#908082, productPlant#908093]
(397) LogicalRelation
Arguments: parquet, [systemId#908094, internalUUID#908095, id#908096, displayId#908097, name#908098, baseUnitOfMeasure#908099, unitOfMeasures#908100, unitOfMeasureConversions#908101, productionAspect#908102, salesAspect#908103, procurementAspect#908104, productGroup#908105], false
(398) Repartition
Arguments: 37, true
(399) Join
Arguments: LeftOuter, (product#908080 = internalUUID#908095)
(400) Project
Arguments: [product#908080, plant#908081, orderDateTime#908082, productPlant#908093, systemId#908094, internalUUID#908095, id#908096, displayId#908097, name#908098, baseUnitOfMeasure#908099, unitOfMeasures#908100, unitOfMeasureConversions#908101, productionAspect#908102, salesAspect#908103, procurementAspect#908104, productGroup#908105, filter(unitOfMeasureConversions#908101, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#908093.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#908093.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#908099.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#908099.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#908106]
(401) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908106.quantityNumerator), true, [quantityNumerator#908107]
(402) Project
Arguments: [product#908080, plant#908081, orderDateTime#908082, productPlant#908093, systemId#908094, internalUUID#908095, id#908096, displayId#908097, name#908098, baseUnitOfMeasure#908099, unitOfMeasures#908100, unitOfMeasureConversions#908101, productionAspect#908102, salesAspect#908103, procurementAspect#908104, productGroup#908105, filteredUnitOfMeasureConversions#908106, quantityNumerator#908107]
(403) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908106.quantityDenominator), true, [quantityDenominator#908108]
(404) Project
Arguments: [product#908080, plant#908081, orderDateTime#908082, productPlant#908093, systemId#908094, internalUUID#908095, id#908096, displayId#908097, name#908098, baseUnitOfMeasure#908099, unitOfMeasures#908100, unitOfMeasureConversions#908101, productionAspect#908102, salesAspect#908103, procurementAspect#908104, productGroup#908105, filteredUnitOfMeasureConversions#908106, quantityNumerator#908107, quantityDenominator#908108]
(405) Project
Arguments: [product#908080, plant#908081, orderDateTime#908082, productPlant#908093, systemId#908094, internalUUID#908095, id#908096, displayId#908097, name#908098, baseUnitOfMeasure#908099, unitOfMeasures#908100, unitOfMeasureConversions#908101, productionAspect#908102, salesAspect#908103, procurementAspect#908104, productGroup#908105, filteredUnitOfMeasureConversions#908106, quantityNumerator#908107, quantityDenominator#908108, (cast(quantityNumerator#908107 as double) / cast(quantityDenominator#908108 as double)) AS outboundUnit#908109]
(406) Project
Arguments: [product#908080, plant#908081, orderDateTime#908082, productPlant#908093, systemId#908094, internalUUID#908095, id#908096, displayId#908097, name#908098, baseUnitOfMeasure#908099, unitOfMeasures#908100, unitOfMeasureConversions#908101, productionAspect#908102, salesAspect#908103, procurementAspect#908104, productGroup#908105, filteredUnitOfMeasureConversions#908106, quantityNumerator#908107, quantityDenominator#908108, CASE WHEN (isnull(outboundUnit#908109) OR (outboundUnit#908109 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#908109 END AS outboundUnit#908110]
(407) Project
Arguments: [product#908080, plant#908081, orderDateTime#908082, productPlant#908093, outboundUnit#908110]
(408) Project
Arguments: [plant#908081]
(409) Deduplicate
Arguments: [plant#908081]
(410) Join
Arguments: Inner, (plantUuid#908077 = plant#908081)
(411) Project
Arguments: [plantId#908076, plantUuid#908077, storageLocId#908078, storageLocUuid#908079]
(412) Join
Arguments: Inner, (plant#908050.internalRefUUID <=> plantUuid#908077)
(413) Generate
Arguments: explode(filter(stockQuantities#908052, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#908079) AND (lambda x#905594.storageLocation.Id = storageLocId#908078)), lambda x#905594, false))), false, [stockQuantity#908111]
(414) Project
Arguments: [systemId#908047, internalUUID#908048, product#908049, plant#908050, calculationDateTime#908051, stockQuantities#908052, plantId#908076, plantUuid#908077, storageLocId#908078, storageLocUuid#908079, stockQuantity#908111]
(415) Aggregate
Arguments: [plantUuid#908077, internalUUID#908048, plant#908050, product#908049, systemId#908047], [plantUuid#908077, internalUUID#908048, plant#908050, product#908049, systemId#908047, first(calculationDateTime#908051, false) AS calculationDateTime#908112, collect_list(stockQuantity#908111, 0, 0) AS stockQuantities#908113]
(416) Project
Arguments: [systemId#908047, internalUUID#908048, product#908049, plant#908050, calculationDateTime#908112, stockQuantities#908113]
(417) Generate
Arguments: explode(stockQuantities#908113), false, [stockQuantity#908114]
(418) Project
Arguments: [systemId#908047, internalUUID#908048, product#908049, plant#908050, calculationDateTime#908112, stockQuantities#908113, stockQuantity#908114]
(419) Project
Arguments: [plant#908050.id AS plant#908115, plant#908050.internalRefUUID AS plantUuid#908116, product#908049.id AS product#908117, product#908049.internalRefUUID AS productUuid#908118, calculationDateTime#908112, stockQuantity#908114.storagelocation.id AS storageLocId#908119, stockQuantity#908114.storagelocation.internalRefUUID AS storageLocUuid#908120, stockQuantity#908114.quantity.measure AS quantity#908121, stockQuantity#908114.specialStockIndicator.code AS specialStockIndicator#908122, stockQuantity#908114.stockType.code AS stockType#908123]
(420) Filter
Arguments: ((specialStockIndicator#908122 = ) AND (stockType#908123 = 01))
(421) LogicalRelation
Arguments: parquet, [product#908124, plant#908125, orderDateTime#908126, planningStartDateTime#908127], false
(422) RepartitionByExpression
Arguments: [product#908124, plant#908125], 37
(423) Project
Arguments: [product#908124, plant#908125, orderDateTime#908126]
(424) LogicalRelation
Arguments: parquet, [systemId#908128, internalUUID#908129, plant#908130, product#908131, blockedForReplenishmentStartingFrom#908132, productionAspect#908133, salesPlant#908134, listing#908135, sourceOfSupplyCategory#908136], false
(425) Repartition
Arguments: 37, true
(426) Project
Arguments: [systemId#908128, internalUUID#908129, plant#908130, product#908131, blockedForReplenishmentStartingFrom#908132, productionAspect#908133, salesPlant#908134, listing#908135, sourceOfSupplyCategory#908136, struct(systemId, systemId#908128, internalUUID, internalUUID#908129, plant, plant#908130, product, product#908131, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#908132, productionAspect, productionAspect#908133, salesPlant, salesPlant#908134, listing, listing#908135, sourceOfSupplyCategory, sourceOfSupplyCategory#908136) AS productPlant#908137]
(427) Project
Arguments: [productPlant#908137]
(428) Join
Arguments: LeftOuter, ((product#908124 <=> productPlant#908137.product.internalRefUUID) AND (plant#908125 <=> productPlant#908137.plant.internalRefUUID))
(429) Project
Arguments: [product#908124, plant#908125, orderDateTime#908126, productPlant#908137]
(430) LogicalRelation
Arguments: parquet, [systemId#908138, internalUUID#908139, id#908140, displayId#908141, name#908142, baseUnitOfMeasure#908143, unitOfMeasures#908144, unitOfMeasureConversions#908145, productionAspect#908146, salesAspect#908147, procurementAspect#908148, productGroup#908149], false
(431) Repartition
Arguments: 37, true
(432) Join
Arguments: LeftOuter, (product#908124 = internalUUID#908139)
(433) Project
Arguments: [product#908124, plant#908125, orderDateTime#908126, productPlant#908137, systemId#908138, internalUUID#908139, id#908140, displayId#908141, name#908142, baseUnitOfMeasure#908143, unitOfMeasures#908144, unitOfMeasureConversions#908145, productionAspect#908146, salesAspect#908147, procurementAspect#908148, productGroup#908149, filter(unitOfMeasureConversions#908145, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#908137.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#908137.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#908143.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#908143.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#908150]
(434) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908150.quantityNumerator), true, [quantityNumerator#908151]
(435) Project
Arguments: [product#908124, plant#908125, orderDateTime#908126, productPlant#908137, systemId#908138, internalUUID#908139, id#908140, displayId#908141, name#908142, baseUnitOfMeasure#908143, unitOfMeasures#908144, unitOfMeasureConversions#908145, productionAspect#908146, salesAspect#908147, procurementAspect#908148, productGroup#908149, filteredUnitOfMeasureConversions#908150, quantityNumerator#908151]
(436) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908150.quantityDenominator), true, [quantityDenominator#908152]
(437) Project
Arguments: [product#908124, plant#908125, orderDateTime#908126, productPlant#908137, systemId#908138, internalUUID#908139, id#908140, displayId#908141, name#908142, baseUnitOfMeasure#908143, unitOfMeasures#908144, unitOfMeasureConversions#908145, productionAspect#908146, salesAspect#908147, procurementAspect#908148, productGroup#908149, filteredUnitOfMeasureConversions#908150, quantityNumerator#908151, quantityDenominator#908152]
(438) Project
Arguments: [product#908124, plant#908125, orderDateTime#908126, productPlant#908137, systemId#908138, internalUUID#908139, id#908140, displayId#908141, name#908142, baseUnitOfMeasure#908143, unitOfMeasures#908144, unitOfMeasureConversions#908145, productionAspect#908146, salesAspect#908147, procurementAspect#908148, productGroup#908149, filteredUnitOfMeasureConversions#908150, quantityNumerator#908151, quantityDenominator#908152, (cast(quantityNumerator#908151 as double) / cast(quantityDenominator#908152 as double)) AS outboundUnit#908153]
(439) Project
Arguments: [product#908124, plant#908125, orderDateTime#908126, productPlant#908137, systemId#908138, internalUUID#908139, id#908140, displayId#908141, name#908142, baseUnitOfMeasure#908143, unitOfMeasures#908144, unitOfMeasureConversions#908145, productionAspect#908146, salesAspect#908147, procurementAspect#908148, productGroup#908149, filteredUnitOfMeasureConversions#908150, quantityNumerator#908151, quantityDenominator#908152, CASE WHEN (isnull(outboundUnit#908153) OR (outboundUnit#908153 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#908153 END AS outboundUnit#908154]
(440) Project
Arguments: [product#908124, plant#908125, orderDateTime#908126, productPlant#908137, outboundUnit#908154]
(441) Join
Arguments: Inner, ((plantUuid#908116 = plant#908125) AND (productUuid#908118 = product#908124))
(442) Filter
Arguments: (calculationDateTime#908112 <= orderDateTime#908126)
(443) Project
Arguments: [plantUuid#908116 AS plant#908155, productUuid#908118 AS product#908156, storageLocId#908119, calculationDateTime#908112, quantity#908121]
(444) LogicalRelation
Arguments: parquet, [systemId#908157, internalUUID#908158, product#908159, plant#908160, calculationDateTime#908161, stockQuantities#908162], false
(445) Repartition
Arguments: 37, true
(446) LogicalRelation
Arguments: parquet, [marketUnit#908163, description#908164, articleHierarchy#908165, defaultCurrency#908166, responsibilities#908167, replenishmentTypes#908168, distributionCenters#908169, assignedArticleHierarchyNodes#908170, minOrderQtySetting#908171, listingCheck#908172, odsSelection#908173, demandProfiles#908174, constraintProfiles#908175, optimizationProfiles#908176, orderGroupSplitProfiles#908177, supplierMinimumProfiles#908178, multipleRestrictionProfiles#908179, preferredUomSource#908180, handlingOfUnfulfilledDemands#908181, negligibleQuantitiesThreshold#908182, eventtype#908183], false
(447) Repartition
Arguments: 37, true
(448) Filter
Arguments: (marketUnit#908163 <=> AUTO_ALL_ProdLoc)
(449) Project
Arguments: [marketUnit#908163, description#908164, articleHierarchy#908165, defaultCurrency#908166, responsibilities#908167, replenishmentTypes#908168, distributionCenters#908169, assignedArticleHierarchyNodes#908170, minOrderQtySetting#908171, listingCheck#908172, odsSelection#908173, demandProfiles#908174, constraintProfiles#908175, optimizationProfiles#908176, orderGroupSplitProfiles#908177, supplierMinimumProfiles#908178, multipleRestrictionProfiles#908179, preferredUomSource#908180, handlingOfUnfulfilledDemands#908181, negligibleQuantitiesThreshold#908182, eventtype#908183]
(450) Project
Arguments: [distributionCenters#908169]
(451) Generate
Arguments: explode(distributionCenters#908169), false, [distributionCenters#908184]
(452) Project
Arguments: [distributionCenters#908184]
(453) Generate
Arguments: explode(distributionCenters#908184.storageLocations), false, [storageLocations#908185]
(454) Project
Arguments: [distributionCenters#908184.id AS plantId#908186, distributionCenters#908184.internalRefUUID AS plantUuid#908187, storageLocations#908185]
(455) Project
Arguments: [plantId#908186, plantUuid#908187, storageLocations#908185.id AS storageLocId#908188, storageLocations#908185.internalRefUUID AS storageLocUuid#908189]
(456) LogicalRelation
Arguments: parquet, [product#908190, plant#908191, orderDateTime#908192, planningStartDateTime#908193], false
(457) RepartitionByExpression
Arguments: [product#908190, plant#908191], 37
(458) Project
Arguments: [product#908190, plant#908191, orderDateTime#908192]
(459) LogicalRelation
Arguments: parquet, [systemId#908194, internalUUID#908195, plant#908196, product#908197, blockedForReplenishmentStartingFrom#908198, productionAspect#908199, salesPlant#908200, listing#908201, sourceOfSupplyCategory#908202], false
(460) Repartition
Arguments: 37, true
(461) Project
Arguments: [systemId#908194, internalUUID#908195, plant#908196, product#908197, blockedForReplenishmentStartingFrom#908198, productionAspect#908199, salesPlant#908200, listing#908201, sourceOfSupplyCategory#908202, struct(systemId, systemId#908194, internalUUID, internalUUID#908195, plant, plant#908196, product, product#908197, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#908198, productionAspect, productionAspect#908199, salesPlant, salesPlant#908200, listing, listing#908201, sourceOfSupplyCategory, sourceOfSupplyCategory#908202) AS productPlant#908203]
(462) Project
Arguments: [productPlant#908203]
(463) Join
Arguments: LeftOuter, ((product#908190 <=> productPlant#908203.product.internalRefUUID) AND (plant#908191 <=> productPlant#908203.plant.internalRefUUID))
(464) Project
Arguments: [product#908190, plant#908191, orderDateTime#908192, productPlant#908203]
(465) LogicalRelation
Arguments: parquet, [systemId#908204, internalUUID#908205, id#908206, displayId#908207, name#908208, baseUnitOfMeasure#908209, unitOfMeasures#908210, unitOfMeasureConversions#908211, productionAspect#908212, salesAspect#908213, procurementAspect#908214, productGroup#908215], false
(466) Repartition
Arguments: 37, true
(467) Join
Arguments: LeftOuter, (product#908190 = internalUUID#908205)
(468) Project
Arguments: [product#908190, plant#908191, orderDateTime#908192, productPlant#908203, systemId#908204, internalUUID#908205, id#908206, displayId#908207, name#908208, baseUnitOfMeasure#908209, unitOfMeasures#908210, unitOfMeasureConversions#908211, productionAspect#908212, salesAspect#908213, procurementAspect#908214, productGroup#908215, filter(unitOfMeasureConversions#908211, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#908203.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#908203.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#908209.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#908209.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#908216]
(469) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908216.quantityNumerator), true, [quantityNumerator#908217]
(470) Project
Arguments: [product#908190, plant#908191, orderDateTime#908192, productPlant#908203, systemId#908204, internalUUID#908205, id#908206, displayId#908207, name#908208, baseUnitOfMeasure#908209, unitOfMeasures#908210, unitOfMeasureConversions#908211, productionAspect#908212, salesAspect#908213, procurementAspect#908214, productGroup#908215, filteredUnitOfMeasureConversions#908216, quantityNumerator#908217]
(471) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908216.quantityDenominator), true, [quantityDenominator#908218]
(472) Project
Arguments: [product#908190, plant#908191, orderDateTime#908192, productPlant#908203, systemId#908204, internalUUID#908205, id#908206, displayId#908207, name#908208, baseUnitOfMeasure#908209, unitOfMeasures#908210, unitOfMeasureConversions#908211, productionAspect#908212, salesAspect#908213, procurementAspect#908214, productGroup#908215, filteredUnitOfMeasureConversions#908216, quantityNumerator#908217, quantityDenominator#908218]
(473) Project
Arguments: [product#908190, plant#908191, orderDateTime#908192, productPlant#908203, systemId#908204, internalUUID#908205, id#908206, displayId#908207, name#908208, baseUnitOfMeasure#908209, unitOfMeasures#908210, unitOfMeasureConversions#908211, productionAspect#908212, salesAspect#908213, procurementAspect#908214, productGroup#908215, filteredUnitOfMeasureConversions#908216, quantityNumerator#908217, quantityDenominator#908218, (cast(quantityNumerator#908217 as double) / cast(quantityDenominator#908218 as double)) AS outboundUnit#908219]
(474) Project
Arguments: [product#908190, plant#908191, orderDateTime#908192, productPlant#908203, systemId#908204, internalUUID#908205, id#908206, displayId#908207, name#908208, baseUnitOfMeasure#908209, unitOfMeasures#908210, unitOfMeasureConversions#908211, productionAspect#908212, salesAspect#908213, procurementAspect#908214, productGroup#908215, filteredUnitOfMeasureConversions#908216, quantityNumerator#908217, quantityDenominator#908218, CASE WHEN (isnull(outboundUnit#908219) OR (outboundUnit#908219 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#908219 END AS outboundUnit#908220]
(475) Project
Arguments: [product#908190, plant#908191, orderDateTime#908192, productPlant#908203, outboundUnit#908220]
(476) Project
Arguments: [plant#908191]
(477) Deduplicate
Arguments: [plant#908191]
(478) Join
Arguments: Inner, (plantUuid#908187 = plant#908191)
(479) Project
Arguments: [plantId#908186, plantUuid#908187, storageLocId#908188, storageLocUuid#908189]
(480) Join
Arguments: Inner, (plant#908160.internalRefUUID <=> plantUuid#908187)
(481) Generate
Arguments: explode(filter(stockQuantities#908162, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#908189) AND (lambda x#905594.storageLocation.Id = storageLocId#908188)), lambda x#905594, false))), false, [stockQuantity#908221]
(482) Project
Arguments: [systemId#908157, internalUUID#908158, product#908159, plant#908160, calculationDateTime#908161, stockQuantities#908162, plantId#908186, plantUuid#908187, storageLocId#908188, storageLocUuid#908189, stockQuantity#908221]
(483) Aggregate
Arguments: [plantUuid#908187, internalUUID#908158, plant#908160, product#908159, systemId#908157], [plantUuid#908187, internalUUID#908158, plant#908160, product#908159, systemId#908157, first(calculationDateTime#908161, false) AS calculationDateTime#908222, collect_list(stockQuantity#908221, 0, 0) AS stockQuantities#908223]
(484) Project
Arguments: [systemId#908157, internalUUID#908158, product#908159, plant#908160, calculationDateTime#908222, stockQuantities#908223]
(485) Generate
Arguments: explode(stockQuantities#908223), false, [stockQuantity#908224]
(486) Project
Arguments: [systemId#908157, internalUUID#908158, product#908159, plant#908160, calculationDateTime#908222, stockQuantities#908223, stockQuantity#908224]
(487) Project
Arguments: [plant#908160.id AS plant#908225, plant#908160.internalRefUUID AS plantUuid#908226, product#908159.id AS product#908227, product#908159.internalRefUUID AS productUuid#908228, calculationDateTime#908222, stockQuantity#908224.storagelocation.id AS storageLocId#908229, stockQuantity#908224.storagelocation.internalRefUUID AS storageLocUuid#908230, stockQuantity#908224.quantity.measure AS quantity#908231, stockQuantity#908224.specialStockIndicator.code AS specialStockIndicator#908232, stockQuantity#908224.stockType.code AS stockType#908233]
(488) Filter
Arguments: ((specialStockIndicator#908232 = ) AND (stockType#908233 = 01))
(489) LogicalRelation
Arguments: parquet, [product#908234, plant#908235, orderDateTime#908236, planningStartDateTime#908237], false
(490) RepartitionByExpression
Arguments: [product#908234, plant#908235], 37
(491) Project
Arguments: [product#908234, plant#908235, orderDateTime#908236]
(492) LogicalRelation
Arguments: parquet, [systemId#908238, internalUUID#908239, plant#908240, product#908241, blockedForReplenishmentStartingFrom#908242, productionAspect#908243, salesPlant#908244, listing#908245, sourceOfSupplyCategory#908246], false
(493) Repartition
Arguments: 37, true
(494) Project
Arguments: [systemId#908238, internalUUID#908239, plant#908240, product#908241, blockedForReplenishmentStartingFrom#908242, productionAspect#908243, salesPlant#908244, listing#908245, sourceOfSupplyCategory#908246, struct(systemId, systemId#908238, internalUUID, internalUUID#908239, plant, plant#908240, product, product#908241, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#908242, productionAspect, productionAspect#908243, salesPlant, salesPlant#908244, listing, listing#908245, sourceOfSupplyCategory, sourceOfSupplyCategory#908246) AS productPlant#908247]
(495) Project
Arguments: [productPlant#908247]
(496) Join
Arguments: LeftOuter, ((product#908234 <=> productPlant#908247.product.internalRefUUID) AND (plant#908235 <=> productPlant#908247.plant.internalRefUUID))
(497) Project
Arguments: [product#908234, plant#908235, orderDateTime#908236, productPlant#908247]
(498) LogicalRelation
Arguments: parquet, [systemId#908248, internalUUID#908249, id#908250, displayId#908251, name#908252, baseUnitOfMeasure#908253, unitOfMeasures#908254, unitOfMeasureConversions#908255, productionAspect#908256, salesAspect#908257, procurementAspect#908258, productGroup#908259], false
(499) Repartition
Arguments: 37, true
(500) Join
Arguments: LeftOuter, (product#908234 = internalUUID#908249)
(501) Project
Arguments: [product#908234, plant#908235, orderDateTime#908236, productPlant#908247, systemId#908248, internalUUID#908249, id#908250, displayId#908251, name#908252, baseUnitOfMeasure#908253, unitOfMeasures#908254, unitOfMeasureConversions#908255, productionAspect#908256, salesAspect#908257, procurementAspect#908258, productGroup#908259, filter(unitOfMeasureConversions#908255, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#908247.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#908247.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#908253.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#908253.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#908260]
(502) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908260.quantityNumerator), true, [quantityNumerator#908261]
(503) Project
Arguments: [product#908234, plant#908235, orderDateTime#908236, productPlant#908247, systemId#908248, internalUUID#908249, id#908250, displayId#908251, name#908252, baseUnitOfMeasure#908253, unitOfMeasures#908254, unitOfMeasureConversions#908255, productionAspect#908256, salesAspect#908257, procurementAspect#908258, productGroup#908259, filteredUnitOfMeasureConversions#908260, quantityNumerator#908261]
(504) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908260.quantityDenominator), true, [quantityDenominator#908262]
(505) Project
Arguments: [product#908234, plant#908235, orderDateTime#908236, productPlant#908247, systemId#908248, internalUUID#908249, id#908250, displayId#908251, name#908252, baseUnitOfMeasure#908253, unitOfMeasures#908254, unitOfMeasureConversions#908255, productionAspect#908256, salesAspect#908257, procurementAspect#908258, productGroup#908259, filteredUnitOfMeasureConversions#908260, quantityNumerator#908261, quantityDenominator#908262]
(506) Project
Arguments: [product#908234, plant#908235, orderDateTime#908236, productPlant#908247, systemId#908248, internalUUID#908249, id#908250, displayId#908251, name#908252, baseUnitOfMeasure#908253, unitOfMeasures#908254, unitOfMeasureConversions#908255, productionAspect#908256, salesAspect#908257, procurementAspect#908258, productGroup#908259, filteredUnitOfMeasureConversions#908260, quantityNumerator#908261, quantityDenominator#908262, (cast(quantityNumerator#908261 as double) / cast(quantityDenominator#908262 as double)) AS outboundUnit#908263]
(507) Project
Arguments: [product#908234, plant#908235, orderDateTime#908236, productPlant#908247, systemId#908248, internalUUID#908249, id#908250, displayId#908251, name#908252, baseUnitOfMeasure#908253, unitOfMeasures#908254, unitOfMeasureConversions#908255, productionAspect#908256, salesAspect#908257, procurementAspect#908258, productGroup#908259, filteredUnitOfMeasureConversions#908260, quantityNumerator#908261, quantityDenominator#908262, CASE WHEN (isnull(outboundUnit#908263) OR (outboundUnit#908263 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#908263 END AS outboundUnit#908264]
(508) Project
Arguments: [product#908234, plant#908235, orderDateTime#908236, productPlant#908247, outboundUnit#908264]
(509) Join
Arguments: Inner, ((plantUuid#908226 = plant#908235) AND (productUuid#908228 = product#908234))
(510) Filter
Arguments: (calculationDateTime#908222 <= orderDateTime#908236)
(511) Project
Arguments: [plantUuid#908226 AS plant#908265, productUuid#908228 AS product#908266, storageLocId#908229, calculationDateTime#908222, quantity#908231]
(512) Aggregate
Arguments: [plant#908265, product#908266, storageLocId#908229], [plant#908265, product#908266, storageLocId#908229, max(calculationDateTime#908222) AS max_calc_datetime#908267]
(513) Join
Arguments: Inner, ((((plant#908155 <=> plant#908265) AND (product#908156 <=> product#908266)) AND (storageLocId#908119 <=> storageLocId#908229)) AND (calculationDateTime#908112 <=> max_calc_datetime#908267))
(514) Project
Arguments: [plant#908155, product#908156, storageLocId#908119, calculationDateTime#908112, quantity#908121]
(515) Aggregate
Arguments: [product#908156, plant#908155], [product#908156, plant#908155, sum(quantity#908121) AS quantitySum#908268, min(calculationDateTime#908112) AS minCalculationDateTime#908269]
(516) Project
Arguments: [product#908156, plant#908155, quantitySum#908268, minCalculationDateTime#908269, round(quantitySum#908268, 0) AS roundedQuantitySum#908270]
(517) Join
Arguments: LeftOuter, ((plant#908017 = plant#908155) AND (product#908016 = product#908156))
(518) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, outboundUnit#908046, roundedQuantitySum#908270, minCalculationDateTime#908269]
(519) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, outboundUnit#908046, roundedQuantitySum#908270, minCalculationDateTime#908269, CASE WHEN isnotnull(minCalculationDateTime#908269) THEN minCalculationDateTime#908269 ELSE orderDateTime#908018 END AS stockDatetime#908271]
(520) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, outboundUnit#908046, roundedQuantitySum#908270, minCalculationDateTime#908269, stockDatetime#908271, CASE WHEN isnotnull(roundedQuantitySum#908270) THEN array(roundedQuantitySum#908270) ELSE array(0.0) END AS stockBatchQuantities#908272]
(521) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, outboundUnit#908046, roundedQuantitySum#908270, minCalculationDateTime#908269, stockDatetime#908271, stockBatchQuantities#908272, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#908273]
(522) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, outboundUnit#908046, roundedQuantitySum#908270, stockDatetime#908271, stockBatchQuantities#908272, stockBatchShelfLifeEndDatetimes#908273]
(523) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, outboundUnit#908046, stockDatetime#908271, stockBatchQuantities#908272, stockBatchShelfLifeEndDatetimes#908273]
(524) LogicalRelation
Arguments: parquet, [product#908274, plant#908275, orderDateTime#908276, planningStartDateTime#908277], false
(525) RepartitionByExpression
Arguments: [product#908274, plant#908275], 37
(526) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276]
(527) LogicalRelation
Arguments: parquet, [systemId#908278, internalUUID#908279, plant#908280, product#908281, blockedForReplenishmentStartingFrom#908282, productionAspect#908283, salesPlant#908284, listing#908285, sourceOfSupplyCategory#908286], false
(528) Repartition
Arguments: 37, true
(529) Project
Arguments: [systemId#908278, internalUUID#908279, plant#908280, product#908281, blockedForReplenishmentStartingFrom#908282, productionAspect#908283, salesPlant#908284, listing#908285, sourceOfSupplyCategory#908286, struct(systemId, systemId#908278, internalUUID, internalUUID#908279, plant, plant#908280, product, product#908281, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#908282, productionAspect, productionAspect#908283, salesPlant, salesPlant#908284, listing, listing#908285, sourceOfSupplyCategory, sourceOfSupplyCategory#908286) AS productPlant#908287]
(530) Project
Arguments: [productPlant#908287]
(531) Join
Arguments: LeftOuter, ((product#908274 <=> productPlant#908287.product.internalRefUUID) AND (plant#908275 <=> productPlant#908287.plant.internalRefUUID))
(532) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287]
(533) LogicalRelation
Arguments: parquet, [systemId#908288, internalUUID#908289, id#908290, displayId#908291, name#908292, baseUnitOfMeasure#908293, unitOfMeasures#908294, unitOfMeasureConversions#908295, productionAspect#908296, salesAspect#908297, procurementAspect#908298, productGroup#908299], false
(534) Repartition
Arguments: 37, true
(535) Join
Arguments: LeftOuter, (product#908274 = internalUUID#908289)
(536) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, systemId#908288, internalUUID#908289, id#908290, displayId#908291, name#908292, baseUnitOfMeasure#908293, unitOfMeasures#908294, unitOfMeasureConversions#908295, productionAspect#908296, salesAspect#908297, procurementAspect#908298, productGroup#908299, filter(unitOfMeasureConversions#908295, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#908287.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#908287.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#908293.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#908293.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#908300]
(537) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908300.quantityNumerator), true, [quantityNumerator#908301]
(538) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, systemId#908288, internalUUID#908289, id#908290, displayId#908291, name#908292, baseUnitOfMeasure#908293, unitOfMeasures#908294, unitOfMeasureConversions#908295, productionAspect#908296, salesAspect#908297, procurementAspect#908298, productGroup#908299, filteredUnitOfMeasureConversions#908300, quantityNumerator#908301]
(539) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908300.quantityDenominator), true, [quantityDenominator#908302]
(540) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, systemId#908288, internalUUID#908289, id#908290, displayId#908291, name#908292, baseUnitOfMeasure#908293, unitOfMeasures#908294, unitOfMeasureConversions#908295, productionAspect#908296, salesAspect#908297, procurementAspect#908298, productGroup#908299, filteredUnitOfMeasureConversions#908300, quantityNumerator#908301, quantityDenominator#908302]
(541) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, systemId#908288, internalUUID#908289, id#908290, displayId#908291, name#908292, baseUnitOfMeasure#908293, unitOfMeasures#908294, unitOfMeasureConversions#908295, productionAspect#908296, salesAspect#908297, procurementAspect#908298, productGroup#908299, filteredUnitOfMeasureConversions#908300, quantityNumerator#908301, quantityDenominator#908302, (cast(quantityNumerator#908301 as double) / cast(quantityDenominator#908302 as double)) AS outboundUnit#908303]
(542) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, systemId#908288, internalUUID#908289, id#908290, displayId#908291, name#908292, baseUnitOfMeasure#908293, unitOfMeasures#908294, unitOfMeasureConversions#908295, productionAspect#908296, salesAspect#908297, procurementAspect#908298, productGroup#908299, filteredUnitOfMeasureConversions#908300, quantityNumerator#908301, quantityDenominator#908302, CASE WHEN (isnull(outboundUnit#908303) OR (outboundUnit#908303 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#908303 END AS outboundUnit#908304]
(543) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, outboundUnit#908304]
(544) LogicalRelation
Arguments: parquet, [systemId#908305, internalUUID#908306, product#908307, plant#908308, calculationDateTime#908309, stockQuantities#908310], false
(545) Repartition
Arguments: 37, true
(546) LogicalRelation
Arguments: parquet, [marketUnit#908311, description#908312, articleHierarchy#908313, defaultCurrency#908314, responsibilities#908315, replenishmentTypes#908316, distributionCenters#908317, assignedArticleHierarchyNodes#908318, minOrderQtySetting#908319, listingCheck#908320, odsSelection#908321, demandProfiles#908322, constraintProfiles#908323, optimizationProfiles#908324, orderGroupSplitProfiles#908325, supplierMinimumProfiles#908326, multipleRestrictionProfiles#908327, preferredUomSource#908328, handlingOfUnfulfilledDemands#908329, negligibleQuantitiesThreshold#908330, eventtype#908331], false
(547) Repartition
Arguments: 37, true
(548) Filter
Arguments: (marketUnit#908311 <=> AUTO_ALL_ProdLoc)
(549) Project
Arguments: [marketUnit#908311, description#908312, articleHierarchy#908313, defaultCurrency#908314, responsibilities#908315, replenishmentTypes#908316, distributionCenters#908317, assignedArticleHierarchyNodes#908318, minOrderQtySetting#908319, listingCheck#908320, odsSelection#908321, demandProfiles#908322, constraintProfiles#908323, optimizationProfiles#908324, orderGroupSplitProfiles#908325, supplierMinimumProfiles#908326, multipleRestrictionProfiles#908327, preferredUomSource#908328, handlingOfUnfulfilledDemands#908329, negligibleQuantitiesThreshold#908330, eventtype#908331]
(550) Project
Arguments: [distributionCenters#908317]
(551) Generate
Arguments: explode(distributionCenters#908317), false, [distributionCenters#908332]
(552) Project
Arguments: [distributionCenters#908332]
(553) Generate
Arguments: explode(distributionCenters#908332.storageLocations), false, [storageLocations#908333]
(554) Project
Arguments: [distributionCenters#908332.id AS plantId#908334, distributionCenters#908332.internalRefUUID AS plantUuid#908335, storageLocations#908333]
(555) Project
Arguments: [plantId#908334, plantUuid#908335, storageLocations#908333.id AS storageLocId#908336, storageLocations#908333.internalRefUUID AS storageLocUuid#908337]
(556) LogicalRelation
Arguments: parquet, [product#908338, plant#908339, orderDateTime#908340, planningStartDateTime#908341], false
(557) RepartitionByExpression
Arguments: [product#908338, plant#908339], 37
(558) Project
Arguments: [product#908338, plant#908339, orderDateTime#908340]
(559) LogicalRelation
Arguments: parquet, [systemId#908342, internalUUID#908343, plant#908344, product#908345, blockedForReplenishmentStartingFrom#908346, productionAspect#908347, salesPlant#908348, listing#908349, sourceOfSupplyCategory#908350], false
(560) Repartition
Arguments: 37, true
(561) Project
Arguments: [systemId#908342, internalUUID#908343, plant#908344, product#908345, blockedForReplenishmentStartingFrom#908346, productionAspect#908347, salesPlant#908348, listing#908349, sourceOfSupplyCategory#908350, struct(systemId, systemId#908342, internalUUID, internalUUID#908343, plant, plant#908344, product, product#908345, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#908346, productionAspect, productionAspect#908347, salesPlant, salesPlant#908348, listing, listing#908349, sourceOfSupplyCategory, sourceOfSupplyCategory#908350) AS productPlant#908351]
(562) Project
Arguments: [productPlant#908351]
(563) Join
Arguments: LeftOuter, ((product#908338 <=> productPlant#908351.product.internalRefUUID) AND (plant#908339 <=> productPlant#908351.plant.internalRefUUID))
(564) Project
Arguments: [product#908338, plant#908339, orderDateTime#908340, productPlant#908351]
(565) LogicalRelation
Arguments: parquet, [systemId#908352, internalUUID#908353, id#908354, displayId#908355, name#908356, baseUnitOfMeasure#908357, unitOfMeasures#908358, unitOfMeasureConversions#908359, productionAspect#908360, salesAspect#908361, procurementAspect#908362, productGroup#908363], false
(566) Repartition
Arguments: 37, true
(567) Join
Arguments: LeftOuter, (product#908338 = internalUUID#908353)
(568) Project
Arguments: [product#908338, plant#908339, orderDateTime#908340, productPlant#908351, systemId#908352, internalUUID#908353, id#908354, displayId#908355, name#908356, baseUnitOfMeasure#908357, unitOfMeasures#908358, unitOfMeasureConversions#908359, productionAspect#908360, salesAspect#908361, procurementAspect#908362, productGroup#908363, filter(unitOfMeasureConversions#908359, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#908351.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#908351.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#908357.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#908357.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#908364]
(569) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908364.quantityNumerator), true, [quantityNumerator#908365]
(570) Project
Arguments: [product#908338, plant#908339, orderDateTime#908340, productPlant#908351, systemId#908352, internalUUID#908353, id#908354, displayId#908355, name#908356, baseUnitOfMeasure#908357, unitOfMeasures#908358, unitOfMeasureConversions#908359, productionAspect#908360, salesAspect#908361, procurementAspect#908362, productGroup#908363, filteredUnitOfMeasureConversions#908364, quantityNumerator#908365]
(571) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908364.quantityDenominator), true, [quantityDenominator#908366]
(572) Project
Arguments: [product#908338, plant#908339, orderDateTime#908340, productPlant#908351, systemId#908352, internalUUID#908353, id#908354, displayId#908355, name#908356, baseUnitOfMeasure#908357, unitOfMeasures#908358, unitOfMeasureConversions#908359, productionAspect#908360, salesAspect#908361, procurementAspect#908362, productGroup#908363, filteredUnitOfMeasureConversions#908364, quantityNumerator#908365, quantityDenominator#908366]
(573) Project
Arguments: [product#908338, plant#908339, orderDateTime#908340, productPlant#908351, systemId#908352, internalUUID#908353, id#908354, displayId#908355, name#908356, baseUnitOfMeasure#908357, unitOfMeasures#908358, unitOfMeasureConversions#908359, productionAspect#908360, salesAspect#908361, procurementAspect#908362, productGroup#908363, filteredUnitOfMeasureConversions#908364, quantityNumerator#908365, quantityDenominator#908366, (cast(quantityNumerator#908365 as double) / cast(quantityDenominator#908366 as double)) AS outboundUnit#908367]
(574) Project
Arguments: [product#908338, plant#908339, orderDateTime#908340, productPlant#908351, systemId#908352, internalUUID#908353, id#908354, displayId#908355, name#908356, baseUnitOfMeasure#908357, unitOfMeasures#908358, unitOfMeasureConversions#908359, productionAspect#908360, salesAspect#908361, procurementAspect#908362, productGroup#908363, filteredUnitOfMeasureConversions#908364, quantityNumerator#908365, quantityDenominator#908366, CASE WHEN (isnull(outboundUnit#908367) OR (outboundUnit#908367 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#908367 END AS outboundUnit#908368]
(575) Project
Arguments: [product#908338, plant#908339, orderDateTime#908340, productPlant#908351, outboundUnit#908368]
(576) Project
Arguments: [plant#908339]
(577) Deduplicate
Arguments: [plant#908339]
(578) Join
Arguments: Inner, (plantUuid#908335 = plant#908339)
(579) Project
Arguments: [plantId#908334, plantUuid#908335, storageLocId#908336, storageLocUuid#908337]
(580) Join
Arguments: Inner, (plant#908308.internalRefUUID <=> plantUuid#908335)
(581) Generate
Arguments: explode(filter(stockQuantities#908310, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#908337) AND (lambda x#905594.storageLocation.Id = storageLocId#908336)), lambda x#905594, false))), false, [stockQuantity#908369]
(582) Project
Arguments: [systemId#908305, internalUUID#908306, product#908307, plant#908308, calculationDateTime#908309, stockQuantities#908310, plantId#908334, plantUuid#908335, storageLocId#908336, storageLocUuid#908337, stockQuantity#908369]
(583) Aggregate
Arguments: [plantUuid#908335, internalUUID#908306, plant#908308, product#908307, systemId#908305], [plantUuid#908335, internalUUID#908306, plant#908308, product#908307, systemId#908305, first(calculationDateTime#908309, false) AS calculationDateTime#908370, collect_list(stockQuantity#908369, 0, 0) AS stockQuantities#908371]
(584) Project
Arguments: [systemId#908305, internalUUID#908306, product#908307, plant#908308, calculationDateTime#908370, stockQuantities#908371]
(585) Generate
Arguments: explode(stockQuantities#908371), false, [stockQuantity#908372]
(586) Project
Arguments: [systemId#908305, internalUUID#908306, product#908307, plant#908308, calculationDateTime#908370, stockQuantities#908371, stockQuantity#908372]
(587) Project
Arguments: [plant#908308.id AS plant#908373, plant#908308.internalRefUUID AS plantUuid#908374, product#908307.id AS product#908375, product#908307.internalRefUUID AS productUuid#908376, calculationDateTime#908370, stockQuantity#908372.storagelocation.id AS storageLocId#908377, stockQuantity#908372.storagelocation.internalRefUUID AS storageLocUuid#908378, stockQuantity#908372.quantity.measure AS quantity#908379, stockQuantity#908372.specialStockIndicator.code AS specialStockIndicator#908380, stockQuantity#908372.stockType.code AS stockType#908381]
(588) Filter
Arguments: ((specialStockIndicator#908380 = ) AND (stockType#908381 = 01))
(589) LogicalRelation
Arguments: parquet, [product#908382, plant#908383, orderDateTime#908384, planningStartDateTime#908385], false
(590) RepartitionByExpression
Arguments: [product#908382, plant#908383], 37
(591) Project
Arguments: [product#908382, plant#908383, orderDateTime#908384]
(592) LogicalRelation
Arguments: parquet, [systemId#908386, internalUUID#908387, plant#908388, product#908389, blockedForReplenishmentStartingFrom#908390, productionAspect#908391, salesPlant#908392, listing#908393, sourceOfSupplyCategory#908394], false
(593) Repartition
Arguments: 37, true
(594) Project
Arguments: [systemId#908386, internalUUID#908387, plant#908388, product#908389, blockedForReplenishmentStartingFrom#908390, productionAspect#908391, salesPlant#908392, listing#908393, sourceOfSupplyCategory#908394, struct(systemId, systemId#908386, internalUUID, internalUUID#908387, plant, plant#908388, product, product#908389, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#908390, productionAspect, productionAspect#908391, salesPlant, salesPlant#908392, listing, listing#908393, sourceOfSupplyCategory, sourceOfSupplyCategory#908394) AS productPlant#908395]
(595) Project
Arguments: [productPlant#908395]
(596) Join
Arguments: LeftOuter, ((product#908382 <=> productPlant#908395.product.internalRefUUID) AND (plant#908383 <=> productPlant#908395.plant.internalRefUUID))
(597) Project
Arguments: [product#908382, plant#908383, orderDateTime#908384, productPlant#908395]
(598) LogicalRelation
Arguments: parquet, [systemId#908396, internalUUID#908397, id#908398, displayId#908399, name#908400, baseUnitOfMeasure#908401, unitOfMeasures#908402, unitOfMeasureConversions#908403, productionAspect#908404, salesAspect#908405, procurementAspect#908406, productGroup#908407], false
(599) Repartition
Arguments: 37, true
(600) Join
Arguments: LeftOuter, (product#908382 = internalUUID#908397)
(601) Project
Arguments: [product#908382, plant#908383, orderDateTime#908384, productPlant#908395, systemId#908396, internalUUID#908397, id#908398, displayId#908399, name#908400, baseUnitOfMeasure#908401, unitOfMeasures#908402, unitOfMeasureConversions#908403, productionAspect#908404, salesAspect#908405, procurementAspect#908406, productGroup#908407, filter(unitOfMeasureConversions#908403, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#908395.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#908395.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#908401.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#908401.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#908408]
(602) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908408.quantityNumerator), true, [quantityNumerator#908409]
(603) Project
Arguments: [product#908382, plant#908383, orderDateTime#908384, productPlant#908395, systemId#908396, internalUUID#908397, id#908398, displayId#908399, name#908400, baseUnitOfMeasure#908401, unitOfMeasures#908402, unitOfMeasureConversions#908403, productionAspect#908404, salesAspect#908405, procurementAspect#908406, productGroup#908407, filteredUnitOfMeasureConversions#908408, quantityNumerator#908409]
(604) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908408.quantityDenominator), true, [quantityDenominator#908410]
(605) Project
Arguments: [product#908382, plant#908383, orderDateTime#908384, productPlant#908395, systemId#908396, internalUUID#908397, id#908398, displayId#908399, name#908400, baseUnitOfMeasure#908401, unitOfMeasures#908402, unitOfMeasureConversions#908403, productionAspect#908404, salesAspect#908405, procurementAspect#908406, productGroup#908407, filteredUnitOfMeasureConversions#908408, quantityNumerator#908409, quantityDenominator#908410]
(606) Project
Arguments: [product#908382, plant#908383, orderDateTime#908384, productPlant#908395, systemId#908396, internalUUID#908397, id#908398, displayId#908399, name#908400, baseUnitOfMeasure#908401, unitOfMeasures#908402, unitOfMeasureConversions#908403, productionAspect#908404, salesAspect#908405, procurementAspect#908406, productGroup#908407, filteredUnitOfMeasureConversions#908408, quantityNumerator#908409, quantityDenominator#908410, (cast(quantityNumerator#908409 as double) / cast(quantityDenominator#908410 as double)) AS outboundUnit#908411]
(607) Project
Arguments: [product#908382, plant#908383, orderDateTime#908384, productPlant#908395, systemId#908396, internalUUID#908397, id#908398, displayId#908399, name#908400, baseUnitOfMeasure#908401, unitOfMeasures#908402, unitOfMeasureConversions#908403, productionAspect#908404, salesAspect#908405, procurementAspect#908406, productGroup#908407, filteredUnitOfMeasureConversions#908408, quantityNumerator#908409, quantityDenominator#908410, CASE WHEN (isnull(outboundUnit#908411) OR (outboundUnit#908411 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#908411 END AS outboundUnit#908412]
(608) Project
Arguments: [product#908382, plant#908383, orderDateTime#908384, productPlant#908395, outboundUnit#908412]
(609) Join
Arguments: Inner, ((plantUuid#908374 = plant#908383) AND (productUuid#908376 = product#908382))
(610) Filter
Arguments: (calculationDateTime#908370 <= orderDateTime#908384)
(611) Project
Arguments: [plantUuid#908374 AS plant#908413, productUuid#908376 AS product#908414, storageLocId#908377, calculationDateTime#908370, quantity#908379]
(612) LogicalRelation
Arguments: parquet, [systemId#908415, internalUUID#908416, product#908417, plant#908418, calculationDateTime#908419, stockQuantities#908420], false
(613) Repartition
Arguments: 37, true
(614) LogicalRelation
Arguments: parquet, [marketUnit#908421, description#908422, articleHierarchy#908423, defaultCurrency#908424, responsibilities#908425, replenishmentTypes#908426, distributionCenters#908427, assignedArticleHierarchyNodes#908428, minOrderQtySetting#908429, listingCheck#908430, odsSelection#908431, demandProfiles#908432, constraintProfiles#908433, optimizationProfiles#908434, orderGroupSplitProfiles#908435, supplierMinimumProfiles#908436, multipleRestrictionProfiles#908437, preferredUomSource#908438, handlingOfUnfulfilledDemands#908439, negligibleQuantitiesThreshold#908440, eventtype#908441], false
(615) Repartition
Arguments: 37, true
(616) Filter
Arguments: (marketUnit#908421 <=> AUTO_ALL_ProdLoc)
(617) Project
Arguments: [marketUnit#908421, description#908422, articleHierarchy#908423, defaultCurrency#908424, responsibilities#908425, replenishmentTypes#908426, distributionCenters#908427, assignedArticleHierarchyNodes#908428, minOrderQtySetting#908429, listingCheck#908430, odsSelection#908431, demandProfiles#908432, constraintProfiles#908433, optimizationProfiles#908434, orderGroupSplitProfiles#908435, supplierMinimumProfiles#908436, multipleRestrictionProfiles#908437, preferredUomSource#908438, handlingOfUnfulfilledDemands#908439, negligibleQuantitiesThreshold#908440, eventtype#908441]
(618) Project
Arguments: [distributionCenters#908427]
(619) Generate
Arguments: explode(distributionCenters#908427), false, [distributionCenters#908442]
(620) Project
Arguments: [distributionCenters#908442]
(621) Generate
Arguments: explode(distributionCenters#908442.storageLocations), false, [storageLocations#908443]
(622) Project
Arguments: [distributionCenters#908442.id AS plantId#908444, distributionCenters#908442.internalRefUUID AS plantUuid#908445, storageLocations#908443]
(623) Project
Arguments: [plantId#908444, plantUuid#908445, storageLocations#908443.id AS storageLocId#908446, storageLocations#908443.internalRefUUID AS storageLocUuid#908447]
(624) LogicalRelation
Arguments: parquet, [product#908448, plant#908449, orderDateTime#908450, planningStartDateTime#908451], false
(625) RepartitionByExpression
Arguments: [product#908448, plant#908449], 37
(626) Project
Arguments: [product#908448, plant#908449, orderDateTime#908450]
(627) LogicalRelation
Arguments: parquet, [systemId#908452, internalUUID#908453, plant#908454, product#908455, blockedForReplenishmentStartingFrom#908456, productionAspect#908457, salesPlant#908458, listing#908459, sourceOfSupplyCategory#908460], false
(628) Repartition
Arguments: 37, true
(629) Project
Arguments: [systemId#908452, internalUUID#908453, plant#908454, product#908455, blockedForReplenishmentStartingFrom#908456, productionAspect#908457, salesPlant#908458, listing#908459, sourceOfSupplyCategory#908460, struct(systemId, systemId#908452, internalUUID, internalUUID#908453, plant, plant#908454, product, product#908455, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#908456, productionAspect, productionAspect#908457, salesPlant, salesPlant#908458, listing, listing#908459, sourceOfSupplyCategory, sourceOfSupplyCategory#908460) AS productPlant#908461]
(630) Project
Arguments: [productPlant#908461]
(631) Join
Arguments: LeftOuter, ((product#908448 <=> productPlant#908461.product.internalRefUUID) AND (plant#908449 <=> productPlant#908461.plant.internalRefUUID))
(632) Project
Arguments: [product#908448, plant#908449, orderDateTime#908450, productPlant#908461]
(633) LogicalRelation
Arguments: parquet, [systemId#908462, internalUUID#908463, id#908464, displayId#908465, name#908466, baseUnitOfMeasure#908467, unitOfMeasures#908468, unitOfMeasureConversions#908469, productionAspect#908470, salesAspect#908471, procurementAspect#908472, productGroup#908473], false
(634) Repartition
Arguments: 37, true
(635) Join
Arguments: LeftOuter, (product#908448 = internalUUID#908463)
(636) Project
Arguments: [product#908448, plant#908449, orderDateTime#908450, productPlant#908461, systemId#908462, internalUUID#908463, id#908464, displayId#908465, name#908466, baseUnitOfMeasure#908467, unitOfMeasures#908468, unitOfMeasureConversions#908469, productionAspect#908470, salesAspect#908471, procurementAspect#908472, productGroup#908473, filter(unitOfMeasureConversions#908469, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#908461.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#908461.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#908467.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#908467.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#908474]
(637) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908474.quantityNumerator), true, [quantityNumerator#908475]
(638) Project
Arguments: [product#908448, plant#908449, orderDateTime#908450, productPlant#908461, systemId#908462, internalUUID#908463, id#908464, displayId#908465, name#908466, baseUnitOfMeasure#908467, unitOfMeasures#908468, unitOfMeasureConversions#908469, productionAspect#908470, salesAspect#908471, procurementAspect#908472, productGroup#908473, filteredUnitOfMeasureConversions#908474, quantityNumerator#908475]
(639) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908474.quantityDenominator), true, [quantityDenominator#908476]
(640) Project
Arguments: [product#908448, plant#908449, orderDateTime#908450, productPlant#908461, systemId#908462, internalUUID#908463, id#908464, displayId#908465, name#908466, baseUnitOfMeasure#908467, unitOfMeasures#908468, unitOfMeasureConversions#908469, productionAspect#908470, salesAspect#908471, procurementAspect#908472, productGroup#908473, filteredUnitOfMeasureConversions#908474, quantityNumerator#908475, quantityDenominator#908476]
(641) Project
Arguments: [product#908448, plant#908449, orderDateTime#908450, productPlant#908461, systemId#908462, internalUUID#908463, id#908464, displayId#908465, name#908466, baseUnitOfMeasure#908467, unitOfMeasures#908468, unitOfMeasureConversions#908469, productionAspect#908470, salesAspect#908471, procurementAspect#908472, productGroup#908473, filteredUnitOfMeasureConversions#908474, quantityNumerator#908475, quantityDenominator#908476, (cast(quantityNumerator#908475 as double) / cast(quantityDenominator#908476 as double)) AS outboundUnit#908477]
(642) Project
Arguments: [product#908448, plant#908449, orderDateTime#908450, productPlant#908461, systemId#908462, internalUUID#908463, id#908464, displayId#908465, name#908466, baseUnitOfMeasure#908467, unitOfMeasures#908468, unitOfMeasureConversions#908469, productionAspect#908470, salesAspect#908471, procurementAspect#908472, productGroup#908473, filteredUnitOfMeasureConversions#908474, quantityNumerator#908475, quantityDenominator#908476, CASE WHEN (isnull(outboundUnit#908477) OR (outboundUnit#908477 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#908477 END AS outboundUnit#908478]
(643) Project
Arguments: [product#908448, plant#908449, orderDateTime#908450, productPlant#908461, outboundUnit#908478]
(644) Project
Arguments: [plant#908449]
(645) Deduplicate
Arguments: [plant#908449]
(646) Join
Arguments: Inner, (plantUuid#908445 = plant#908449)
(647) Project
Arguments: [plantId#908444, plantUuid#908445, storageLocId#908446, storageLocUuid#908447]
(648) Join
Arguments: Inner, (plant#908418.internalRefUUID <=> plantUuid#908445)
(649) Generate
Arguments: explode(filter(stockQuantities#908420, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#908447) AND (lambda x#905594.storageLocation.Id = storageLocId#908446)), lambda x#905594, false))), false, [stockQuantity#908479]
(650) Project
Arguments: [systemId#908415, internalUUID#908416, product#908417, plant#908418, calculationDateTime#908419, stockQuantities#908420, plantId#908444, plantUuid#908445, storageLocId#908446, storageLocUuid#908447, stockQuantity#908479]
(651) Aggregate
Arguments: [plantUuid#908445, internalUUID#908416, plant#908418, product#908417, systemId#908415], [plantUuid#908445, internalUUID#908416, plant#908418, product#908417, systemId#908415, first(calculationDateTime#908419, false) AS calculationDateTime#908480, collect_list(stockQuantity#908479, 0, 0) AS stockQuantities#908481]
(652) Project
Arguments: [systemId#908415, internalUUID#908416, product#908417, plant#908418, calculationDateTime#908480, stockQuantities#908481]
(653) Generate
Arguments: explode(stockQuantities#908481), false, [stockQuantity#908482]
(654) Project
Arguments: [systemId#908415, internalUUID#908416, product#908417, plant#908418, calculationDateTime#908480, stockQuantities#908481, stockQuantity#908482]
(655) Project
Arguments: [plant#908418.id AS plant#908483, plant#908418.internalRefUUID AS plantUuid#908484, product#908417.id AS product#908485, product#908417.internalRefUUID AS productUuid#908486, calculationDateTime#908480, stockQuantity#908482.storagelocation.id AS storageLocId#908487, stockQuantity#908482.storagelocation.internalRefUUID AS storageLocUuid#908488, stockQuantity#908482.quantity.measure AS quantity#908489, stockQuantity#908482.specialStockIndicator.code AS specialStockIndicator#908490, stockQuantity#908482.stockType.code AS stockType#908491]
(656) Filter
Arguments: ((specialStockIndicator#908490 = ) AND (stockType#908491 = 01))
(657) LogicalRelation
Arguments: parquet, [product#908492, plant#908493, orderDateTime#908494, planningStartDateTime#908495], false
(658) RepartitionByExpression
Arguments: [product#908492, plant#908493], 37
(659) Project
Arguments: [product#908492, plant#908493, orderDateTime#908494]
(660) LogicalRelation
Arguments: parquet, [systemId#908496, internalUUID#908497, plant#908498, product#908499, blockedForReplenishmentStartingFrom#908500, productionAspect#908501, salesPlant#908502, listing#908503, sourceOfSupplyCategory#908504], false
(661) Repartition
Arguments: 37, true
(662) Project
Arguments: [systemId#908496, internalUUID#908497, plant#908498, product#908499, blockedForReplenishmentStartingFrom#908500, productionAspect#908501, salesPlant#908502, listing#908503, sourceOfSupplyCategory#908504, struct(systemId, systemId#908496, internalUUID, internalUUID#908497, plant, plant#908498, product, product#908499, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#908500, productionAspect, productionAspect#908501, salesPlant, salesPlant#908502, listing, listing#908503, sourceOfSupplyCategory, sourceOfSupplyCategory#908504) AS productPlant#908505]
(663) Project
Arguments: [productPlant#908505]
(664) Join
Arguments: LeftOuter, ((product#908492 <=> productPlant#908505.product.internalRefUUID) AND (plant#908493 <=> productPlant#908505.plant.internalRefUUID))
(665) Project
Arguments: [product#908492, plant#908493, orderDateTime#908494, productPlant#908505]
(666) LogicalRelation
Arguments: parquet, [systemId#908506, internalUUID#908507, id#908508, displayId#908509, name#908510, baseUnitOfMeasure#908511, unitOfMeasures#908512, unitOfMeasureConversions#908513, productionAspect#908514, salesAspect#908515, procurementAspect#908516, productGroup#908517], false
(667) Repartition
Arguments: 37, true
(668) Join
Arguments: LeftOuter, (product#908492 = internalUUID#908507)
(669) Project
Arguments: [product#908492, plant#908493, orderDateTime#908494, productPlant#908505, systemId#908506, internalUUID#908507, id#908508, displayId#908509, name#908510, baseUnitOfMeasure#908511, unitOfMeasures#908512, unitOfMeasureConversions#908513, productionAspect#908514, salesAspect#908515, procurementAspect#908516, productGroup#908517, filter(unitOfMeasureConversions#908513, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#908505.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#908505.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#908511.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#908511.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#908518]
(670) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908518.quantityNumerator), true, [quantityNumerator#908519]
(671) Project
Arguments: [product#908492, plant#908493, orderDateTime#908494, productPlant#908505, systemId#908506, internalUUID#908507, id#908508, displayId#908509, name#908510, baseUnitOfMeasure#908511, unitOfMeasures#908512, unitOfMeasureConversions#908513, productionAspect#908514, salesAspect#908515, procurementAspect#908516, productGroup#908517, filteredUnitOfMeasureConversions#908518, quantityNumerator#908519]
(672) Generate
Arguments: explode(filteredUnitOfMeasureConversions#908518.quantityDenominator), true, [quantityDenominator#908520]
(673) Project
Arguments: [product#908492, plant#908493, orderDateTime#908494, productPlant#908505, systemId#908506, internalUUID#908507, id#908508, displayId#908509, name#908510, baseUnitOfMeasure#908511, unitOfMeasures#908512, unitOfMeasureConversions#908513, productionAspect#908514, salesAspect#908515, procurementAspect#908516, productGroup#908517, filteredUnitOfMeasureConversions#908518, quantityNumerator#908519, quantityDenominator#908520]
(674) Project
Arguments: [product#908492, plant#908493, orderDateTime#908494, productPlant#908505, systemId#908506, internalUUID#908507, id#908508, displayId#908509, name#908510, baseUnitOfMeasure#908511, unitOfMeasures#908512, unitOfMeasureConversions#908513, productionAspect#908514, salesAspect#908515, procurementAspect#908516, productGroup#908517, filteredUnitOfMeasureConversions#908518, quantityNumerator#908519, quantityDenominator#908520, (cast(quantityNumerator#908519 as double) / cast(quantityDenominator#908520 as double)) AS outboundUnit#908521]
(675) Project
Arguments: [product#908492, plant#908493, orderDateTime#908494, productPlant#908505, systemId#908506, internalUUID#908507, id#908508, displayId#908509, name#908510, baseUnitOfMeasure#908511, unitOfMeasures#908512, unitOfMeasureConversions#908513, productionAspect#908514, salesAspect#908515, procurementAspect#908516, productGroup#908517, filteredUnitOfMeasureConversions#908518, quantityNumerator#908519, quantityDenominator#908520, CASE WHEN (isnull(outboundUnit#908521) OR (outboundUnit#908521 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#908521 END AS outboundUnit#908522]
(676) Project
Arguments: [product#908492, plant#908493, orderDateTime#908494, productPlant#908505, outboundUnit#908522]
(677) Join
Arguments: Inner, ((plantUuid#908484 = plant#908493) AND (productUuid#908486 = product#908492))
(678) Filter
Arguments: (calculationDateTime#908480 <= orderDateTime#908494)
(679) Project
Arguments: [plantUuid#908484 AS plant#908523, productUuid#908486 AS product#908524, storageLocId#908487, calculationDateTime#908480, quantity#908489]
(680) Aggregate
Arguments: [plant#908523, product#908524, storageLocId#908487], [plant#908523, product#908524, storageLocId#908487, max(calculationDateTime#908480) AS max_calc_datetime#908525]
(681) Join
Arguments: Inner, ((((plant#908413 <=> plant#908523) AND (product#908414 <=> product#908524)) AND (storageLocId#908377 <=> storageLocId#908487)) AND (calculationDateTime#908370 <=> max_calc_datetime#908525))
(682) Project
Arguments: [plant#908413, product#908414, storageLocId#908377, calculationDateTime#908370, quantity#908379]
(683) Aggregate
Arguments: [product#908414, plant#908413], [product#908414, plant#908413, sum(quantity#908379) AS quantitySum#908526, min(calculationDateTime#908370) AS minCalculationDateTime#908527]
(684) Project
Arguments: [product#908414, plant#908413, quantitySum#908526, minCalculationDateTime#908527, round(quantitySum#908526, 0) AS roundedQuantitySum#908528]
(685) Join
Arguments: LeftOuter, ((plant#908275 = plant#908413) AND (product#908274 = product#908414))
(686) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, outboundUnit#908304, roundedQuantitySum#908528, minCalculationDateTime#908527]
(687) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, outboundUnit#908304, roundedQuantitySum#908528, minCalculationDateTime#908527, CASE WHEN isnotnull(minCalculationDateTime#908527) THEN minCalculationDateTime#908527 ELSE orderDateTime#908276 END AS stockDatetime#908529]
(688) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, outboundUnit#908304, roundedQuantitySum#908528, minCalculationDateTime#908527, stockDatetime#908529, CASE WHEN isnotnull(roundedQuantitySum#908528) THEN array(roundedQuantitySum#908528) ELSE array(0.0) END AS stockBatchQuantities#908530]
(689) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, outboundUnit#908304, roundedQuantitySum#908528, minCalculationDateTime#908527, stockDatetime#908529, stockBatchQuantities#908530, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#908531]
(690) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, outboundUnit#908304, roundedQuantitySum#908528, stockDatetime#908529, stockBatchQuantities#908530, stockBatchShelfLifeEndDatetimes#908531]
(691) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, outboundUnit#908304, stockDatetime#908529, stockBatchQuantities#908530, stockBatchShelfLifeEndDatetimes#908531]
(692) LogicalRelation
Arguments: parquet, [product#908532, plant#908533, demandChannel#908534, demandStream#908535, considerVariance#908536, demandTimeBuckets#908537, demandPointInTimeStart#908538, demandPointInTimeEnd#908539, demandPointInTime#908540], false
(693) Join
Arguments: LeftOuter, ((plant#908533 <=> plant#908275) AND (product#908532 <=> product#908274))
(694) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, outboundUnit#908304, stockDatetime#908529, stockBatchQuantities#908530, stockBatchShelfLifeEndDatetimes#908531, product#908532, plant#908533, demandChannel#908534, demandStream#908535, considerVariance#908536, demandTimeBuckets#908537, demandPointInTimeStart#908538, demandPointInTimeEnd#908539, demandPointInTime#908540, CASE WHEN isnotnull(product#908532) THEN struct(demandChannel, demandChannel#908534, demandStream, demandStream#908535, considerVariance, considerVariance#908536, demandTimeBuckets, demandTimeBuckets#908537, demandPointInTimeStart, demandPointInTimeStart#908538, demandPointInTimeEnd, demandPointInTimeEnd#908539, demandPointInTime, demandPointInTime#908540) 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#908541]
(695) Aggregate
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, outboundUnit#908304, stockDatetime#908529, stockBatchQuantities#908530, stockBatchShelfLifeEndDatetimes#908531], [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, outboundUnit#908304, stockDatetime#908529, stockBatchQuantities#908530, stockBatchShelfLifeEndDatetimes#908531, collect_list(rawDemands#908541, 0, 0) AS rawDemands#908542]
(696) SubqueryAlias
Arguments: wl
(697) LogicalRelation
Arguments: parquet, [systemId#908543, internalUUID#908544, id#908545, displayId#908546, name#908547, category#908548, companyCode#908549, address#908550, mainDistributionChain#908551, mainPurchasingOrganization#908552, validPurchasingOrganizations#908553, productGroup#908554], false
(698) Repartition
Arguments: 37, true
(699) Project
Arguments: [systemId#908543, internalUUID#908544, id#908545, displayId#908546, name#908547, category#908548, companyCode#908549, address#908550, mainDistributionChain#908551, mainPurchasingOrganization#908552, validPurchasingOrganizations#908553, productGroup#908554, address#908550.timezone.code AS timezonecode#908555]
(700) Join
Arguments: LeftOuter, (plant#908275 <=> internalUUID#908544)
(701) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, outboundUnit#908304, stockDatetime#908529, stockBatchQuantities#908530, stockBatchShelfLifeEndDatetimes#908531, rawDemands#908542, systemId#908543, internalUUID#908544, id#908545, displayId#908546, name#908547, category#908548, companyCode#908549, address#908550, mainDistributionChain#908551, mainPurchasingOrganization#908552, validPurchasingOrganizations#908553, productGroup#908554, CASE WHEN isnotnull(timezonecode#908555) THEN timezonecode#908555 ELSE UTC END AS timezonecode#908556]
(702) Project
Arguments: [product#908274, plant#908275, orderDateTime#908276, productPlant#908287, outboundUnit#908304, stockDatetime#908529, stockBatchQuantities#908530, stockBatchShelfLifeEndDatetimes#908531, rawDemands#908542, timezonecode#908556]
(703) DeserializeToObject
Arguments: createexternalrow(invoke(product#908274.toString()), invoke(plant#908275.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#908276)), if (isnull(productPlant#908287)) null else createexternalrow(invoke(productPlant#908287.systemId.toString()), invoke(productPlant#908287.internalUUID.toString()), if (isnull(productPlant#908287.plant)) null else createexternalrow(invoke(productPlant#908287.plant.internalRefUUID.toString()), invoke(productPlant#908287.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#908287.product)) null else createexternalrow(invoke(productPlant#908287.product.internalRefUUID.toString()), invoke(productPlant#908287.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#908287.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#908287.productionAspect)) null else createexternalrow(if (isnull(productPlant#908287.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#908287.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#908287.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#908287.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#908287.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#908287.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#908287.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#908287.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#908287.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#908287.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#908287.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#908287.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#908287.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#908287.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#908287.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#908287.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#908287.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#908287.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#908287.salesPlant)) null else createexternalrow(if (isnull(productPlant#908287.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#908287.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#908287.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, 71540), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#908287.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#908287.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#908287.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#908287.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#908304)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#908529)), mapobjects(lambdavariable(MapObject, DoubleType, true, 71541), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 71541) as double))), stockBatchQuantities#908530, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 71542), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 71542) as timestamp)))), stockBatchShelfLifeEndDatetimes#908531, 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, 71543), 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, 71543))) 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, 71543).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, 71543).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, 71543).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).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, 71543).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, 71543).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, 71543).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).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, 71543).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#908542, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#908556.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#906942: org.apache.spark.sql.Row
(704) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@4013ddf1, 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#906947: 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#908557, 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#908558, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71531), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71531), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71532), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71532), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71533), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71533), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71534), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71534), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71535), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71535), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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#908559, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71537), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71537), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71538), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71538), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71539), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71539), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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#908560]
(706) Join
Arguments: LeftOuter, ((plant#908558 <=> plant#908017) AND (product#908557 <=> product#908016))
(707) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, outboundUnit#908046, stockDatetime#908271, stockBatchQuantities#908272, stockBatchShelfLifeEndDatetimes#908273, plant#908558, dayBucketDemands#908559, pointInTimeDemands#908560]
(708) Project
Arguments: [product#908016, plant#908017, orderDateTime#908018, productPlant#908029, outboundUnit#908046, stockDatetime#908271, stockBatchQuantities#908272, stockBatchShelfLifeEndDatetimes#908273, dayBucketDemands#908559, pointInTimeDemands#908560]
(709) LogicalRelation
Arguments: parquet, [marketUnit#907266, description#907267, articleHierarchy#907268, defaultCurrency#907269, responsibilities#907270, replenishmentTypes#907271, distributionCenters#907272, assignedArticleHierarchyNodes#907273, minOrderQtySetting#907274, listingCheck#907275, odsSelection#907276, demandProfiles#907277, constraintProfiles#907278, optimizationProfiles#907279, orderGroupSplitProfiles#907280, supplierMinimumProfiles#907281, multipleRestrictionProfiles#907282, preferredUomSource#907283, handlingOfUnfulfilledDemands#907284, negligibleQuantitiesThreshold#907285, eventtype#907286], false
(710) Repartition
Arguments: 37, true
(711) Filter
Arguments: (marketUnit#907266 <=> AUTO_ALL_ProdLoc)
(712) Project
Arguments: [marketUnit#907266, description#907267, articleHierarchy#907268, defaultCurrency#907269, responsibilities#907270, replenishmentTypes#907271, distributionCenters#907272, assignedArticleHierarchyNodes#907273, minOrderQtySetting#907274, listingCheck#907275, odsSelection#907276, demandProfiles#907277, constraintProfiles#907278, optimizationProfiles#907279, orderGroupSplitProfiles#907280, supplierMinimumProfiles#907281, multipleRestrictionProfiles#907282, preferredUomSource#907283, handlingOfUnfulfilledDemands#907284, negligibleQuantitiesThreshold#907285, eventtype#907286]
(713) Project
Arguments: [distributionCenters#907272]
(714) Generate
Arguments: explode(distributionCenters#907272), false, [distributionCenters#907287]
(715) Project
Arguments: [distributionCenters#907287]
(716) Generate
Arguments: explode(distributionCenters#907287.storageLocations), false, [storageLocations#907288]
(717) Project
Arguments: [distributionCenters#907287.id AS plantId#907289, distributionCenters#907287.internalRefUUID AS plantUuid#907290, storageLocations#907288]
(718) Project
Arguments: [plantId#907289, plantUuid#907290, storageLocations#907288.id AS storageLocId#907291, storageLocations#907288.internalRefUUID AS storageLocUuid#907292]
(719) LogicalRelation
Arguments: parquet, [product#907293, plant#907294, orderDateTime#907295, planningStartDateTime#907296], false
(720) RepartitionByExpression
Arguments: [product#907293, plant#907294], 37
(721) Project
Arguments: [product#907293, plant#907294, orderDateTime#907295]
(722) LogicalRelation
Arguments: parquet, [systemId#907297, internalUUID#907298, plant#907299, product#907300, blockedForReplenishmentStartingFrom#907301, productionAspect#907302, salesPlant#907303, listing#907304, sourceOfSupplyCategory#907305], false
(723) Repartition
Arguments: 37, true
(724) Project
Arguments: [systemId#907297, internalUUID#907298, plant#907299, product#907300, blockedForReplenishmentStartingFrom#907301, productionAspect#907302, salesPlant#907303, listing#907304, sourceOfSupplyCategory#907305, struct(systemId, systemId#907297, internalUUID, internalUUID#907298, plant, plant#907299, product, product#907300, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907301, productionAspect, productionAspect#907302, salesPlant, salesPlant#907303, listing, listing#907304, sourceOfSupplyCategory, sourceOfSupplyCategory#907305) AS productPlant#907306]
(725) Project
Arguments: [productPlant#907306]
(726) Join
Arguments: LeftOuter, ((product#907293 <=> productPlant#907306.product.internalRefUUID) AND (plant#907294 <=> productPlant#907306.plant.internalRefUUID))
(727) Project
Arguments: [product#907293, plant#907294, orderDateTime#907295, productPlant#907306]
(728) LogicalRelation
Arguments: parquet, [systemId#907307, internalUUID#907308, id#907309, displayId#907310, name#907311, baseUnitOfMeasure#907312, unitOfMeasures#907313, unitOfMeasureConversions#907314, productionAspect#907315, salesAspect#907316, procurementAspect#907317, productGroup#907318], false
(729) Repartition
Arguments: 37, true
(730) Join
Arguments: LeftOuter, (product#907293 = internalUUID#907308)
(731) Project
Arguments: [product#907293, plant#907294, orderDateTime#907295, productPlant#907306, systemId#907307, internalUUID#907308, id#907309, displayId#907310, name#907311, baseUnitOfMeasure#907312, unitOfMeasures#907313, unitOfMeasureConversions#907314, productionAspect#907315, salesAspect#907316, procurementAspect#907317, productGroup#907318, filter(unitOfMeasureConversions#907314, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907306.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907306.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907312.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907312.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907319]
(732) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907319.quantityNumerator), true, [quantityNumerator#907320]
(733) Project
Arguments: [product#907293, plant#907294, orderDateTime#907295, productPlant#907306, systemId#907307, internalUUID#907308, id#907309, displayId#907310, name#907311, baseUnitOfMeasure#907312, unitOfMeasures#907313, unitOfMeasureConversions#907314, productionAspect#907315, salesAspect#907316, procurementAspect#907317, productGroup#907318, filteredUnitOfMeasureConversions#907319, quantityNumerator#907320]
(734) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907319.quantityDenominator), true, [quantityDenominator#907321]
(735) Project
Arguments: [product#907293, plant#907294, orderDateTime#907295, productPlant#907306, systemId#907307, internalUUID#907308, id#907309, displayId#907310, name#907311, baseUnitOfMeasure#907312, unitOfMeasures#907313, unitOfMeasureConversions#907314, productionAspect#907315, salesAspect#907316, procurementAspect#907317, productGroup#907318, filteredUnitOfMeasureConversions#907319, quantityNumerator#907320, quantityDenominator#907321]
(736) Project
Arguments: [product#907293, plant#907294, orderDateTime#907295, productPlant#907306, systemId#907307, internalUUID#907308, id#907309, displayId#907310, name#907311, baseUnitOfMeasure#907312, unitOfMeasures#907313, unitOfMeasureConversions#907314, productionAspect#907315, salesAspect#907316, procurementAspect#907317, productGroup#907318, filteredUnitOfMeasureConversions#907319, quantityNumerator#907320, quantityDenominator#907321, (cast(quantityNumerator#907320 as double) / cast(quantityDenominator#907321 as double)) AS outboundUnit#907322]
(737) Project
Arguments: [product#907293, plant#907294, orderDateTime#907295, productPlant#907306, systemId#907307, internalUUID#907308, id#907309, displayId#907310, name#907311, baseUnitOfMeasure#907312, unitOfMeasures#907313, unitOfMeasureConversions#907314, productionAspect#907315, salesAspect#907316, procurementAspect#907317, productGroup#907318, filteredUnitOfMeasureConversions#907319, quantityNumerator#907320, quantityDenominator#907321, CASE WHEN (isnull(outboundUnit#907322) OR (outboundUnit#907322 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907322 END AS outboundUnit#907323]
(738) Project
Arguments: [product#907293, plant#907294, orderDateTime#907295, productPlant#907306, outboundUnit#907323]
(739) Project
Arguments: [plant#907294]
(740) Deduplicate
Arguments: [plant#907294]
(741) Join
Arguments: Inner, (plantUuid#907290 = plant#907294)
(742) Project
Arguments: [plantId#907289, plantUuid#907290, storageLocId#907291, storageLocUuid#907292]
(743) Project
Arguments: [plantId#907289, plantUuid#907290 AS plant#907265, storageLocId#907291, storageLocUuid#907292]
(744) Join
Arguments: Inner, (plant#908017 = plant#907265)
(745) Project
Arguments: [plant#908017, product#908016, orderDateTime#908018, productPlant#908029, outboundUnit#908046, stockDatetime#908271, stockBatchQuantities#908272, stockBatchShelfLifeEndDatetimes#908273, dayBucketDemands#908559, pointInTimeDemands#908560, plantId#907289, storageLocId#907291, storageLocUuid#907292, plant#907265]
(746) LocalRelation
Arguments: <empty>, [systemId#907233, internalUUID#907234, id#907235, isMarkedForDeletion#907236, supplier#907237, status#907238, items#907239]
(747) Generate
Arguments: explode(items#907239), false, [item#907243]
(748) Project
Arguments: [id#907235, internalUUID#907234, isMarkedForDeletion#907236, supplier#907237.internalRefUUID AS supplierUuid#907240, item#907243]
(749) Filter
Arguments: (((NOT isMarkedForDeletion#907236 AND NOT item#907243.deletionIndicator) AND NOT item#907243.completeIndicator) AND NOT item#907243.returnIndicator)
(750) Project
Arguments: [id#907235, internalUUID#907234, supplierUuid#907240, item#907243.plant.internalRefUUID AS plant#907247, item#907243.product.internalRefUUID AS product#907248, item#907243.storageLocation.internalRefUUID AS storageLocUuid#907249, item#907243.quantityUnit.code AS quantityUom#907250, item#907243.quantityUnit.internalRefUUID AS quantityUomUuid#907251, item#907243.quantityNumerator AS quantityNumerator#907252, item#907243.quantityDenominator AS quantityDenominator#907253, item#907243.scheduleLines AS scheduleLines#907254, item#907243.confirmations AS confirmations#907255]
(751) Join
Arguments: Inner, (((product#908016 = product#907248) AND (plant#908017 = plant#907247)) AND (storageLocUuid#907292 = storageLocUuid#907249))
(752) Project
Arguments: [product#908016, plant#908017, storageLocUuid#907292, orderDateTime#908018, productPlant#908029, outboundUnit#908046, stockDatetime#908271, stockBatchQuantities#908272, stockBatchShelfLifeEndDatetimes#908273, dayBucketDemands#908559, pointInTimeDemands#908560, plantId#907289, storageLocId#907291, id#907235, internalUUID#907234, supplierUuid#907240, quantityUom#907250, quantityUomUuid#907251, quantityNumerator#907252, quantityDenominator#907253, scheduleLines#907254, confirmations#907255, product#907248, plant#907247, storageLocUuid#907249, ... 1 more fields]
(753) Project
Arguments: [id#907235, internalUUID#907234, supplierUuid#907240, plant#907247, product#907248, storageLocUuid#907249, quantityUom#907250, quantityUomUuid#907251, quantityNumerator#907252, quantityDenominator#907253, scheduleLines#907254, confirmations#907255, stockDatetime#908271]
(754) Project
Arguments: [id#907235, internalUUID#907234, supplierUuid#907240, plant#907247, product#907248, storageLocUuid#907249, quantityUom#907250, quantityUomUuid#907251, quantityNumerator#907252, quantityDenominator#907253, scheduleLines#907254, confirmations#907255, stockDatetime#908271, array_size(filter(confirmations#907255, lambdafunction((((lambda x_130#907339.deletionIndicator = false) AND (lambda x_130#907339.isRelevantForConfirmation = true)) AND isnotnull(lambda x_130#907339.confirmedDeliveryAt)), lambda x_130#907339, false))) AS _w0#907346]
(755) Window
Arguments: [sum(_w0#907346) windowspecdefinition(internalUUID#907234, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#907347L], [internalUUID#907234]
(756) Project
Arguments: [id#907235, internalUUID#907234, supplierUuid#907240, plant#907247, product#907248, storageLocUuid#907249, quantityUom#907250, quantityUomUuid#907251, quantityNumerator#907252, quantityDenominator#907253, scheduleLines#907254, confirmations#907255, stockDatetime#908271, _w0#907346, _we0#907347L, filter(transform(CASE WHEN (_we0#907347L > cast(0 as bigint)) THEN transform(filter(confirmations#907255, lambdafunction((((lambda x_130#907340.deletionIndicator = false) AND (lambda x_130#907340.isRelevantForConfirmation = true)) AND isnotnull(lambda x_130#907340.confirmedDeliveryAt)), lambda x_130#907340, false)), lambdafunction(struct(openQty, greatest((lambda x_131#907343.confirmedQuantity - coalesce(lambda x_131#907343.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_131#907343.confirmedDeliveryAt), lambda x_131#907343, false)) ELSE transform(scheduleLines#907254, lambdafunction(struct(openQty, greatest((lambda x_129#907341.quantity - coalesce(lambda x_129#907341.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_129#907341.deliveryAt), lambda x_129#907341, false)) END, lambdafunction(struct(documentId, id#907235, documentUuid, internalUUID#907234, openQty, lambda x_132#907344.openQty, openQtyInBaseUnit, ((lambda x_132#907344.openQty * quantityNumerator#907252) / quantityDenominator#907253), qtyUom, quantityUom#907250, qtyUomUuid, quantityUomUuid#907251, availabilityDatetime, lambda x_132#907344.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_132#907344, false)), lambdafunction(NOT (lambda x_133#907345.openQty = 0.0), lambda x_133#907345, false)) AS openGoodsMovements#907338]
(757) Project
Arguments: [id#907235, internalUUID#907234, supplierUuid#907240, plant#907247, product#907248, storageLocUuid#907249, quantityUom#907250, quantityUomUuid#907251, quantityNumerator#907252, quantityDenominator#907253, scheduleLines#907254, confirmations#907255, stockDatetime#908271, openGoodsMovements#907338]
(758) Aggregate
Arguments: [product#907248, plant#907247], [product#907248, plant#907247, flatten(collect_list(openGoodsMovements#907338, 0, 0)) AS openGoodsMovements#907348]
(759) Filter
Arguments: (array_size(openGoodsMovements#907348) > 0)
(760) LogicalRelation
Arguments: parquet, [product#907408, plant#907409, orderDateTime#907410, planningStartDateTime#907411], false
(761) RepartitionByExpression
Arguments: [product#907408, plant#907409], 37
(762) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410]
(763) LogicalRelation
Arguments: parquet, [systemId#907412, internalUUID#907413, plant#907414, product#907415, blockedForReplenishmentStartingFrom#907416, productionAspect#907417, salesPlant#907418, listing#907419, sourceOfSupplyCategory#907420], false
(764) Repartition
Arguments: 37, true
(765) Project
Arguments: [systemId#907412, internalUUID#907413, plant#907414, product#907415, blockedForReplenishmentStartingFrom#907416, productionAspect#907417, salesPlant#907418, listing#907419, sourceOfSupplyCategory#907420, struct(systemId, systemId#907412, internalUUID, internalUUID#907413, plant, plant#907414, product, product#907415, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907416, productionAspect, productionAspect#907417, salesPlant, salesPlant#907418, listing, listing#907419, sourceOfSupplyCategory, sourceOfSupplyCategory#907420) AS productPlant#907421]
(766) Project
Arguments: [productPlant#907421]
(767) Join
Arguments: LeftOuter, ((product#907408 <=> productPlant#907421.product.internalRefUUID) AND (plant#907409 <=> productPlant#907421.plant.internalRefUUID))
(768) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421]
(769) LogicalRelation
Arguments: parquet, [systemId#907422, internalUUID#907423, id#907424, displayId#907425, name#907426, baseUnitOfMeasure#907427, unitOfMeasures#907428, unitOfMeasureConversions#907429, productionAspect#907430, salesAspect#907431, procurementAspect#907432, productGroup#907433], false
(770) Repartition
Arguments: 37, true
(771) Join
Arguments: LeftOuter, (product#907408 = internalUUID#907423)
(772) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, systemId#907422, internalUUID#907423, id#907424, displayId#907425, name#907426, baseUnitOfMeasure#907427, unitOfMeasures#907428, unitOfMeasureConversions#907429, productionAspect#907430, salesAspect#907431, procurementAspect#907432, productGroup#907433, filter(unitOfMeasureConversions#907429, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907421.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907421.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907427.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907427.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907434]
(773) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907434.quantityNumerator), true, [quantityNumerator#907435]
(774) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, systemId#907422, internalUUID#907423, id#907424, displayId#907425, name#907426, baseUnitOfMeasure#907427, unitOfMeasures#907428, unitOfMeasureConversions#907429, productionAspect#907430, salesAspect#907431, procurementAspect#907432, productGroup#907433, filteredUnitOfMeasureConversions#907434, quantityNumerator#907435]
(775) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907434.quantityDenominator), true, [quantityDenominator#907436]
(776) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, systemId#907422, internalUUID#907423, id#907424, displayId#907425, name#907426, baseUnitOfMeasure#907427, unitOfMeasures#907428, unitOfMeasureConversions#907429, productionAspect#907430, salesAspect#907431, procurementAspect#907432, productGroup#907433, filteredUnitOfMeasureConversions#907434, quantityNumerator#907435, quantityDenominator#907436]
(777) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, systemId#907422, internalUUID#907423, id#907424, displayId#907425, name#907426, baseUnitOfMeasure#907427, unitOfMeasures#907428, unitOfMeasureConversions#907429, productionAspect#907430, salesAspect#907431, procurementAspect#907432, productGroup#907433, filteredUnitOfMeasureConversions#907434, quantityNumerator#907435, quantityDenominator#907436, (cast(quantityNumerator#907435 as double) / cast(quantityDenominator#907436 as double)) AS outboundUnit#907437]
(778) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, systemId#907422, internalUUID#907423, id#907424, displayId#907425, name#907426, baseUnitOfMeasure#907427, unitOfMeasures#907428, unitOfMeasureConversions#907429, productionAspect#907430, salesAspect#907431, procurementAspect#907432, productGroup#907433, filteredUnitOfMeasureConversions#907434, quantityNumerator#907435, quantityDenominator#907436, CASE WHEN (isnull(outboundUnit#907437) OR (outboundUnit#907437 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907437 END AS outboundUnit#907438]
(779) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, outboundUnit#907438]
(780) LogicalRelation
Arguments: parquet, [systemId#907439, internalUUID#907440, product#907441, plant#907442, calculationDateTime#907443, stockQuantities#907444], false
(781) Repartition
Arguments: 37, true
(782) LogicalRelation
Arguments: parquet, [marketUnit#907445, description#907446, articleHierarchy#907447, defaultCurrency#907448, responsibilities#907449, replenishmentTypes#907450, distributionCenters#907451, assignedArticleHierarchyNodes#907452, minOrderQtySetting#907453, listingCheck#907454, odsSelection#907455, demandProfiles#907456, constraintProfiles#907457, optimizationProfiles#907458, orderGroupSplitProfiles#907459, supplierMinimumProfiles#907460, multipleRestrictionProfiles#907461, preferredUomSource#907462, handlingOfUnfulfilledDemands#907463, negligibleQuantitiesThreshold#907464, eventtype#907465], false
(783) Repartition
Arguments: 37, true
(784) Filter
Arguments: (marketUnit#907445 <=> AUTO_ALL_ProdLoc)
(785) Project
Arguments: [marketUnit#907445, description#907446, articleHierarchy#907447, defaultCurrency#907448, responsibilities#907449, replenishmentTypes#907450, distributionCenters#907451, assignedArticleHierarchyNodes#907452, minOrderQtySetting#907453, listingCheck#907454, odsSelection#907455, demandProfiles#907456, constraintProfiles#907457, optimizationProfiles#907458, orderGroupSplitProfiles#907459, supplierMinimumProfiles#907460, multipleRestrictionProfiles#907461, preferredUomSource#907462, handlingOfUnfulfilledDemands#907463, negligibleQuantitiesThreshold#907464, eventtype#907465]
(786) Project
Arguments: [distributionCenters#907451]
(787) Generate
Arguments: explode(distributionCenters#907451), false, [distributionCenters#907466]
(788) Project
Arguments: [distributionCenters#907466]
(789) Generate
Arguments: explode(distributionCenters#907466.storageLocations), false, [storageLocations#907467]
(790) Project
Arguments: [distributionCenters#907466.id AS plantId#907468, distributionCenters#907466.internalRefUUID AS plantUuid#907469, storageLocations#907467]
(791) Project
Arguments: [plantId#907468, plantUuid#907469, storageLocations#907467.id AS storageLocId#907470, storageLocations#907467.internalRefUUID AS storageLocUuid#907471]
(792) LogicalRelation
Arguments: parquet, [product#907472, plant#907473, orderDateTime#907474, planningStartDateTime#907475], false
(793) RepartitionByExpression
Arguments: [product#907472, plant#907473], 37
(794) Project
Arguments: [product#907472, plant#907473, orderDateTime#907474]
(795) LogicalRelation
Arguments: parquet, [systemId#907476, internalUUID#907477, plant#907478, product#907479, blockedForReplenishmentStartingFrom#907480, productionAspect#907481, salesPlant#907482, listing#907483, sourceOfSupplyCategory#907484], false
(796) Repartition
Arguments: 37, true
(797) Project
Arguments: [systemId#907476, internalUUID#907477, plant#907478, product#907479, blockedForReplenishmentStartingFrom#907480, productionAspect#907481, salesPlant#907482, listing#907483, sourceOfSupplyCategory#907484, struct(systemId, systemId#907476, internalUUID, internalUUID#907477, plant, plant#907478, product, product#907479, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907480, productionAspect, productionAspect#907481, salesPlant, salesPlant#907482, listing, listing#907483, sourceOfSupplyCategory, sourceOfSupplyCategory#907484) AS productPlant#907485]
(798) Project
Arguments: [productPlant#907485]
(799) Join
Arguments: LeftOuter, ((product#907472 <=> productPlant#907485.product.internalRefUUID) AND (plant#907473 <=> productPlant#907485.plant.internalRefUUID))
(800) Project
Arguments: [product#907472, plant#907473, orderDateTime#907474, productPlant#907485]
(801) LogicalRelation
Arguments: parquet, [systemId#907486, internalUUID#907487, id#907488, displayId#907489, name#907490, baseUnitOfMeasure#907491, unitOfMeasures#907492, unitOfMeasureConversions#907493, productionAspect#907494, salesAspect#907495, procurementAspect#907496, productGroup#907497], false
(802) Repartition
Arguments: 37, true
(803) Join
Arguments: LeftOuter, (product#907472 = internalUUID#907487)
(804) Project
Arguments: [product#907472, plant#907473, orderDateTime#907474, productPlant#907485, systemId#907486, internalUUID#907487, id#907488, displayId#907489, name#907490, baseUnitOfMeasure#907491, unitOfMeasures#907492, unitOfMeasureConversions#907493, productionAspect#907494, salesAspect#907495, procurementAspect#907496, productGroup#907497, filter(unitOfMeasureConversions#907493, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907485.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907485.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907491.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907491.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907498]
(805) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907498.quantityNumerator), true, [quantityNumerator#907499]
(806) Project
Arguments: [product#907472, plant#907473, orderDateTime#907474, productPlant#907485, systemId#907486, internalUUID#907487, id#907488, displayId#907489, name#907490, baseUnitOfMeasure#907491, unitOfMeasures#907492, unitOfMeasureConversions#907493, productionAspect#907494, salesAspect#907495, procurementAspect#907496, productGroup#907497, filteredUnitOfMeasureConversions#907498, quantityNumerator#907499]
(807) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907498.quantityDenominator), true, [quantityDenominator#907500]
(808) Project
Arguments: [product#907472, plant#907473, orderDateTime#907474, productPlant#907485, systemId#907486, internalUUID#907487, id#907488, displayId#907489, name#907490, baseUnitOfMeasure#907491, unitOfMeasures#907492, unitOfMeasureConversions#907493, productionAspect#907494, salesAspect#907495, procurementAspect#907496, productGroup#907497, filteredUnitOfMeasureConversions#907498, quantityNumerator#907499, quantityDenominator#907500]
(809) Project
Arguments: [product#907472, plant#907473, orderDateTime#907474, productPlant#907485, systemId#907486, internalUUID#907487, id#907488, displayId#907489, name#907490, baseUnitOfMeasure#907491, unitOfMeasures#907492, unitOfMeasureConversions#907493, productionAspect#907494, salesAspect#907495, procurementAspect#907496, productGroup#907497, filteredUnitOfMeasureConversions#907498, quantityNumerator#907499, quantityDenominator#907500, (cast(quantityNumerator#907499 as double) / cast(quantityDenominator#907500 as double)) AS outboundUnit#907501]
(810) Project
Arguments: [product#907472, plant#907473, orderDateTime#907474, productPlant#907485, systemId#907486, internalUUID#907487, id#907488, displayId#907489, name#907490, baseUnitOfMeasure#907491, unitOfMeasures#907492, unitOfMeasureConversions#907493, productionAspect#907494, salesAspect#907495, procurementAspect#907496, productGroup#907497, filteredUnitOfMeasureConversions#907498, quantityNumerator#907499, quantityDenominator#907500, CASE WHEN (isnull(outboundUnit#907501) OR (outboundUnit#907501 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907501 END AS outboundUnit#907502]
(811) Project
Arguments: [product#907472, plant#907473, orderDateTime#907474, productPlant#907485, outboundUnit#907502]
(812) Project
Arguments: [plant#907473]
(813) Deduplicate
Arguments: [plant#907473]
(814) Join
Arguments: Inner, (plantUuid#907469 = plant#907473)
(815) Project
Arguments: [plantId#907468, plantUuid#907469, storageLocId#907470, storageLocUuid#907471]
(816) Join
Arguments: Inner, (plant#907442.internalRefUUID <=> plantUuid#907469)
(817) Generate
Arguments: explode(filter(stockQuantities#907444, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#907471) AND (lambda x#905594.storageLocation.Id = storageLocId#907470)), lambda x#905594, false))), false, [stockQuantity#907503]
(818) Project
Arguments: [systemId#907439, internalUUID#907440, product#907441, plant#907442, calculationDateTime#907443, stockQuantities#907444, plantId#907468, plantUuid#907469, storageLocId#907470, storageLocUuid#907471, stockQuantity#907503]
(819) Aggregate
Arguments: [plantUuid#907469, internalUUID#907440, plant#907442, product#907441, systemId#907439], [plantUuid#907469, internalUUID#907440, plant#907442, product#907441, systemId#907439, first(calculationDateTime#907443, false) AS calculationDateTime#907504, collect_list(stockQuantity#907503, 0, 0) AS stockQuantities#907505]
(820) Project
Arguments: [systemId#907439, internalUUID#907440, product#907441, plant#907442, calculationDateTime#907504, stockQuantities#907505]
(821) Generate
Arguments: explode(stockQuantities#907505), false, [stockQuantity#907506]
(822) Project
Arguments: [systemId#907439, internalUUID#907440, product#907441, plant#907442, calculationDateTime#907504, stockQuantities#907505, stockQuantity#907506]
(823) Project
Arguments: [plant#907442.id AS plant#907507, plant#907442.internalRefUUID AS plantUuid#907508, product#907441.id AS product#907509, product#907441.internalRefUUID AS productUuid#907510, calculationDateTime#907504, stockQuantity#907506.storagelocation.id AS storageLocId#907511, stockQuantity#907506.storagelocation.internalRefUUID AS storageLocUuid#907512, stockQuantity#907506.quantity.measure AS quantity#907513, stockQuantity#907506.specialStockIndicator.code AS specialStockIndicator#907514, stockQuantity#907506.stockType.code AS stockType#907515]
(824) Filter
Arguments: ((specialStockIndicator#907514 = ) AND (stockType#907515 = 01))
(825) LogicalRelation
Arguments: parquet, [product#907516, plant#907517, orderDateTime#907518, planningStartDateTime#907519], false
(826) RepartitionByExpression
Arguments: [product#907516, plant#907517], 37
(827) Project
Arguments: [product#907516, plant#907517, orderDateTime#907518]
(828) LogicalRelation
Arguments: parquet, [systemId#907520, internalUUID#907521, plant#907522, product#907523, blockedForReplenishmentStartingFrom#907524, productionAspect#907525, salesPlant#907526, listing#907527, sourceOfSupplyCategory#907528], false
(829) Repartition
Arguments: 37, true
(830) Project
Arguments: [systemId#907520, internalUUID#907521, plant#907522, product#907523, blockedForReplenishmentStartingFrom#907524, productionAspect#907525, salesPlant#907526, listing#907527, sourceOfSupplyCategory#907528, struct(systemId, systemId#907520, internalUUID, internalUUID#907521, plant, plant#907522, product, product#907523, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907524, productionAspect, productionAspect#907525, salesPlant, salesPlant#907526, listing, listing#907527, sourceOfSupplyCategory, sourceOfSupplyCategory#907528) AS productPlant#907529]
(831) Project
Arguments: [productPlant#907529]
(832) Join
Arguments: LeftOuter, ((product#907516 <=> productPlant#907529.product.internalRefUUID) AND (plant#907517 <=> productPlant#907529.plant.internalRefUUID))
(833) Project
Arguments: [product#907516, plant#907517, orderDateTime#907518, productPlant#907529]
(834) LogicalRelation
Arguments: parquet, [systemId#907530, internalUUID#907531, id#907532, displayId#907533, name#907534, baseUnitOfMeasure#907535, unitOfMeasures#907536, unitOfMeasureConversions#907537, productionAspect#907538, salesAspect#907539, procurementAspect#907540, productGroup#907541], false
(835) Repartition
Arguments: 37, true
(836) Join
Arguments: LeftOuter, (product#907516 = internalUUID#907531)
(837) Project
Arguments: [product#907516, plant#907517, orderDateTime#907518, productPlant#907529, systemId#907530, internalUUID#907531, id#907532, displayId#907533, name#907534, baseUnitOfMeasure#907535, unitOfMeasures#907536, unitOfMeasureConversions#907537, productionAspect#907538, salesAspect#907539, procurementAspect#907540, productGroup#907541, filter(unitOfMeasureConversions#907537, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907529.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907529.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907535.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907535.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907542]
(838) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907542.quantityNumerator), true, [quantityNumerator#907543]
(839) Project
Arguments: [product#907516, plant#907517, orderDateTime#907518, productPlant#907529, systemId#907530, internalUUID#907531, id#907532, displayId#907533, name#907534, baseUnitOfMeasure#907535, unitOfMeasures#907536, unitOfMeasureConversions#907537, productionAspect#907538, salesAspect#907539, procurementAspect#907540, productGroup#907541, filteredUnitOfMeasureConversions#907542, quantityNumerator#907543]
(840) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907542.quantityDenominator), true, [quantityDenominator#907544]
(841) Project
Arguments: [product#907516, plant#907517, orderDateTime#907518, productPlant#907529, systemId#907530, internalUUID#907531, id#907532, displayId#907533, name#907534, baseUnitOfMeasure#907535, unitOfMeasures#907536, unitOfMeasureConversions#907537, productionAspect#907538, salesAspect#907539, procurementAspect#907540, productGroup#907541, filteredUnitOfMeasureConversions#907542, quantityNumerator#907543, quantityDenominator#907544]
(842) Project
Arguments: [product#907516, plant#907517, orderDateTime#907518, productPlant#907529, systemId#907530, internalUUID#907531, id#907532, displayId#907533, name#907534, baseUnitOfMeasure#907535, unitOfMeasures#907536, unitOfMeasureConversions#907537, productionAspect#907538, salesAspect#907539, procurementAspect#907540, productGroup#907541, filteredUnitOfMeasureConversions#907542, quantityNumerator#907543, quantityDenominator#907544, (cast(quantityNumerator#907543 as double) / cast(quantityDenominator#907544 as double)) AS outboundUnit#907545]
(843) Project
Arguments: [product#907516, plant#907517, orderDateTime#907518, productPlant#907529, systemId#907530, internalUUID#907531, id#907532, displayId#907533, name#907534, baseUnitOfMeasure#907535, unitOfMeasures#907536, unitOfMeasureConversions#907537, productionAspect#907538, salesAspect#907539, procurementAspect#907540, productGroup#907541, filteredUnitOfMeasureConversions#907542, quantityNumerator#907543, quantityDenominator#907544, CASE WHEN (isnull(outboundUnit#907545) OR (outboundUnit#907545 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907545 END AS outboundUnit#907546]
(844) Project
Arguments: [product#907516, plant#907517, orderDateTime#907518, productPlant#907529, outboundUnit#907546]
(845) Join
Arguments: Inner, ((plantUuid#907508 = plant#907517) AND (productUuid#907510 = product#907516))
(846) Filter
Arguments: (calculationDateTime#907504 <= orderDateTime#907518)
(847) Project
Arguments: [plantUuid#907508 AS plant#907547, productUuid#907510 AS product#907548, storageLocId#907511, calculationDateTime#907504, quantity#907513]
(848) LogicalRelation
Arguments: parquet, [systemId#907549, internalUUID#907550, product#907551, plant#907552, calculationDateTime#907553, stockQuantities#907554], false
(849) Repartition
Arguments: 37, true
(850) LogicalRelation
Arguments: parquet, [marketUnit#907555, description#907556, articleHierarchy#907557, defaultCurrency#907558, responsibilities#907559, replenishmentTypes#907560, distributionCenters#907561, assignedArticleHierarchyNodes#907562, minOrderQtySetting#907563, listingCheck#907564, odsSelection#907565, demandProfiles#907566, constraintProfiles#907567, optimizationProfiles#907568, orderGroupSplitProfiles#907569, supplierMinimumProfiles#907570, multipleRestrictionProfiles#907571, preferredUomSource#907572, handlingOfUnfulfilledDemands#907573, negligibleQuantitiesThreshold#907574, eventtype#907575], false
(851) Repartition
Arguments: 37, true
(852) Filter
Arguments: (marketUnit#907555 <=> AUTO_ALL_ProdLoc)
(853) Project
Arguments: [marketUnit#907555, description#907556, articleHierarchy#907557, defaultCurrency#907558, responsibilities#907559, replenishmentTypes#907560, distributionCenters#907561, assignedArticleHierarchyNodes#907562, minOrderQtySetting#907563, listingCheck#907564, odsSelection#907565, demandProfiles#907566, constraintProfiles#907567, optimizationProfiles#907568, orderGroupSplitProfiles#907569, supplierMinimumProfiles#907570, multipleRestrictionProfiles#907571, preferredUomSource#907572, handlingOfUnfulfilledDemands#907573, negligibleQuantitiesThreshold#907574, eventtype#907575]
(854) Project
Arguments: [distributionCenters#907561]
(855) Generate
Arguments: explode(distributionCenters#907561), false, [distributionCenters#907576]
(856) Project
Arguments: [distributionCenters#907576]
(857) Generate
Arguments: explode(distributionCenters#907576.storageLocations), false, [storageLocations#907577]
(858) Project
Arguments: [distributionCenters#907576.id AS plantId#907578, distributionCenters#907576.internalRefUUID AS plantUuid#907579, storageLocations#907577]
(859) Project
Arguments: [plantId#907578, plantUuid#907579, storageLocations#907577.id AS storageLocId#907580, storageLocations#907577.internalRefUUID AS storageLocUuid#907581]
(860) LogicalRelation
Arguments: parquet, [product#907582, plant#907583, orderDateTime#907584, planningStartDateTime#907585], false
(861) RepartitionByExpression
Arguments: [product#907582, plant#907583], 37
(862) Project
Arguments: [product#907582, plant#907583, orderDateTime#907584]
(863) LogicalRelation
Arguments: parquet, [systemId#907586, internalUUID#907587, plant#907588, product#907589, blockedForReplenishmentStartingFrom#907590, productionAspect#907591, salesPlant#907592, listing#907593, sourceOfSupplyCategory#907594], false
(864) Repartition
Arguments: 37, true
(865) Project
Arguments: [systemId#907586, internalUUID#907587, plant#907588, product#907589, blockedForReplenishmentStartingFrom#907590, productionAspect#907591, salesPlant#907592, listing#907593, sourceOfSupplyCategory#907594, struct(systemId, systemId#907586, internalUUID, internalUUID#907587, plant, plant#907588, product, product#907589, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907590, productionAspect, productionAspect#907591, salesPlant, salesPlant#907592, listing, listing#907593, sourceOfSupplyCategory, sourceOfSupplyCategory#907594) AS productPlant#907595]
(866) Project
Arguments: [productPlant#907595]
(867) Join
Arguments: LeftOuter, ((product#907582 <=> productPlant#907595.product.internalRefUUID) AND (plant#907583 <=> productPlant#907595.plant.internalRefUUID))
(868) Project
Arguments: [product#907582, plant#907583, orderDateTime#907584, productPlant#907595]
(869) LogicalRelation
Arguments: parquet, [systemId#907596, internalUUID#907597, id#907598, displayId#907599, name#907600, baseUnitOfMeasure#907601, unitOfMeasures#907602, unitOfMeasureConversions#907603, productionAspect#907604, salesAspect#907605, procurementAspect#907606, productGroup#907607], false
(870) Repartition
Arguments: 37, true
(871) Join
Arguments: LeftOuter, (product#907582 = internalUUID#907597)
(872) Project
Arguments: [product#907582, plant#907583, orderDateTime#907584, productPlant#907595, systemId#907596, internalUUID#907597, id#907598, displayId#907599, name#907600, baseUnitOfMeasure#907601, unitOfMeasures#907602, unitOfMeasureConversions#907603, productionAspect#907604, salesAspect#907605, procurementAspect#907606, productGroup#907607, filter(unitOfMeasureConversions#907603, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907595.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907595.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907601.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907601.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907608]
(873) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907608.quantityNumerator), true, [quantityNumerator#907609]
(874) Project
Arguments: [product#907582, plant#907583, orderDateTime#907584, productPlant#907595, systemId#907596, internalUUID#907597, id#907598, displayId#907599, name#907600, baseUnitOfMeasure#907601, unitOfMeasures#907602, unitOfMeasureConversions#907603, productionAspect#907604, salesAspect#907605, procurementAspect#907606, productGroup#907607, filteredUnitOfMeasureConversions#907608, quantityNumerator#907609]
(875) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907608.quantityDenominator), true, [quantityDenominator#907610]
(876) Project
Arguments: [product#907582, plant#907583, orderDateTime#907584, productPlant#907595, systemId#907596, internalUUID#907597, id#907598, displayId#907599, name#907600, baseUnitOfMeasure#907601, unitOfMeasures#907602, unitOfMeasureConversions#907603, productionAspect#907604, salesAspect#907605, procurementAspect#907606, productGroup#907607, filteredUnitOfMeasureConversions#907608, quantityNumerator#907609, quantityDenominator#907610]
(877) Project
Arguments: [product#907582, plant#907583, orderDateTime#907584, productPlant#907595, systemId#907596, internalUUID#907597, id#907598, displayId#907599, name#907600, baseUnitOfMeasure#907601, unitOfMeasures#907602, unitOfMeasureConversions#907603, productionAspect#907604, salesAspect#907605, procurementAspect#907606, productGroup#907607, filteredUnitOfMeasureConversions#907608, quantityNumerator#907609, quantityDenominator#907610, (cast(quantityNumerator#907609 as double) / cast(quantityDenominator#907610 as double)) AS outboundUnit#907611]
(878) Project
Arguments: [product#907582, plant#907583, orderDateTime#907584, productPlant#907595, systemId#907596, internalUUID#907597, id#907598, displayId#907599, name#907600, baseUnitOfMeasure#907601, unitOfMeasures#907602, unitOfMeasureConversions#907603, productionAspect#907604, salesAspect#907605, procurementAspect#907606, productGroup#907607, filteredUnitOfMeasureConversions#907608, quantityNumerator#907609, quantityDenominator#907610, CASE WHEN (isnull(outboundUnit#907611) OR (outboundUnit#907611 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907611 END AS outboundUnit#907612]
(879) Project
Arguments: [product#907582, plant#907583, orderDateTime#907584, productPlant#907595, outboundUnit#907612]
(880) Project
Arguments: [plant#907583]
(881) Deduplicate
Arguments: [plant#907583]
(882) Join
Arguments: Inner, (plantUuid#907579 = plant#907583)
(883) Project
Arguments: [plantId#907578, plantUuid#907579, storageLocId#907580, storageLocUuid#907581]
(884) Join
Arguments: Inner, (plant#907552.internalRefUUID <=> plantUuid#907579)
(885) Generate
Arguments: explode(filter(stockQuantities#907554, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#907581) AND (lambda x#905594.storageLocation.Id = storageLocId#907580)), lambda x#905594, false))), false, [stockQuantity#907613]
(886) Project
Arguments: [systemId#907549, internalUUID#907550, product#907551, plant#907552, calculationDateTime#907553, stockQuantities#907554, plantId#907578, plantUuid#907579, storageLocId#907580, storageLocUuid#907581, stockQuantity#907613]
(887) Aggregate
Arguments: [plantUuid#907579, internalUUID#907550, plant#907552, product#907551, systemId#907549], [plantUuid#907579, internalUUID#907550, plant#907552, product#907551, systemId#907549, first(calculationDateTime#907553, false) AS calculationDateTime#907614, collect_list(stockQuantity#907613, 0, 0) AS stockQuantities#907615]
(888) Project
Arguments: [systemId#907549, internalUUID#907550, product#907551, plant#907552, calculationDateTime#907614, stockQuantities#907615]
(889) Generate
Arguments: explode(stockQuantities#907615), false, [stockQuantity#907616]
(890) Project
Arguments: [systemId#907549, internalUUID#907550, product#907551, plant#907552, calculationDateTime#907614, stockQuantities#907615, stockQuantity#907616]
(891) Project
Arguments: [plant#907552.id AS plant#907617, plant#907552.internalRefUUID AS plantUuid#907618, product#907551.id AS product#907619, product#907551.internalRefUUID AS productUuid#907620, calculationDateTime#907614, stockQuantity#907616.storagelocation.id AS storageLocId#907621, stockQuantity#907616.storagelocation.internalRefUUID AS storageLocUuid#907622, stockQuantity#907616.quantity.measure AS quantity#907623, stockQuantity#907616.specialStockIndicator.code AS specialStockIndicator#907624, stockQuantity#907616.stockType.code AS stockType#907625]
(892) Filter
Arguments: ((specialStockIndicator#907624 = ) AND (stockType#907625 = 01))
(893) LogicalRelation
Arguments: parquet, [product#907626, plant#907627, orderDateTime#907628, planningStartDateTime#907629], false
(894) RepartitionByExpression
Arguments: [product#907626, plant#907627], 37
(895) Project
Arguments: [product#907626, plant#907627, orderDateTime#907628]
(896) LogicalRelation
Arguments: parquet, [systemId#907630, internalUUID#907631, plant#907632, product#907633, blockedForReplenishmentStartingFrom#907634, productionAspect#907635, salesPlant#907636, listing#907637, sourceOfSupplyCategory#907638], false
(897) Repartition
Arguments: 37, true
(898) Project
Arguments: [systemId#907630, internalUUID#907631, plant#907632, product#907633, blockedForReplenishmentStartingFrom#907634, productionAspect#907635, salesPlant#907636, listing#907637, sourceOfSupplyCategory#907638, struct(systemId, systemId#907630, internalUUID, internalUUID#907631, plant, plant#907632, product, product#907633, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907634, productionAspect, productionAspect#907635, salesPlant, salesPlant#907636, listing, listing#907637, sourceOfSupplyCategory, sourceOfSupplyCategory#907638) AS productPlant#907639]
(899) Project
Arguments: [productPlant#907639]
(900) Join
Arguments: LeftOuter, ((product#907626 <=> productPlant#907639.product.internalRefUUID) AND (plant#907627 <=> productPlant#907639.plant.internalRefUUID))
(901) Project
Arguments: [product#907626, plant#907627, orderDateTime#907628, productPlant#907639]
(902) LogicalRelation
Arguments: parquet, [systemId#907640, internalUUID#907641, id#907642, displayId#907643, name#907644, baseUnitOfMeasure#907645, unitOfMeasures#907646, unitOfMeasureConversions#907647, productionAspect#907648, salesAspect#907649, procurementAspect#907650, productGroup#907651], false
(903) Repartition
Arguments: 37, true
(904) Join
Arguments: LeftOuter, (product#907626 = internalUUID#907641)
(905) Project
Arguments: [product#907626, plant#907627, orderDateTime#907628, productPlant#907639, systemId#907640, internalUUID#907641, id#907642, displayId#907643, name#907644, baseUnitOfMeasure#907645, unitOfMeasures#907646, unitOfMeasureConversions#907647, productionAspect#907648, salesAspect#907649, procurementAspect#907650, productGroup#907651, filter(unitOfMeasureConversions#907647, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907639.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907639.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907645.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907645.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907652]
(906) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907652.quantityNumerator), true, [quantityNumerator#907653]
(907) Project
Arguments: [product#907626, plant#907627, orderDateTime#907628, productPlant#907639, systemId#907640, internalUUID#907641, id#907642, displayId#907643, name#907644, baseUnitOfMeasure#907645, unitOfMeasures#907646, unitOfMeasureConversions#907647, productionAspect#907648, salesAspect#907649, procurementAspect#907650, productGroup#907651, filteredUnitOfMeasureConversions#907652, quantityNumerator#907653]
(908) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907652.quantityDenominator), true, [quantityDenominator#907654]
(909) Project
Arguments: [product#907626, plant#907627, orderDateTime#907628, productPlant#907639, systemId#907640, internalUUID#907641, id#907642, displayId#907643, name#907644, baseUnitOfMeasure#907645, unitOfMeasures#907646, unitOfMeasureConversions#907647, productionAspect#907648, salesAspect#907649, procurementAspect#907650, productGroup#907651, filteredUnitOfMeasureConversions#907652, quantityNumerator#907653, quantityDenominator#907654]
(910) Project
Arguments: [product#907626, plant#907627, orderDateTime#907628, productPlant#907639, systemId#907640, internalUUID#907641, id#907642, displayId#907643, name#907644, baseUnitOfMeasure#907645, unitOfMeasures#907646, unitOfMeasureConversions#907647, productionAspect#907648, salesAspect#907649, procurementAspect#907650, productGroup#907651, filteredUnitOfMeasureConversions#907652, quantityNumerator#907653, quantityDenominator#907654, (cast(quantityNumerator#907653 as double) / cast(quantityDenominator#907654 as double)) AS outboundUnit#907655]
(911) Project
Arguments: [product#907626, plant#907627, orderDateTime#907628, productPlant#907639, systemId#907640, internalUUID#907641, id#907642, displayId#907643, name#907644, baseUnitOfMeasure#907645, unitOfMeasures#907646, unitOfMeasureConversions#907647, productionAspect#907648, salesAspect#907649, procurementAspect#907650, productGroup#907651, filteredUnitOfMeasureConversions#907652, quantityNumerator#907653, quantityDenominator#907654, CASE WHEN (isnull(outboundUnit#907655) OR (outboundUnit#907655 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907655 END AS outboundUnit#907656]
(912) Project
Arguments: [product#907626, plant#907627, orderDateTime#907628, productPlant#907639, outboundUnit#907656]
(913) Join
Arguments: Inner, ((plantUuid#907618 = plant#907627) AND (productUuid#907620 = product#907626))
(914) Filter
Arguments: (calculationDateTime#907614 <= orderDateTime#907628)
(915) Project
Arguments: [plantUuid#907618 AS plant#907657, productUuid#907620 AS product#907658, storageLocId#907621, calculationDateTime#907614, quantity#907623]
(916) Aggregate
Arguments: [plant#907657, product#907658, storageLocId#907621], [plant#907657, product#907658, storageLocId#907621, max(calculationDateTime#907614) AS max_calc_datetime#907659]
(917) Join
Arguments: Inner, ((((plant#907547 <=> plant#907657) AND (product#907548 <=> product#907658)) AND (storageLocId#907511 <=> storageLocId#907621)) AND (calculationDateTime#907504 <=> max_calc_datetime#907659))
(918) Project
Arguments: [plant#907547, product#907548, storageLocId#907511, calculationDateTime#907504, quantity#907513]
(919) Aggregate
Arguments: [product#907548, plant#907547], [product#907548, plant#907547, sum(quantity#907513) AS quantitySum#907660, min(calculationDateTime#907504) AS minCalculationDateTime#907661]
(920) Project
Arguments: [product#907548, plant#907547, quantitySum#907660, minCalculationDateTime#907661, round(quantitySum#907660, 0) AS roundedQuantitySum#907662]
(921) Join
Arguments: LeftOuter, ((plant#907409 = plant#907547) AND (product#907408 = product#907548))
(922) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, outboundUnit#907438, roundedQuantitySum#907662, minCalculationDateTime#907661]
(923) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, outboundUnit#907438, roundedQuantitySum#907662, minCalculationDateTime#907661, CASE WHEN isnotnull(minCalculationDateTime#907661) THEN minCalculationDateTime#907661 ELSE orderDateTime#907410 END AS stockDatetime#907663]
(924) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, outboundUnit#907438, roundedQuantitySum#907662, minCalculationDateTime#907661, stockDatetime#907663, CASE WHEN isnotnull(roundedQuantitySum#907662) THEN array(roundedQuantitySum#907662) ELSE array(0.0) END AS stockBatchQuantities#907664]
(925) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, outboundUnit#907438, roundedQuantitySum#907662, minCalculationDateTime#907661, stockDatetime#907663, stockBatchQuantities#907664, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#907665]
(926) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, outboundUnit#907438, roundedQuantitySum#907662, stockDatetime#907663, stockBatchQuantities#907664, stockBatchShelfLifeEndDatetimes#907665]
(927) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, outboundUnit#907438, stockDatetime#907663, stockBatchQuantities#907664, stockBatchShelfLifeEndDatetimes#907665]
(928) LogicalRelation
Arguments: parquet, [product#907666, plant#907667, orderDateTime#907668, planningStartDateTime#907669], false
(929) RepartitionByExpression
Arguments: [product#907666, plant#907667], 37
(930) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668]
(931) LogicalRelation
Arguments: parquet, [systemId#907670, internalUUID#907671, plant#907672, product#907673, blockedForReplenishmentStartingFrom#907674, productionAspect#907675, salesPlant#907676, listing#907677, sourceOfSupplyCategory#907678], false
(932) Repartition
Arguments: 37, true
(933) Project
Arguments: [systemId#907670, internalUUID#907671, plant#907672, product#907673, blockedForReplenishmentStartingFrom#907674, productionAspect#907675, salesPlant#907676, listing#907677, sourceOfSupplyCategory#907678, struct(systemId, systemId#907670, internalUUID, internalUUID#907671, plant, plant#907672, product, product#907673, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907674, productionAspect, productionAspect#907675, salesPlant, salesPlant#907676, listing, listing#907677, sourceOfSupplyCategory, sourceOfSupplyCategory#907678) AS productPlant#907679]
(934) Project
Arguments: [productPlant#907679]
(935) Join
Arguments: LeftOuter, ((product#907666 <=> productPlant#907679.product.internalRefUUID) AND (plant#907667 <=> productPlant#907679.plant.internalRefUUID))
(936) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679]
(937) LogicalRelation
Arguments: parquet, [systemId#907680, internalUUID#907681, id#907682, displayId#907683, name#907684, baseUnitOfMeasure#907685, unitOfMeasures#907686, unitOfMeasureConversions#907687, productionAspect#907688, salesAspect#907689, procurementAspect#907690, productGroup#907691], false
(938) Repartition
Arguments: 37, true
(939) Join
Arguments: LeftOuter, (product#907666 = internalUUID#907681)
(940) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, systemId#907680, internalUUID#907681, id#907682, displayId#907683, name#907684, baseUnitOfMeasure#907685, unitOfMeasures#907686, unitOfMeasureConversions#907687, productionAspect#907688, salesAspect#907689, procurementAspect#907690, productGroup#907691, filter(unitOfMeasureConversions#907687, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907679.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907679.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907685.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907685.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907692]
(941) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907692.quantityNumerator), true, [quantityNumerator#907693]
(942) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, systemId#907680, internalUUID#907681, id#907682, displayId#907683, name#907684, baseUnitOfMeasure#907685, unitOfMeasures#907686, unitOfMeasureConversions#907687, productionAspect#907688, salesAspect#907689, procurementAspect#907690, productGroup#907691, filteredUnitOfMeasureConversions#907692, quantityNumerator#907693]
(943) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907692.quantityDenominator), true, [quantityDenominator#907694]
(944) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, systemId#907680, internalUUID#907681, id#907682, displayId#907683, name#907684, baseUnitOfMeasure#907685, unitOfMeasures#907686, unitOfMeasureConversions#907687, productionAspect#907688, salesAspect#907689, procurementAspect#907690, productGroup#907691, filteredUnitOfMeasureConversions#907692, quantityNumerator#907693, quantityDenominator#907694]
(945) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, systemId#907680, internalUUID#907681, id#907682, displayId#907683, name#907684, baseUnitOfMeasure#907685, unitOfMeasures#907686, unitOfMeasureConversions#907687, productionAspect#907688, salesAspect#907689, procurementAspect#907690, productGroup#907691, filteredUnitOfMeasureConversions#907692, quantityNumerator#907693, quantityDenominator#907694, (cast(quantityNumerator#907693 as double) / cast(quantityDenominator#907694 as double)) AS outboundUnit#907695]
(946) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, systemId#907680, internalUUID#907681, id#907682, displayId#907683, name#907684, baseUnitOfMeasure#907685, unitOfMeasures#907686, unitOfMeasureConversions#907687, productionAspect#907688, salesAspect#907689, procurementAspect#907690, productGroup#907691, filteredUnitOfMeasureConversions#907692, quantityNumerator#907693, quantityDenominator#907694, CASE WHEN (isnull(outboundUnit#907695) OR (outboundUnit#907695 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907695 END AS outboundUnit#907696]
(947) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, outboundUnit#907696]
(948) LogicalRelation
Arguments: parquet, [systemId#907697, internalUUID#907698, product#907699, plant#907700, calculationDateTime#907701, stockQuantities#907702], false
(949) Repartition
Arguments: 37, true
(950) LogicalRelation
Arguments: parquet, [marketUnit#907703, description#907704, articleHierarchy#907705, defaultCurrency#907706, responsibilities#907707, replenishmentTypes#907708, distributionCenters#907709, assignedArticleHierarchyNodes#907710, minOrderQtySetting#907711, listingCheck#907712, odsSelection#907713, demandProfiles#907714, constraintProfiles#907715, optimizationProfiles#907716, orderGroupSplitProfiles#907717, supplierMinimumProfiles#907718, multipleRestrictionProfiles#907719, preferredUomSource#907720, handlingOfUnfulfilledDemands#907721, negligibleQuantitiesThreshold#907722, eventtype#907723], false
(951) Repartition
Arguments: 37, true
(952) Filter
Arguments: (marketUnit#907703 <=> AUTO_ALL_ProdLoc)
(953) Project
Arguments: [marketUnit#907703, description#907704, articleHierarchy#907705, defaultCurrency#907706, responsibilities#907707, replenishmentTypes#907708, distributionCenters#907709, assignedArticleHierarchyNodes#907710, minOrderQtySetting#907711, listingCheck#907712, odsSelection#907713, demandProfiles#907714, constraintProfiles#907715, optimizationProfiles#907716, orderGroupSplitProfiles#907717, supplierMinimumProfiles#907718, multipleRestrictionProfiles#907719, preferredUomSource#907720, handlingOfUnfulfilledDemands#907721, negligibleQuantitiesThreshold#907722, eventtype#907723]
(954) Project
Arguments: [distributionCenters#907709]
(955) Generate
Arguments: explode(distributionCenters#907709), false, [distributionCenters#907724]
(956) Project
Arguments: [distributionCenters#907724]
(957) Generate
Arguments: explode(distributionCenters#907724.storageLocations), false, [storageLocations#907725]
(958) Project
Arguments: [distributionCenters#907724.id AS plantId#907726, distributionCenters#907724.internalRefUUID AS plantUuid#907727, storageLocations#907725]
(959) Project
Arguments: [plantId#907726, plantUuid#907727, storageLocations#907725.id AS storageLocId#907728, storageLocations#907725.internalRefUUID AS storageLocUuid#907729]
(960) LogicalRelation
Arguments: parquet, [product#907730, plant#907731, orderDateTime#907732, planningStartDateTime#907733], false
(961) RepartitionByExpression
Arguments: [product#907730, plant#907731], 37
(962) Project
Arguments: [product#907730, plant#907731, orderDateTime#907732]
(963) LogicalRelation
Arguments: parquet, [systemId#907734, internalUUID#907735, plant#907736, product#907737, blockedForReplenishmentStartingFrom#907738, productionAspect#907739, salesPlant#907740, listing#907741, sourceOfSupplyCategory#907742], false
(964) Repartition
Arguments: 37, true
(965) Project
Arguments: [systemId#907734, internalUUID#907735, plant#907736, product#907737, blockedForReplenishmentStartingFrom#907738, productionAspect#907739, salesPlant#907740, listing#907741, sourceOfSupplyCategory#907742, struct(systemId, systemId#907734, internalUUID, internalUUID#907735, plant, plant#907736, product, product#907737, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907738, productionAspect, productionAspect#907739, salesPlant, salesPlant#907740, listing, listing#907741, sourceOfSupplyCategory, sourceOfSupplyCategory#907742) AS productPlant#907743]
(966) Project
Arguments: [productPlant#907743]
(967) Join
Arguments: LeftOuter, ((product#907730 <=> productPlant#907743.product.internalRefUUID) AND (plant#907731 <=> productPlant#907743.plant.internalRefUUID))
(968) Project
Arguments: [product#907730, plant#907731, orderDateTime#907732, productPlant#907743]
(969) LogicalRelation
Arguments: parquet, [systemId#907744, internalUUID#907745, id#907746, displayId#907747, name#907748, baseUnitOfMeasure#907749, unitOfMeasures#907750, unitOfMeasureConversions#907751, productionAspect#907752, salesAspect#907753, procurementAspect#907754, productGroup#907755], false
(970) Repartition
Arguments: 37, true
(971) Join
Arguments: LeftOuter, (product#907730 = internalUUID#907745)
(972) Project
Arguments: [product#907730, plant#907731, orderDateTime#907732, productPlant#907743, systemId#907744, internalUUID#907745, id#907746, displayId#907747, name#907748, baseUnitOfMeasure#907749, unitOfMeasures#907750, unitOfMeasureConversions#907751, productionAspect#907752, salesAspect#907753, procurementAspect#907754, productGroup#907755, filter(unitOfMeasureConversions#907751, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907743.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907743.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907749.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907749.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907756]
(973) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907756.quantityNumerator), true, [quantityNumerator#907757]
(974) Project
Arguments: [product#907730, plant#907731, orderDateTime#907732, productPlant#907743, systemId#907744, internalUUID#907745, id#907746, displayId#907747, name#907748, baseUnitOfMeasure#907749, unitOfMeasures#907750, unitOfMeasureConversions#907751, productionAspect#907752, salesAspect#907753, procurementAspect#907754, productGroup#907755, filteredUnitOfMeasureConversions#907756, quantityNumerator#907757]
(975) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907756.quantityDenominator), true, [quantityDenominator#907758]
(976) Project
Arguments: [product#907730, plant#907731, orderDateTime#907732, productPlant#907743, systemId#907744, internalUUID#907745, id#907746, displayId#907747, name#907748, baseUnitOfMeasure#907749, unitOfMeasures#907750, unitOfMeasureConversions#907751, productionAspect#907752, salesAspect#907753, procurementAspect#907754, productGroup#907755, filteredUnitOfMeasureConversions#907756, quantityNumerator#907757, quantityDenominator#907758]
(977) Project
Arguments: [product#907730, plant#907731, orderDateTime#907732, productPlant#907743, systemId#907744, internalUUID#907745, id#907746, displayId#907747, name#907748, baseUnitOfMeasure#907749, unitOfMeasures#907750, unitOfMeasureConversions#907751, productionAspect#907752, salesAspect#907753, procurementAspect#907754, productGroup#907755, filteredUnitOfMeasureConversions#907756, quantityNumerator#907757, quantityDenominator#907758, (cast(quantityNumerator#907757 as double) / cast(quantityDenominator#907758 as double)) AS outboundUnit#907759]
(978) Project
Arguments: [product#907730, plant#907731, orderDateTime#907732, productPlant#907743, systemId#907744, internalUUID#907745, id#907746, displayId#907747, name#907748, baseUnitOfMeasure#907749, unitOfMeasures#907750, unitOfMeasureConversions#907751, productionAspect#907752, salesAspect#907753, procurementAspect#907754, productGroup#907755, filteredUnitOfMeasureConversions#907756, quantityNumerator#907757, quantityDenominator#907758, CASE WHEN (isnull(outboundUnit#907759) OR (outboundUnit#907759 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907759 END AS outboundUnit#907760]
(979) Project
Arguments: [product#907730, plant#907731, orderDateTime#907732, productPlant#907743, outboundUnit#907760]
(980) Project
Arguments: [plant#907731]
(981) Deduplicate
Arguments: [plant#907731]
(982) Join
Arguments: Inner, (plantUuid#907727 = plant#907731)
(983) Project
Arguments: [plantId#907726, plantUuid#907727, storageLocId#907728, storageLocUuid#907729]
(984) Join
Arguments: Inner, (plant#907700.internalRefUUID <=> plantUuid#907727)
(985) Generate
Arguments: explode(filter(stockQuantities#907702, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#907729) AND (lambda x#905594.storageLocation.Id = storageLocId#907728)), lambda x#905594, false))), false, [stockQuantity#907761]
(986) Project
Arguments: [systemId#907697, internalUUID#907698, product#907699, plant#907700, calculationDateTime#907701, stockQuantities#907702, plantId#907726, plantUuid#907727, storageLocId#907728, storageLocUuid#907729, stockQuantity#907761]
(987) Aggregate
Arguments: [plantUuid#907727, internalUUID#907698, plant#907700, product#907699, systemId#907697], [plantUuid#907727, internalUUID#907698, plant#907700, product#907699, systemId#907697, first(calculationDateTime#907701, false) AS calculationDateTime#907762, collect_list(stockQuantity#907761, 0, 0) AS stockQuantities#907763]
(988) Project
Arguments: [systemId#907697, internalUUID#907698, product#907699, plant#907700, calculationDateTime#907762, stockQuantities#907763]
(989) Generate
Arguments: explode(stockQuantities#907763), false, [stockQuantity#907764]
(990) Project
Arguments: [systemId#907697, internalUUID#907698, product#907699, plant#907700, calculationDateTime#907762, stockQuantities#907763, stockQuantity#907764]
(991) Project
Arguments: [plant#907700.id AS plant#907765, plant#907700.internalRefUUID AS plantUuid#907766, product#907699.id AS product#907767, product#907699.internalRefUUID AS productUuid#907768, calculationDateTime#907762, stockQuantity#907764.storagelocation.id AS storageLocId#907769, stockQuantity#907764.storagelocation.internalRefUUID AS storageLocUuid#907770, stockQuantity#907764.quantity.measure AS quantity#907771, stockQuantity#907764.specialStockIndicator.code AS specialStockIndicator#907772, stockQuantity#907764.stockType.code AS stockType#907773]
(992) Filter
Arguments: ((specialStockIndicator#907772 = ) AND (stockType#907773 = 01))
(993) LogicalRelation
Arguments: parquet, [product#907774, plant#907775, orderDateTime#907776, planningStartDateTime#907777], false
(994) RepartitionByExpression
Arguments: [product#907774, plant#907775], 37
(995) Project
Arguments: [product#907774, plant#907775, orderDateTime#907776]
(996) LogicalRelation
Arguments: parquet, [systemId#907778, internalUUID#907779, plant#907780, product#907781, blockedForReplenishmentStartingFrom#907782, productionAspect#907783, salesPlant#907784, listing#907785, sourceOfSupplyCategory#907786], false
(997) Repartition
Arguments: 37, true
(998) Project
Arguments: [systemId#907778, internalUUID#907779, plant#907780, product#907781, blockedForReplenishmentStartingFrom#907782, productionAspect#907783, salesPlant#907784, listing#907785, sourceOfSupplyCategory#907786, struct(systemId, systemId#907778, internalUUID, internalUUID#907779, plant, plant#907780, product, product#907781, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907782, productionAspect, productionAspect#907783, salesPlant, salesPlant#907784, listing, listing#907785, sourceOfSupplyCategory, sourceOfSupplyCategory#907786) AS productPlant#907787]
(999) Project
Arguments: [productPlant#907787]
(1000) Join
Arguments: LeftOuter, ((product#907774 <=> productPlant#907787.product.internalRefUUID) AND (plant#907775 <=> productPlant#907787.plant.internalRefUUID))
(1001) Project
Arguments: [product#907774, plant#907775, orderDateTime#907776, productPlant#907787]
(1002) LogicalRelation
Arguments: parquet, [systemId#907788, internalUUID#907789, id#907790, displayId#907791, name#907792, baseUnitOfMeasure#907793, unitOfMeasures#907794, unitOfMeasureConversions#907795, productionAspect#907796, salesAspect#907797, procurementAspect#907798, productGroup#907799], false
(1003) Repartition
Arguments: 37, true
(1004) Join
Arguments: LeftOuter, (product#907774 = internalUUID#907789)
(1005) Project
Arguments: [product#907774, plant#907775, orderDateTime#907776, productPlant#907787, systemId#907788, internalUUID#907789, id#907790, displayId#907791, name#907792, baseUnitOfMeasure#907793, unitOfMeasures#907794, unitOfMeasureConversions#907795, productionAspect#907796, salesAspect#907797, procurementAspect#907798, productGroup#907799, filter(unitOfMeasureConversions#907795, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907787.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907787.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907793.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907793.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907800]
(1006) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907800.quantityNumerator), true, [quantityNumerator#907801]
(1007) Project
Arguments: [product#907774, plant#907775, orderDateTime#907776, productPlant#907787, systemId#907788, internalUUID#907789, id#907790, displayId#907791, name#907792, baseUnitOfMeasure#907793, unitOfMeasures#907794, unitOfMeasureConversions#907795, productionAspect#907796, salesAspect#907797, procurementAspect#907798, productGroup#907799, filteredUnitOfMeasureConversions#907800, quantityNumerator#907801]
(1008) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907800.quantityDenominator), true, [quantityDenominator#907802]
(1009) Project
Arguments: [product#907774, plant#907775, orderDateTime#907776, productPlant#907787, systemId#907788, internalUUID#907789, id#907790, displayId#907791, name#907792, baseUnitOfMeasure#907793, unitOfMeasures#907794, unitOfMeasureConversions#907795, productionAspect#907796, salesAspect#907797, procurementAspect#907798, productGroup#907799, filteredUnitOfMeasureConversions#907800, quantityNumerator#907801, quantityDenominator#907802]
(1010) Project
Arguments: [product#907774, plant#907775, orderDateTime#907776, productPlant#907787, systemId#907788, internalUUID#907789, id#907790, displayId#907791, name#907792, baseUnitOfMeasure#907793, unitOfMeasures#907794, unitOfMeasureConversions#907795, productionAspect#907796, salesAspect#907797, procurementAspect#907798, productGroup#907799, filteredUnitOfMeasureConversions#907800, quantityNumerator#907801, quantityDenominator#907802, (cast(quantityNumerator#907801 as double) / cast(quantityDenominator#907802 as double)) AS outboundUnit#907803]
(1011) Project
Arguments: [product#907774, plant#907775, orderDateTime#907776, productPlant#907787, systemId#907788, internalUUID#907789, id#907790, displayId#907791, name#907792, baseUnitOfMeasure#907793, unitOfMeasures#907794, unitOfMeasureConversions#907795, productionAspect#907796, salesAspect#907797, procurementAspect#907798, productGroup#907799, filteredUnitOfMeasureConversions#907800, quantityNumerator#907801, quantityDenominator#907802, CASE WHEN (isnull(outboundUnit#907803) OR (outboundUnit#907803 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907803 END AS outboundUnit#907804]
(1012) Project
Arguments: [product#907774, plant#907775, orderDateTime#907776, productPlant#907787, outboundUnit#907804]
(1013) Join
Arguments: Inner, ((plantUuid#907766 = plant#907775) AND (productUuid#907768 = product#907774))
(1014) Filter
Arguments: (calculationDateTime#907762 <= orderDateTime#907776)
(1015) Project
Arguments: [plantUuid#907766 AS plant#907805, productUuid#907768 AS product#907806, storageLocId#907769, calculationDateTime#907762, quantity#907771]
(1016) LogicalRelation
Arguments: parquet, [systemId#907807, internalUUID#907808, product#907809, plant#907810, calculationDateTime#907811, stockQuantities#907812], false
(1017) Repartition
Arguments: 37, true
(1018) LogicalRelation
Arguments: parquet, [marketUnit#907813, description#907814, articleHierarchy#907815, defaultCurrency#907816, responsibilities#907817, replenishmentTypes#907818, distributionCenters#907819, assignedArticleHierarchyNodes#907820, minOrderQtySetting#907821, listingCheck#907822, odsSelection#907823, demandProfiles#907824, constraintProfiles#907825, optimizationProfiles#907826, orderGroupSplitProfiles#907827, supplierMinimumProfiles#907828, multipleRestrictionProfiles#907829, preferredUomSource#907830, handlingOfUnfulfilledDemands#907831, negligibleQuantitiesThreshold#907832, eventtype#907833], false
(1019) Repartition
Arguments: 37, true
(1020) Filter
Arguments: (marketUnit#907813 <=> AUTO_ALL_ProdLoc)
(1021) Project
Arguments: [marketUnit#907813, description#907814, articleHierarchy#907815, defaultCurrency#907816, responsibilities#907817, replenishmentTypes#907818, distributionCenters#907819, assignedArticleHierarchyNodes#907820, minOrderQtySetting#907821, listingCheck#907822, odsSelection#907823, demandProfiles#907824, constraintProfiles#907825, optimizationProfiles#907826, orderGroupSplitProfiles#907827, supplierMinimumProfiles#907828, multipleRestrictionProfiles#907829, preferredUomSource#907830, handlingOfUnfulfilledDemands#907831, negligibleQuantitiesThreshold#907832, eventtype#907833]
(1022) Project
Arguments: [distributionCenters#907819]
(1023) Generate
Arguments: explode(distributionCenters#907819), false, [distributionCenters#907834]
(1024) Project
Arguments: [distributionCenters#907834]
(1025) Generate
Arguments: explode(distributionCenters#907834.storageLocations), false, [storageLocations#907835]
(1026) Project
Arguments: [distributionCenters#907834.id AS plantId#907836, distributionCenters#907834.internalRefUUID AS plantUuid#907837, storageLocations#907835]
(1027) Project
Arguments: [plantId#907836, plantUuid#907837, storageLocations#907835.id AS storageLocId#907838, storageLocations#907835.internalRefUUID AS storageLocUuid#907839]
(1028) LogicalRelation
Arguments: parquet, [product#907840, plant#907841, orderDateTime#907842, planningStartDateTime#907843], false
(1029) RepartitionByExpression
Arguments: [product#907840, plant#907841], 37
(1030) Project
Arguments: [product#907840, plant#907841, orderDateTime#907842]
(1031) LogicalRelation
Arguments: parquet, [systemId#907844, internalUUID#907845, plant#907846, product#907847, blockedForReplenishmentStartingFrom#907848, productionAspect#907849, salesPlant#907850, listing#907851, sourceOfSupplyCategory#907852], false
(1032) Repartition
Arguments: 37, true
(1033) Project
Arguments: [systemId#907844, internalUUID#907845, plant#907846, product#907847, blockedForReplenishmentStartingFrom#907848, productionAspect#907849, salesPlant#907850, listing#907851, sourceOfSupplyCategory#907852, struct(systemId, systemId#907844, internalUUID, internalUUID#907845, plant, plant#907846, product, product#907847, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907848, productionAspect, productionAspect#907849, salesPlant, salesPlant#907850, listing, listing#907851, sourceOfSupplyCategory, sourceOfSupplyCategory#907852) AS productPlant#907853]
(1034) Project
Arguments: [productPlant#907853]
(1035) Join
Arguments: LeftOuter, ((product#907840 <=> productPlant#907853.product.internalRefUUID) AND (plant#907841 <=> productPlant#907853.plant.internalRefUUID))
(1036) Project
Arguments: [product#907840, plant#907841, orderDateTime#907842, productPlant#907853]
(1037) LogicalRelation
Arguments: parquet, [systemId#907854, internalUUID#907855, id#907856, displayId#907857, name#907858, baseUnitOfMeasure#907859, unitOfMeasures#907860, unitOfMeasureConversions#907861, productionAspect#907862, salesAspect#907863, procurementAspect#907864, productGroup#907865], false
(1038) Repartition
Arguments: 37, true
(1039) Join
Arguments: LeftOuter, (product#907840 = internalUUID#907855)
(1040) Project
Arguments: [product#907840, plant#907841, orderDateTime#907842, productPlant#907853, systemId#907854, internalUUID#907855, id#907856, displayId#907857, name#907858, baseUnitOfMeasure#907859, unitOfMeasures#907860, unitOfMeasureConversions#907861, productionAspect#907862, salesAspect#907863, procurementAspect#907864, productGroup#907865, filter(unitOfMeasureConversions#907861, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907853.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907853.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907859.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907859.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907866]
(1041) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907866.quantityNumerator), true, [quantityNumerator#907867]
(1042) Project
Arguments: [product#907840, plant#907841, orderDateTime#907842, productPlant#907853, systemId#907854, internalUUID#907855, id#907856, displayId#907857, name#907858, baseUnitOfMeasure#907859, unitOfMeasures#907860, unitOfMeasureConversions#907861, productionAspect#907862, salesAspect#907863, procurementAspect#907864, productGroup#907865, filteredUnitOfMeasureConversions#907866, quantityNumerator#907867]
(1043) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907866.quantityDenominator), true, [quantityDenominator#907868]
(1044) Project
Arguments: [product#907840, plant#907841, orderDateTime#907842, productPlant#907853, systemId#907854, internalUUID#907855, id#907856, displayId#907857, name#907858, baseUnitOfMeasure#907859, unitOfMeasures#907860, unitOfMeasureConversions#907861, productionAspect#907862, salesAspect#907863, procurementAspect#907864, productGroup#907865, filteredUnitOfMeasureConversions#907866, quantityNumerator#907867, quantityDenominator#907868]
(1045) Project
Arguments: [product#907840, plant#907841, orderDateTime#907842, productPlant#907853, systemId#907854, internalUUID#907855, id#907856, displayId#907857, name#907858, baseUnitOfMeasure#907859, unitOfMeasures#907860, unitOfMeasureConversions#907861, productionAspect#907862, salesAspect#907863, procurementAspect#907864, productGroup#907865, filteredUnitOfMeasureConversions#907866, quantityNumerator#907867, quantityDenominator#907868, (cast(quantityNumerator#907867 as double) / cast(quantityDenominator#907868 as double)) AS outboundUnit#907869]
(1046) Project
Arguments: [product#907840, plant#907841, orderDateTime#907842, productPlant#907853, systemId#907854, internalUUID#907855, id#907856, displayId#907857, name#907858, baseUnitOfMeasure#907859, unitOfMeasures#907860, unitOfMeasureConversions#907861, productionAspect#907862, salesAspect#907863, procurementAspect#907864, productGroup#907865, filteredUnitOfMeasureConversions#907866, quantityNumerator#907867, quantityDenominator#907868, CASE WHEN (isnull(outboundUnit#907869) OR (outboundUnit#907869 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907869 END AS outboundUnit#907870]
(1047) Project
Arguments: [product#907840, plant#907841, orderDateTime#907842, productPlant#907853, outboundUnit#907870]
(1048) Project
Arguments: [plant#907841]
(1049) Deduplicate
Arguments: [plant#907841]
(1050) Join
Arguments: Inner, (plantUuid#907837 = plant#907841)
(1051) Project
Arguments: [plantId#907836, plantUuid#907837, storageLocId#907838, storageLocUuid#907839]
(1052) Join
Arguments: Inner, (plant#907810.internalRefUUID <=> plantUuid#907837)
(1053) Generate
Arguments: explode(filter(stockQuantities#907812, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#907839) AND (lambda x#905594.storageLocation.Id = storageLocId#907838)), lambda x#905594, false))), false, [stockQuantity#907871]
(1054) Project
Arguments: [systemId#907807, internalUUID#907808, product#907809, plant#907810, calculationDateTime#907811, stockQuantities#907812, plantId#907836, plantUuid#907837, storageLocId#907838, storageLocUuid#907839, stockQuantity#907871]
(1055) Aggregate
Arguments: [plantUuid#907837, internalUUID#907808, plant#907810, product#907809, systemId#907807], [plantUuid#907837, internalUUID#907808, plant#907810, product#907809, systemId#907807, first(calculationDateTime#907811, false) AS calculationDateTime#907872, collect_list(stockQuantity#907871, 0, 0) AS stockQuantities#907873]
(1056) Project
Arguments: [systemId#907807, internalUUID#907808, product#907809, plant#907810, calculationDateTime#907872, stockQuantities#907873]
(1057) Generate
Arguments: explode(stockQuantities#907873), false, [stockQuantity#907874]
(1058) Project
Arguments: [systemId#907807, internalUUID#907808, product#907809, plant#907810, calculationDateTime#907872, stockQuantities#907873, stockQuantity#907874]
(1059) Project
Arguments: [plant#907810.id AS plant#907875, plant#907810.internalRefUUID AS plantUuid#907876, product#907809.id AS product#907877, product#907809.internalRefUUID AS productUuid#907878, calculationDateTime#907872, stockQuantity#907874.storagelocation.id AS storageLocId#907879, stockQuantity#907874.storagelocation.internalRefUUID AS storageLocUuid#907880, stockQuantity#907874.quantity.measure AS quantity#907881, stockQuantity#907874.specialStockIndicator.code AS specialStockIndicator#907882, stockQuantity#907874.stockType.code AS stockType#907883]
(1060) Filter
Arguments: ((specialStockIndicator#907882 = ) AND (stockType#907883 = 01))
(1061) LogicalRelation
Arguments: parquet, [product#907884, plant#907885, orderDateTime#907886, planningStartDateTime#907887], false
(1062) RepartitionByExpression
Arguments: [product#907884, plant#907885], 37
(1063) Project
Arguments: [product#907884, plant#907885, orderDateTime#907886]
(1064) LogicalRelation
Arguments: parquet, [systemId#907888, internalUUID#907889, plant#907890, product#907891, blockedForReplenishmentStartingFrom#907892, productionAspect#907893, salesPlant#907894, listing#907895, sourceOfSupplyCategory#907896], false
(1065) Repartition
Arguments: 37, true
(1066) Project
Arguments: [systemId#907888, internalUUID#907889, plant#907890, product#907891, blockedForReplenishmentStartingFrom#907892, productionAspect#907893, salesPlant#907894, listing#907895, sourceOfSupplyCategory#907896, struct(systemId, systemId#907888, internalUUID, internalUUID#907889, plant, plant#907890, product, product#907891, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#907892, productionAspect, productionAspect#907893, salesPlant, salesPlant#907894, listing, listing#907895, sourceOfSupplyCategory, sourceOfSupplyCategory#907896) AS productPlant#907897]
(1067) Project
Arguments: [productPlant#907897]
(1068) Join
Arguments: LeftOuter, ((product#907884 <=> productPlant#907897.product.internalRefUUID) AND (plant#907885 <=> productPlant#907897.plant.internalRefUUID))
(1069) Project
Arguments: [product#907884, plant#907885, orderDateTime#907886, productPlant#907897]
(1070) LogicalRelation
Arguments: parquet, [systemId#907898, internalUUID#907899, id#907900, displayId#907901, name#907902, baseUnitOfMeasure#907903, unitOfMeasures#907904, unitOfMeasureConversions#907905, productionAspect#907906, salesAspect#907907, procurementAspect#907908, productGroup#907909], false
(1071) Repartition
Arguments: 37, true
(1072) Join
Arguments: LeftOuter, (product#907884 = internalUUID#907899)
(1073) Project
Arguments: [product#907884, plant#907885, orderDateTime#907886, productPlant#907897, systemId#907898, internalUUID#907899, id#907900, displayId#907901, name#907902, baseUnitOfMeasure#907903, unitOfMeasures#907904, unitOfMeasureConversions#907905, productionAspect#907906, salesAspect#907907, procurementAspect#907908, productGroup#907909, filter(unitOfMeasureConversions#907905, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#907897.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#907897.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#907903.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#907903.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#907910]
(1074) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907910.quantityNumerator), true, [quantityNumerator#907911]
(1075) Project
Arguments: [product#907884, plant#907885, orderDateTime#907886, productPlant#907897, systemId#907898, internalUUID#907899, id#907900, displayId#907901, name#907902, baseUnitOfMeasure#907903, unitOfMeasures#907904, unitOfMeasureConversions#907905, productionAspect#907906, salesAspect#907907, procurementAspect#907908, productGroup#907909, filteredUnitOfMeasureConversions#907910, quantityNumerator#907911]
(1076) Generate
Arguments: explode(filteredUnitOfMeasureConversions#907910.quantityDenominator), true, [quantityDenominator#907912]
(1077) Project
Arguments: [product#907884, plant#907885, orderDateTime#907886, productPlant#907897, systemId#907898, internalUUID#907899, id#907900, displayId#907901, name#907902, baseUnitOfMeasure#907903, unitOfMeasures#907904, unitOfMeasureConversions#907905, productionAspect#907906, salesAspect#907907, procurementAspect#907908, productGroup#907909, filteredUnitOfMeasureConversions#907910, quantityNumerator#907911, quantityDenominator#907912]
(1078) Project
Arguments: [product#907884, plant#907885, orderDateTime#907886, productPlant#907897, systemId#907898, internalUUID#907899, id#907900, displayId#907901, name#907902, baseUnitOfMeasure#907903, unitOfMeasures#907904, unitOfMeasureConversions#907905, productionAspect#907906, salesAspect#907907, procurementAspect#907908, productGroup#907909, filteredUnitOfMeasureConversions#907910, quantityNumerator#907911, quantityDenominator#907912, (cast(quantityNumerator#907911 as double) / cast(quantityDenominator#907912 as double)) AS outboundUnit#907913]
(1079) Project
Arguments: [product#907884, plant#907885, orderDateTime#907886, productPlant#907897, systemId#907898, internalUUID#907899, id#907900, displayId#907901, name#907902, baseUnitOfMeasure#907903, unitOfMeasures#907904, unitOfMeasureConversions#907905, productionAspect#907906, salesAspect#907907, procurementAspect#907908, productGroup#907909, filteredUnitOfMeasureConversions#907910, quantityNumerator#907911, quantityDenominator#907912, CASE WHEN (isnull(outboundUnit#907913) OR (outboundUnit#907913 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#907913 END AS outboundUnit#907914]
(1080) Project
Arguments: [product#907884, plant#907885, orderDateTime#907886, productPlant#907897, outboundUnit#907914]
(1081) Join
Arguments: Inner, ((plantUuid#907876 = plant#907885) AND (productUuid#907878 = product#907884))
(1082) Filter
Arguments: (calculationDateTime#907872 <= orderDateTime#907886)
(1083) Project
Arguments: [plantUuid#907876 AS plant#907915, productUuid#907878 AS product#907916, storageLocId#907879, calculationDateTime#907872, quantity#907881]
(1084) Aggregate
Arguments: [plant#907915, product#907916, storageLocId#907879], [plant#907915, product#907916, storageLocId#907879, max(calculationDateTime#907872) AS max_calc_datetime#907917]
(1085) Join
Arguments: Inner, ((((plant#907805 <=> plant#907915) AND (product#907806 <=> product#907916)) AND (storageLocId#907769 <=> storageLocId#907879)) AND (calculationDateTime#907762 <=> max_calc_datetime#907917))
(1086) Project
Arguments: [plant#907805, product#907806, storageLocId#907769, calculationDateTime#907762, quantity#907771]
(1087) Aggregate
Arguments: [product#907806, plant#907805], [product#907806, plant#907805, sum(quantity#907771) AS quantitySum#907918, min(calculationDateTime#907762) AS minCalculationDateTime#907919]
(1088) Project
Arguments: [product#907806, plant#907805, quantitySum#907918, minCalculationDateTime#907919, round(quantitySum#907918, 0) AS roundedQuantitySum#907920]
(1089) Join
Arguments: LeftOuter, ((plant#907667 = plant#907805) AND (product#907666 = product#907806))
(1090) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, outboundUnit#907696, roundedQuantitySum#907920, minCalculationDateTime#907919]
(1091) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, outboundUnit#907696, roundedQuantitySum#907920, minCalculationDateTime#907919, CASE WHEN isnotnull(minCalculationDateTime#907919) THEN minCalculationDateTime#907919 ELSE orderDateTime#907668 END AS stockDatetime#907921]
(1092) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, outboundUnit#907696, roundedQuantitySum#907920, minCalculationDateTime#907919, stockDatetime#907921, CASE WHEN isnotnull(roundedQuantitySum#907920) THEN array(roundedQuantitySum#907920) ELSE array(0.0) END AS stockBatchQuantities#907922]
(1093) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, outboundUnit#907696, roundedQuantitySum#907920, minCalculationDateTime#907919, stockDatetime#907921, stockBatchQuantities#907922, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#907923]
(1094) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, outboundUnit#907696, roundedQuantitySum#907920, stockDatetime#907921, stockBatchQuantities#907922, stockBatchShelfLifeEndDatetimes#907923]
(1095) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, outboundUnit#907696, stockDatetime#907921, stockBatchQuantities#907922, stockBatchShelfLifeEndDatetimes#907923]
(1096) LogicalRelation
Arguments: parquet, [product#907924, plant#907925, demandChannel#907926, demandStream#907927, considerVariance#907928, demandTimeBuckets#907929, demandPointInTimeStart#907930, demandPointInTimeEnd#907931, demandPointInTime#907932], false
(1097) Join
Arguments: LeftOuter, ((plant#907925 <=> plant#907667) AND (product#907924 <=> product#907666))
(1098) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, outboundUnit#907696, stockDatetime#907921, stockBatchQuantities#907922, stockBatchShelfLifeEndDatetimes#907923, product#907924, plant#907925, demandChannel#907926, demandStream#907927, considerVariance#907928, demandTimeBuckets#907929, demandPointInTimeStart#907930, demandPointInTimeEnd#907931, demandPointInTime#907932, CASE WHEN isnotnull(product#907924) THEN struct(demandChannel, demandChannel#907926, demandStream, demandStream#907927, considerVariance, considerVariance#907928, demandTimeBuckets, demandTimeBuckets#907929, demandPointInTimeStart, demandPointInTimeStart#907930, demandPointInTimeEnd, demandPointInTimeEnd#907931, demandPointInTime, demandPointInTime#907932) 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#907933]
(1099) Aggregate
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, outboundUnit#907696, stockDatetime#907921, stockBatchQuantities#907922, stockBatchShelfLifeEndDatetimes#907923], [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, outboundUnit#907696, stockDatetime#907921, stockBatchQuantities#907922, stockBatchShelfLifeEndDatetimes#907923, collect_list(rawDemands#907933, 0, 0) AS rawDemands#907934]
(1100) SubqueryAlias
Arguments: wl
(1101) LogicalRelation
Arguments: parquet, [systemId#907935, internalUUID#907936, id#907937, displayId#907938, name#907939, category#907940, companyCode#907941, address#907942, mainDistributionChain#907943, mainPurchasingOrganization#907944, validPurchasingOrganizations#907945, productGroup#907946], false
(1102) Repartition
Arguments: 37, true
(1103) Project
Arguments: [systemId#907935, internalUUID#907936, id#907937, displayId#907938, name#907939, category#907940, companyCode#907941, address#907942, mainDistributionChain#907943, mainPurchasingOrganization#907944, validPurchasingOrganizations#907945, productGroup#907946, address#907942.timezone.code AS timezonecode#907947]
(1104) Join
Arguments: LeftOuter, (plant#907667 <=> internalUUID#907936)
(1105) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, outboundUnit#907696, stockDatetime#907921, stockBatchQuantities#907922, stockBatchShelfLifeEndDatetimes#907923, rawDemands#907934, systemId#907935, internalUUID#907936, id#907937, displayId#907938, name#907939, category#907940, companyCode#907941, address#907942, mainDistributionChain#907943, mainPurchasingOrganization#907944, validPurchasingOrganizations#907945, productGroup#907946, CASE WHEN isnotnull(timezonecode#907947) THEN timezonecode#907947 ELSE UTC END AS timezonecode#907948]
(1106) Project
Arguments: [product#907666, plant#907667, orderDateTime#907668, productPlant#907679, outboundUnit#907696, stockDatetime#907921, stockBatchQuantities#907922, stockBatchShelfLifeEndDatetimes#907923, rawDemands#907934, timezonecode#907948]
(1107) DeserializeToObject
Arguments: createexternalrow(invoke(product#907666.toString()), invoke(plant#907667.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#907668)), if (isnull(productPlant#907679)) null else createexternalrow(invoke(productPlant#907679.systemId.toString()), invoke(productPlant#907679.internalUUID.toString()), if (isnull(productPlant#907679.plant)) null else createexternalrow(invoke(productPlant#907679.plant.internalRefUUID.toString()), invoke(productPlant#907679.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#907679.product)) null else createexternalrow(invoke(productPlant#907679.product.internalRefUUID.toString()), invoke(productPlant#907679.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#907679.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#907679.productionAspect)) null else createexternalrow(if (isnull(productPlant#907679.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#907679.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#907679.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#907679.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#907679.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#907679.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#907679.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#907679.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#907679.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#907679.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#907679.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#907679.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#907679.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#907679.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#907679.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#907679.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#907679.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#907679.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#907679.salesPlant)) null else createexternalrow(if (isnull(productPlant#907679.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#907679.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#907679.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, 71540), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#907679.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#907679.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#907679.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#907679.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#907696)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#907921)), mapobjects(lambdavariable(MapObject, DoubleType, true, 71541), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 71541) as double))), stockBatchQuantities#907922, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 71542), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 71542) as timestamp)))), stockBatchShelfLifeEndDatetimes#907923, 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, 71543), 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, 71543))) 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, 71543).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, 71543).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, 71543).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).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, 71543).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, 71543).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, 71543).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).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, 71543).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#907934, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#907948.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#906942: org.apache.spark.sql.Row
(1108) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@4013ddf1, 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#906947: org.apache.spark.sql.Row
(1109) 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#907949, 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#907950, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71531), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71531), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71532), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71532), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71533), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71533), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71534), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71534), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71535), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71535), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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#907951, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71537), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71537), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71538), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71538), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71539), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71539), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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#907952]
(1110) Join
Arguments: LeftOuter, ((plant#907950 <=> plant#907409) AND (product#907949 <=> product#907408))
(1111) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, outboundUnit#907438, stockDatetime#907663, stockBatchQuantities#907664, stockBatchShelfLifeEndDatetimes#907665, plant#907950, dayBucketDemands#907951, pointInTimeDemands#907952]
(1112) Project
Arguments: [product#907408, plant#907409, orderDateTime#907410, productPlant#907421, outboundUnit#907438, stockDatetime#907663, stockBatchQuantities#907664, stockBatchShelfLifeEndDatetimes#907665, dayBucketDemands#907951, pointInTimeDemands#907952]
(1113) LocalRelation
Arguments: <empty>, [systemId#907953, internalUUID#907954, id#907955, isMarkedForDeletion#907956, supplier#907957, status#907958, items#907959]
(1114) Generate
Arguments: explode(items#907959), false, [item#907960]
(1115) Project
Arguments: [id#907955, internalUUID#907954, isMarkedForDeletion#907956, supplier#907957.internalRefUUID AS supplierUuid#907961, item#907960]
(1116) Filter
Arguments: (((NOT isMarkedForDeletion#907956 AND NOT item#907960.deletionIndicator) AND NOT item#907960.completeIndicator) AND NOT item#907960.returnIndicator)
(1117) Project
Arguments: [id#907955, internalUUID#907954, supplierUuid#907961, item#907960.plant.internalRefUUID AS plant#907962, item#907960.product.internalRefUUID AS product#907963, item#907960.storageLocation.internalRefUUID AS storageLocUuid#907964, item#907960.quantityUnit.code AS quantityUom#907965, item#907960.quantityUnit.internalRefUUID AS quantityUomUuid#907966, item#907960.quantityNumerator AS quantityNumerator#907967, item#907960.quantityDenominator AS quantityDenominator#907968, item#907960.scheduleLines AS scheduleLines#907969, item#907960.confirmations AS confirmations#907970]
(1118) Join
Arguments: Inner, ((product#907408 <=> product#907963) AND (plant#907409 <=> supplierUuid#907961))
(1119) Project
Arguments: [id#907955, internalUUID#907954, supplierUuid#907961, plant#907962, product#907963, storageLocUuid#907964, quantityUom#907965, quantityUomUuid#907966, quantityNumerator#907967, quantityDenominator#907968, scheduleLines#907969, confirmations#907970, stockDatetime#907663, plant#907409]
(1120) Project
Arguments: [id#907955, internalUUID#907954, supplierUuid#907961, product#907963, storageLocUuid#907964, quantityUom#907965, quantityUomUuid#907966, quantityNumerator#907967, quantityDenominator#907968, scheduleLines#907969, confirmations#907970, stockDatetime#907663, plant#907409]
(1121) Project
Arguments: [id#907955, internalUUID#907954, supplierUuid#907961, product#907963, storageLocUuid#907964, quantityUom#907965, quantityUomUuid#907966, quantityNumerator#907967, quantityDenominator#907968, scheduleLines#907969, confirmations#907970, stockDatetime#907663, plant#907409, filter(transform(filter(transform(scheduleLines#907969, lambdafunction(struct(openQty, (greatest((lambda x_134#907388.quantity - coalesce(lambda x_134#907388.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_134#907388.productAvailabilityDateTime, lambda x_134#907388.deliveryAt)), lambda x_134#907388, false)), lambdafunction((lambda x_135#907389.availabilityDatetime < stockDatetime#907663), lambda x_135#907389, false)), lambdafunction(struct(documentId, id#907955, documentUuid, internalUUID#907954, openQty, lambda x_136#907390.openQty, openQtyInBaseUnit, ((lambda x_136#907390.openQty * quantityNumerator#907967) / quantityDenominator#907968), qtyUom, quantityUom#907965, qtyUomUuid, quantityUomUuid#907966, availabilityDatetime, lambda x_136#907390.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_136#907390, false)), lambdafunction(NOT (lambda x_137#907391.openQty = 0.0), lambda x_137#907391, false)) AS openGoodsMovements#907387]
(1122) Aggregate
Arguments: [product#907963, plant#907409], [product#907963, plant#907409, flatten(collect_list(openGoodsMovements#907387, 0, 0)) AS openGoodsMovements#907392]
(1123) Filter
Arguments: (array_size(openGoodsMovements#907392) > 0)
(1124) Union
Arguments: false, false
(1125) Aggregate
Arguments: [product#907248, plant#907247], [product#907248, plant#907247, flatten(collect_list(openGoodsMovements#907348, 0, 0)) AS openGoodsMovements#908011]
(1126) Join
Arguments: LeftOuter, ((product#905388 = product#907248) AND (plant#905389 = plant#907247))
(1127) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovements#908011]
(1128) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, coalesce(openGoodsMovements#908011.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#908601, coalesce(openGoodsMovements#908011.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#908602, coalesce(openGoodsMovements#908011.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#908603]
(1129) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, 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#908894]
(1130) LogicalRelation
Arguments: parquet, [product#909091, plant#909092, orderDateTime#909093, planningStartDateTime#909094], false
(1131) RepartitionByExpression
Arguments: [product#909091, plant#909092], 37
(1132) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093]
(1133) LogicalRelation
Arguments: parquet, [systemId#909095, internalUUID#909096, plant#909097, product#909098, blockedForReplenishmentStartingFrom#909099, productionAspect#909100, salesPlant#909101, listing#909102, sourceOfSupplyCategory#909103], false
(1134) Repartition
Arguments: 37, true
(1135) Project
Arguments: [systemId#909095, internalUUID#909096, plant#909097, product#909098, blockedForReplenishmentStartingFrom#909099, productionAspect#909100, salesPlant#909101, listing#909102, sourceOfSupplyCategory#909103, struct(systemId, systemId#909095, internalUUID, internalUUID#909096, plant, plant#909097, product, product#909098, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909099, productionAspect, productionAspect#909100, salesPlant, salesPlant#909101, listing, listing#909102, sourceOfSupplyCategory, sourceOfSupplyCategory#909103) AS productPlant#909104]
(1136) Project
Arguments: [productPlant#909104]
(1137) Join
Arguments: LeftOuter, ((product#909091 <=> productPlant#909104.product.internalRefUUID) AND (plant#909092 <=> productPlant#909104.plant.internalRefUUID))
(1138) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104]
(1139) LogicalRelation
Arguments: parquet, [systemId#909105, internalUUID#909106, id#909107, displayId#909108, name#909109, baseUnitOfMeasure#909110, unitOfMeasures#909111, unitOfMeasureConversions#909112, productionAspect#909113, salesAspect#909114, procurementAspect#909115, productGroup#909116], false
(1140) Repartition
Arguments: 37, true
(1141) Join
Arguments: LeftOuter, (product#909091 = internalUUID#909106)
(1142) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, systemId#909105, internalUUID#909106, id#909107, displayId#909108, name#909109, baseUnitOfMeasure#909110, unitOfMeasures#909111, unitOfMeasureConversions#909112, productionAspect#909113, salesAspect#909114, procurementAspect#909115, productGroup#909116, filter(unitOfMeasureConversions#909112, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909104.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909104.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909110.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909110.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909117]
(1143) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909117.quantityNumerator), true, [quantityNumerator#909118]
(1144) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, systemId#909105, internalUUID#909106, id#909107, displayId#909108, name#909109, baseUnitOfMeasure#909110, unitOfMeasures#909111, unitOfMeasureConversions#909112, productionAspect#909113, salesAspect#909114, procurementAspect#909115, productGroup#909116, filteredUnitOfMeasureConversions#909117, quantityNumerator#909118]
(1145) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909117.quantityDenominator), true, [quantityDenominator#909119]
(1146) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, systemId#909105, internalUUID#909106, id#909107, displayId#909108, name#909109, baseUnitOfMeasure#909110, unitOfMeasures#909111, unitOfMeasureConversions#909112, productionAspect#909113, salesAspect#909114, procurementAspect#909115, productGroup#909116, filteredUnitOfMeasureConversions#909117, quantityNumerator#909118, quantityDenominator#909119]
(1147) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, systemId#909105, internalUUID#909106, id#909107, displayId#909108, name#909109, baseUnitOfMeasure#909110, unitOfMeasures#909111, unitOfMeasureConversions#909112, productionAspect#909113, salesAspect#909114, procurementAspect#909115, productGroup#909116, filteredUnitOfMeasureConversions#909117, quantityNumerator#909118, quantityDenominator#909119, (cast(quantityNumerator#909118 as double) / cast(quantityDenominator#909119 as double)) AS outboundUnit#909120]
(1148) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, systemId#909105, internalUUID#909106, id#909107, displayId#909108, name#909109, baseUnitOfMeasure#909110, unitOfMeasures#909111, unitOfMeasureConversions#909112, productionAspect#909113, salesAspect#909114, procurementAspect#909115, productGroup#909116, filteredUnitOfMeasureConversions#909117, quantityNumerator#909118, quantityDenominator#909119, CASE WHEN (isnull(outboundUnit#909120) OR (outboundUnit#909120 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909120 END AS outboundUnit#909121]
(1149) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121]
(1150) LogicalRelation
Arguments: parquet, [systemId#909122, internalUUID#909123, product#909124, plant#909125, calculationDateTime#909126, stockQuantities#909127], false
(1151) Repartition
Arguments: 37, true
(1152) LogicalRelation
Arguments: parquet, [marketUnit#909128, description#909129, articleHierarchy#909130, defaultCurrency#909131, responsibilities#909132, replenishmentTypes#909133, distributionCenters#909134, assignedArticleHierarchyNodes#909135, minOrderQtySetting#909136, listingCheck#909137, odsSelection#909138, demandProfiles#909139, constraintProfiles#909140, optimizationProfiles#909141, orderGroupSplitProfiles#909142, supplierMinimumProfiles#909143, multipleRestrictionProfiles#909144, preferredUomSource#909145, handlingOfUnfulfilledDemands#909146, negligibleQuantitiesThreshold#909147, eventtype#909148], false
(1153) Repartition
Arguments: 37, true
(1154) Filter
Arguments: (marketUnit#909128 <=> AUTO_ALL_ProdLoc)
(1155) Project
Arguments: [marketUnit#909128, description#909129, articleHierarchy#909130, defaultCurrency#909131, responsibilities#909132, replenishmentTypes#909133, distributionCenters#909134, assignedArticleHierarchyNodes#909135, minOrderQtySetting#909136, listingCheck#909137, odsSelection#909138, demandProfiles#909139, constraintProfiles#909140, optimizationProfiles#909141, orderGroupSplitProfiles#909142, supplierMinimumProfiles#909143, multipleRestrictionProfiles#909144, preferredUomSource#909145, handlingOfUnfulfilledDemands#909146, negligibleQuantitiesThreshold#909147, eventtype#909148]
(1156) Project
Arguments: [distributionCenters#909134]
(1157) Generate
Arguments: explode(distributionCenters#909134), false, [distributionCenters#909149]
(1158) Project
Arguments: [distributionCenters#909149]
(1159) Generate
Arguments: explode(distributionCenters#909149.storageLocations), false, [storageLocations#909150]
(1160) Project
Arguments: [distributionCenters#909149.id AS plantId#909151, distributionCenters#909149.internalRefUUID AS plantUuid#909152, storageLocations#909150]
(1161) Project
Arguments: [plantId#909151, plantUuid#909152, storageLocations#909150.id AS storageLocId#909153, storageLocations#909150.internalRefUUID AS storageLocUuid#909154]
(1162) LogicalRelation
Arguments: parquet, [product#909155, plant#909156, orderDateTime#909157, planningStartDateTime#909158], false
(1163) RepartitionByExpression
Arguments: [product#909155, plant#909156], 37
(1164) Project
Arguments: [product#909155, plant#909156, orderDateTime#909157]
(1165) LogicalRelation
Arguments: parquet, [systemId#909159, internalUUID#909160, plant#909161, product#909162, blockedForReplenishmentStartingFrom#909163, productionAspect#909164, salesPlant#909165, listing#909166, sourceOfSupplyCategory#909167], false
(1166) Repartition
Arguments: 37, true
(1167) Project
Arguments: [systemId#909159, internalUUID#909160, plant#909161, product#909162, blockedForReplenishmentStartingFrom#909163, productionAspect#909164, salesPlant#909165, listing#909166, sourceOfSupplyCategory#909167, struct(systemId, systemId#909159, internalUUID, internalUUID#909160, plant, plant#909161, product, product#909162, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909163, productionAspect, productionAspect#909164, salesPlant, salesPlant#909165, listing, listing#909166, sourceOfSupplyCategory, sourceOfSupplyCategory#909167) AS productPlant#909168]
(1168) Project
Arguments: [productPlant#909168]
(1169) Join
Arguments: LeftOuter, ((product#909155 <=> productPlant#909168.product.internalRefUUID) AND (plant#909156 <=> productPlant#909168.plant.internalRefUUID))
(1170) Project
Arguments: [product#909155, plant#909156, orderDateTime#909157, productPlant#909168]
(1171) LogicalRelation
Arguments: parquet, [systemId#909169, internalUUID#909170, id#909171, displayId#909172, name#909173, baseUnitOfMeasure#909174, unitOfMeasures#909175, unitOfMeasureConversions#909176, productionAspect#909177, salesAspect#909178, procurementAspect#909179, productGroup#909180], false
(1172) Repartition
Arguments: 37, true
(1173) Join
Arguments: LeftOuter, (product#909155 = internalUUID#909170)
(1174) Project
Arguments: [product#909155, plant#909156, orderDateTime#909157, productPlant#909168, systemId#909169, internalUUID#909170, id#909171, displayId#909172, name#909173, baseUnitOfMeasure#909174, unitOfMeasures#909175, unitOfMeasureConversions#909176, productionAspect#909177, salesAspect#909178, procurementAspect#909179, productGroup#909180, filter(unitOfMeasureConversions#909176, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909168.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909168.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909174.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909174.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909181]
(1175) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909181.quantityNumerator), true, [quantityNumerator#909182]
(1176) Project
Arguments: [product#909155, plant#909156, orderDateTime#909157, productPlant#909168, systemId#909169, internalUUID#909170, id#909171, displayId#909172, name#909173, baseUnitOfMeasure#909174, unitOfMeasures#909175, unitOfMeasureConversions#909176, productionAspect#909177, salesAspect#909178, procurementAspect#909179, productGroup#909180, filteredUnitOfMeasureConversions#909181, quantityNumerator#909182]
(1177) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909181.quantityDenominator), true, [quantityDenominator#909183]
(1178) Project
Arguments: [product#909155, plant#909156, orderDateTime#909157, productPlant#909168, systemId#909169, internalUUID#909170, id#909171, displayId#909172, name#909173, baseUnitOfMeasure#909174, unitOfMeasures#909175, unitOfMeasureConversions#909176, productionAspect#909177, salesAspect#909178, procurementAspect#909179, productGroup#909180, filteredUnitOfMeasureConversions#909181, quantityNumerator#909182, quantityDenominator#909183]
(1179) Project
Arguments: [product#909155, plant#909156, orderDateTime#909157, productPlant#909168, systemId#909169, internalUUID#909170, id#909171, displayId#909172, name#909173, baseUnitOfMeasure#909174, unitOfMeasures#909175, unitOfMeasureConversions#909176, productionAspect#909177, salesAspect#909178, procurementAspect#909179, productGroup#909180, filteredUnitOfMeasureConversions#909181, quantityNumerator#909182, quantityDenominator#909183, (cast(quantityNumerator#909182 as double) / cast(quantityDenominator#909183 as double)) AS outboundUnit#909184]
(1180) Project
Arguments: [product#909155, plant#909156, orderDateTime#909157, productPlant#909168, systemId#909169, internalUUID#909170, id#909171, displayId#909172, name#909173, baseUnitOfMeasure#909174, unitOfMeasures#909175, unitOfMeasureConversions#909176, productionAspect#909177, salesAspect#909178, procurementAspect#909179, productGroup#909180, filteredUnitOfMeasureConversions#909181, quantityNumerator#909182, quantityDenominator#909183, CASE WHEN (isnull(outboundUnit#909184) OR (outboundUnit#909184 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909184 END AS outboundUnit#909185]
(1181) Project
Arguments: [product#909155, plant#909156, orderDateTime#909157, productPlant#909168, outboundUnit#909185]
(1182) Project
Arguments: [plant#909156]
(1183) Deduplicate
Arguments: [plant#909156]
(1184) Join
Arguments: Inner, (plantUuid#909152 = plant#909156)
(1185) Project
Arguments: [plantId#909151, plantUuid#909152, storageLocId#909153, storageLocUuid#909154]
(1186) Join
Arguments: Inner, (plant#909125.internalRefUUID <=> plantUuid#909152)
(1187) Generate
Arguments: explode(filter(stockQuantities#909127, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#909154) AND (lambda x#905594.storageLocation.Id = storageLocId#909153)), lambda x#905594, false))), false, [stockQuantity#909186]
(1188) Project
Arguments: [systemId#909122, internalUUID#909123, product#909124, plant#909125, calculationDateTime#909126, stockQuantities#909127, plantId#909151, plantUuid#909152, storageLocId#909153, storageLocUuid#909154, stockQuantity#909186]
(1189) Aggregate
Arguments: [plantUuid#909152, internalUUID#909123, plant#909125, product#909124, systemId#909122], [plantUuid#909152, internalUUID#909123, plant#909125, product#909124, systemId#909122, first(calculationDateTime#909126, false) AS calculationDateTime#909187, collect_list(stockQuantity#909186, 0, 0) AS stockQuantities#909188]
(1190) Project
Arguments: [systemId#909122, internalUUID#909123, product#909124, plant#909125, calculationDateTime#909187, stockQuantities#909188]
(1191) Generate
Arguments: explode(stockQuantities#909188), false, [stockQuantity#909189]
(1192) Project
Arguments: [systemId#909122, internalUUID#909123, product#909124, plant#909125, calculationDateTime#909187, stockQuantities#909188, stockQuantity#909189]
(1193) Project
Arguments: [plant#909125.id AS plant#909190, plant#909125.internalRefUUID AS plantUuid#909191, product#909124.id AS product#909192, product#909124.internalRefUUID AS productUuid#909193, calculationDateTime#909187, stockQuantity#909189.storagelocation.id AS storageLocId#909194, stockQuantity#909189.storagelocation.internalRefUUID AS storageLocUuid#909195, stockQuantity#909189.quantity.measure AS quantity#909196, stockQuantity#909189.specialStockIndicator.code AS specialStockIndicator#909197, stockQuantity#909189.stockType.code AS stockType#909198]
(1194) Filter
Arguments: ((specialStockIndicator#909197 = ) AND (stockType#909198 = 01))
(1195) LogicalRelation
Arguments: parquet, [product#909199, plant#909200, orderDateTime#909201, planningStartDateTime#909202], false
(1196) RepartitionByExpression
Arguments: [product#909199, plant#909200], 37
(1197) Project
Arguments: [product#909199, plant#909200, orderDateTime#909201]
(1198) LogicalRelation
Arguments: parquet, [systemId#909203, internalUUID#909204, plant#909205, product#909206, blockedForReplenishmentStartingFrom#909207, productionAspect#909208, salesPlant#909209, listing#909210, sourceOfSupplyCategory#909211], false
(1199) Repartition
Arguments: 37, true
(1200) Project
Arguments: [systemId#909203, internalUUID#909204, plant#909205, product#909206, blockedForReplenishmentStartingFrom#909207, productionAspect#909208, salesPlant#909209, listing#909210, sourceOfSupplyCategory#909211, struct(systemId, systemId#909203, internalUUID, internalUUID#909204, plant, plant#909205, product, product#909206, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909207, productionAspect, productionAspect#909208, salesPlant, salesPlant#909209, listing, listing#909210, sourceOfSupplyCategory, sourceOfSupplyCategory#909211) AS productPlant#909212]
(1201) Project
Arguments: [productPlant#909212]
(1202) Join
Arguments: LeftOuter, ((product#909199 <=> productPlant#909212.product.internalRefUUID) AND (plant#909200 <=> productPlant#909212.plant.internalRefUUID))
(1203) Project
Arguments: [product#909199, plant#909200, orderDateTime#909201, productPlant#909212]
(1204) LogicalRelation
Arguments: parquet, [systemId#909213, internalUUID#909214, id#909215, displayId#909216, name#909217, baseUnitOfMeasure#909218, unitOfMeasures#909219, unitOfMeasureConversions#909220, productionAspect#909221, salesAspect#909222, procurementAspect#909223, productGroup#909224], false
(1205) Repartition
Arguments: 37, true
(1206) Join
Arguments: LeftOuter, (product#909199 = internalUUID#909214)
(1207) Project
Arguments: [product#909199, plant#909200, orderDateTime#909201, productPlant#909212, systemId#909213, internalUUID#909214, id#909215, displayId#909216, name#909217, baseUnitOfMeasure#909218, unitOfMeasures#909219, unitOfMeasureConversions#909220, productionAspect#909221, salesAspect#909222, procurementAspect#909223, productGroup#909224, filter(unitOfMeasureConversions#909220, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909212.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909212.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909218.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909218.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909225]
(1208) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909225.quantityNumerator), true, [quantityNumerator#909226]
(1209) Project
Arguments: [product#909199, plant#909200, orderDateTime#909201, productPlant#909212, systemId#909213, internalUUID#909214, id#909215, displayId#909216, name#909217, baseUnitOfMeasure#909218, unitOfMeasures#909219, unitOfMeasureConversions#909220, productionAspect#909221, salesAspect#909222, procurementAspect#909223, productGroup#909224, filteredUnitOfMeasureConversions#909225, quantityNumerator#909226]
(1210) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909225.quantityDenominator), true, [quantityDenominator#909227]
(1211) Project
Arguments: [product#909199, plant#909200, orderDateTime#909201, productPlant#909212, systemId#909213, internalUUID#909214, id#909215, displayId#909216, name#909217, baseUnitOfMeasure#909218, unitOfMeasures#909219, unitOfMeasureConversions#909220, productionAspect#909221, salesAspect#909222, procurementAspect#909223, productGroup#909224, filteredUnitOfMeasureConversions#909225, quantityNumerator#909226, quantityDenominator#909227]
(1212) Project
Arguments: [product#909199, plant#909200, orderDateTime#909201, productPlant#909212, systemId#909213, internalUUID#909214, id#909215, displayId#909216, name#909217, baseUnitOfMeasure#909218, unitOfMeasures#909219, unitOfMeasureConversions#909220, productionAspect#909221, salesAspect#909222, procurementAspect#909223, productGroup#909224, filteredUnitOfMeasureConversions#909225, quantityNumerator#909226, quantityDenominator#909227, (cast(quantityNumerator#909226 as double) / cast(quantityDenominator#909227 as double)) AS outboundUnit#909228]
(1213) Project
Arguments: [product#909199, plant#909200, orderDateTime#909201, productPlant#909212, systemId#909213, internalUUID#909214, id#909215, displayId#909216, name#909217, baseUnitOfMeasure#909218, unitOfMeasures#909219, unitOfMeasureConversions#909220, productionAspect#909221, salesAspect#909222, procurementAspect#909223, productGroup#909224, filteredUnitOfMeasureConversions#909225, quantityNumerator#909226, quantityDenominator#909227, CASE WHEN (isnull(outboundUnit#909228) OR (outboundUnit#909228 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909228 END AS outboundUnit#909229]
(1214) Project
Arguments: [product#909199, plant#909200, orderDateTime#909201, productPlant#909212, outboundUnit#909229]
(1215) Join
Arguments: Inner, ((plantUuid#909191 = plant#909200) AND (productUuid#909193 = product#909199))
(1216) Filter
Arguments: (calculationDateTime#909187 <= orderDateTime#909201)
(1217) Project
Arguments: [plantUuid#909191 AS plant#909230, productUuid#909193 AS product#909231, storageLocId#909194, calculationDateTime#909187, quantity#909196]
(1218) LogicalRelation
Arguments: parquet, [systemId#909232, internalUUID#909233, product#909234, plant#909235, calculationDateTime#909236, stockQuantities#909237], false
(1219) Repartition
Arguments: 37, true
(1220) LogicalRelation
Arguments: parquet, [marketUnit#909238, description#909239, articleHierarchy#909240, defaultCurrency#909241, responsibilities#909242, replenishmentTypes#909243, distributionCenters#909244, assignedArticleHierarchyNodes#909245, minOrderQtySetting#909246, listingCheck#909247, odsSelection#909248, demandProfiles#909249, constraintProfiles#909250, optimizationProfiles#909251, orderGroupSplitProfiles#909252, supplierMinimumProfiles#909253, multipleRestrictionProfiles#909254, preferredUomSource#909255, handlingOfUnfulfilledDemands#909256, negligibleQuantitiesThreshold#909257, eventtype#909258], false
(1221) Repartition
Arguments: 37, true
(1222) Filter
Arguments: (marketUnit#909238 <=> AUTO_ALL_ProdLoc)
(1223) Project
Arguments: [marketUnit#909238, description#909239, articleHierarchy#909240, defaultCurrency#909241, responsibilities#909242, replenishmentTypes#909243, distributionCenters#909244, assignedArticleHierarchyNodes#909245, minOrderQtySetting#909246, listingCheck#909247, odsSelection#909248, demandProfiles#909249, constraintProfiles#909250, optimizationProfiles#909251, orderGroupSplitProfiles#909252, supplierMinimumProfiles#909253, multipleRestrictionProfiles#909254, preferredUomSource#909255, handlingOfUnfulfilledDemands#909256, negligibleQuantitiesThreshold#909257, eventtype#909258]
(1224) Project
Arguments: [distributionCenters#909244]
(1225) Generate
Arguments: explode(distributionCenters#909244), false, [distributionCenters#909259]
(1226) Project
Arguments: [distributionCenters#909259]
(1227) Generate
Arguments: explode(distributionCenters#909259.storageLocations), false, [storageLocations#909260]
(1228) Project
Arguments: [distributionCenters#909259.id AS plantId#909261, distributionCenters#909259.internalRefUUID AS plantUuid#909262, storageLocations#909260]
(1229) Project
Arguments: [plantId#909261, plantUuid#909262, storageLocations#909260.id AS storageLocId#909263, storageLocations#909260.internalRefUUID AS storageLocUuid#909264]
(1230) LogicalRelation
Arguments: parquet, [product#909265, plant#909266, orderDateTime#909267, planningStartDateTime#909268], false
(1231) RepartitionByExpression
Arguments: [product#909265, plant#909266], 37
(1232) Project
Arguments: [product#909265, plant#909266, orderDateTime#909267]
(1233) LogicalRelation
Arguments: parquet, [systemId#909269, internalUUID#909270, plant#909271, product#909272, blockedForReplenishmentStartingFrom#909273, productionAspect#909274, salesPlant#909275, listing#909276, sourceOfSupplyCategory#909277], false
(1234) Repartition
Arguments: 37, true
(1235) Project
Arguments: [systemId#909269, internalUUID#909270, plant#909271, product#909272, blockedForReplenishmentStartingFrom#909273, productionAspect#909274, salesPlant#909275, listing#909276, sourceOfSupplyCategory#909277, struct(systemId, systemId#909269, internalUUID, internalUUID#909270, plant, plant#909271, product, product#909272, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909273, productionAspect, productionAspect#909274, salesPlant, salesPlant#909275, listing, listing#909276, sourceOfSupplyCategory, sourceOfSupplyCategory#909277) AS productPlant#909278]
(1236) Project
Arguments: [productPlant#909278]
(1237) Join
Arguments: LeftOuter, ((product#909265 <=> productPlant#909278.product.internalRefUUID) AND (plant#909266 <=> productPlant#909278.plant.internalRefUUID))
(1238) Project
Arguments: [product#909265, plant#909266, orderDateTime#909267, productPlant#909278]
(1239) LogicalRelation
Arguments: parquet, [systemId#909279, internalUUID#909280, id#909281, displayId#909282, name#909283, baseUnitOfMeasure#909284, unitOfMeasures#909285, unitOfMeasureConversions#909286, productionAspect#909287, salesAspect#909288, procurementAspect#909289, productGroup#909290], false
(1240) Repartition
Arguments: 37, true
(1241) Join
Arguments: LeftOuter, (product#909265 = internalUUID#909280)
(1242) Project
Arguments: [product#909265, plant#909266, orderDateTime#909267, productPlant#909278, systemId#909279, internalUUID#909280, id#909281, displayId#909282, name#909283, baseUnitOfMeasure#909284, unitOfMeasures#909285, unitOfMeasureConversions#909286, productionAspect#909287, salesAspect#909288, procurementAspect#909289, productGroup#909290, filter(unitOfMeasureConversions#909286, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909278.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909278.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909284.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909284.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909291]
(1243) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909291.quantityNumerator), true, [quantityNumerator#909292]
(1244) Project
Arguments: [product#909265, plant#909266, orderDateTime#909267, productPlant#909278, systemId#909279, internalUUID#909280, id#909281, displayId#909282, name#909283, baseUnitOfMeasure#909284, unitOfMeasures#909285, unitOfMeasureConversions#909286, productionAspect#909287, salesAspect#909288, procurementAspect#909289, productGroup#909290, filteredUnitOfMeasureConversions#909291, quantityNumerator#909292]
(1245) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909291.quantityDenominator), true, [quantityDenominator#909293]
(1246) Project
Arguments: [product#909265, plant#909266, orderDateTime#909267, productPlant#909278, systemId#909279, internalUUID#909280, id#909281, displayId#909282, name#909283, baseUnitOfMeasure#909284, unitOfMeasures#909285, unitOfMeasureConversions#909286, productionAspect#909287, salesAspect#909288, procurementAspect#909289, productGroup#909290, filteredUnitOfMeasureConversions#909291, quantityNumerator#909292, quantityDenominator#909293]
(1247) Project
Arguments: [product#909265, plant#909266, orderDateTime#909267, productPlant#909278, systemId#909279, internalUUID#909280, id#909281, displayId#909282, name#909283, baseUnitOfMeasure#909284, unitOfMeasures#909285, unitOfMeasureConversions#909286, productionAspect#909287, salesAspect#909288, procurementAspect#909289, productGroup#909290, filteredUnitOfMeasureConversions#909291, quantityNumerator#909292, quantityDenominator#909293, (cast(quantityNumerator#909292 as double) / cast(quantityDenominator#909293 as double)) AS outboundUnit#909294]
(1248) Project
Arguments: [product#909265, plant#909266, orderDateTime#909267, productPlant#909278, systemId#909279, internalUUID#909280, id#909281, displayId#909282, name#909283, baseUnitOfMeasure#909284, unitOfMeasures#909285, unitOfMeasureConversions#909286, productionAspect#909287, salesAspect#909288, procurementAspect#909289, productGroup#909290, filteredUnitOfMeasureConversions#909291, quantityNumerator#909292, quantityDenominator#909293, CASE WHEN (isnull(outboundUnit#909294) OR (outboundUnit#909294 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909294 END AS outboundUnit#909295]
(1249) Project
Arguments: [product#909265, plant#909266, orderDateTime#909267, productPlant#909278, outboundUnit#909295]
(1250) Project
Arguments: [plant#909266]
(1251) Deduplicate
Arguments: [plant#909266]
(1252) Join
Arguments: Inner, (plantUuid#909262 = plant#909266)
(1253) Project
Arguments: [plantId#909261, plantUuid#909262, storageLocId#909263, storageLocUuid#909264]
(1254) Join
Arguments: Inner, (plant#909235.internalRefUUID <=> plantUuid#909262)
(1255) Generate
Arguments: explode(filter(stockQuantities#909237, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#909264) AND (lambda x#905594.storageLocation.Id = storageLocId#909263)), lambda x#905594, false))), false, [stockQuantity#909296]
(1256) Project
Arguments: [systemId#909232, internalUUID#909233, product#909234, plant#909235, calculationDateTime#909236, stockQuantities#909237, plantId#909261, plantUuid#909262, storageLocId#909263, storageLocUuid#909264, stockQuantity#909296]
(1257) Aggregate
Arguments: [plantUuid#909262, internalUUID#909233, plant#909235, product#909234, systemId#909232], [plantUuid#909262, internalUUID#909233, plant#909235, product#909234, systemId#909232, first(calculationDateTime#909236, false) AS calculationDateTime#909297, collect_list(stockQuantity#909296, 0, 0) AS stockQuantities#909298]
(1258) Project
Arguments: [systemId#909232, internalUUID#909233, product#909234, plant#909235, calculationDateTime#909297, stockQuantities#909298]
(1259) Generate
Arguments: explode(stockQuantities#909298), false, [stockQuantity#909299]
(1260) Project
Arguments: [systemId#909232, internalUUID#909233, product#909234, plant#909235, calculationDateTime#909297, stockQuantities#909298, stockQuantity#909299]
(1261) Project
Arguments: [plant#909235.id AS plant#909300, plant#909235.internalRefUUID AS plantUuid#909301, product#909234.id AS product#909302, product#909234.internalRefUUID AS productUuid#909303, calculationDateTime#909297, stockQuantity#909299.storagelocation.id AS storageLocId#909304, stockQuantity#909299.storagelocation.internalRefUUID AS storageLocUuid#909305, stockQuantity#909299.quantity.measure AS quantity#909306, stockQuantity#909299.specialStockIndicator.code AS specialStockIndicator#909307, stockQuantity#909299.stockType.code AS stockType#909308]
(1262) Filter
Arguments: ((specialStockIndicator#909307 = ) AND (stockType#909308 = 01))
(1263) LogicalRelation
Arguments: parquet, [product#909309, plant#909310, orderDateTime#909311, planningStartDateTime#909312], false
(1264) RepartitionByExpression
Arguments: [product#909309, plant#909310], 37
(1265) Project
Arguments: [product#909309, plant#909310, orderDateTime#909311]
(1266) LogicalRelation
Arguments: parquet, [systemId#909313, internalUUID#909314, plant#909315, product#909316, blockedForReplenishmentStartingFrom#909317, productionAspect#909318, salesPlant#909319, listing#909320, sourceOfSupplyCategory#909321], false
(1267) Repartition
Arguments: 37, true
(1268) Project
Arguments: [systemId#909313, internalUUID#909314, plant#909315, product#909316, blockedForReplenishmentStartingFrom#909317, productionAspect#909318, salesPlant#909319, listing#909320, sourceOfSupplyCategory#909321, struct(systemId, systemId#909313, internalUUID, internalUUID#909314, plant, plant#909315, product, product#909316, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909317, productionAspect, productionAspect#909318, salesPlant, salesPlant#909319, listing, listing#909320, sourceOfSupplyCategory, sourceOfSupplyCategory#909321) AS productPlant#909322]
(1269) Project
Arguments: [productPlant#909322]
(1270) Join
Arguments: LeftOuter, ((product#909309 <=> productPlant#909322.product.internalRefUUID) AND (plant#909310 <=> productPlant#909322.plant.internalRefUUID))
(1271) Project
Arguments: [product#909309, plant#909310, orderDateTime#909311, productPlant#909322]
(1272) LogicalRelation
Arguments: parquet, [systemId#909323, internalUUID#909324, id#909325, displayId#909326, name#909327, baseUnitOfMeasure#909328, unitOfMeasures#909329, unitOfMeasureConversions#909330, productionAspect#909331, salesAspect#909332, procurementAspect#909333, productGroup#909334], false
(1273) Repartition
Arguments: 37, true
(1274) Join
Arguments: LeftOuter, (product#909309 = internalUUID#909324)
(1275) Project
Arguments: [product#909309, plant#909310, orderDateTime#909311, productPlant#909322, systemId#909323, internalUUID#909324, id#909325, displayId#909326, name#909327, baseUnitOfMeasure#909328, unitOfMeasures#909329, unitOfMeasureConversions#909330, productionAspect#909331, salesAspect#909332, procurementAspect#909333, productGroup#909334, filter(unitOfMeasureConversions#909330, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909322.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909322.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909328.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909328.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909335]
(1276) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909335.quantityNumerator), true, [quantityNumerator#909336]
(1277) Project
Arguments: [product#909309, plant#909310, orderDateTime#909311, productPlant#909322, systemId#909323, internalUUID#909324, id#909325, displayId#909326, name#909327, baseUnitOfMeasure#909328, unitOfMeasures#909329, unitOfMeasureConversions#909330, productionAspect#909331, salesAspect#909332, procurementAspect#909333, productGroup#909334, filteredUnitOfMeasureConversions#909335, quantityNumerator#909336]
(1278) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909335.quantityDenominator), true, [quantityDenominator#909337]
(1279) Project
Arguments: [product#909309, plant#909310, orderDateTime#909311, productPlant#909322, systemId#909323, internalUUID#909324, id#909325, displayId#909326, name#909327, baseUnitOfMeasure#909328, unitOfMeasures#909329, unitOfMeasureConversions#909330, productionAspect#909331, salesAspect#909332, procurementAspect#909333, productGroup#909334, filteredUnitOfMeasureConversions#909335, quantityNumerator#909336, quantityDenominator#909337]
(1280) Project
Arguments: [product#909309, plant#909310, orderDateTime#909311, productPlant#909322, systemId#909323, internalUUID#909324, id#909325, displayId#909326, name#909327, baseUnitOfMeasure#909328, unitOfMeasures#909329, unitOfMeasureConversions#909330, productionAspect#909331, salesAspect#909332, procurementAspect#909333, productGroup#909334, filteredUnitOfMeasureConversions#909335, quantityNumerator#909336, quantityDenominator#909337, (cast(quantityNumerator#909336 as double) / cast(quantityDenominator#909337 as double)) AS outboundUnit#909338]
(1281) Project
Arguments: [product#909309, plant#909310, orderDateTime#909311, productPlant#909322, systemId#909323, internalUUID#909324, id#909325, displayId#909326, name#909327, baseUnitOfMeasure#909328, unitOfMeasures#909329, unitOfMeasureConversions#909330, productionAspect#909331, salesAspect#909332, procurementAspect#909333, productGroup#909334, filteredUnitOfMeasureConversions#909335, quantityNumerator#909336, quantityDenominator#909337, CASE WHEN (isnull(outboundUnit#909338) OR (outboundUnit#909338 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909338 END AS outboundUnit#909339]
(1282) Project
Arguments: [product#909309, plant#909310, orderDateTime#909311, productPlant#909322, outboundUnit#909339]
(1283) Join
Arguments: Inner, ((plantUuid#909301 = plant#909310) AND (productUuid#909303 = product#909309))
(1284) Filter
Arguments: (calculationDateTime#909297 <= orderDateTime#909311)
(1285) Project
Arguments: [plantUuid#909301 AS plant#909340, productUuid#909303 AS product#909341, storageLocId#909304, calculationDateTime#909297, quantity#909306]
(1286) Aggregate
Arguments: [plant#909340, product#909341, storageLocId#909304], [plant#909340, product#909341, storageLocId#909304, max(calculationDateTime#909297) AS max_calc_datetime#909342]
(1287) Join
Arguments: Inner, ((((plant#909230 <=> plant#909340) AND (product#909231 <=> product#909341)) AND (storageLocId#909194 <=> storageLocId#909304)) AND (calculationDateTime#909187 <=> max_calc_datetime#909342))
(1288) Project
Arguments: [plant#909230, product#909231, storageLocId#909194, calculationDateTime#909187, quantity#909196]
(1289) Aggregate
Arguments: [product#909231, plant#909230], [product#909231, plant#909230, sum(quantity#909196) AS quantitySum#909343, min(calculationDateTime#909187) AS minCalculationDateTime#909344]
(1290) Project
Arguments: [product#909231, plant#909230, quantitySum#909343, minCalculationDateTime#909344, round(quantitySum#909343, 0) AS roundedQuantitySum#909345]
(1291) Join
Arguments: LeftOuter, ((plant#909092 = plant#909230) AND (product#909091 = product#909231))
(1292) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, roundedQuantitySum#909345, minCalculationDateTime#909344]
(1293) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, roundedQuantitySum#909345, minCalculationDateTime#909344, CASE WHEN isnotnull(minCalculationDateTime#909344) THEN minCalculationDateTime#909344 ELSE orderDateTime#909093 END AS stockDatetime#909346]
(1294) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, roundedQuantitySum#909345, minCalculationDateTime#909344, stockDatetime#909346, CASE WHEN isnotnull(roundedQuantitySum#909345) THEN array(roundedQuantitySum#909345) ELSE array(0.0) END AS stockBatchQuantities#909347]
(1295) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, roundedQuantitySum#909345, minCalculationDateTime#909344, stockDatetime#909346, stockBatchQuantities#909347, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#909348]
(1296) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, roundedQuantitySum#909345, stockDatetime#909346, stockBatchQuantities#909347, stockBatchShelfLifeEndDatetimes#909348]
(1297) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, stockBatchShelfLifeEndDatetimes#909348]
(1298) LogicalRelation
Arguments: parquet, [product#909349, plant#909350, orderDateTime#909351, planningStartDateTime#909352], false
(1299) RepartitionByExpression
Arguments: [product#909349, plant#909350], 37
(1300) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351]
(1301) LogicalRelation
Arguments: parquet, [systemId#909353, internalUUID#909354, plant#909355, product#909356, blockedForReplenishmentStartingFrom#909357, productionAspect#909358, salesPlant#909359, listing#909360, sourceOfSupplyCategory#909361], false
(1302) Repartition
Arguments: 37, true
(1303) Project
Arguments: [systemId#909353, internalUUID#909354, plant#909355, product#909356, blockedForReplenishmentStartingFrom#909357, productionAspect#909358, salesPlant#909359, listing#909360, sourceOfSupplyCategory#909361, struct(systemId, systemId#909353, internalUUID, internalUUID#909354, plant, plant#909355, product, product#909356, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909357, productionAspect, productionAspect#909358, salesPlant, salesPlant#909359, listing, listing#909360, sourceOfSupplyCategory, sourceOfSupplyCategory#909361) AS productPlant#909362]
(1304) Project
Arguments: [productPlant#909362]
(1305) Join
Arguments: LeftOuter, ((product#909349 <=> productPlant#909362.product.internalRefUUID) AND (plant#909350 <=> productPlant#909362.plant.internalRefUUID))
(1306) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362]
(1307) LogicalRelation
Arguments: parquet, [systemId#909363, internalUUID#909364, id#909365, displayId#909366, name#909367, baseUnitOfMeasure#909368, unitOfMeasures#909369, unitOfMeasureConversions#909370, productionAspect#909371, salesAspect#909372, procurementAspect#909373, productGroup#909374], false
(1308) Repartition
Arguments: 37, true
(1309) Join
Arguments: LeftOuter, (product#909349 = internalUUID#909364)
(1310) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, systemId#909363, internalUUID#909364, id#909365, displayId#909366, name#909367, baseUnitOfMeasure#909368, unitOfMeasures#909369, unitOfMeasureConversions#909370, productionAspect#909371, salesAspect#909372, procurementAspect#909373, productGroup#909374, filter(unitOfMeasureConversions#909370, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909362.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909362.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909368.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909368.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909375]
(1311) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909375.quantityNumerator), true, [quantityNumerator#909376]
(1312) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, systemId#909363, internalUUID#909364, id#909365, displayId#909366, name#909367, baseUnitOfMeasure#909368, unitOfMeasures#909369, unitOfMeasureConversions#909370, productionAspect#909371, salesAspect#909372, procurementAspect#909373, productGroup#909374, filteredUnitOfMeasureConversions#909375, quantityNumerator#909376]
(1313) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909375.quantityDenominator), true, [quantityDenominator#909377]
(1314) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, systemId#909363, internalUUID#909364, id#909365, displayId#909366, name#909367, baseUnitOfMeasure#909368, unitOfMeasures#909369, unitOfMeasureConversions#909370, productionAspect#909371, salesAspect#909372, procurementAspect#909373, productGroup#909374, filteredUnitOfMeasureConversions#909375, quantityNumerator#909376, quantityDenominator#909377]
(1315) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, systemId#909363, internalUUID#909364, id#909365, displayId#909366, name#909367, baseUnitOfMeasure#909368, unitOfMeasures#909369, unitOfMeasureConversions#909370, productionAspect#909371, salesAspect#909372, procurementAspect#909373, productGroup#909374, filteredUnitOfMeasureConversions#909375, quantityNumerator#909376, quantityDenominator#909377, (cast(quantityNumerator#909376 as double) / cast(quantityDenominator#909377 as double)) AS outboundUnit#909378]
(1316) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, systemId#909363, internalUUID#909364, id#909365, displayId#909366, name#909367, baseUnitOfMeasure#909368, unitOfMeasures#909369, unitOfMeasureConversions#909370, productionAspect#909371, salesAspect#909372, procurementAspect#909373, productGroup#909374, filteredUnitOfMeasureConversions#909375, quantityNumerator#909376, quantityDenominator#909377, CASE WHEN (isnull(outboundUnit#909378) OR (outboundUnit#909378 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909378 END AS outboundUnit#909379]
(1317) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379]
(1318) LogicalRelation
Arguments: parquet, [systemId#909380, internalUUID#909381, product#909382, plant#909383, calculationDateTime#909384, stockQuantities#909385], false
(1319) Repartition
Arguments: 37, true
(1320) LogicalRelation
Arguments: parquet, [marketUnit#909386, description#909387, articleHierarchy#909388, defaultCurrency#909389, responsibilities#909390, replenishmentTypes#909391, distributionCenters#909392, assignedArticleHierarchyNodes#909393, minOrderQtySetting#909394, listingCheck#909395, odsSelection#909396, demandProfiles#909397, constraintProfiles#909398, optimizationProfiles#909399, orderGroupSplitProfiles#909400, supplierMinimumProfiles#909401, multipleRestrictionProfiles#909402, preferredUomSource#909403, handlingOfUnfulfilledDemands#909404, negligibleQuantitiesThreshold#909405, eventtype#909406], false
(1321) Repartition
Arguments: 37, true
(1322) Filter
Arguments: (marketUnit#909386 <=> AUTO_ALL_ProdLoc)
(1323) Project
Arguments: [marketUnit#909386, description#909387, articleHierarchy#909388, defaultCurrency#909389, responsibilities#909390, replenishmentTypes#909391, distributionCenters#909392, assignedArticleHierarchyNodes#909393, minOrderQtySetting#909394, listingCheck#909395, odsSelection#909396, demandProfiles#909397, constraintProfiles#909398, optimizationProfiles#909399, orderGroupSplitProfiles#909400, supplierMinimumProfiles#909401, multipleRestrictionProfiles#909402, preferredUomSource#909403, handlingOfUnfulfilledDemands#909404, negligibleQuantitiesThreshold#909405, eventtype#909406]
(1324) Project
Arguments: [distributionCenters#909392]
(1325) Generate
Arguments: explode(distributionCenters#909392), false, [distributionCenters#909407]
(1326) Project
Arguments: [distributionCenters#909407]
(1327) Generate
Arguments: explode(distributionCenters#909407.storageLocations), false, [storageLocations#909408]
(1328) Project
Arguments: [distributionCenters#909407.id AS plantId#909409, distributionCenters#909407.internalRefUUID AS plantUuid#909410, storageLocations#909408]
(1329) Project
Arguments: [plantId#909409, plantUuid#909410, storageLocations#909408.id AS storageLocId#909411, storageLocations#909408.internalRefUUID AS storageLocUuid#909412]
(1330) LogicalRelation
Arguments: parquet, [product#909413, plant#909414, orderDateTime#909415, planningStartDateTime#909416], false
(1331) RepartitionByExpression
Arguments: [product#909413, plant#909414], 37
(1332) Project
Arguments: [product#909413, plant#909414, orderDateTime#909415]
(1333) LogicalRelation
Arguments: parquet, [systemId#909417, internalUUID#909418, plant#909419, product#909420, blockedForReplenishmentStartingFrom#909421, productionAspect#909422, salesPlant#909423, listing#909424, sourceOfSupplyCategory#909425], false
(1334) Repartition
Arguments: 37, true
(1335) Project
Arguments: [systemId#909417, internalUUID#909418, plant#909419, product#909420, blockedForReplenishmentStartingFrom#909421, productionAspect#909422, salesPlant#909423, listing#909424, sourceOfSupplyCategory#909425, struct(systemId, systemId#909417, internalUUID, internalUUID#909418, plant, plant#909419, product, product#909420, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909421, productionAspect, productionAspect#909422, salesPlant, salesPlant#909423, listing, listing#909424, sourceOfSupplyCategory, sourceOfSupplyCategory#909425) AS productPlant#909426]
(1336) Project
Arguments: [productPlant#909426]
(1337) Join
Arguments: LeftOuter, ((product#909413 <=> productPlant#909426.product.internalRefUUID) AND (plant#909414 <=> productPlant#909426.plant.internalRefUUID))
(1338) Project
Arguments: [product#909413, plant#909414, orderDateTime#909415, productPlant#909426]
(1339) LogicalRelation
Arguments: parquet, [systemId#909427, internalUUID#909428, id#909429, displayId#909430, name#909431, baseUnitOfMeasure#909432, unitOfMeasures#909433, unitOfMeasureConversions#909434, productionAspect#909435, salesAspect#909436, procurementAspect#909437, productGroup#909438], false
(1340) Repartition
Arguments: 37, true
(1341) Join
Arguments: LeftOuter, (product#909413 = internalUUID#909428)
(1342) Project
Arguments: [product#909413, plant#909414, orderDateTime#909415, productPlant#909426, systemId#909427, internalUUID#909428, id#909429, displayId#909430, name#909431, baseUnitOfMeasure#909432, unitOfMeasures#909433, unitOfMeasureConversions#909434, productionAspect#909435, salesAspect#909436, procurementAspect#909437, productGroup#909438, filter(unitOfMeasureConversions#909434, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909426.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909426.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909432.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909432.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909439]
(1343) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909439.quantityNumerator), true, [quantityNumerator#909440]
(1344) Project
Arguments: [product#909413, plant#909414, orderDateTime#909415, productPlant#909426, systemId#909427, internalUUID#909428, id#909429, displayId#909430, name#909431, baseUnitOfMeasure#909432, unitOfMeasures#909433, unitOfMeasureConversions#909434, productionAspect#909435, salesAspect#909436, procurementAspect#909437, productGroup#909438, filteredUnitOfMeasureConversions#909439, quantityNumerator#909440]
(1345) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909439.quantityDenominator), true, [quantityDenominator#909441]
(1346) Project
Arguments: [product#909413, plant#909414, orderDateTime#909415, productPlant#909426, systemId#909427, internalUUID#909428, id#909429, displayId#909430, name#909431, baseUnitOfMeasure#909432, unitOfMeasures#909433, unitOfMeasureConversions#909434, productionAspect#909435, salesAspect#909436, procurementAspect#909437, productGroup#909438, filteredUnitOfMeasureConversions#909439, quantityNumerator#909440, quantityDenominator#909441]
(1347) Project
Arguments: [product#909413, plant#909414, orderDateTime#909415, productPlant#909426, systemId#909427, internalUUID#909428, id#909429, displayId#909430, name#909431, baseUnitOfMeasure#909432, unitOfMeasures#909433, unitOfMeasureConversions#909434, productionAspect#909435, salesAspect#909436, procurementAspect#909437, productGroup#909438, filteredUnitOfMeasureConversions#909439, quantityNumerator#909440, quantityDenominator#909441, (cast(quantityNumerator#909440 as double) / cast(quantityDenominator#909441 as double)) AS outboundUnit#909442]
(1348) Project
Arguments: [product#909413, plant#909414, orderDateTime#909415, productPlant#909426, systemId#909427, internalUUID#909428, id#909429, displayId#909430, name#909431, baseUnitOfMeasure#909432, unitOfMeasures#909433, unitOfMeasureConversions#909434, productionAspect#909435, salesAspect#909436, procurementAspect#909437, productGroup#909438, filteredUnitOfMeasureConversions#909439, quantityNumerator#909440, quantityDenominator#909441, CASE WHEN (isnull(outboundUnit#909442) OR (outboundUnit#909442 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909442 END AS outboundUnit#909443]
(1349) Project
Arguments: [product#909413, plant#909414, orderDateTime#909415, productPlant#909426, outboundUnit#909443]
(1350) Project
Arguments: [plant#909414]
(1351) Deduplicate
Arguments: [plant#909414]
(1352) Join
Arguments: Inner, (plantUuid#909410 = plant#909414)
(1353) Project
Arguments: [plantId#909409, plantUuid#909410, storageLocId#909411, storageLocUuid#909412]
(1354) Join
Arguments: Inner, (plant#909383.internalRefUUID <=> plantUuid#909410)
(1355) Generate
Arguments: explode(filter(stockQuantities#909385, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#909412) AND (lambda x#905594.storageLocation.Id = storageLocId#909411)), lambda x#905594, false))), false, [stockQuantity#909444]
(1356) Project
Arguments: [systemId#909380, internalUUID#909381, product#909382, plant#909383, calculationDateTime#909384, stockQuantities#909385, plantId#909409, plantUuid#909410, storageLocId#909411, storageLocUuid#909412, stockQuantity#909444]
(1357) Aggregate
Arguments: [plantUuid#909410, internalUUID#909381, plant#909383, product#909382, systemId#909380], [plantUuid#909410, internalUUID#909381, plant#909383, product#909382, systemId#909380, first(calculationDateTime#909384, false) AS calculationDateTime#909445, collect_list(stockQuantity#909444, 0, 0) AS stockQuantities#909446]
(1358) Project
Arguments: [systemId#909380, internalUUID#909381, product#909382, plant#909383, calculationDateTime#909445, stockQuantities#909446]
(1359) Generate
Arguments: explode(stockQuantities#909446), false, [stockQuantity#909447]
(1360) Project
Arguments: [systemId#909380, internalUUID#909381, product#909382, plant#909383, calculationDateTime#909445, stockQuantities#909446, stockQuantity#909447]
(1361) Project
Arguments: [plant#909383.id AS plant#909448, plant#909383.internalRefUUID AS plantUuid#909449, product#909382.id AS product#909450, product#909382.internalRefUUID AS productUuid#909451, calculationDateTime#909445, stockQuantity#909447.storagelocation.id AS storageLocId#909452, stockQuantity#909447.storagelocation.internalRefUUID AS storageLocUuid#909453, stockQuantity#909447.quantity.measure AS quantity#909454, stockQuantity#909447.specialStockIndicator.code AS specialStockIndicator#909455, stockQuantity#909447.stockType.code AS stockType#909456]
(1362) Filter
Arguments: ((specialStockIndicator#909455 = ) AND (stockType#909456 = 01))
(1363) LogicalRelation
Arguments: parquet, [product#909457, plant#909458, orderDateTime#909459, planningStartDateTime#909460], false
(1364) RepartitionByExpression
Arguments: [product#909457, plant#909458], 37
(1365) Project
Arguments: [product#909457, plant#909458, orderDateTime#909459]
(1366) LogicalRelation
Arguments: parquet, [systemId#909461, internalUUID#909462, plant#909463, product#909464, blockedForReplenishmentStartingFrom#909465, productionAspect#909466, salesPlant#909467, listing#909468, sourceOfSupplyCategory#909469], false
(1367) Repartition
Arguments: 37, true
(1368) Project
Arguments: [systemId#909461, internalUUID#909462, plant#909463, product#909464, blockedForReplenishmentStartingFrom#909465, productionAspect#909466, salesPlant#909467, listing#909468, sourceOfSupplyCategory#909469, struct(systemId, systemId#909461, internalUUID, internalUUID#909462, plant, plant#909463, product, product#909464, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909465, productionAspect, productionAspect#909466, salesPlant, salesPlant#909467, listing, listing#909468, sourceOfSupplyCategory, sourceOfSupplyCategory#909469) AS productPlant#909470]
(1369) Project
Arguments: [productPlant#909470]
(1370) Join
Arguments: LeftOuter, ((product#909457 <=> productPlant#909470.product.internalRefUUID) AND (plant#909458 <=> productPlant#909470.plant.internalRefUUID))
(1371) Project
Arguments: [product#909457, plant#909458, orderDateTime#909459, productPlant#909470]
(1372) LogicalRelation
Arguments: parquet, [systemId#909471, internalUUID#909472, id#909473, displayId#909474, name#909475, baseUnitOfMeasure#909476, unitOfMeasures#909477, unitOfMeasureConversions#909478, productionAspect#909479, salesAspect#909480, procurementAspect#909481, productGroup#909482], false
(1373) Repartition
Arguments: 37, true
(1374) Join
Arguments: LeftOuter, (product#909457 = internalUUID#909472)
(1375) Project
Arguments: [product#909457, plant#909458, orderDateTime#909459, productPlant#909470, systemId#909471, internalUUID#909472, id#909473, displayId#909474, name#909475, baseUnitOfMeasure#909476, unitOfMeasures#909477, unitOfMeasureConversions#909478, productionAspect#909479, salesAspect#909480, procurementAspect#909481, productGroup#909482, filter(unitOfMeasureConversions#909478, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909470.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909470.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909476.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909476.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909483]
(1376) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909483.quantityNumerator), true, [quantityNumerator#909484]
(1377) Project
Arguments: [product#909457, plant#909458, orderDateTime#909459, productPlant#909470, systemId#909471, internalUUID#909472, id#909473, displayId#909474, name#909475, baseUnitOfMeasure#909476, unitOfMeasures#909477, unitOfMeasureConversions#909478, productionAspect#909479, salesAspect#909480, procurementAspect#909481, productGroup#909482, filteredUnitOfMeasureConversions#909483, quantityNumerator#909484]
(1378) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909483.quantityDenominator), true, [quantityDenominator#909485]
(1379) Project
Arguments: [product#909457, plant#909458, orderDateTime#909459, productPlant#909470, systemId#909471, internalUUID#909472, id#909473, displayId#909474, name#909475, baseUnitOfMeasure#909476, unitOfMeasures#909477, unitOfMeasureConversions#909478, productionAspect#909479, salesAspect#909480, procurementAspect#909481, productGroup#909482, filteredUnitOfMeasureConversions#909483, quantityNumerator#909484, quantityDenominator#909485]
(1380) Project
Arguments: [product#909457, plant#909458, orderDateTime#909459, productPlant#909470, systemId#909471, internalUUID#909472, id#909473, displayId#909474, name#909475, baseUnitOfMeasure#909476, unitOfMeasures#909477, unitOfMeasureConversions#909478, productionAspect#909479, salesAspect#909480, procurementAspect#909481, productGroup#909482, filteredUnitOfMeasureConversions#909483, quantityNumerator#909484, quantityDenominator#909485, (cast(quantityNumerator#909484 as double) / cast(quantityDenominator#909485 as double)) AS outboundUnit#909486]
(1381) Project
Arguments: [product#909457, plant#909458, orderDateTime#909459, productPlant#909470, systemId#909471, internalUUID#909472, id#909473, displayId#909474, name#909475, baseUnitOfMeasure#909476, unitOfMeasures#909477, unitOfMeasureConversions#909478, productionAspect#909479, salesAspect#909480, procurementAspect#909481, productGroup#909482, filteredUnitOfMeasureConversions#909483, quantityNumerator#909484, quantityDenominator#909485, CASE WHEN (isnull(outboundUnit#909486) OR (outboundUnit#909486 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909486 END AS outboundUnit#909487]
(1382) Project
Arguments: [product#909457, plant#909458, orderDateTime#909459, productPlant#909470, outboundUnit#909487]
(1383) Join
Arguments: Inner, ((plantUuid#909449 = plant#909458) AND (productUuid#909451 = product#909457))
(1384) Filter
Arguments: (calculationDateTime#909445 <= orderDateTime#909459)
(1385) Project
Arguments: [plantUuid#909449 AS plant#909488, productUuid#909451 AS product#909489, storageLocId#909452, calculationDateTime#909445, quantity#909454]
(1386) LogicalRelation
Arguments: parquet, [systemId#909490, internalUUID#909491, product#909492, plant#909493, calculationDateTime#909494, stockQuantities#909495], false
(1387) Repartition
Arguments: 37, true
(1388) LogicalRelation
Arguments: parquet, [marketUnit#909496, description#909497, articleHierarchy#909498, defaultCurrency#909499, responsibilities#909500, replenishmentTypes#909501, distributionCenters#909502, assignedArticleHierarchyNodes#909503, minOrderQtySetting#909504, listingCheck#909505, odsSelection#909506, demandProfiles#909507, constraintProfiles#909508, optimizationProfiles#909509, orderGroupSplitProfiles#909510, supplierMinimumProfiles#909511, multipleRestrictionProfiles#909512, preferredUomSource#909513, handlingOfUnfulfilledDemands#909514, negligibleQuantitiesThreshold#909515, eventtype#909516], false
(1389) Repartition
Arguments: 37, true
(1390) Filter
Arguments: (marketUnit#909496 <=> AUTO_ALL_ProdLoc)
(1391) Project
Arguments: [marketUnit#909496, description#909497, articleHierarchy#909498, defaultCurrency#909499, responsibilities#909500, replenishmentTypes#909501, distributionCenters#909502, assignedArticleHierarchyNodes#909503, minOrderQtySetting#909504, listingCheck#909505, odsSelection#909506, demandProfiles#909507, constraintProfiles#909508, optimizationProfiles#909509, orderGroupSplitProfiles#909510, supplierMinimumProfiles#909511, multipleRestrictionProfiles#909512, preferredUomSource#909513, handlingOfUnfulfilledDemands#909514, negligibleQuantitiesThreshold#909515, eventtype#909516]
(1392) Project
Arguments: [distributionCenters#909502]
(1393) Generate
Arguments: explode(distributionCenters#909502), false, [distributionCenters#909517]
(1394) Project
Arguments: [distributionCenters#909517]
(1395) Generate
Arguments: explode(distributionCenters#909517.storageLocations), false, [storageLocations#909518]
(1396) Project
Arguments: [distributionCenters#909517.id AS plantId#909519, distributionCenters#909517.internalRefUUID AS plantUuid#909520, storageLocations#909518]
(1397) Project
Arguments: [plantId#909519, plantUuid#909520, storageLocations#909518.id AS storageLocId#909521, storageLocations#909518.internalRefUUID AS storageLocUuid#909522]
(1398) LogicalRelation
Arguments: parquet, [product#909523, plant#909524, orderDateTime#909525, planningStartDateTime#909526], false
(1399) RepartitionByExpression
Arguments: [product#909523, plant#909524], 37
(1400) Project
Arguments: [product#909523, plant#909524, orderDateTime#909525]
(1401) LogicalRelation
Arguments: parquet, [systemId#909527, internalUUID#909528, plant#909529, product#909530, blockedForReplenishmentStartingFrom#909531, productionAspect#909532, salesPlant#909533, listing#909534, sourceOfSupplyCategory#909535], false
(1402) Repartition
Arguments: 37, true
(1403) Project
Arguments: [systemId#909527, internalUUID#909528, plant#909529, product#909530, blockedForReplenishmentStartingFrom#909531, productionAspect#909532, salesPlant#909533, listing#909534, sourceOfSupplyCategory#909535, struct(systemId, systemId#909527, internalUUID, internalUUID#909528, plant, plant#909529, product, product#909530, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909531, productionAspect, productionAspect#909532, salesPlant, salesPlant#909533, listing, listing#909534, sourceOfSupplyCategory, sourceOfSupplyCategory#909535) AS productPlant#909536]
(1404) Project
Arguments: [productPlant#909536]
(1405) Join
Arguments: LeftOuter, ((product#909523 <=> productPlant#909536.product.internalRefUUID) AND (plant#909524 <=> productPlant#909536.plant.internalRefUUID))
(1406) Project
Arguments: [product#909523, plant#909524, orderDateTime#909525, productPlant#909536]
(1407) LogicalRelation
Arguments: parquet, [systemId#909537, internalUUID#909538, id#909539, displayId#909540, name#909541, baseUnitOfMeasure#909542, unitOfMeasures#909543, unitOfMeasureConversions#909544, productionAspect#909545, salesAspect#909546, procurementAspect#909547, productGroup#909548], false
(1408) Repartition
Arguments: 37, true
(1409) Join
Arguments: LeftOuter, (product#909523 = internalUUID#909538)
(1410) Project
Arguments: [product#909523, plant#909524, orderDateTime#909525, productPlant#909536, systemId#909537, internalUUID#909538, id#909539, displayId#909540, name#909541, baseUnitOfMeasure#909542, unitOfMeasures#909543, unitOfMeasureConversions#909544, productionAspect#909545, salesAspect#909546, procurementAspect#909547, productGroup#909548, filter(unitOfMeasureConversions#909544, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909536.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909536.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909542.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909542.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909549]
(1411) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909549.quantityNumerator), true, [quantityNumerator#909550]
(1412) Project
Arguments: [product#909523, plant#909524, orderDateTime#909525, productPlant#909536, systemId#909537, internalUUID#909538, id#909539, displayId#909540, name#909541, baseUnitOfMeasure#909542, unitOfMeasures#909543, unitOfMeasureConversions#909544, productionAspect#909545, salesAspect#909546, procurementAspect#909547, productGroup#909548, filteredUnitOfMeasureConversions#909549, quantityNumerator#909550]
(1413) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909549.quantityDenominator), true, [quantityDenominator#909551]
(1414) Project
Arguments: [product#909523, plant#909524, orderDateTime#909525, productPlant#909536, systemId#909537, internalUUID#909538, id#909539, displayId#909540, name#909541, baseUnitOfMeasure#909542, unitOfMeasures#909543, unitOfMeasureConversions#909544, productionAspect#909545, salesAspect#909546, procurementAspect#909547, productGroup#909548, filteredUnitOfMeasureConversions#909549, quantityNumerator#909550, quantityDenominator#909551]
(1415) Project
Arguments: [product#909523, plant#909524, orderDateTime#909525, productPlant#909536, systemId#909537, internalUUID#909538, id#909539, displayId#909540, name#909541, baseUnitOfMeasure#909542, unitOfMeasures#909543, unitOfMeasureConversions#909544, productionAspect#909545, salesAspect#909546, procurementAspect#909547, productGroup#909548, filteredUnitOfMeasureConversions#909549, quantityNumerator#909550, quantityDenominator#909551, (cast(quantityNumerator#909550 as double) / cast(quantityDenominator#909551 as double)) AS outboundUnit#909552]
(1416) Project
Arguments: [product#909523, plant#909524, orderDateTime#909525, productPlant#909536, systemId#909537, internalUUID#909538, id#909539, displayId#909540, name#909541, baseUnitOfMeasure#909542, unitOfMeasures#909543, unitOfMeasureConversions#909544, productionAspect#909545, salesAspect#909546, procurementAspect#909547, productGroup#909548, filteredUnitOfMeasureConversions#909549, quantityNumerator#909550, quantityDenominator#909551, CASE WHEN (isnull(outboundUnit#909552) OR (outboundUnit#909552 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909552 END AS outboundUnit#909553]
(1417) Project
Arguments: [product#909523, plant#909524, orderDateTime#909525, productPlant#909536, outboundUnit#909553]
(1418) Project
Arguments: [plant#909524]
(1419) Deduplicate
Arguments: [plant#909524]
(1420) Join
Arguments: Inner, (plantUuid#909520 = plant#909524)
(1421) Project
Arguments: [plantId#909519, plantUuid#909520, storageLocId#909521, storageLocUuid#909522]
(1422) Join
Arguments: Inner, (plant#909493.internalRefUUID <=> plantUuid#909520)
(1423) Generate
Arguments: explode(filter(stockQuantities#909495, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#909522) AND (lambda x#905594.storageLocation.Id = storageLocId#909521)), lambda x#905594, false))), false, [stockQuantity#909554]
(1424) Project
Arguments: [systemId#909490, internalUUID#909491, product#909492, plant#909493, calculationDateTime#909494, stockQuantities#909495, plantId#909519, plantUuid#909520, storageLocId#909521, storageLocUuid#909522, stockQuantity#909554]
(1425) Aggregate
Arguments: [plantUuid#909520, internalUUID#909491, plant#909493, product#909492, systemId#909490], [plantUuid#909520, internalUUID#909491, plant#909493, product#909492, systemId#909490, first(calculationDateTime#909494, false) AS calculationDateTime#909555, collect_list(stockQuantity#909554, 0, 0) AS stockQuantities#909556]
(1426) Project
Arguments: [systemId#909490, internalUUID#909491, product#909492, plant#909493, calculationDateTime#909555, stockQuantities#909556]
(1427) Generate
Arguments: explode(stockQuantities#909556), false, [stockQuantity#909557]
(1428) Project
Arguments: [systemId#909490, internalUUID#909491, product#909492, plant#909493, calculationDateTime#909555, stockQuantities#909556, stockQuantity#909557]
(1429) Project
Arguments: [plant#909493.id AS plant#909558, plant#909493.internalRefUUID AS plantUuid#909559, product#909492.id AS product#909560, product#909492.internalRefUUID AS productUuid#909561, calculationDateTime#909555, stockQuantity#909557.storagelocation.id AS storageLocId#909562, stockQuantity#909557.storagelocation.internalRefUUID AS storageLocUuid#909563, stockQuantity#909557.quantity.measure AS quantity#909564, stockQuantity#909557.specialStockIndicator.code AS specialStockIndicator#909565, stockQuantity#909557.stockType.code AS stockType#909566]
(1430) Filter
Arguments: ((specialStockIndicator#909565 = ) AND (stockType#909566 = 01))
(1431) LogicalRelation
Arguments: parquet, [product#909567, plant#909568, orderDateTime#909569, planningStartDateTime#909570], false
(1432) RepartitionByExpression
Arguments: [product#909567, plant#909568], 37
(1433) Project
Arguments: [product#909567, plant#909568, orderDateTime#909569]
(1434) LogicalRelation
Arguments: parquet, [systemId#909571, internalUUID#909572, plant#909573, product#909574, blockedForReplenishmentStartingFrom#909575, productionAspect#909576, salesPlant#909577, listing#909578, sourceOfSupplyCategory#909579], false
(1435) Repartition
Arguments: 37, true
(1436) Project
Arguments: [systemId#909571, internalUUID#909572, plant#909573, product#909574, blockedForReplenishmentStartingFrom#909575, productionAspect#909576, salesPlant#909577, listing#909578, sourceOfSupplyCategory#909579, struct(systemId, systemId#909571, internalUUID, internalUUID#909572, plant, plant#909573, product, product#909574, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909575, productionAspect, productionAspect#909576, salesPlant, salesPlant#909577, listing, listing#909578, sourceOfSupplyCategory, sourceOfSupplyCategory#909579) AS productPlant#909580]
(1437) Project
Arguments: [productPlant#909580]
(1438) Join
Arguments: LeftOuter, ((product#909567 <=> productPlant#909580.product.internalRefUUID) AND (plant#909568 <=> productPlant#909580.plant.internalRefUUID))
(1439) Project
Arguments: [product#909567, plant#909568, orderDateTime#909569, productPlant#909580]
(1440) LogicalRelation
Arguments: parquet, [systemId#909581, internalUUID#909582, id#909583, displayId#909584, name#909585, baseUnitOfMeasure#909586, unitOfMeasures#909587, unitOfMeasureConversions#909588, productionAspect#909589, salesAspect#909590, procurementAspect#909591, productGroup#909592], false
(1441) Repartition
Arguments: 37, true
(1442) Join
Arguments: LeftOuter, (product#909567 = internalUUID#909582)
(1443) Project
Arguments: [product#909567, plant#909568, orderDateTime#909569, productPlant#909580, systemId#909581, internalUUID#909582, id#909583, displayId#909584, name#909585, baseUnitOfMeasure#909586, unitOfMeasures#909587, unitOfMeasureConversions#909588, productionAspect#909589, salesAspect#909590, procurementAspect#909591, productGroup#909592, filter(unitOfMeasureConversions#909588, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909580.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909580.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909586.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909586.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909593]
(1444) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909593.quantityNumerator), true, [quantityNumerator#909594]
(1445) Project
Arguments: [product#909567, plant#909568, orderDateTime#909569, productPlant#909580, systemId#909581, internalUUID#909582, id#909583, displayId#909584, name#909585, baseUnitOfMeasure#909586, unitOfMeasures#909587, unitOfMeasureConversions#909588, productionAspect#909589, salesAspect#909590, procurementAspect#909591, productGroup#909592, filteredUnitOfMeasureConversions#909593, quantityNumerator#909594]
(1446) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909593.quantityDenominator), true, [quantityDenominator#909595]
(1447) Project
Arguments: [product#909567, plant#909568, orderDateTime#909569, productPlant#909580, systemId#909581, internalUUID#909582, id#909583, displayId#909584, name#909585, baseUnitOfMeasure#909586, unitOfMeasures#909587, unitOfMeasureConversions#909588, productionAspect#909589, salesAspect#909590, procurementAspect#909591, productGroup#909592, filteredUnitOfMeasureConversions#909593, quantityNumerator#909594, quantityDenominator#909595]
(1448) Project
Arguments: [product#909567, plant#909568, orderDateTime#909569, productPlant#909580, systemId#909581, internalUUID#909582, id#909583, displayId#909584, name#909585, baseUnitOfMeasure#909586, unitOfMeasures#909587, unitOfMeasureConversions#909588, productionAspect#909589, salesAspect#909590, procurementAspect#909591, productGroup#909592, filteredUnitOfMeasureConversions#909593, quantityNumerator#909594, quantityDenominator#909595, (cast(quantityNumerator#909594 as double) / cast(quantityDenominator#909595 as double)) AS outboundUnit#909596]
(1449) Project
Arguments: [product#909567, plant#909568, orderDateTime#909569, productPlant#909580, systemId#909581, internalUUID#909582, id#909583, displayId#909584, name#909585, baseUnitOfMeasure#909586, unitOfMeasures#909587, unitOfMeasureConversions#909588, productionAspect#909589, salesAspect#909590, procurementAspect#909591, productGroup#909592, filteredUnitOfMeasureConversions#909593, quantityNumerator#909594, quantityDenominator#909595, CASE WHEN (isnull(outboundUnit#909596) OR (outboundUnit#909596 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909596 END AS outboundUnit#909597]
(1450) Project
Arguments: [product#909567, plant#909568, orderDateTime#909569, productPlant#909580, outboundUnit#909597]
(1451) Join
Arguments: Inner, ((plantUuid#909559 = plant#909568) AND (productUuid#909561 = product#909567))
(1452) Filter
Arguments: (calculationDateTime#909555 <= orderDateTime#909569)
(1453) Project
Arguments: [plantUuid#909559 AS plant#909598, productUuid#909561 AS product#909599, storageLocId#909562, calculationDateTime#909555, quantity#909564]
(1454) Aggregate
Arguments: [plant#909598, product#909599, storageLocId#909562], [plant#909598, product#909599, storageLocId#909562, max(calculationDateTime#909555) AS max_calc_datetime#909600]
(1455) Join
Arguments: Inner, ((((plant#909488 <=> plant#909598) AND (product#909489 <=> product#909599)) AND (storageLocId#909452 <=> storageLocId#909562)) AND (calculationDateTime#909445 <=> max_calc_datetime#909600))
(1456) Project
Arguments: [plant#909488, product#909489, storageLocId#909452, calculationDateTime#909445, quantity#909454]
(1457) Aggregate
Arguments: [product#909489, plant#909488], [product#909489, plant#909488, sum(quantity#909454) AS quantitySum#909601, min(calculationDateTime#909445) AS minCalculationDateTime#909602]
(1458) Project
Arguments: [product#909489, plant#909488, quantitySum#909601, minCalculationDateTime#909602, round(quantitySum#909601, 0) AS roundedQuantitySum#909603]
(1459) Join
Arguments: LeftOuter, ((plant#909350 = plant#909488) AND (product#909349 = product#909489))
(1460) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, roundedQuantitySum#909603, minCalculationDateTime#909602]
(1461) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, roundedQuantitySum#909603, minCalculationDateTime#909602, CASE WHEN isnotnull(minCalculationDateTime#909602) THEN minCalculationDateTime#909602 ELSE orderDateTime#909351 END AS stockDatetime#909604]
(1462) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, roundedQuantitySum#909603, minCalculationDateTime#909602, stockDatetime#909604, CASE WHEN isnotnull(roundedQuantitySum#909603) THEN array(roundedQuantitySum#909603) ELSE array(0.0) END AS stockBatchQuantities#909605]
(1463) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, roundedQuantitySum#909603, minCalculationDateTime#909602, stockDatetime#909604, stockBatchQuantities#909605, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#909606]
(1464) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, roundedQuantitySum#909603, stockDatetime#909604, stockBatchQuantities#909605, stockBatchShelfLifeEndDatetimes#909606]
(1465) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, stockBatchShelfLifeEndDatetimes#909606]
(1466) LogicalRelation
Arguments: parquet, [product#909607, plant#909608, demandChannel#909609, demandStream#909610, considerVariance#909611, demandTimeBuckets#909612, demandPointInTimeStart#909613, demandPointInTimeEnd#909614, demandPointInTime#909615], false
(1467) Join
Arguments: LeftOuter, ((plant#909608 <=> plant#909350) AND (product#909607 <=> product#909349))
(1468) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, stockBatchShelfLifeEndDatetimes#909606, product#909607, plant#909608, demandChannel#909609, demandStream#909610, considerVariance#909611, demandTimeBuckets#909612, demandPointInTimeStart#909613, demandPointInTimeEnd#909614, demandPointInTime#909615, CASE WHEN isnotnull(product#909607) THEN struct(demandChannel, demandChannel#909609, demandStream, demandStream#909610, considerVariance, considerVariance#909611, demandTimeBuckets, demandTimeBuckets#909612, demandPointInTimeStart, demandPointInTimeStart#909613, demandPointInTimeEnd, demandPointInTimeEnd#909614, demandPointInTime, demandPointInTime#909615) 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#909616]
(1469) Aggregate
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, stockBatchShelfLifeEndDatetimes#909606], [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, stockBatchShelfLifeEndDatetimes#909606, collect_list(rawDemands#909616, 0, 0) AS rawDemands#909617]
(1470) SubqueryAlias
Arguments: wl
(1471) LogicalRelation
Arguments: parquet, [systemId#909618, internalUUID#909619, id#909620, displayId#909621, name#909622, category#909623, companyCode#909624, address#909625, mainDistributionChain#909626, mainPurchasingOrganization#909627, validPurchasingOrganizations#909628, productGroup#909629], false
(1472) Repartition
Arguments: 37, true
(1473) Project
Arguments: [systemId#909618, internalUUID#909619, id#909620, displayId#909621, name#909622, category#909623, companyCode#909624, address#909625, mainDistributionChain#909626, mainPurchasingOrganization#909627, validPurchasingOrganizations#909628, productGroup#909629, address#909625.timezone.code AS timezonecode#909630]
(1474) Join
Arguments: LeftOuter, (plant#909350 <=> internalUUID#909619)
(1475) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, stockBatchShelfLifeEndDatetimes#909606, rawDemands#909617, systemId#909618, internalUUID#909619, id#909620, displayId#909621, name#909622, category#909623, companyCode#909624, address#909625, mainDistributionChain#909626, mainPurchasingOrganization#909627, validPurchasingOrganizations#909628, productGroup#909629, CASE WHEN isnotnull(timezonecode#909630) THEN timezonecode#909630 ELSE UTC END AS timezonecode#909631]
(1476) Project
Arguments: [product#909349, plant#909350, orderDateTime#909351, productPlant#909362, outboundUnit#909379, stockDatetime#909604, stockBatchQuantities#909605, stockBatchShelfLifeEndDatetimes#909606, rawDemands#909617, timezonecode#909631]
(1477) DeserializeToObject
Arguments: createexternalrow(invoke(product#909349.toString()), invoke(plant#909350.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#909351)), if (isnull(productPlant#909362)) null else createexternalrow(invoke(productPlant#909362.systemId.toString()), invoke(productPlant#909362.internalUUID.toString()), if (isnull(productPlant#909362.plant)) null else createexternalrow(invoke(productPlant#909362.plant.internalRefUUID.toString()), invoke(productPlant#909362.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#909362.product)) null else createexternalrow(invoke(productPlant#909362.product.internalRefUUID.toString()), invoke(productPlant#909362.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#909362.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#909362.productionAspect)) null else createexternalrow(if (isnull(productPlant#909362.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#909362.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#909362.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#909362.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#909362.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#909362.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#909362.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#909362.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#909362.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#909362.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#909362.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#909362.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#909362.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#909362.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#909362.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#909362.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#909362.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#909362.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#909362.salesPlant)) null else createexternalrow(if (isnull(productPlant#909362.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#909362.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#909362.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, 71540), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#909362.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#909362.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#909362.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#909362.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#909379)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#909604)), mapobjects(lambdavariable(MapObject, DoubleType, true, 71541), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 71541) as double))), stockBatchQuantities#909605, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 71542), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 71542) as timestamp)))), stockBatchShelfLifeEndDatetimes#909606, 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, 71543), 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, 71543))) 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, 71543).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, 71543).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, 71543).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).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, 71543).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, 71543).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, 71543).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).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, 71543).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#909617, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#909631.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#906942: org.apache.spark.sql.Row
(1478) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@4013ddf1, 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#906947: org.apache.spark.sql.Row
(1479) 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#909632, 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#909633, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71531), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71531), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71532), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71532), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71533), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71533), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71534), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71534), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71535), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71535), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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#909634, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71537), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71537), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71538), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71538), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71539), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71539), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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#909635]
(1480) Join
Arguments: LeftOuter, ((plant#909633 <=> plant#909092) AND (product#909632 <=> product#909091))
(1481) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, stockBatchShelfLifeEndDatetimes#909348, plant#909633, dayBucketDemands#909634, pointInTimeDemands#909635]
(1482) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, stockBatchShelfLifeEndDatetimes#909348, dayBucketDemands#909634, pointInTimeDemands#909635]
(1483) LogicalRelation
Arguments: parquet, [product#909636, plant#909637, orderDateTime#909638, planningStartDateTime#909639], false
(1484) RepartitionByExpression
Arguments: [product#909636, plant#909637], 37
(1485) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638]
(1486) LogicalRelation
Arguments: parquet, [systemId#909640, internalUUID#909641, plant#909642, product#909643, blockedForReplenishmentStartingFrom#909644, productionAspect#909645, salesPlant#909646, listing#909647, sourceOfSupplyCategory#909648], false
(1487) Repartition
Arguments: 37, true
(1488) Project
Arguments: [systemId#909640, internalUUID#909641, plant#909642, product#909643, blockedForReplenishmentStartingFrom#909644, productionAspect#909645, salesPlant#909646, listing#909647, sourceOfSupplyCategory#909648, struct(systemId, systemId#909640, internalUUID, internalUUID#909641, plant, plant#909642, product, product#909643, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909644, productionAspect, productionAspect#909645, salesPlant, salesPlant#909646, listing, listing#909647, sourceOfSupplyCategory, sourceOfSupplyCategory#909648) AS productPlant#909649]
(1489) Project
Arguments: [productPlant#909649]
(1490) Join
Arguments: LeftOuter, ((product#909636 <=> productPlant#909649.product.internalRefUUID) AND (plant#909637 <=> productPlant#909649.plant.internalRefUUID))
(1491) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649]
(1492) LogicalRelation
Arguments: parquet, [systemId#909650, internalUUID#909651, id#909652, displayId#909653, name#909654, baseUnitOfMeasure#909655, unitOfMeasures#909656, unitOfMeasureConversions#909657, productionAspect#909658, salesAspect#909659, procurementAspect#909660, productGroup#909661], false
(1493) Repartition
Arguments: 37, true
(1494) Join
Arguments: LeftOuter, (product#909636 = internalUUID#909651)
(1495) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, systemId#909650, internalUUID#909651, id#909652, displayId#909653, name#909654, baseUnitOfMeasure#909655, unitOfMeasures#909656, unitOfMeasureConversions#909657, productionAspect#909658, salesAspect#909659, procurementAspect#909660, productGroup#909661, filter(unitOfMeasureConversions#909657, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909649.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909649.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909655.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909655.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909662]
(1496) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909662.quantityNumerator), true, [quantityNumerator#909663]
(1497) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, systemId#909650, internalUUID#909651, id#909652, displayId#909653, name#909654, baseUnitOfMeasure#909655, unitOfMeasures#909656, unitOfMeasureConversions#909657, productionAspect#909658, salesAspect#909659, procurementAspect#909660, productGroup#909661, filteredUnitOfMeasureConversions#909662, quantityNumerator#909663]
(1498) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909662.quantityDenominator), true, [quantityDenominator#909664]
(1499) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, systemId#909650, internalUUID#909651, id#909652, displayId#909653, name#909654, baseUnitOfMeasure#909655, unitOfMeasures#909656, unitOfMeasureConversions#909657, productionAspect#909658, salesAspect#909659, procurementAspect#909660, productGroup#909661, filteredUnitOfMeasureConversions#909662, quantityNumerator#909663, quantityDenominator#909664]
(1500) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, systemId#909650, internalUUID#909651, id#909652, displayId#909653, name#909654, baseUnitOfMeasure#909655, unitOfMeasures#909656, unitOfMeasureConversions#909657, productionAspect#909658, salesAspect#909659, procurementAspect#909660, productGroup#909661, filteredUnitOfMeasureConversions#909662, quantityNumerator#909663, quantityDenominator#909664, (cast(quantityNumerator#909663 as double) / cast(quantityDenominator#909664 as double)) AS outboundUnit#909665]
(1501) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, systemId#909650, internalUUID#909651, id#909652, displayId#909653, name#909654, baseUnitOfMeasure#909655, unitOfMeasures#909656, unitOfMeasureConversions#909657, productionAspect#909658, salesAspect#909659, procurementAspect#909660, productGroup#909661, filteredUnitOfMeasureConversions#909662, quantityNumerator#909663, quantityDenominator#909664, CASE WHEN (isnull(outboundUnit#909665) OR (outboundUnit#909665 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909665 END AS outboundUnit#909666]
(1502) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, outboundUnit#909666]
(1503) LogicalRelation
Arguments: parquet, [systemId#909667, internalUUID#909668, product#909669, plant#909670, calculationDateTime#909671, stockQuantities#909672], false
(1504) Repartition
Arguments: 37, true
(1505) LogicalRelation
Arguments: parquet, [marketUnit#909673, description#909674, articleHierarchy#909675, defaultCurrency#909676, responsibilities#909677, replenishmentTypes#909678, distributionCenters#909679, assignedArticleHierarchyNodes#909680, minOrderQtySetting#909681, listingCheck#909682, odsSelection#909683, demandProfiles#909684, constraintProfiles#909685, optimizationProfiles#909686, orderGroupSplitProfiles#909687, supplierMinimumProfiles#909688, multipleRestrictionProfiles#909689, preferredUomSource#909690, handlingOfUnfulfilledDemands#909691, negligibleQuantitiesThreshold#909692, eventtype#909693], false
(1506) Repartition
Arguments: 37, true
(1507) Filter
Arguments: (marketUnit#909673 <=> AUTO_ALL_ProdLoc)
(1508) Project
Arguments: [marketUnit#909673, description#909674, articleHierarchy#909675, defaultCurrency#909676, responsibilities#909677, replenishmentTypes#909678, distributionCenters#909679, assignedArticleHierarchyNodes#909680, minOrderQtySetting#909681, listingCheck#909682, odsSelection#909683, demandProfiles#909684, constraintProfiles#909685, optimizationProfiles#909686, orderGroupSplitProfiles#909687, supplierMinimumProfiles#909688, multipleRestrictionProfiles#909689, preferredUomSource#909690, handlingOfUnfulfilledDemands#909691, negligibleQuantitiesThreshold#909692, eventtype#909693]
(1509) Project
Arguments: [distributionCenters#909679]
(1510) Generate
Arguments: explode(distributionCenters#909679), false, [distributionCenters#909694]
(1511) Project
Arguments: [distributionCenters#909694]
(1512) Generate
Arguments: explode(distributionCenters#909694.storageLocations), false, [storageLocations#909695]
(1513) Project
Arguments: [distributionCenters#909694.id AS plantId#909696, distributionCenters#909694.internalRefUUID AS plantUuid#909697, storageLocations#909695]
(1514) Project
Arguments: [plantId#909696, plantUuid#909697, storageLocations#909695.id AS storageLocId#909698, storageLocations#909695.internalRefUUID AS storageLocUuid#909699]
(1515) LogicalRelation
Arguments: parquet, [product#909700, plant#909701, orderDateTime#909702, planningStartDateTime#909703], false
(1516) RepartitionByExpression
Arguments: [product#909700, plant#909701], 37
(1517) Project
Arguments: [product#909700, plant#909701, orderDateTime#909702]
(1518) LogicalRelation
Arguments: parquet, [systemId#909704, internalUUID#909705, plant#909706, product#909707, blockedForReplenishmentStartingFrom#909708, productionAspect#909709, salesPlant#909710, listing#909711, sourceOfSupplyCategory#909712], false
(1519) Repartition
Arguments: 37, true
(1520) Project
Arguments: [systemId#909704, internalUUID#909705, plant#909706, product#909707, blockedForReplenishmentStartingFrom#909708, productionAspect#909709, salesPlant#909710, listing#909711, sourceOfSupplyCategory#909712, struct(systemId, systemId#909704, internalUUID, internalUUID#909705, plant, plant#909706, product, product#909707, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909708, productionAspect, productionAspect#909709, salesPlant, salesPlant#909710, listing, listing#909711, sourceOfSupplyCategory, sourceOfSupplyCategory#909712) AS productPlant#909713]
(1521) Project
Arguments: [productPlant#909713]
(1522) Join
Arguments: LeftOuter, ((product#909700 <=> productPlant#909713.product.internalRefUUID) AND (plant#909701 <=> productPlant#909713.plant.internalRefUUID))
(1523) Project
Arguments: [product#909700, plant#909701, orderDateTime#909702, productPlant#909713]
(1524) LogicalRelation
Arguments: parquet, [systemId#909714, internalUUID#909715, id#909716, displayId#909717, name#909718, baseUnitOfMeasure#909719, unitOfMeasures#909720, unitOfMeasureConversions#909721, productionAspect#909722, salesAspect#909723, procurementAspect#909724, productGroup#909725], false
(1525) Repartition
Arguments: 37, true
(1526) Join
Arguments: LeftOuter, (product#909700 = internalUUID#909715)
(1527) Project
Arguments: [product#909700, plant#909701, orderDateTime#909702, productPlant#909713, systemId#909714, internalUUID#909715, id#909716, displayId#909717, name#909718, baseUnitOfMeasure#909719, unitOfMeasures#909720, unitOfMeasureConversions#909721, productionAspect#909722, salesAspect#909723, procurementAspect#909724, productGroup#909725, filter(unitOfMeasureConversions#909721, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909713.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909713.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909719.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909719.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909726]
(1528) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909726.quantityNumerator), true, [quantityNumerator#909727]
(1529) Project
Arguments: [product#909700, plant#909701, orderDateTime#909702, productPlant#909713, systemId#909714, internalUUID#909715, id#909716, displayId#909717, name#909718, baseUnitOfMeasure#909719, unitOfMeasures#909720, unitOfMeasureConversions#909721, productionAspect#909722, salesAspect#909723, procurementAspect#909724, productGroup#909725, filteredUnitOfMeasureConversions#909726, quantityNumerator#909727]
(1530) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909726.quantityDenominator), true, [quantityDenominator#909728]
(1531) Project
Arguments: [product#909700, plant#909701, orderDateTime#909702, productPlant#909713, systemId#909714, internalUUID#909715, id#909716, displayId#909717, name#909718, baseUnitOfMeasure#909719, unitOfMeasures#909720, unitOfMeasureConversions#909721, productionAspect#909722, salesAspect#909723, procurementAspect#909724, productGroup#909725, filteredUnitOfMeasureConversions#909726, quantityNumerator#909727, quantityDenominator#909728]
(1532) Project
Arguments: [product#909700, plant#909701, orderDateTime#909702, productPlant#909713, systemId#909714, internalUUID#909715, id#909716, displayId#909717, name#909718, baseUnitOfMeasure#909719, unitOfMeasures#909720, unitOfMeasureConversions#909721, productionAspect#909722, salesAspect#909723, procurementAspect#909724, productGroup#909725, filteredUnitOfMeasureConversions#909726, quantityNumerator#909727, quantityDenominator#909728, (cast(quantityNumerator#909727 as double) / cast(quantityDenominator#909728 as double)) AS outboundUnit#909729]
(1533) Project
Arguments: [product#909700, plant#909701, orderDateTime#909702, productPlant#909713, systemId#909714, internalUUID#909715, id#909716, displayId#909717, name#909718, baseUnitOfMeasure#909719, unitOfMeasures#909720, unitOfMeasureConversions#909721, productionAspect#909722, salesAspect#909723, procurementAspect#909724, productGroup#909725, filteredUnitOfMeasureConversions#909726, quantityNumerator#909727, quantityDenominator#909728, CASE WHEN (isnull(outboundUnit#909729) OR (outboundUnit#909729 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909729 END AS outboundUnit#909730]
(1534) Project
Arguments: [product#909700, plant#909701, orderDateTime#909702, productPlant#909713, outboundUnit#909730]
(1535) Project
Arguments: [plant#909701]
(1536) Deduplicate
Arguments: [plant#909701]
(1537) Join
Arguments: Inner, (plantUuid#909697 = plant#909701)
(1538) Project
Arguments: [plantId#909696, plantUuid#909697, storageLocId#909698, storageLocUuid#909699]
(1539) Join
Arguments: Inner, (plant#909670.internalRefUUID <=> plantUuid#909697)
(1540) Generate
Arguments: explode(filter(stockQuantities#909672, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#909699) AND (lambda x#905594.storageLocation.Id = storageLocId#909698)), lambda x#905594, false))), false, [stockQuantity#909731]
(1541) Project
Arguments: [systemId#909667, internalUUID#909668, product#909669, plant#909670, calculationDateTime#909671, stockQuantities#909672, plantId#909696, plantUuid#909697, storageLocId#909698, storageLocUuid#909699, stockQuantity#909731]
(1542) Aggregate
Arguments: [plantUuid#909697, internalUUID#909668, plant#909670, product#909669, systemId#909667], [plantUuid#909697, internalUUID#909668, plant#909670, product#909669, systemId#909667, first(calculationDateTime#909671, false) AS calculationDateTime#909732, collect_list(stockQuantity#909731, 0, 0) AS stockQuantities#909733]
(1543) Project
Arguments: [systemId#909667, internalUUID#909668, product#909669, plant#909670, calculationDateTime#909732, stockQuantities#909733]
(1544) Generate
Arguments: explode(stockQuantities#909733), false, [stockQuantity#909734]
(1545) Project
Arguments: [systemId#909667, internalUUID#909668, product#909669, plant#909670, calculationDateTime#909732, stockQuantities#909733, stockQuantity#909734]
(1546) Project
Arguments: [plant#909670.id AS plant#909735, plant#909670.internalRefUUID AS plantUuid#909736, product#909669.id AS product#909737, product#909669.internalRefUUID AS productUuid#909738, calculationDateTime#909732, stockQuantity#909734.storagelocation.id AS storageLocId#909739, stockQuantity#909734.storagelocation.internalRefUUID AS storageLocUuid#909740, stockQuantity#909734.quantity.measure AS quantity#909741, stockQuantity#909734.specialStockIndicator.code AS specialStockIndicator#909742, stockQuantity#909734.stockType.code AS stockType#909743]
(1547) Filter
Arguments: ((specialStockIndicator#909742 = ) AND (stockType#909743 = 01))
(1548) LogicalRelation
Arguments: parquet, [product#909744, plant#909745, orderDateTime#909746, planningStartDateTime#909747], false
(1549) RepartitionByExpression
Arguments: [product#909744, plant#909745], 37
(1550) Project
Arguments: [product#909744, plant#909745, orderDateTime#909746]
(1551) LogicalRelation
Arguments: parquet, [systemId#909748, internalUUID#909749, plant#909750, product#909751, blockedForReplenishmentStartingFrom#909752, productionAspect#909753, salesPlant#909754, listing#909755, sourceOfSupplyCategory#909756], false
(1552) Repartition
Arguments: 37, true
(1553) Project
Arguments: [systemId#909748, internalUUID#909749, plant#909750, product#909751, blockedForReplenishmentStartingFrom#909752, productionAspect#909753, salesPlant#909754, listing#909755, sourceOfSupplyCategory#909756, struct(systemId, systemId#909748, internalUUID, internalUUID#909749, plant, plant#909750, product, product#909751, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909752, productionAspect, productionAspect#909753, salesPlant, salesPlant#909754, listing, listing#909755, sourceOfSupplyCategory, sourceOfSupplyCategory#909756) AS productPlant#909757]
(1554) Project
Arguments: [productPlant#909757]
(1555) Join
Arguments: LeftOuter, ((product#909744 <=> productPlant#909757.product.internalRefUUID) AND (plant#909745 <=> productPlant#909757.plant.internalRefUUID))
(1556) Project
Arguments: [product#909744, plant#909745, orderDateTime#909746, productPlant#909757]
(1557) LogicalRelation
Arguments: parquet, [systemId#909758, internalUUID#909759, id#909760, displayId#909761, name#909762, baseUnitOfMeasure#909763, unitOfMeasures#909764, unitOfMeasureConversions#909765, productionAspect#909766, salesAspect#909767, procurementAspect#909768, productGroup#909769], false
(1558) Repartition
Arguments: 37, true
(1559) Join
Arguments: LeftOuter, (product#909744 = internalUUID#909759)
(1560) Project
Arguments: [product#909744, plant#909745, orderDateTime#909746, productPlant#909757, systemId#909758, internalUUID#909759, id#909760, displayId#909761, name#909762, baseUnitOfMeasure#909763, unitOfMeasures#909764, unitOfMeasureConversions#909765, productionAspect#909766, salesAspect#909767, procurementAspect#909768, productGroup#909769, filter(unitOfMeasureConversions#909765, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909757.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909757.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909763.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909763.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909770]
(1561) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909770.quantityNumerator), true, [quantityNumerator#909771]
(1562) Project
Arguments: [product#909744, plant#909745, orderDateTime#909746, productPlant#909757, systemId#909758, internalUUID#909759, id#909760, displayId#909761, name#909762, baseUnitOfMeasure#909763, unitOfMeasures#909764, unitOfMeasureConversions#909765, productionAspect#909766, salesAspect#909767, procurementAspect#909768, productGroup#909769, filteredUnitOfMeasureConversions#909770, quantityNumerator#909771]
(1563) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909770.quantityDenominator), true, [quantityDenominator#909772]
(1564) Project
Arguments: [product#909744, plant#909745, orderDateTime#909746, productPlant#909757, systemId#909758, internalUUID#909759, id#909760, displayId#909761, name#909762, baseUnitOfMeasure#909763, unitOfMeasures#909764, unitOfMeasureConversions#909765, productionAspect#909766, salesAspect#909767, procurementAspect#909768, productGroup#909769, filteredUnitOfMeasureConversions#909770, quantityNumerator#909771, quantityDenominator#909772]
(1565) Project
Arguments: [product#909744, plant#909745, orderDateTime#909746, productPlant#909757, systemId#909758, internalUUID#909759, id#909760, displayId#909761, name#909762, baseUnitOfMeasure#909763, unitOfMeasures#909764, unitOfMeasureConversions#909765, productionAspect#909766, salesAspect#909767, procurementAspect#909768, productGroup#909769, filteredUnitOfMeasureConversions#909770, quantityNumerator#909771, quantityDenominator#909772, (cast(quantityNumerator#909771 as double) / cast(quantityDenominator#909772 as double)) AS outboundUnit#909773]
(1566) Project
Arguments: [product#909744, plant#909745, orderDateTime#909746, productPlant#909757, systemId#909758, internalUUID#909759, id#909760, displayId#909761, name#909762, baseUnitOfMeasure#909763, unitOfMeasures#909764, unitOfMeasureConversions#909765, productionAspect#909766, salesAspect#909767, procurementAspect#909768, productGroup#909769, filteredUnitOfMeasureConversions#909770, quantityNumerator#909771, quantityDenominator#909772, CASE WHEN (isnull(outboundUnit#909773) OR (outboundUnit#909773 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909773 END AS outboundUnit#909774]
(1567) Project
Arguments: [product#909744, plant#909745, orderDateTime#909746, productPlant#909757, outboundUnit#909774]
(1568) Join
Arguments: Inner, ((plantUuid#909736 = plant#909745) AND (productUuid#909738 = product#909744))
(1569) Filter
Arguments: (calculationDateTime#909732 <= orderDateTime#909746)
(1570) Project
Arguments: [plantUuid#909736 AS plant#909775, productUuid#909738 AS product#909776, storageLocId#909739, calculationDateTime#909732, quantity#909741]
(1571) LogicalRelation
Arguments: parquet, [systemId#909777, internalUUID#909778, product#909779, plant#909780, calculationDateTime#909781, stockQuantities#909782], false
(1572) Repartition
Arguments: 37, true
(1573) LogicalRelation
Arguments: parquet, [marketUnit#909783, description#909784, articleHierarchy#909785, defaultCurrency#909786, responsibilities#909787, replenishmentTypes#909788, distributionCenters#909789, assignedArticleHierarchyNodes#909790, minOrderQtySetting#909791, listingCheck#909792, odsSelection#909793, demandProfiles#909794, constraintProfiles#909795, optimizationProfiles#909796, orderGroupSplitProfiles#909797, supplierMinimumProfiles#909798, multipleRestrictionProfiles#909799, preferredUomSource#909800, handlingOfUnfulfilledDemands#909801, negligibleQuantitiesThreshold#909802, eventtype#909803], false
(1574) Repartition
Arguments: 37, true
(1575) Filter
Arguments: (marketUnit#909783 <=> AUTO_ALL_ProdLoc)
(1576) Project
Arguments: [marketUnit#909783, description#909784, articleHierarchy#909785, defaultCurrency#909786, responsibilities#909787, replenishmentTypes#909788, distributionCenters#909789, assignedArticleHierarchyNodes#909790, minOrderQtySetting#909791, listingCheck#909792, odsSelection#909793, demandProfiles#909794, constraintProfiles#909795, optimizationProfiles#909796, orderGroupSplitProfiles#909797, supplierMinimumProfiles#909798, multipleRestrictionProfiles#909799, preferredUomSource#909800, handlingOfUnfulfilledDemands#909801, negligibleQuantitiesThreshold#909802, eventtype#909803]
(1577) Project
Arguments: [distributionCenters#909789]
(1578) Generate
Arguments: explode(distributionCenters#909789), false, [distributionCenters#909804]
(1579) Project
Arguments: [distributionCenters#909804]
(1580) Generate
Arguments: explode(distributionCenters#909804.storageLocations), false, [storageLocations#909805]
(1581) Project
Arguments: [distributionCenters#909804.id AS plantId#909806, distributionCenters#909804.internalRefUUID AS plantUuid#909807, storageLocations#909805]
(1582) Project
Arguments: [plantId#909806, plantUuid#909807, storageLocations#909805.id AS storageLocId#909808, storageLocations#909805.internalRefUUID AS storageLocUuid#909809]
(1583) LogicalRelation
Arguments: parquet, [product#909810, plant#909811, orderDateTime#909812, planningStartDateTime#909813], false
(1584) RepartitionByExpression
Arguments: [product#909810, plant#909811], 37
(1585) Project
Arguments: [product#909810, plant#909811, orderDateTime#909812]
(1586) LogicalRelation
Arguments: parquet, [systemId#909814, internalUUID#909815, plant#909816, product#909817, blockedForReplenishmentStartingFrom#909818, productionAspect#909819, salesPlant#909820, listing#909821, sourceOfSupplyCategory#909822], false
(1587) Repartition
Arguments: 37, true
(1588) Project
Arguments: [systemId#909814, internalUUID#909815, plant#909816, product#909817, blockedForReplenishmentStartingFrom#909818, productionAspect#909819, salesPlant#909820, listing#909821, sourceOfSupplyCategory#909822, struct(systemId, systemId#909814, internalUUID, internalUUID#909815, plant, plant#909816, product, product#909817, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909818, productionAspect, productionAspect#909819, salesPlant, salesPlant#909820, listing, listing#909821, sourceOfSupplyCategory, sourceOfSupplyCategory#909822) AS productPlant#909823]
(1589) Project
Arguments: [productPlant#909823]
(1590) Join
Arguments: LeftOuter, ((product#909810 <=> productPlant#909823.product.internalRefUUID) AND (plant#909811 <=> productPlant#909823.plant.internalRefUUID))
(1591) Project
Arguments: [product#909810, plant#909811, orderDateTime#909812, productPlant#909823]
(1592) LogicalRelation
Arguments: parquet, [systemId#909824, internalUUID#909825, id#909826, displayId#909827, name#909828, baseUnitOfMeasure#909829, unitOfMeasures#909830, unitOfMeasureConversions#909831, productionAspect#909832, salesAspect#909833, procurementAspect#909834, productGroup#909835], false
(1593) Repartition
Arguments: 37, true
(1594) Join
Arguments: LeftOuter, (product#909810 = internalUUID#909825)
(1595) Project
Arguments: [product#909810, plant#909811, orderDateTime#909812, productPlant#909823, systemId#909824, internalUUID#909825, id#909826, displayId#909827, name#909828, baseUnitOfMeasure#909829, unitOfMeasures#909830, unitOfMeasureConversions#909831, productionAspect#909832, salesAspect#909833, procurementAspect#909834, productGroup#909835, filter(unitOfMeasureConversions#909831, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909823.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909823.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909829.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909829.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909836]
(1596) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909836.quantityNumerator), true, [quantityNumerator#909837]
(1597) Project
Arguments: [product#909810, plant#909811, orderDateTime#909812, productPlant#909823, systemId#909824, internalUUID#909825, id#909826, displayId#909827, name#909828, baseUnitOfMeasure#909829, unitOfMeasures#909830, unitOfMeasureConversions#909831, productionAspect#909832, salesAspect#909833, procurementAspect#909834, productGroup#909835, filteredUnitOfMeasureConversions#909836, quantityNumerator#909837]
(1598) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909836.quantityDenominator), true, [quantityDenominator#909838]
(1599) Project
Arguments: [product#909810, plant#909811, orderDateTime#909812, productPlant#909823, systemId#909824, internalUUID#909825, id#909826, displayId#909827, name#909828, baseUnitOfMeasure#909829, unitOfMeasures#909830, unitOfMeasureConversions#909831, productionAspect#909832, salesAspect#909833, procurementAspect#909834, productGroup#909835, filteredUnitOfMeasureConversions#909836, quantityNumerator#909837, quantityDenominator#909838]
(1600) Project
Arguments: [product#909810, plant#909811, orderDateTime#909812, productPlant#909823, systemId#909824, internalUUID#909825, id#909826, displayId#909827, name#909828, baseUnitOfMeasure#909829, unitOfMeasures#909830, unitOfMeasureConversions#909831, productionAspect#909832, salesAspect#909833, procurementAspect#909834, productGroup#909835, filteredUnitOfMeasureConversions#909836, quantityNumerator#909837, quantityDenominator#909838, (cast(quantityNumerator#909837 as double) / cast(quantityDenominator#909838 as double)) AS outboundUnit#909839]
(1601) Project
Arguments: [product#909810, plant#909811, orderDateTime#909812, productPlant#909823, systemId#909824, internalUUID#909825, id#909826, displayId#909827, name#909828, baseUnitOfMeasure#909829, unitOfMeasures#909830, unitOfMeasureConversions#909831, productionAspect#909832, salesAspect#909833, procurementAspect#909834, productGroup#909835, filteredUnitOfMeasureConversions#909836, quantityNumerator#909837, quantityDenominator#909838, CASE WHEN (isnull(outboundUnit#909839) OR (outboundUnit#909839 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909839 END AS outboundUnit#909840]
(1602) Project
Arguments: [product#909810, plant#909811, orderDateTime#909812, productPlant#909823, outboundUnit#909840]
(1603) Project
Arguments: [plant#909811]
(1604) Deduplicate
Arguments: [plant#909811]
(1605) Join
Arguments: Inner, (plantUuid#909807 = plant#909811)
(1606) Project
Arguments: [plantId#909806, plantUuid#909807, storageLocId#909808, storageLocUuid#909809]
(1607) Join
Arguments: Inner, (plant#909780.internalRefUUID <=> plantUuid#909807)
(1608) Generate
Arguments: explode(filter(stockQuantities#909782, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#909809) AND (lambda x#905594.storageLocation.Id = storageLocId#909808)), lambda x#905594, false))), false, [stockQuantity#909841]
(1609) Project
Arguments: [systemId#909777, internalUUID#909778, product#909779, plant#909780, calculationDateTime#909781, stockQuantities#909782, plantId#909806, plantUuid#909807, storageLocId#909808, storageLocUuid#909809, stockQuantity#909841]
(1610) Aggregate
Arguments: [plantUuid#909807, internalUUID#909778, plant#909780, product#909779, systemId#909777], [plantUuid#909807, internalUUID#909778, plant#909780, product#909779, systemId#909777, first(calculationDateTime#909781, false) AS calculationDateTime#909842, collect_list(stockQuantity#909841, 0, 0) AS stockQuantities#909843]
(1611) Project
Arguments: [systemId#909777, internalUUID#909778, product#909779, plant#909780, calculationDateTime#909842, stockQuantities#909843]
(1612) Generate
Arguments: explode(stockQuantities#909843), false, [stockQuantity#909844]
(1613) Project
Arguments: [systemId#909777, internalUUID#909778, product#909779, plant#909780, calculationDateTime#909842, stockQuantities#909843, stockQuantity#909844]
(1614) Project
Arguments: [plant#909780.id AS plant#909845, plant#909780.internalRefUUID AS plantUuid#909846, product#909779.id AS product#909847, product#909779.internalRefUUID AS productUuid#909848, calculationDateTime#909842, stockQuantity#909844.storagelocation.id AS storageLocId#909849, stockQuantity#909844.storagelocation.internalRefUUID AS storageLocUuid#909850, stockQuantity#909844.quantity.measure AS quantity#909851, stockQuantity#909844.specialStockIndicator.code AS specialStockIndicator#909852, stockQuantity#909844.stockType.code AS stockType#909853]
(1615) Filter
Arguments: ((specialStockIndicator#909852 = ) AND (stockType#909853 = 01))
(1616) LogicalRelation
Arguments: parquet, [product#909854, plant#909855, orderDateTime#909856, planningStartDateTime#909857], false
(1617) RepartitionByExpression
Arguments: [product#909854, plant#909855], 37
(1618) Project
Arguments: [product#909854, plant#909855, orderDateTime#909856]
(1619) LogicalRelation
Arguments: parquet, [systemId#909858, internalUUID#909859, plant#909860, product#909861, blockedForReplenishmentStartingFrom#909862, productionAspect#909863, salesPlant#909864, listing#909865, sourceOfSupplyCategory#909866], false
(1620) Repartition
Arguments: 37, true
(1621) Project
Arguments: [systemId#909858, internalUUID#909859, plant#909860, product#909861, blockedForReplenishmentStartingFrom#909862, productionAspect#909863, salesPlant#909864, listing#909865, sourceOfSupplyCategory#909866, struct(systemId, systemId#909858, internalUUID, internalUUID#909859, plant, plant#909860, product, product#909861, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909862, productionAspect, productionAspect#909863, salesPlant, salesPlant#909864, listing, listing#909865, sourceOfSupplyCategory, sourceOfSupplyCategory#909866) AS productPlant#909867]
(1622) Project
Arguments: [productPlant#909867]
(1623) Join
Arguments: LeftOuter, ((product#909854 <=> productPlant#909867.product.internalRefUUID) AND (plant#909855 <=> productPlant#909867.plant.internalRefUUID))
(1624) Project
Arguments: [product#909854, plant#909855, orderDateTime#909856, productPlant#909867]
(1625) LogicalRelation
Arguments: parquet, [systemId#909868, internalUUID#909869, id#909870, displayId#909871, name#909872, baseUnitOfMeasure#909873, unitOfMeasures#909874, unitOfMeasureConversions#909875, productionAspect#909876, salesAspect#909877, procurementAspect#909878, productGroup#909879], false
(1626) Repartition
Arguments: 37, true
(1627) Join
Arguments: LeftOuter, (product#909854 = internalUUID#909869)
(1628) Project
Arguments: [product#909854, plant#909855, orderDateTime#909856, productPlant#909867, systemId#909868, internalUUID#909869, id#909870, displayId#909871, name#909872, baseUnitOfMeasure#909873, unitOfMeasures#909874, unitOfMeasureConversions#909875, productionAspect#909876, salesAspect#909877, procurementAspect#909878, productGroup#909879, filter(unitOfMeasureConversions#909875, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909867.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909867.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909873.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909873.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909880]
(1629) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909880.quantityNumerator), true, [quantityNumerator#909881]
(1630) Project
Arguments: [product#909854, plant#909855, orderDateTime#909856, productPlant#909867, systemId#909868, internalUUID#909869, id#909870, displayId#909871, name#909872, baseUnitOfMeasure#909873, unitOfMeasures#909874, unitOfMeasureConversions#909875, productionAspect#909876, salesAspect#909877, procurementAspect#909878, productGroup#909879, filteredUnitOfMeasureConversions#909880, quantityNumerator#909881]
(1631) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909880.quantityDenominator), true, [quantityDenominator#909882]
(1632) Project
Arguments: [product#909854, plant#909855, orderDateTime#909856, productPlant#909867, systemId#909868, internalUUID#909869, id#909870, displayId#909871, name#909872, baseUnitOfMeasure#909873, unitOfMeasures#909874, unitOfMeasureConversions#909875, productionAspect#909876, salesAspect#909877, procurementAspect#909878, productGroup#909879, filteredUnitOfMeasureConversions#909880, quantityNumerator#909881, quantityDenominator#909882]
(1633) Project
Arguments: [product#909854, plant#909855, orderDateTime#909856, productPlant#909867, systemId#909868, internalUUID#909869, id#909870, displayId#909871, name#909872, baseUnitOfMeasure#909873, unitOfMeasures#909874, unitOfMeasureConversions#909875, productionAspect#909876, salesAspect#909877, procurementAspect#909878, productGroup#909879, filteredUnitOfMeasureConversions#909880, quantityNumerator#909881, quantityDenominator#909882, (cast(quantityNumerator#909881 as double) / cast(quantityDenominator#909882 as double)) AS outboundUnit#909883]
(1634) Project
Arguments: [product#909854, plant#909855, orderDateTime#909856, productPlant#909867, systemId#909868, internalUUID#909869, id#909870, displayId#909871, name#909872, baseUnitOfMeasure#909873, unitOfMeasures#909874, unitOfMeasureConversions#909875, productionAspect#909876, salesAspect#909877, procurementAspect#909878, productGroup#909879, filteredUnitOfMeasureConversions#909880, quantityNumerator#909881, quantityDenominator#909882, CASE WHEN (isnull(outboundUnit#909883) OR (outboundUnit#909883 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909883 END AS outboundUnit#909884]
(1635) Project
Arguments: [product#909854, plant#909855, orderDateTime#909856, productPlant#909867, outboundUnit#909884]
(1636) Join
Arguments: Inner, ((plantUuid#909846 = plant#909855) AND (productUuid#909848 = product#909854))
(1637) Filter
Arguments: (calculationDateTime#909842 <= orderDateTime#909856)
(1638) Project
Arguments: [plantUuid#909846 AS plant#909885, productUuid#909848 AS product#909886, storageLocId#909849, calculationDateTime#909842, quantity#909851]
(1639) Aggregate
Arguments: [plant#909885, product#909886, storageLocId#909849], [plant#909885, product#909886, storageLocId#909849, max(calculationDateTime#909842) AS max_calc_datetime#909887]
(1640) Join
Arguments: Inner, ((((plant#909775 <=> plant#909885) AND (product#909776 <=> product#909886)) AND (storageLocId#909739 <=> storageLocId#909849)) AND (calculationDateTime#909732 <=> max_calc_datetime#909887))
(1641) Project
Arguments: [plant#909775, product#909776, storageLocId#909739, calculationDateTime#909732, quantity#909741]
(1642) Aggregate
Arguments: [product#909776, plant#909775], [product#909776, plant#909775, sum(quantity#909741) AS quantitySum#909888, min(calculationDateTime#909732) AS minCalculationDateTime#909889]
(1643) Project
Arguments: [product#909776, plant#909775, quantitySum#909888, minCalculationDateTime#909889, round(quantitySum#909888, 0) AS roundedQuantitySum#909890]
(1644) Join
Arguments: LeftOuter, ((plant#909637 = plant#909775) AND (product#909636 = product#909776))
(1645) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, outboundUnit#909666, roundedQuantitySum#909890, minCalculationDateTime#909889]
(1646) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, outboundUnit#909666, roundedQuantitySum#909890, minCalculationDateTime#909889, CASE WHEN isnotnull(minCalculationDateTime#909889) THEN minCalculationDateTime#909889 ELSE orderDateTime#909638 END AS stockDatetime#909891]
(1647) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, outboundUnit#909666, roundedQuantitySum#909890, minCalculationDateTime#909889, stockDatetime#909891, CASE WHEN isnotnull(roundedQuantitySum#909890) THEN array(roundedQuantitySum#909890) ELSE array(0.0) END AS stockBatchQuantities#909892]
(1648) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, outboundUnit#909666, roundedQuantitySum#909890, minCalculationDateTime#909889, stockDatetime#909891, stockBatchQuantities#909892, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#909893]
(1649) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, outboundUnit#909666, roundedQuantitySum#909890, stockDatetime#909891, stockBatchQuantities#909892, stockBatchShelfLifeEndDatetimes#909893]
(1650) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, outboundUnit#909666, stockDatetime#909891, stockBatchQuantities#909892, stockBatchShelfLifeEndDatetimes#909893]
(1651) LogicalRelation
Arguments: parquet, [product#909894, plant#909895, orderDateTime#909896, planningStartDateTime#909897], false
(1652) RepartitionByExpression
Arguments: [product#909894, plant#909895], 37
(1653) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896]
(1654) LogicalRelation
Arguments: parquet, [systemId#909898, internalUUID#909899, plant#909900, product#909901, blockedForReplenishmentStartingFrom#909902, productionAspect#909903, salesPlant#909904, listing#909905, sourceOfSupplyCategory#909906], false
(1655) Repartition
Arguments: 37, true
(1656) Project
Arguments: [systemId#909898, internalUUID#909899, plant#909900, product#909901, blockedForReplenishmentStartingFrom#909902, productionAspect#909903, salesPlant#909904, listing#909905, sourceOfSupplyCategory#909906, struct(systemId, systemId#909898, internalUUID, internalUUID#909899, plant, plant#909900, product, product#909901, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909902, productionAspect, productionAspect#909903, salesPlant, salesPlant#909904, listing, listing#909905, sourceOfSupplyCategory, sourceOfSupplyCategory#909906) AS productPlant#909907]
(1657) Project
Arguments: [productPlant#909907]
(1658) Join
Arguments: LeftOuter, ((product#909894 <=> productPlant#909907.product.internalRefUUID) AND (plant#909895 <=> productPlant#909907.plant.internalRefUUID))
(1659) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907]
(1660) LogicalRelation
Arguments: parquet, [systemId#909908, internalUUID#909909, id#909910, displayId#909911, name#909912, baseUnitOfMeasure#909913, unitOfMeasures#909914, unitOfMeasureConversions#909915, productionAspect#909916, salesAspect#909917, procurementAspect#909918, productGroup#909919], false
(1661) Repartition
Arguments: 37, true
(1662) Join
Arguments: LeftOuter, (product#909894 = internalUUID#909909)
(1663) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, systemId#909908, internalUUID#909909, id#909910, displayId#909911, name#909912, baseUnitOfMeasure#909913, unitOfMeasures#909914, unitOfMeasureConversions#909915, productionAspect#909916, salesAspect#909917, procurementAspect#909918, productGroup#909919, filter(unitOfMeasureConversions#909915, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909907.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909907.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909913.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909913.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909920]
(1664) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909920.quantityNumerator), true, [quantityNumerator#909921]
(1665) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, systemId#909908, internalUUID#909909, id#909910, displayId#909911, name#909912, baseUnitOfMeasure#909913, unitOfMeasures#909914, unitOfMeasureConversions#909915, productionAspect#909916, salesAspect#909917, procurementAspect#909918, productGroup#909919, filteredUnitOfMeasureConversions#909920, quantityNumerator#909921]
(1666) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909920.quantityDenominator), true, [quantityDenominator#909922]
(1667) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, systemId#909908, internalUUID#909909, id#909910, displayId#909911, name#909912, baseUnitOfMeasure#909913, unitOfMeasures#909914, unitOfMeasureConversions#909915, productionAspect#909916, salesAspect#909917, procurementAspect#909918, productGroup#909919, filteredUnitOfMeasureConversions#909920, quantityNumerator#909921, quantityDenominator#909922]
(1668) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, systemId#909908, internalUUID#909909, id#909910, displayId#909911, name#909912, baseUnitOfMeasure#909913, unitOfMeasures#909914, unitOfMeasureConversions#909915, productionAspect#909916, salesAspect#909917, procurementAspect#909918, productGroup#909919, filteredUnitOfMeasureConversions#909920, quantityNumerator#909921, quantityDenominator#909922, (cast(quantityNumerator#909921 as double) / cast(quantityDenominator#909922 as double)) AS outboundUnit#909923]
(1669) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, systemId#909908, internalUUID#909909, id#909910, displayId#909911, name#909912, baseUnitOfMeasure#909913, unitOfMeasures#909914, unitOfMeasureConversions#909915, productionAspect#909916, salesAspect#909917, procurementAspect#909918, productGroup#909919, filteredUnitOfMeasureConversions#909920, quantityNumerator#909921, quantityDenominator#909922, CASE WHEN (isnull(outboundUnit#909923) OR (outboundUnit#909923 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909923 END AS outboundUnit#909924]
(1670) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, outboundUnit#909924]
(1671) LogicalRelation
Arguments: parquet, [systemId#909925, internalUUID#909926, product#909927, plant#909928, calculationDateTime#909929, stockQuantities#909930], false
(1672) Repartition
Arguments: 37, true
(1673) LogicalRelation
Arguments: parquet, [marketUnit#909931, description#909932, articleHierarchy#909933, defaultCurrency#909934, responsibilities#909935, replenishmentTypes#909936, distributionCenters#909937, assignedArticleHierarchyNodes#909938, minOrderQtySetting#909939, listingCheck#909940, odsSelection#909941, demandProfiles#909942, constraintProfiles#909943, optimizationProfiles#909944, orderGroupSplitProfiles#909945, supplierMinimumProfiles#909946, multipleRestrictionProfiles#909947, preferredUomSource#909948, handlingOfUnfulfilledDemands#909949, negligibleQuantitiesThreshold#909950, eventtype#909951], false
(1674) Repartition
Arguments: 37, true
(1675) Filter
Arguments: (marketUnit#909931 <=> AUTO_ALL_ProdLoc)
(1676) Project
Arguments: [marketUnit#909931, description#909932, articleHierarchy#909933, defaultCurrency#909934, responsibilities#909935, replenishmentTypes#909936, distributionCenters#909937, assignedArticleHierarchyNodes#909938, minOrderQtySetting#909939, listingCheck#909940, odsSelection#909941, demandProfiles#909942, constraintProfiles#909943, optimizationProfiles#909944, orderGroupSplitProfiles#909945, supplierMinimumProfiles#909946, multipleRestrictionProfiles#909947, preferredUomSource#909948, handlingOfUnfulfilledDemands#909949, negligibleQuantitiesThreshold#909950, eventtype#909951]
(1677) Project
Arguments: [distributionCenters#909937]
(1678) Generate
Arguments: explode(distributionCenters#909937), false, [distributionCenters#909952]
(1679) Project
Arguments: [distributionCenters#909952]
(1680) Generate
Arguments: explode(distributionCenters#909952.storageLocations), false, [storageLocations#909953]
(1681) Project
Arguments: [distributionCenters#909952.id AS plantId#909954, distributionCenters#909952.internalRefUUID AS plantUuid#909955, storageLocations#909953]
(1682) Project
Arguments: [plantId#909954, plantUuid#909955, storageLocations#909953.id AS storageLocId#909956, storageLocations#909953.internalRefUUID AS storageLocUuid#909957]
(1683) LogicalRelation
Arguments: parquet, [product#909958, plant#909959, orderDateTime#909960, planningStartDateTime#909961], false
(1684) RepartitionByExpression
Arguments: [product#909958, plant#909959], 37
(1685) Project
Arguments: [product#909958, plant#909959, orderDateTime#909960]
(1686) LogicalRelation
Arguments: parquet, [systemId#909962, internalUUID#909963, plant#909964, product#909965, blockedForReplenishmentStartingFrom#909966, productionAspect#909967, salesPlant#909968, listing#909969, sourceOfSupplyCategory#909970], false
(1687) Repartition
Arguments: 37, true
(1688) Project
Arguments: [systemId#909962, internalUUID#909963, plant#909964, product#909965, blockedForReplenishmentStartingFrom#909966, productionAspect#909967, salesPlant#909968, listing#909969, sourceOfSupplyCategory#909970, struct(systemId, systemId#909962, internalUUID, internalUUID#909963, plant, plant#909964, product, product#909965, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#909966, productionAspect, productionAspect#909967, salesPlant, salesPlant#909968, listing, listing#909969, sourceOfSupplyCategory, sourceOfSupplyCategory#909970) AS productPlant#909971]
(1689) Project
Arguments: [productPlant#909971]
(1690) Join
Arguments: LeftOuter, ((product#909958 <=> productPlant#909971.product.internalRefUUID) AND (plant#909959 <=> productPlant#909971.plant.internalRefUUID))
(1691) Project
Arguments: [product#909958, plant#909959, orderDateTime#909960, productPlant#909971]
(1692) LogicalRelation
Arguments: parquet, [systemId#909972, internalUUID#909973, id#909974, displayId#909975, name#909976, baseUnitOfMeasure#909977, unitOfMeasures#909978, unitOfMeasureConversions#909979, productionAspect#909980, salesAspect#909981, procurementAspect#909982, productGroup#909983], false
(1693) Repartition
Arguments: 37, true
(1694) Join
Arguments: LeftOuter, (product#909958 = internalUUID#909973)
(1695) Project
Arguments: [product#909958, plant#909959, orderDateTime#909960, productPlant#909971, systemId#909972, internalUUID#909973, id#909974, displayId#909975, name#909976, baseUnitOfMeasure#909977, unitOfMeasures#909978, unitOfMeasureConversions#909979, productionAspect#909980, salesAspect#909981, procurementAspect#909982, productGroup#909983, filter(unitOfMeasureConversions#909979, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#909971.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#909971.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#909977.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#909977.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#909984]
(1696) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909984.quantityNumerator), true, [quantityNumerator#909985]
(1697) Project
Arguments: [product#909958, plant#909959, orderDateTime#909960, productPlant#909971, systemId#909972, internalUUID#909973, id#909974, displayId#909975, name#909976, baseUnitOfMeasure#909977, unitOfMeasures#909978, unitOfMeasureConversions#909979, productionAspect#909980, salesAspect#909981, procurementAspect#909982, productGroup#909983, filteredUnitOfMeasureConversions#909984, quantityNumerator#909985]
(1698) Generate
Arguments: explode(filteredUnitOfMeasureConversions#909984.quantityDenominator), true, [quantityDenominator#909986]
(1699) Project
Arguments: [product#909958, plant#909959, orderDateTime#909960, productPlant#909971, systemId#909972, internalUUID#909973, id#909974, displayId#909975, name#909976, baseUnitOfMeasure#909977, unitOfMeasures#909978, unitOfMeasureConversions#909979, productionAspect#909980, salesAspect#909981, procurementAspect#909982, productGroup#909983, filteredUnitOfMeasureConversions#909984, quantityNumerator#909985, quantityDenominator#909986]
(1700) Project
Arguments: [product#909958, plant#909959, orderDateTime#909960, productPlant#909971, systemId#909972, internalUUID#909973, id#909974, displayId#909975, name#909976, baseUnitOfMeasure#909977, unitOfMeasures#909978, unitOfMeasureConversions#909979, productionAspect#909980, salesAspect#909981, procurementAspect#909982, productGroup#909983, filteredUnitOfMeasureConversions#909984, quantityNumerator#909985, quantityDenominator#909986, (cast(quantityNumerator#909985 as double) / cast(quantityDenominator#909986 as double)) AS outboundUnit#909987]
(1701) Project
Arguments: [product#909958, plant#909959, orderDateTime#909960, productPlant#909971, systemId#909972, internalUUID#909973, id#909974, displayId#909975, name#909976, baseUnitOfMeasure#909977, unitOfMeasures#909978, unitOfMeasureConversions#909979, productionAspect#909980, salesAspect#909981, procurementAspect#909982, productGroup#909983, filteredUnitOfMeasureConversions#909984, quantityNumerator#909985, quantityDenominator#909986, CASE WHEN (isnull(outboundUnit#909987) OR (outboundUnit#909987 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#909987 END AS outboundUnit#909988]
(1702) Project
Arguments: [product#909958, plant#909959, orderDateTime#909960, productPlant#909971, outboundUnit#909988]
(1703) Project
Arguments: [plant#909959]
(1704) Deduplicate
Arguments: [plant#909959]
(1705) Join
Arguments: Inner, (plantUuid#909955 = plant#909959)
(1706) Project
Arguments: [plantId#909954, plantUuid#909955, storageLocId#909956, storageLocUuid#909957]
(1707) Join
Arguments: Inner, (plant#909928.internalRefUUID <=> plantUuid#909955)
(1708) Generate
Arguments: explode(filter(stockQuantities#909930, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#909957) AND (lambda x#905594.storageLocation.Id = storageLocId#909956)), lambda x#905594, false))), false, [stockQuantity#909989]
(1709) Project
Arguments: [systemId#909925, internalUUID#909926, product#909927, plant#909928, calculationDateTime#909929, stockQuantities#909930, plantId#909954, plantUuid#909955, storageLocId#909956, storageLocUuid#909957, stockQuantity#909989]
(1710) Aggregate
Arguments: [plantUuid#909955, internalUUID#909926, plant#909928, product#909927, systemId#909925], [plantUuid#909955, internalUUID#909926, plant#909928, product#909927, systemId#909925, first(calculationDateTime#909929, false) AS calculationDateTime#909990, collect_list(stockQuantity#909989, 0, 0) AS stockQuantities#909991]
(1711) Project
Arguments: [systemId#909925, internalUUID#909926, product#909927, plant#909928, calculationDateTime#909990, stockQuantities#909991]
(1712) Generate
Arguments: explode(stockQuantities#909991), false, [stockQuantity#909992]
(1713) Project
Arguments: [systemId#909925, internalUUID#909926, product#909927, plant#909928, calculationDateTime#909990, stockQuantities#909991, stockQuantity#909992]
(1714) Project
Arguments: [plant#909928.id AS plant#909993, plant#909928.internalRefUUID AS plantUuid#909994, product#909927.id AS product#909995, product#909927.internalRefUUID AS productUuid#909996, calculationDateTime#909990, stockQuantity#909992.storagelocation.id AS storageLocId#909997, stockQuantity#909992.storagelocation.internalRefUUID AS storageLocUuid#909998, stockQuantity#909992.quantity.measure AS quantity#909999, stockQuantity#909992.specialStockIndicator.code AS specialStockIndicator#910000, stockQuantity#909992.stockType.code AS stockType#910001]
(1715) Filter
Arguments: ((specialStockIndicator#910000 = ) AND (stockType#910001 = 01))
(1716) LogicalRelation
Arguments: parquet, [product#910002, plant#910003, orderDateTime#910004, planningStartDateTime#910005], false
(1717) RepartitionByExpression
Arguments: [product#910002, plant#910003], 37
(1718) Project
Arguments: [product#910002, plant#910003, orderDateTime#910004]
(1719) LogicalRelation
Arguments: parquet, [systemId#910006, internalUUID#910007, plant#910008, product#910009, blockedForReplenishmentStartingFrom#910010, productionAspect#910011, salesPlant#910012, listing#910013, sourceOfSupplyCategory#910014], false
(1720) Repartition
Arguments: 37, true
(1721) Project
Arguments: [systemId#910006, internalUUID#910007, plant#910008, product#910009, blockedForReplenishmentStartingFrom#910010, productionAspect#910011, salesPlant#910012, listing#910013, sourceOfSupplyCategory#910014, struct(systemId, systemId#910006, internalUUID, internalUUID#910007, plant, plant#910008, product, product#910009, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910010, productionAspect, productionAspect#910011, salesPlant, salesPlant#910012, listing, listing#910013, sourceOfSupplyCategory, sourceOfSupplyCategory#910014) AS productPlant#910015]
(1722) Project
Arguments: [productPlant#910015]
(1723) Join
Arguments: LeftOuter, ((product#910002 <=> productPlant#910015.product.internalRefUUID) AND (plant#910003 <=> productPlant#910015.plant.internalRefUUID))
(1724) Project
Arguments: [product#910002, plant#910003, orderDateTime#910004, productPlant#910015]
(1725) LogicalRelation
Arguments: parquet, [systemId#910016, internalUUID#910017, id#910018, displayId#910019, name#910020, baseUnitOfMeasure#910021, unitOfMeasures#910022, unitOfMeasureConversions#910023, productionAspect#910024, salesAspect#910025, procurementAspect#910026, productGroup#910027], false
(1726) Repartition
Arguments: 37, true
(1727) Join
Arguments: LeftOuter, (product#910002 = internalUUID#910017)
(1728) Project
Arguments: [product#910002, plant#910003, orderDateTime#910004, productPlant#910015, systemId#910016, internalUUID#910017, id#910018, displayId#910019, name#910020, baseUnitOfMeasure#910021, unitOfMeasures#910022, unitOfMeasureConversions#910023, productionAspect#910024, salesAspect#910025, procurementAspect#910026, productGroup#910027, filter(unitOfMeasureConversions#910023, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910015.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910015.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910021.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910021.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910028]
(1729) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910028.quantityNumerator), true, [quantityNumerator#910029]
(1730) Project
Arguments: [product#910002, plant#910003, orderDateTime#910004, productPlant#910015, systemId#910016, internalUUID#910017, id#910018, displayId#910019, name#910020, baseUnitOfMeasure#910021, unitOfMeasures#910022, unitOfMeasureConversions#910023, productionAspect#910024, salesAspect#910025, procurementAspect#910026, productGroup#910027, filteredUnitOfMeasureConversions#910028, quantityNumerator#910029]
(1731) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910028.quantityDenominator), true, [quantityDenominator#910030]
(1732) Project
Arguments: [product#910002, plant#910003, orderDateTime#910004, productPlant#910015, systemId#910016, internalUUID#910017, id#910018, displayId#910019, name#910020, baseUnitOfMeasure#910021, unitOfMeasures#910022, unitOfMeasureConversions#910023, productionAspect#910024, salesAspect#910025, procurementAspect#910026, productGroup#910027, filteredUnitOfMeasureConversions#910028, quantityNumerator#910029, quantityDenominator#910030]
(1733) Project
Arguments: [product#910002, plant#910003, orderDateTime#910004, productPlant#910015, systemId#910016, internalUUID#910017, id#910018, displayId#910019, name#910020, baseUnitOfMeasure#910021, unitOfMeasures#910022, unitOfMeasureConversions#910023, productionAspect#910024, salesAspect#910025, procurementAspect#910026, productGroup#910027, filteredUnitOfMeasureConversions#910028, quantityNumerator#910029, quantityDenominator#910030, (cast(quantityNumerator#910029 as double) / cast(quantityDenominator#910030 as double)) AS outboundUnit#910031]
(1734) Project
Arguments: [product#910002, plant#910003, orderDateTime#910004, productPlant#910015, systemId#910016, internalUUID#910017, id#910018, displayId#910019, name#910020, baseUnitOfMeasure#910021, unitOfMeasures#910022, unitOfMeasureConversions#910023, productionAspect#910024, salesAspect#910025, procurementAspect#910026, productGroup#910027, filteredUnitOfMeasureConversions#910028, quantityNumerator#910029, quantityDenominator#910030, CASE WHEN (isnull(outboundUnit#910031) OR (outboundUnit#910031 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910031 END AS outboundUnit#910032]
(1735) Project
Arguments: [product#910002, plant#910003, orderDateTime#910004, productPlant#910015, outboundUnit#910032]
(1736) Join
Arguments: Inner, ((plantUuid#909994 = plant#910003) AND (productUuid#909996 = product#910002))
(1737) Filter
Arguments: (calculationDateTime#909990 <= orderDateTime#910004)
(1738) Project
Arguments: [plantUuid#909994 AS plant#910033, productUuid#909996 AS product#910034, storageLocId#909997, calculationDateTime#909990, quantity#909999]
(1739) LogicalRelation
Arguments: parquet, [systemId#910035, internalUUID#910036, product#910037, plant#910038, calculationDateTime#910039, stockQuantities#910040], false
(1740) Repartition
Arguments: 37, true
(1741) LogicalRelation
Arguments: parquet, [marketUnit#910041, description#910042, articleHierarchy#910043, defaultCurrency#910044, responsibilities#910045, replenishmentTypes#910046, distributionCenters#910047, assignedArticleHierarchyNodes#910048, minOrderQtySetting#910049, listingCheck#910050, odsSelection#910051, demandProfiles#910052, constraintProfiles#910053, optimizationProfiles#910054, orderGroupSplitProfiles#910055, supplierMinimumProfiles#910056, multipleRestrictionProfiles#910057, preferredUomSource#910058, handlingOfUnfulfilledDemands#910059, negligibleQuantitiesThreshold#910060, eventtype#910061], false
(1742) Repartition
Arguments: 37, true
(1743) Filter
Arguments: (marketUnit#910041 <=> AUTO_ALL_ProdLoc)
(1744) Project
Arguments: [marketUnit#910041, description#910042, articleHierarchy#910043, defaultCurrency#910044, responsibilities#910045, replenishmentTypes#910046, distributionCenters#910047, assignedArticleHierarchyNodes#910048, minOrderQtySetting#910049, listingCheck#910050, odsSelection#910051, demandProfiles#910052, constraintProfiles#910053, optimizationProfiles#910054, orderGroupSplitProfiles#910055, supplierMinimumProfiles#910056, multipleRestrictionProfiles#910057, preferredUomSource#910058, handlingOfUnfulfilledDemands#910059, negligibleQuantitiesThreshold#910060, eventtype#910061]
(1745) Project
Arguments: [distributionCenters#910047]
(1746) Generate
Arguments: explode(distributionCenters#910047), false, [distributionCenters#910062]
(1747) Project
Arguments: [distributionCenters#910062]
(1748) Generate
Arguments: explode(distributionCenters#910062.storageLocations), false, [storageLocations#910063]
(1749) Project
Arguments: [distributionCenters#910062.id AS plantId#910064, distributionCenters#910062.internalRefUUID AS plantUuid#910065, storageLocations#910063]
(1750) Project
Arguments: [plantId#910064, plantUuid#910065, storageLocations#910063.id AS storageLocId#910066, storageLocations#910063.internalRefUUID AS storageLocUuid#910067]
(1751) LogicalRelation
Arguments: parquet, [product#910068, plant#910069, orderDateTime#910070, planningStartDateTime#910071], false
(1752) RepartitionByExpression
Arguments: [product#910068, plant#910069], 37
(1753) Project
Arguments: [product#910068, plant#910069, orderDateTime#910070]
(1754) LogicalRelation
Arguments: parquet, [systemId#910072, internalUUID#910073, plant#910074, product#910075, blockedForReplenishmentStartingFrom#910076, productionAspect#910077, salesPlant#910078, listing#910079, sourceOfSupplyCategory#910080], false
(1755) Repartition
Arguments: 37, true
(1756) Project
Arguments: [systemId#910072, internalUUID#910073, plant#910074, product#910075, blockedForReplenishmentStartingFrom#910076, productionAspect#910077, salesPlant#910078, listing#910079, sourceOfSupplyCategory#910080, struct(systemId, systemId#910072, internalUUID, internalUUID#910073, plant, plant#910074, product, product#910075, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910076, productionAspect, productionAspect#910077, salesPlant, salesPlant#910078, listing, listing#910079, sourceOfSupplyCategory, sourceOfSupplyCategory#910080) AS productPlant#910081]
(1757) Project
Arguments: [productPlant#910081]
(1758) Join
Arguments: LeftOuter, ((product#910068 <=> productPlant#910081.product.internalRefUUID) AND (plant#910069 <=> productPlant#910081.plant.internalRefUUID))
(1759) Project
Arguments: [product#910068, plant#910069, orderDateTime#910070, productPlant#910081]
(1760) LogicalRelation
Arguments: parquet, [systemId#910082, internalUUID#910083, id#910084, displayId#910085, name#910086, baseUnitOfMeasure#910087, unitOfMeasures#910088, unitOfMeasureConversions#910089, productionAspect#910090, salesAspect#910091, procurementAspect#910092, productGroup#910093], false
(1761) Repartition
Arguments: 37, true
(1762) Join
Arguments: LeftOuter, (product#910068 = internalUUID#910083)
(1763) Project
Arguments: [product#910068, plant#910069, orderDateTime#910070, productPlant#910081, systemId#910082, internalUUID#910083, id#910084, displayId#910085, name#910086, baseUnitOfMeasure#910087, unitOfMeasures#910088, unitOfMeasureConversions#910089, productionAspect#910090, salesAspect#910091, procurementAspect#910092, productGroup#910093, filter(unitOfMeasureConversions#910089, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910081.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910081.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910087.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910087.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910094]
(1764) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910094.quantityNumerator), true, [quantityNumerator#910095]
(1765) Project
Arguments: [product#910068, plant#910069, orderDateTime#910070, productPlant#910081, systemId#910082, internalUUID#910083, id#910084, displayId#910085, name#910086, baseUnitOfMeasure#910087, unitOfMeasures#910088, unitOfMeasureConversions#910089, productionAspect#910090, salesAspect#910091, procurementAspect#910092, productGroup#910093, filteredUnitOfMeasureConversions#910094, quantityNumerator#910095]
(1766) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910094.quantityDenominator), true, [quantityDenominator#910096]
(1767) Project
Arguments: [product#910068, plant#910069, orderDateTime#910070, productPlant#910081, systemId#910082, internalUUID#910083, id#910084, displayId#910085, name#910086, baseUnitOfMeasure#910087, unitOfMeasures#910088, unitOfMeasureConversions#910089, productionAspect#910090, salesAspect#910091, procurementAspect#910092, productGroup#910093, filteredUnitOfMeasureConversions#910094, quantityNumerator#910095, quantityDenominator#910096]
(1768) Project
Arguments: [product#910068, plant#910069, orderDateTime#910070, productPlant#910081, systemId#910082, internalUUID#910083, id#910084, displayId#910085, name#910086, baseUnitOfMeasure#910087, unitOfMeasures#910088, unitOfMeasureConversions#910089, productionAspect#910090, salesAspect#910091, procurementAspect#910092, productGroup#910093, filteredUnitOfMeasureConversions#910094, quantityNumerator#910095, quantityDenominator#910096, (cast(quantityNumerator#910095 as double) / cast(quantityDenominator#910096 as double)) AS outboundUnit#910097]
(1769) Project
Arguments: [product#910068, plant#910069, orderDateTime#910070, productPlant#910081, systemId#910082, internalUUID#910083, id#910084, displayId#910085, name#910086, baseUnitOfMeasure#910087, unitOfMeasures#910088, unitOfMeasureConversions#910089, productionAspect#910090, salesAspect#910091, procurementAspect#910092, productGroup#910093, filteredUnitOfMeasureConversions#910094, quantityNumerator#910095, quantityDenominator#910096, CASE WHEN (isnull(outboundUnit#910097) OR (outboundUnit#910097 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910097 END AS outboundUnit#910098]
(1770) Project
Arguments: [product#910068, plant#910069, orderDateTime#910070, productPlant#910081, outboundUnit#910098]
(1771) Project
Arguments: [plant#910069]
(1772) Deduplicate
Arguments: [plant#910069]
(1773) Join
Arguments: Inner, (plantUuid#910065 = plant#910069)
(1774) Project
Arguments: [plantId#910064, plantUuid#910065, storageLocId#910066, storageLocUuid#910067]
(1775) Join
Arguments: Inner, (plant#910038.internalRefUUID <=> plantUuid#910065)
(1776) Generate
Arguments: explode(filter(stockQuantities#910040, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#910067) AND (lambda x#905594.storageLocation.Id = storageLocId#910066)), lambda x#905594, false))), false, [stockQuantity#910099]
(1777) Project
Arguments: [systemId#910035, internalUUID#910036, product#910037, plant#910038, calculationDateTime#910039, stockQuantities#910040, plantId#910064, plantUuid#910065, storageLocId#910066, storageLocUuid#910067, stockQuantity#910099]
(1778) Aggregate
Arguments: [plantUuid#910065, internalUUID#910036, plant#910038, product#910037, systemId#910035], [plantUuid#910065, internalUUID#910036, plant#910038, product#910037, systemId#910035, first(calculationDateTime#910039, false) AS calculationDateTime#910100, collect_list(stockQuantity#910099, 0, 0) AS stockQuantities#910101]
(1779) Project
Arguments: [systemId#910035, internalUUID#910036, product#910037, plant#910038, calculationDateTime#910100, stockQuantities#910101]
(1780) Generate
Arguments: explode(stockQuantities#910101), false, [stockQuantity#910102]
(1781) Project
Arguments: [systemId#910035, internalUUID#910036, product#910037, plant#910038, calculationDateTime#910100, stockQuantities#910101, stockQuantity#910102]
(1782) Project
Arguments: [plant#910038.id AS plant#910103, plant#910038.internalRefUUID AS plantUuid#910104, product#910037.id AS product#910105, product#910037.internalRefUUID AS productUuid#910106, calculationDateTime#910100, stockQuantity#910102.storagelocation.id AS storageLocId#910107, stockQuantity#910102.storagelocation.internalRefUUID AS storageLocUuid#910108, stockQuantity#910102.quantity.measure AS quantity#910109, stockQuantity#910102.specialStockIndicator.code AS specialStockIndicator#910110, stockQuantity#910102.stockType.code AS stockType#910111]
(1783) Filter
Arguments: ((specialStockIndicator#910110 = ) AND (stockType#910111 = 01))
(1784) LogicalRelation
Arguments: parquet, [product#910112, plant#910113, orderDateTime#910114, planningStartDateTime#910115], false
(1785) RepartitionByExpression
Arguments: [product#910112, plant#910113], 37
(1786) Project
Arguments: [product#910112, plant#910113, orderDateTime#910114]
(1787) LogicalRelation
Arguments: parquet, [systemId#910116, internalUUID#910117, plant#910118, product#910119, blockedForReplenishmentStartingFrom#910120, productionAspect#910121, salesPlant#910122, listing#910123, sourceOfSupplyCategory#910124], false
(1788) Repartition
Arguments: 37, true
(1789) Project
Arguments: [systemId#910116, internalUUID#910117, plant#910118, product#910119, blockedForReplenishmentStartingFrom#910120, productionAspect#910121, salesPlant#910122, listing#910123, sourceOfSupplyCategory#910124, struct(systemId, systemId#910116, internalUUID, internalUUID#910117, plant, plant#910118, product, product#910119, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910120, productionAspect, productionAspect#910121, salesPlant, salesPlant#910122, listing, listing#910123, sourceOfSupplyCategory, sourceOfSupplyCategory#910124) AS productPlant#910125]
(1790) Project
Arguments: [productPlant#910125]
(1791) Join
Arguments: LeftOuter, ((product#910112 <=> productPlant#910125.product.internalRefUUID) AND (plant#910113 <=> productPlant#910125.plant.internalRefUUID))
(1792) Project
Arguments: [product#910112, plant#910113, orderDateTime#910114, productPlant#910125]
(1793) LogicalRelation
Arguments: parquet, [systemId#910126, internalUUID#910127, id#910128, displayId#910129, name#910130, baseUnitOfMeasure#910131, unitOfMeasures#910132, unitOfMeasureConversions#910133, productionAspect#910134, salesAspect#910135, procurementAspect#910136, productGroup#910137], false
(1794) Repartition
Arguments: 37, true
(1795) Join
Arguments: LeftOuter, (product#910112 = internalUUID#910127)
(1796) Project
Arguments: [product#910112, plant#910113, orderDateTime#910114, productPlant#910125, systemId#910126, internalUUID#910127, id#910128, displayId#910129, name#910130, baseUnitOfMeasure#910131, unitOfMeasures#910132, unitOfMeasureConversions#910133, productionAspect#910134, salesAspect#910135, procurementAspect#910136, productGroup#910137, filter(unitOfMeasureConversions#910133, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910125.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910125.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910131.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910131.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910138]
(1797) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910138.quantityNumerator), true, [quantityNumerator#910139]
(1798) Project
Arguments: [product#910112, plant#910113, orderDateTime#910114, productPlant#910125, systemId#910126, internalUUID#910127, id#910128, displayId#910129, name#910130, baseUnitOfMeasure#910131, unitOfMeasures#910132, unitOfMeasureConversions#910133, productionAspect#910134, salesAspect#910135, procurementAspect#910136, productGroup#910137, filteredUnitOfMeasureConversions#910138, quantityNumerator#910139]
(1799) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910138.quantityDenominator), true, [quantityDenominator#910140]
(1800) Project
Arguments: [product#910112, plant#910113, orderDateTime#910114, productPlant#910125, systemId#910126, internalUUID#910127, id#910128, displayId#910129, name#910130, baseUnitOfMeasure#910131, unitOfMeasures#910132, unitOfMeasureConversions#910133, productionAspect#910134, salesAspect#910135, procurementAspect#910136, productGroup#910137, filteredUnitOfMeasureConversions#910138, quantityNumerator#910139, quantityDenominator#910140]
(1801) Project
Arguments: [product#910112, plant#910113, orderDateTime#910114, productPlant#910125, systemId#910126, internalUUID#910127, id#910128, displayId#910129, name#910130, baseUnitOfMeasure#910131, unitOfMeasures#910132, unitOfMeasureConversions#910133, productionAspect#910134, salesAspect#910135, procurementAspect#910136, productGroup#910137, filteredUnitOfMeasureConversions#910138, quantityNumerator#910139, quantityDenominator#910140, (cast(quantityNumerator#910139 as double) / cast(quantityDenominator#910140 as double)) AS outboundUnit#910141]
(1802) Project
Arguments: [product#910112, plant#910113, orderDateTime#910114, productPlant#910125, systemId#910126, internalUUID#910127, id#910128, displayId#910129, name#910130, baseUnitOfMeasure#910131, unitOfMeasures#910132, unitOfMeasureConversions#910133, productionAspect#910134, salesAspect#910135, procurementAspect#910136, productGroup#910137, filteredUnitOfMeasureConversions#910138, quantityNumerator#910139, quantityDenominator#910140, CASE WHEN (isnull(outboundUnit#910141) OR (outboundUnit#910141 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910141 END AS outboundUnit#910142]
(1803) Project
Arguments: [product#910112, plant#910113, orderDateTime#910114, productPlant#910125, outboundUnit#910142]
(1804) Join
Arguments: Inner, ((plantUuid#910104 = plant#910113) AND (productUuid#910106 = product#910112))
(1805) Filter
Arguments: (calculationDateTime#910100 <= orderDateTime#910114)
(1806) Project
Arguments: [plantUuid#910104 AS plant#910143, productUuid#910106 AS product#910144, storageLocId#910107, calculationDateTime#910100, quantity#910109]
(1807) Aggregate
Arguments: [plant#910143, product#910144, storageLocId#910107], [plant#910143, product#910144, storageLocId#910107, max(calculationDateTime#910100) AS max_calc_datetime#910145]
(1808) Join
Arguments: Inner, ((((plant#910033 <=> plant#910143) AND (product#910034 <=> product#910144)) AND (storageLocId#909997 <=> storageLocId#910107)) AND (calculationDateTime#909990 <=> max_calc_datetime#910145))
(1809) Project
Arguments: [plant#910033, product#910034, storageLocId#909997, calculationDateTime#909990, quantity#909999]
(1810) Aggregate
Arguments: [product#910034, plant#910033], [product#910034, plant#910033, sum(quantity#909999) AS quantitySum#910146, min(calculationDateTime#909990) AS minCalculationDateTime#910147]
(1811) Project
Arguments: [product#910034, plant#910033, quantitySum#910146, minCalculationDateTime#910147, round(quantitySum#910146, 0) AS roundedQuantitySum#910148]
(1812) Join
Arguments: LeftOuter, ((plant#909895 = plant#910033) AND (product#909894 = product#910034))
(1813) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, outboundUnit#909924, roundedQuantitySum#910148, minCalculationDateTime#910147]
(1814) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, outboundUnit#909924, roundedQuantitySum#910148, minCalculationDateTime#910147, CASE WHEN isnotnull(minCalculationDateTime#910147) THEN minCalculationDateTime#910147 ELSE orderDateTime#909896 END AS stockDatetime#910149]
(1815) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, outboundUnit#909924, roundedQuantitySum#910148, minCalculationDateTime#910147, stockDatetime#910149, CASE WHEN isnotnull(roundedQuantitySum#910148) THEN array(roundedQuantitySum#910148) ELSE array(0.0) END AS stockBatchQuantities#910150]
(1816) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, outboundUnit#909924, roundedQuantitySum#910148, minCalculationDateTime#910147, stockDatetime#910149, stockBatchQuantities#910150, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#910151]
(1817) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, outboundUnit#909924, roundedQuantitySum#910148, stockDatetime#910149, stockBatchQuantities#910150, stockBatchShelfLifeEndDatetimes#910151]
(1818) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, outboundUnit#909924, stockDatetime#910149, stockBatchQuantities#910150, stockBatchShelfLifeEndDatetimes#910151]
(1819) LogicalRelation
Arguments: parquet, [product#910152, plant#910153, demandChannel#910154, demandStream#910155, considerVariance#910156, demandTimeBuckets#910157, demandPointInTimeStart#910158, demandPointInTimeEnd#910159, demandPointInTime#910160], false
(1820) Join
Arguments: LeftOuter, ((plant#910153 <=> plant#909895) AND (product#910152 <=> product#909894))
(1821) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, outboundUnit#909924, stockDatetime#910149, stockBatchQuantities#910150, stockBatchShelfLifeEndDatetimes#910151, product#910152, plant#910153, demandChannel#910154, demandStream#910155, considerVariance#910156, demandTimeBuckets#910157, demandPointInTimeStart#910158, demandPointInTimeEnd#910159, demandPointInTime#910160, CASE WHEN isnotnull(product#910152) THEN struct(demandChannel, demandChannel#910154, demandStream, demandStream#910155, considerVariance, considerVariance#910156, demandTimeBuckets, demandTimeBuckets#910157, demandPointInTimeStart, demandPointInTimeStart#910158, demandPointInTimeEnd, demandPointInTimeEnd#910159, demandPointInTime, demandPointInTime#910160) 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#910161]
(1822) Aggregate
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, outboundUnit#909924, stockDatetime#910149, stockBatchQuantities#910150, stockBatchShelfLifeEndDatetimes#910151], [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, outboundUnit#909924, stockDatetime#910149, stockBatchQuantities#910150, stockBatchShelfLifeEndDatetimes#910151, collect_list(rawDemands#910161, 0, 0) AS rawDemands#910162]
(1823) SubqueryAlias
Arguments: wl
(1824) LogicalRelation
Arguments: parquet, [systemId#910163, internalUUID#910164, id#910165, displayId#910166, name#910167, category#910168, companyCode#910169, address#910170, mainDistributionChain#910171, mainPurchasingOrganization#910172, validPurchasingOrganizations#910173, productGroup#910174], false
(1825) Repartition
Arguments: 37, true
(1826) Project
Arguments: [systemId#910163, internalUUID#910164, id#910165, displayId#910166, name#910167, category#910168, companyCode#910169, address#910170, mainDistributionChain#910171, mainPurchasingOrganization#910172, validPurchasingOrganizations#910173, productGroup#910174, address#910170.timezone.code AS timezonecode#910175]
(1827) Join
Arguments: LeftOuter, (plant#909895 <=> internalUUID#910164)
(1828) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, outboundUnit#909924, stockDatetime#910149, stockBatchQuantities#910150, stockBatchShelfLifeEndDatetimes#910151, rawDemands#910162, systemId#910163, internalUUID#910164, id#910165, displayId#910166, name#910167, category#910168, companyCode#910169, address#910170, mainDistributionChain#910171, mainPurchasingOrganization#910172, validPurchasingOrganizations#910173, productGroup#910174, CASE WHEN isnotnull(timezonecode#910175) THEN timezonecode#910175 ELSE UTC END AS timezonecode#910176]
(1829) Project
Arguments: [product#909894, plant#909895, orderDateTime#909896, productPlant#909907, outboundUnit#909924, stockDatetime#910149, stockBatchQuantities#910150, stockBatchShelfLifeEndDatetimes#910151, rawDemands#910162, timezonecode#910176]
(1830) DeserializeToObject
Arguments: createexternalrow(invoke(product#909894.toString()), invoke(plant#909895.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#909896)), if (isnull(productPlant#909907)) null else createexternalrow(invoke(productPlant#909907.systemId.toString()), invoke(productPlant#909907.internalUUID.toString()), if (isnull(productPlant#909907.plant)) null else createexternalrow(invoke(productPlant#909907.plant.internalRefUUID.toString()), invoke(productPlant#909907.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#909907.product)) null else createexternalrow(invoke(productPlant#909907.product.internalRefUUID.toString()), invoke(productPlant#909907.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#909907.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#909907.productionAspect)) null else createexternalrow(if (isnull(productPlant#909907.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#909907.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#909907.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#909907.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#909907.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#909907.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#909907.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#909907.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#909907.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#909907.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#909907.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#909907.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#909907.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#909907.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#909907.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#909907.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#909907.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#909907.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#909907.salesPlant)) null else createexternalrow(if (isnull(productPlant#909907.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#909907.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#909907.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, 71540), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#909907.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#909907.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#909907.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#909907.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#909924)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#910149)), mapobjects(lambdavariable(MapObject, DoubleType, true, 71541), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 71541) as double))), stockBatchQuantities#910150, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 71542), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 71542) as timestamp)))), stockBatchShelfLifeEndDatetimes#910151, 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, 71543), 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, 71543))) 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, 71543).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, 71543).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, 71543).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).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, 71543).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, 71543).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, 71543).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).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, 71543).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#910162, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#910176.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#906942: org.apache.spark.sql.Row
(1831) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@4013ddf1, 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#906947: org.apache.spark.sql.Row
(1832) 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#910177, 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#910178, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71531), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71531), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71532), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71532), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71533), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71533), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71534), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71534), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71535), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71535), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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#910179, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71537), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71537), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71538), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71538), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71539), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71539), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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#910180]
(1833) Join
Arguments: LeftOuter, ((plant#910178 <=> plant#909637) AND (product#910177 <=> product#909636))
(1834) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, outboundUnit#909666, stockDatetime#909891, stockBatchQuantities#909892, stockBatchShelfLifeEndDatetimes#909893, plant#910178, dayBucketDemands#910179, pointInTimeDemands#910180]
(1835) Project
Arguments: [product#909636, plant#909637, orderDateTime#909638, productPlant#909649, outboundUnit#909666, stockDatetime#909891, stockBatchQuantities#909892, stockBatchShelfLifeEndDatetimes#909893, dayBucketDemands#910179, pointInTimeDemands#910180]
(1836) LogicalRelation
Arguments: parquet, [marketUnit#910181, description#910182, articleHierarchy#910183, defaultCurrency#910184, responsibilities#910185, replenishmentTypes#910186, distributionCenters#910187, assignedArticleHierarchyNodes#910188, minOrderQtySetting#910189, listingCheck#910190, odsSelection#910191, demandProfiles#910192, constraintProfiles#910193, optimizationProfiles#910194, orderGroupSplitProfiles#910195, supplierMinimumProfiles#910196, multipleRestrictionProfiles#910197, preferredUomSource#910198, handlingOfUnfulfilledDemands#910199, negligibleQuantitiesThreshold#910200, eventtype#910201], false
(1837) Repartition
Arguments: 37, true
(1838) Filter
Arguments: (marketUnit#910181 <=> AUTO_ALL_ProdLoc)
(1839) Project
Arguments: [marketUnit#910181, description#910182, articleHierarchy#910183, defaultCurrency#910184, responsibilities#910185, replenishmentTypes#910186, distributionCenters#910187, assignedArticleHierarchyNodes#910188, minOrderQtySetting#910189, listingCheck#910190, odsSelection#910191, demandProfiles#910192, constraintProfiles#910193, optimizationProfiles#910194, orderGroupSplitProfiles#910195, supplierMinimumProfiles#910196, multipleRestrictionProfiles#910197, preferredUomSource#910198, handlingOfUnfulfilledDemands#910199, negligibleQuantitiesThreshold#910200, eventtype#910201]
(1840) Project
Arguments: [distributionCenters#910187]
(1841) Generate
Arguments: explode(distributionCenters#910187), false, [distributionCenters#910202]
(1842) Project
Arguments: [distributionCenters#910202]
(1843) Generate
Arguments: explode(distributionCenters#910202.storageLocations), false, [storageLocations#910203]
(1844) Project
Arguments: [distributionCenters#910202.id AS plantId#910204, distributionCenters#910202.internalRefUUID AS plantUuid#910205, storageLocations#910203]
(1845) Project
Arguments: [plantId#910204, plantUuid#910205, storageLocations#910203.id AS storageLocId#910206, storageLocations#910203.internalRefUUID AS storageLocUuid#910207]
(1846) LogicalRelation
Arguments: parquet, [product#910208, plant#910209, orderDateTime#910210, planningStartDateTime#910211], false
(1847) RepartitionByExpression
Arguments: [product#910208, plant#910209], 37
(1848) Project
Arguments: [product#910208, plant#910209, orderDateTime#910210]
(1849) LogicalRelation
Arguments: parquet, [systemId#910212, internalUUID#910213, plant#910214, product#910215, blockedForReplenishmentStartingFrom#910216, productionAspect#910217, salesPlant#910218, listing#910219, sourceOfSupplyCategory#910220], false
(1850) Repartition
Arguments: 37, true
(1851) Project
Arguments: [systemId#910212, internalUUID#910213, plant#910214, product#910215, blockedForReplenishmentStartingFrom#910216, productionAspect#910217, salesPlant#910218, listing#910219, sourceOfSupplyCategory#910220, struct(systemId, systemId#910212, internalUUID, internalUUID#910213, plant, plant#910214, product, product#910215, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910216, productionAspect, productionAspect#910217, salesPlant, salesPlant#910218, listing, listing#910219, sourceOfSupplyCategory, sourceOfSupplyCategory#910220) AS productPlant#910221]
(1852) Project
Arguments: [productPlant#910221]
(1853) Join
Arguments: LeftOuter, ((product#910208 <=> productPlant#910221.product.internalRefUUID) AND (plant#910209 <=> productPlant#910221.plant.internalRefUUID))
(1854) Project
Arguments: [product#910208, plant#910209, orderDateTime#910210, productPlant#910221]
(1855) LogicalRelation
Arguments: parquet, [systemId#910222, internalUUID#910223, id#910224, displayId#910225, name#910226, baseUnitOfMeasure#910227, unitOfMeasures#910228, unitOfMeasureConversions#910229, productionAspect#910230, salesAspect#910231, procurementAspect#910232, productGroup#910233], false
(1856) Repartition
Arguments: 37, true
(1857) Join
Arguments: LeftOuter, (product#910208 = internalUUID#910223)
(1858) Project
Arguments: [product#910208, plant#910209, orderDateTime#910210, productPlant#910221, systemId#910222, internalUUID#910223, id#910224, displayId#910225, name#910226, baseUnitOfMeasure#910227, unitOfMeasures#910228, unitOfMeasureConversions#910229, productionAspect#910230, salesAspect#910231, procurementAspect#910232, productGroup#910233, filter(unitOfMeasureConversions#910229, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910221.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910221.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910227.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910227.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910234]
(1859) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910234.quantityNumerator), true, [quantityNumerator#910235]
(1860) Project
Arguments: [product#910208, plant#910209, orderDateTime#910210, productPlant#910221, systemId#910222, internalUUID#910223, id#910224, displayId#910225, name#910226, baseUnitOfMeasure#910227, unitOfMeasures#910228, unitOfMeasureConversions#910229, productionAspect#910230, salesAspect#910231, procurementAspect#910232, productGroup#910233, filteredUnitOfMeasureConversions#910234, quantityNumerator#910235]
(1861) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910234.quantityDenominator), true, [quantityDenominator#910236]
(1862) Project
Arguments: [product#910208, plant#910209, orderDateTime#910210, productPlant#910221, systemId#910222, internalUUID#910223, id#910224, displayId#910225, name#910226, baseUnitOfMeasure#910227, unitOfMeasures#910228, unitOfMeasureConversions#910229, productionAspect#910230, salesAspect#910231, procurementAspect#910232, productGroup#910233, filteredUnitOfMeasureConversions#910234, quantityNumerator#910235, quantityDenominator#910236]
(1863) Project
Arguments: [product#910208, plant#910209, orderDateTime#910210, productPlant#910221, systemId#910222, internalUUID#910223, id#910224, displayId#910225, name#910226, baseUnitOfMeasure#910227, unitOfMeasures#910228, unitOfMeasureConversions#910229, productionAspect#910230, salesAspect#910231, procurementAspect#910232, productGroup#910233, filteredUnitOfMeasureConversions#910234, quantityNumerator#910235, quantityDenominator#910236, (cast(quantityNumerator#910235 as double) / cast(quantityDenominator#910236 as double)) AS outboundUnit#910237]
(1864) Project
Arguments: [product#910208, plant#910209, orderDateTime#910210, productPlant#910221, systemId#910222, internalUUID#910223, id#910224, displayId#910225, name#910226, baseUnitOfMeasure#910227, unitOfMeasures#910228, unitOfMeasureConversions#910229, productionAspect#910230, salesAspect#910231, procurementAspect#910232, productGroup#910233, filteredUnitOfMeasureConversions#910234, quantityNumerator#910235, quantityDenominator#910236, CASE WHEN (isnull(outboundUnit#910237) OR (outboundUnit#910237 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910237 END AS outboundUnit#910238]
(1865) Project
Arguments: [product#910208, plant#910209, orderDateTime#910210, productPlant#910221, outboundUnit#910238]
(1866) Project
Arguments: [plant#910209]
(1867) Deduplicate
Arguments: [plant#910209]
(1868) Join
Arguments: Inner, (plantUuid#910205 = plant#910209)
(1869) Project
Arguments: [plantId#910204, plantUuid#910205, storageLocId#910206, storageLocUuid#910207]
(1870) Project
Arguments: [plantId#910204, plantUuid#910205 AS plant#910239, storageLocId#910206, storageLocUuid#910207]
(1871) Join
Arguments: Inner, (plant#909637 = plant#910239)
(1872) Project
Arguments: [plant#909637, product#909636, orderDateTime#909638, productPlant#909649, outboundUnit#909666, stockDatetime#909891, stockBatchQuantities#909892, stockBatchShelfLifeEndDatetimes#909893, dayBucketDemands#910179, pointInTimeDemands#910180, plantId#910204, storageLocId#910206, storageLocUuid#910207, plant#910239]
(1873) LocalRelation
Arguments: <empty>, [systemId#910240, internalUUID#910241, id#910242, isMarkedForDeletion#910243, supplier#910244, status#910245, items#910246]
(1874) Generate
Arguments: explode(items#910246), false, [item#910247]
(1875) Project
Arguments: [id#910242, internalUUID#910241, isMarkedForDeletion#910243, supplier#910244.internalRefUUID AS supplierUuid#910248, item#910247]
(1876) Filter
Arguments: (((NOT isMarkedForDeletion#910243 AND NOT item#910247.deletionIndicator) AND NOT item#910247.completeIndicator) AND NOT item#910247.returnIndicator)
(1877) Project
Arguments: [id#910242, internalUUID#910241, supplierUuid#910248, item#910247.plant.internalRefUUID AS plant#910249, item#910247.product.internalRefUUID AS product#910250, item#910247.storageLocation.internalRefUUID AS storageLocUuid#910251, item#910247.quantityUnit.code AS quantityUom#910252, item#910247.quantityUnit.internalRefUUID AS quantityUomUuid#910253, item#910247.quantityNumerator AS quantityNumerator#910254, item#910247.quantityDenominator AS quantityDenominator#910255, item#910247.scheduleLines AS scheduleLines#910256, item#910247.confirmations AS confirmations#910257]
(1878) Join
Arguments: Inner, (((product#909636 = product#910250) AND (plant#909637 = plant#910249)) AND (storageLocUuid#910207 = storageLocUuid#910251))
(1879) Project
Arguments: [product#909636, plant#909637, storageLocUuid#910207, orderDateTime#909638, productPlant#909649, outboundUnit#909666, stockDatetime#909891, stockBatchQuantities#909892, stockBatchShelfLifeEndDatetimes#909893, dayBucketDemands#910179, pointInTimeDemands#910180, plantId#910204, storageLocId#910206, id#910242, internalUUID#910241, supplierUuid#910248, quantityUom#910252, quantityUomUuid#910253, quantityNumerator#910254, quantityDenominator#910255, scheduleLines#910256, confirmations#910257, product#910250, plant#910249, storageLocUuid#910251, ... 1 more fields]
(1880) Project
Arguments: [id#910242, internalUUID#910241, supplierUuid#910248, plant#910249, product#910250, storageLocUuid#910251, quantityUom#910252, quantityUomUuid#910253, quantityNumerator#910254, quantityDenominator#910255, scheduleLines#910256, confirmations#910257, stockDatetime#909891]
(1881) Project
Arguments: [id#910242, internalUUID#910241, supplierUuid#910248, plant#910249, product#910250, storageLocUuid#910251, quantityUom#910252, quantityUomUuid#910253, quantityNumerator#910254, quantityDenominator#910255, scheduleLines#910256, confirmations#910257, stockDatetime#909891, array_size(filter(confirmations#910257, lambdafunction((((lambda x_130#907339.deletionIndicator = false) AND (lambda x_130#907339.isRelevantForConfirmation = true)) AND isnotnull(lambda x_130#907339.confirmedDeliveryAt)), lambda x_130#907339, false))) AS _w0#910258]
(1882) Window
Arguments: [sum(_w0#910258) windowspecdefinition(internalUUID#910241, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#910259L], [internalUUID#910241]
(1883) Project
Arguments: [id#910242, internalUUID#910241, supplierUuid#910248, plant#910249, product#910250, storageLocUuid#910251, quantityUom#910252, quantityUomUuid#910253, quantityNumerator#910254, quantityDenominator#910255, scheduleLines#910256, confirmations#910257, stockDatetime#909891, _w0#910258, _we0#910259L, filter(transform(CASE WHEN (_we0#910259L > cast(0 as bigint)) THEN transform(filter(confirmations#910257, lambdafunction((((lambda x_130#907340.deletionIndicator = false) AND (lambda x_130#907340.isRelevantForConfirmation = true)) AND isnotnull(lambda x_130#907340.confirmedDeliveryAt)), lambda x_130#907340, false)), lambdafunction(struct(openQty, greatest((lambda x_131#907343.confirmedQuantity - coalesce(lambda x_131#907343.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_131#907343.confirmedDeliveryAt), lambda x_131#907343, false)) ELSE transform(scheduleLines#910256, lambdafunction(struct(openQty, greatest((lambda x_129#907341.quantity - coalesce(lambda x_129#907341.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_129#907341.deliveryAt), lambda x_129#907341, false)) END, lambdafunction(struct(documentId, id#910242, documentUuid, internalUUID#910241, openQty, lambda x_132#907344.openQty, openQtyInBaseUnit, ((lambda x_132#907344.openQty * quantityNumerator#910254) / quantityDenominator#910255), qtyUom, quantityUom#910252, qtyUomUuid, quantityUomUuid#910253, availabilityDatetime, lambda x_132#907344.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_132#907344, false)), lambdafunction(NOT (lambda x_133#907345.openQty = 0.0), lambda x_133#907345, false)) AS openGoodsMovements#910260]
(1884) Project
Arguments: [id#910242, internalUUID#910241, supplierUuid#910248, plant#910249, product#910250, storageLocUuid#910251, quantityUom#910252, quantityUomUuid#910253, quantityNumerator#910254, quantityDenominator#910255, scheduleLines#910256, confirmations#910257, stockDatetime#909891, openGoodsMovements#910260]
(1885) Aggregate
Arguments: [product#910250, plant#910249], [product#910250, plant#910249, flatten(collect_list(openGoodsMovements#910260, 0, 0)) AS openGoodsMovements#910261]
(1886) Filter
Arguments: (array_size(openGoodsMovements#910261) > 0)
(1887) LogicalRelation
Arguments: parquet, [product#910262, plant#910263, orderDateTime#910264, planningStartDateTime#910265], false
(1888) RepartitionByExpression
Arguments: [product#910262, plant#910263], 37
(1889) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264]
(1890) LogicalRelation
Arguments: parquet, [systemId#910266, internalUUID#910267, plant#910268, product#910269, blockedForReplenishmentStartingFrom#910270, productionAspect#910271, salesPlant#910272, listing#910273, sourceOfSupplyCategory#910274], false
(1891) Repartition
Arguments: 37, true
(1892) Project
Arguments: [systemId#910266, internalUUID#910267, plant#910268, product#910269, blockedForReplenishmentStartingFrom#910270, productionAspect#910271, salesPlant#910272, listing#910273, sourceOfSupplyCategory#910274, struct(systemId, systemId#910266, internalUUID, internalUUID#910267, plant, plant#910268, product, product#910269, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910270, productionAspect, productionAspect#910271, salesPlant, salesPlant#910272, listing, listing#910273, sourceOfSupplyCategory, sourceOfSupplyCategory#910274) AS productPlant#910275]
(1893) Project
Arguments: [productPlant#910275]
(1894) Join
Arguments: LeftOuter, ((product#910262 <=> productPlant#910275.product.internalRefUUID) AND (plant#910263 <=> productPlant#910275.plant.internalRefUUID))
(1895) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275]
(1896) LogicalRelation
Arguments: parquet, [systemId#910276, internalUUID#910277, id#910278, displayId#910279, name#910280, baseUnitOfMeasure#910281, unitOfMeasures#910282, unitOfMeasureConversions#910283, productionAspect#910284, salesAspect#910285, procurementAspect#910286, productGroup#910287], false
(1897) Repartition
Arguments: 37, true
(1898) Join
Arguments: LeftOuter, (product#910262 = internalUUID#910277)
(1899) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, systemId#910276, internalUUID#910277, id#910278, displayId#910279, name#910280, baseUnitOfMeasure#910281, unitOfMeasures#910282, unitOfMeasureConversions#910283, productionAspect#910284, salesAspect#910285, procurementAspect#910286, productGroup#910287, filter(unitOfMeasureConversions#910283, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910275.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910275.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910281.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910281.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910288]
(1900) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910288.quantityNumerator), true, [quantityNumerator#910289]
(1901) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, systemId#910276, internalUUID#910277, id#910278, displayId#910279, name#910280, baseUnitOfMeasure#910281, unitOfMeasures#910282, unitOfMeasureConversions#910283, productionAspect#910284, salesAspect#910285, procurementAspect#910286, productGroup#910287, filteredUnitOfMeasureConversions#910288, quantityNumerator#910289]
(1902) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910288.quantityDenominator), true, [quantityDenominator#910290]
(1903) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, systemId#910276, internalUUID#910277, id#910278, displayId#910279, name#910280, baseUnitOfMeasure#910281, unitOfMeasures#910282, unitOfMeasureConversions#910283, productionAspect#910284, salesAspect#910285, procurementAspect#910286, productGroup#910287, filteredUnitOfMeasureConversions#910288, quantityNumerator#910289, quantityDenominator#910290]
(1904) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, systemId#910276, internalUUID#910277, id#910278, displayId#910279, name#910280, baseUnitOfMeasure#910281, unitOfMeasures#910282, unitOfMeasureConversions#910283, productionAspect#910284, salesAspect#910285, procurementAspect#910286, productGroup#910287, filteredUnitOfMeasureConversions#910288, quantityNumerator#910289, quantityDenominator#910290, (cast(quantityNumerator#910289 as double) / cast(quantityDenominator#910290 as double)) AS outboundUnit#910291]
(1905) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, systemId#910276, internalUUID#910277, id#910278, displayId#910279, name#910280, baseUnitOfMeasure#910281, unitOfMeasures#910282, unitOfMeasureConversions#910283, productionAspect#910284, salesAspect#910285, procurementAspect#910286, productGroup#910287, filteredUnitOfMeasureConversions#910288, quantityNumerator#910289, quantityDenominator#910290, CASE WHEN (isnull(outboundUnit#910291) OR (outboundUnit#910291 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910291 END AS outboundUnit#910292]
(1906) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, outboundUnit#910292]
(1907) LogicalRelation
Arguments: parquet, [systemId#910293, internalUUID#910294, product#910295, plant#910296, calculationDateTime#910297, stockQuantities#910298], false
(1908) Repartition
Arguments: 37, true
(1909) LogicalRelation
Arguments: parquet, [marketUnit#910299, description#910300, articleHierarchy#910301, defaultCurrency#910302, responsibilities#910303, replenishmentTypes#910304, distributionCenters#910305, assignedArticleHierarchyNodes#910306, minOrderQtySetting#910307, listingCheck#910308, odsSelection#910309, demandProfiles#910310, constraintProfiles#910311, optimizationProfiles#910312, orderGroupSplitProfiles#910313, supplierMinimumProfiles#910314, multipleRestrictionProfiles#910315, preferredUomSource#910316, handlingOfUnfulfilledDemands#910317, negligibleQuantitiesThreshold#910318, eventtype#910319], false
(1910) Repartition
Arguments: 37, true
(1911) Filter
Arguments: (marketUnit#910299 <=> AUTO_ALL_ProdLoc)
(1912) Project
Arguments: [marketUnit#910299, description#910300, articleHierarchy#910301, defaultCurrency#910302, responsibilities#910303, replenishmentTypes#910304, distributionCenters#910305, assignedArticleHierarchyNodes#910306, minOrderQtySetting#910307, listingCheck#910308, odsSelection#910309, demandProfiles#910310, constraintProfiles#910311, optimizationProfiles#910312, orderGroupSplitProfiles#910313, supplierMinimumProfiles#910314, multipleRestrictionProfiles#910315, preferredUomSource#910316, handlingOfUnfulfilledDemands#910317, negligibleQuantitiesThreshold#910318, eventtype#910319]
(1913) Project
Arguments: [distributionCenters#910305]
(1914) Generate
Arguments: explode(distributionCenters#910305), false, [distributionCenters#910320]
(1915) Project
Arguments: [distributionCenters#910320]
(1916) Generate
Arguments: explode(distributionCenters#910320.storageLocations), false, [storageLocations#910321]
(1917) Project
Arguments: [distributionCenters#910320.id AS plantId#910322, distributionCenters#910320.internalRefUUID AS plantUuid#910323, storageLocations#910321]
(1918) Project
Arguments: [plantId#910322, plantUuid#910323, storageLocations#910321.id AS storageLocId#910324, storageLocations#910321.internalRefUUID AS storageLocUuid#910325]
(1919) LogicalRelation
Arguments: parquet, [product#910326, plant#910327, orderDateTime#910328, planningStartDateTime#910329], false
(1920) RepartitionByExpression
Arguments: [product#910326, plant#910327], 37
(1921) Project
Arguments: [product#910326, plant#910327, orderDateTime#910328]
(1922) LogicalRelation
Arguments: parquet, [systemId#910330, internalUUID#910331, plant#910332, product#910333, blockedForReplenishmentStartingFrom#910334, productionAspect#910335, salesPlant#910336, listing#910337, sourceOfSupplyCategory#910338], false
(1923) Repartition
Arguments: 37, true
(1924) Project
Arguments: [systemId#910330, internalUUID#910331, plant#910332, product#910333, blockedForReplenishmentStartingFrom#910334, productionAspect#910335, salesPlant#910336, listing#910337, sourceOfSupplyCategory#910338, struct(systemId, systemId#910330, internalUUID, internalUUID#910331, plant, plant#910332, product, product#910333, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910334, productionAspect, productionAspect#910335, salesPlant, salesPlant#910336, listing, listing#910337, sourceOfSupplyCategory, sourceOfSupplyCategory#910338) AS productPlant#910339]
(1925) Project
Arguments: [productPlant#910339]
(1926) Join
Arguments: LeftOuter, ((product#910326 <=> productPlant#910339.product.internalRefUUID) AND (plant#910327 <=> productPlant#910339.plant.internalRefUUID))
(1927) Project
Arguments: [product#910326, plant#910327, orderDateTime#910328, productPlant#910339]
(1928) LogicalRelation
Arguments: parquet, [systemId#910340, internalUUID#910341, id#910342, displayId#910343, name#910344, baseUnitOfMeasure#910345, unitOfMeasures#910346, unitOfMeasureConversions#910347, productionAspect#910348, salesAspect#910349, procurementAspect#910350, productGroup#910351], false
(1929) Repartition
Arguments: 37, true
(1930) Join
Arguments: LeftOuter, (product#910326 = internalUUID#910341)
(1931) Project
Arguments: [product#910326, plant#910327, orderDateTime#910328, productPlant#910339, systemId#910340, internalUUID#910341, id#910342, displayId#910343, name#910344, baseUnitOfMeasure#910345, unitOfMeasures#910346, unitOfMeasureConversions#910347, productionAspect#910348, salesAspect#910349, procurementAspect#910350, productGroup#910351, filter(unitOfMeasureConversions#910347, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910339.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910339.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910345.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910345.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910352]
(1932) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910352.quantityNumerator), true, [quantityNumerator#910353]
(1933) Project
Arguments: [product#910326, plant#910327, orderDateTime#910328, productPlant#910339, systemId#910340, internalUUID#910341, id#910342, displayId#910343, name#910344, baseUnitOfMeasure#910345, unitOfMeasures#910346, unitOfMeasureConversions#910347, productionAspect#910348, salesAspect#910349, procurementAspect#910350, productGroup#910351, filteredUnitOfMeasureConversions#910352, quantityNumerator#910353]
(1934) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910352.quantityDenominator), true, [quantityDenominator#910354]
(1935) Project
Arguments: [product#910326, plant#910327, orderDateTime#910328, productPlant#910339, systemId#910340, internalUUID#910341, id#910342, displayId#910343, name#910344, baseUnitOfMeasure#910345, unitOfMeasures#910346, unitOfMeasureConversions#910347, productionAspect#910348, salesAspect#910349, procurementAspect#910350, productGroup#910351, filteredUnitOfMeasureConversions#910352, quantityNumerator#910353, quantityDenominator#910354]
(1936) Project
Arguments: [product#910326, plant#910327, orderDateTime#910328, productPlant#910339, systemId#910340, internalUUID#910341, id#910342, displayId#910343, name#910344, baseUnitOfMeasure#910345, unitOfMeasures#910346, unitOfMeasureConversions#910347, productionAspect#910348, salesAspect#910349, procurementAspect#910350, productGroup#910351, filteredUnitOfMeasureConversions#910352, quantityNumerator#910353, quantityDenominator#910354, (cast(quantityNumerator#910353 as double) / cast(quantityDenominator#910354 as double)) AS outboundUnit#910355]
(1937) Project
Arguments: [product#910326, plant#910327, orderDateTime#910328, productPlant#910339, systemId#910340, internalUUID#910341, id#910342, displayId#910343, name#910344, baseUnitOfMeasure#910345, unitOfMeasures#910346, unitOfMeasureConversions#910347, productionAspect#910348, salesAspect#910349, procurementAspect#910350, productGroup#910351, filteredUnitOfMeasureConversions#910352, quantityNumerator#910353, quantityDenominator#910354, CASE WHEN (isnull(outboundUnit#910355) OR (outboundUnit#910355 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910355 END AS outboundUnit#910356]
(1938) Project
Arguments: [product#910326, plant#910327, orderDateTime#910328, productPlant#910339, outboundUnit#910356]
(1939) Project
Arguments: [plant#910327]
(1940) Deduplicate
Arguments: [plant#910327]
(1941) Join
Arguments: Inner, (plantUuid#910323 = plant#910327)
(1942) Project
Arguments: [plantId#910322, plantUuid#910323, storageLocId#910324, storageLocUuid#910325]
(1943) Join
Arguments: Inner, (plant#910296.internalRefUUID <=> plantUuid#910323)
(1944) Generate
Arguments: explode(filter(stockQuantities#910298, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#910325) AND (lambda x#905594.storageLocation.Id = storageLocId#910324)), lambda x#905594, false))), false, [stockQuantity#910357]
(1945) Project
Arguments: [systemId#910293, internalUUID#910294, product#910295, plant#910296, calculationDateTime#910297, stockQuantities#910298, plantId#910322, plantUuid#910323, storageLocId#910324, storageLocUuid#910325, stockQuantity#910357]
(1946) Aggregate
Arguments: [plantUuid#910323, internalUUID#910294, plant#910296, product#910295, systemId#910293], [plantUuid#910323, internalUUID#910294, plant#910296, product#910295, systemId#910293, first(calculationDateTime#910297, false) AS calculationDateTime#910358, collect_list(stockQuantity#910357, 0, 0) AS stockQuantities#910359]
(1947) Project
Arguments: [systemId#910293, internalUUID#910294, product#910295, plant#910296, calculationDateTime#910358, stockQuantities#910359]
(1948) Generate
Arguments: explode(stockQuantities#910359), false, [stockQuantity#910360]
(1949) Project
Arguments: [systemId#910293, internalUUID#910294, product#910295, plant#910296, calculationDateTime#910358, stockQuantities#910359, stockQuantity#910360]
(1950) Project
Arguments: [plant#910296.id AS plant#910361, plant#910296.internalRefUUID AS plantUuid#910362, product#910295.id AS product#910363, product#910295.internalRefUUID AS productUuid#910364, calculationDateTime#910358, stockQuantity#910360.storagelocation.id AS storageLocId#910365, stockQuantity#910360.storagelocation.internalRefUUID AS storageLocUuid#910366, stockQuantity#910360.quantity.measure AS quantity#910367, stockQuantity#910360.specialStockIndicator.code AS specialStockIndicator#910368, stockQuantity#910360.stockType.code AS stockType#910369]
(1951) Filter
Arguments: ((specialStockIndicator#910368 = ) AND (stockType#910369 = 01))
(1952) LogicalRelation
Arguments: parquet, [product#910370, plant#910371, orderDateTime#910372, planningStartDateTime#910373], false
(1953) RepartitionByExpression
Arguments: [product#910370, plant#910371], 37
(1954) Project
Arguments: [product#910370, plant#910371, orderDateTime#910372]
(1955) LogicalRelation
Arguments: parquet, [systemId#910374, internalUUID#910375, plant#910376, product#910377, blockedForReplenishmentStartingFrom#910378, productionAspect#910379, salesPlant#910380, listing#910381, sourceOfSupplyCategory#910382], false
(1956) Repartition
Arguments: 37, true
(1957) Project
Arguments: [systemId#910374, internalUUID#910375, plant#910376, product#910377, blockedForReplenishmentStartingFrom#910378, productionAspect#910379, salesPlant#910380, listing#910381, sourceOfSupplyCategory#910382, struct(systemId, systemId#910374, internalUUID, internalUUID#910375, plant, plant#910376, product, product#910377, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910378, productionAspect, productionAspect#910379, salesPlant, salesPlant#910380, listing, listing#910381, sourceOfSupplyCategory, sourceOfSupplyCategory#910382) AS productPlant#910383]
(1958) Project
Arguments: [productPlant#910383]
(1959) Join
Arguments: LeftOuter, ((product#910370 <=> productPlant#910383.product.internalRefUUID) AND (plant#910371 <=> productPlant#910383.plant.internalRefUUID))
(1960) Project
Arguments: [product#910370, plant#910371, orderDateTime#910372, productPlant#910383]
(1961) LogicalRelation
Arguments: parquet, [systemId#910384, internalUUID#910385, id#910386, displayId#910387, name#910388, baseUnitOfMeasure#910389, unitOfMeasures#910390, unitOfMeasureConversions#910391, productionAspect#910392, salesAspect#910393, procurementAspect#910394, productGroup#910395], false
(1962) Repartition
Arguments: 37, true
(1963) Join
Arguments: LeftOuter, (product#910370 = internalUUID#910385)
(1964) Project
Arguments: [product#910370, plant#910371, orderDateTime#910372, productPlant#910383, systemId#910384, internalUUID#910385, id#910386, displayId#910387, name#910388, baseUnitOfMeasure#910389, unitOfMeasures#910390, unitOfMeasureConversions#910391, productionAspect#910392, salesAspect#910393, procurementAspect#910394, productGroup#910395, filter(unitOfMeasureConversions#910391, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910383.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910383.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910389.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910389.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910396]
(1965) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910396.quantityNumerator), true, [quantityNumerator#910397]
(1966) Project
Arguments: [product#910370, plant#910371, orderDateTime#910372, productPlant#910383, systemId#910384, internalUUID#910385, id#910386, displayId#910387, name#910388, baseUnitOfMeasure#910389, unitOfMeasures#910390, unitOfMeasureConversions#910391, productionAspect#910392, salesAspect#910393, procurementAspect#910394, productGroup#910395, filteredUnitOfMeasureConversions#910396, quantityNumerator#910397]
(1967) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910396.quantityDenominator), true, [quantityDenominator#910398]
(1968) Project
Arguments: [product#910370, plant#910371, orderDateTime#910372, productPlant#910383, systemId#910384, internalUUID#910385, id#910386, displayId#910387, name#910388, baseUnitOfMeasure#910389, unitOfMeasures#910390, unitOfMeasureConversions#910391, productionAspect#910392, salesAspect#910393, procurementAspect#910394, productGroup#910395, filteredUnitOfMeasureConversions#910396, quantityNumerator#910397, quantityDenominator#910398]
(1969) Project
Arguments: [product#910370, plant#910371, orderDateTime#910372, productPlant#910383, systemId#910384, internalUUID#910385, id#910386, displayId#910387, name#910388, baseUnitOfMeasure#910389, unitOfMeasures#910390, unitOfMeasureConversions#910391, productionAspect#910392, salesAspect#910393, procurementAspect#910394, productGroup#910395, filteredUnitOfMeasureConversions#910396, quantityNumerator#910397, quantityDenominator#910398, (cast(quantityNumerator#910397 as double) / cast(quantityDenominator#910398 as double)) AS outboundUnit#910399]
(1970) Project
Arguments: [product#910370, plant#910371, orderDateTime#910372, productPlant#910383, systemId#910384, internalUUID#910385, id#910386, displayId#910387, name#910388, baseUnitOfMeasure#910389, unitOfMeasures#910390, unitOfMeasureConversions#910391, productionAspect#910392, salesAspect#910393, procurementAspect#910394, productGroup#910395, filteredUnitOfMeasureConversions#910396, quantityNumerator#910397, quantityDenominator#910398, CASE WHEN (isnull(outboundUnit#910399) OR (outboundUnit#910399 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910399 END AS outboundUnit#910400]
(1971) Project
Arguments: [product#910370, plant#910371, orderDateTime#910372, productPlant#910383, outboundUnit#910400]
(1972) Join
Arguments: Inner, ((plantUuid#910362 = plant#910371) AND (productUuid#910364 = product#910370))
(1973) Filter
Arguments: (calculationDateTime#910358 <= orderDateTime#910372)
(1974) Project
Arguments: [plantUuid#910362 AS plant#910401, productUuid#910364 AS product#910402, storageLocId#910365, calculationDateTime#910358, quantity#910367]
(1975) LogicalRelation
Arguments: parquet, [systemId#910403, internalUUID#910404, product#910405, plant#910406, calculationDateTime#910407, stockQuantities#910408], false
(1976) Repartition
Arguments: 37, true
(1977) LogicalRelation
Arguments: parquet, [marketUnit#910409, description#910410, articleHierarchy#910411, defaultCurrency#910412, responsibilities#910413, replenishmentTypes#910414, distributionCenters#910415, assignedArticleHierarchyNodes#910416, minOrderQtySetting#910417, listingCheck#910418, odsSelection#910419, demandProfiles#910420, constraintProfiles#910421, optimizationProfiles#910422, orderGroupSplitProfiles#910423, supplierMinimumProfiles#910424, multipleRestrictionProfiles#910425, preferredUomSource#910426, handlingOfUnfulfilledDemands#910427, negligibleQuantitiesThreshold#910428, eventtype#910429], false
(1978) Repartition
Arguments: 37, true
(1979) Filter
Arguments: (marketUnit#910409 <=> AUTO_ALL_ProdLoc)
(1980) Project
Arguments: [marketUnit#910409, description#910410, articleHierarchy#910411, defaultCurrency#910412, responsibilities#910413, replenishmentTypes#910414, distributionCenters#910415, assignedArticleHierarchyNodes#910416, minOrderQtySetting#910417, listingCheck#910418, odsSelection#910419, demandProfiles#910420, constraintProfiles#910421, optimizationProfiles#910422, orderGroupSplitProfiles#910423, supplierMinimumProfiles#910424, multipleRestrictionProfiles#910425, preferredUomSource#910426, handlingOfUnfulfilledDemands#910427, negligibleQuantitiesThreshold#910428, eventtype#910429]
(1981) Project
Arguments: [distributionCenters#910415]
(1982) Generate
Arguments: explode(distributionCenters#910415), false, [distributionCenters#910430]
(1983) Project
Arguments: [distributionCenters#910430]
(1984) Generate
Arguments: explode(distributionCenters#910430.storageLocations), false, [storageLocations#910431]
(1985) Project
Arguments: [distributionCenters#910430.id AS plantId#910432, distributionCenters#910430.internalRefUUID AS plantUuid#910433, storageLocations#910431]
(1986) Project
Arguments: [plantId#910432, plantUuid#910433, storageLocations#910431.id AS storageLocId#910434, storageLocations#910431.internalRefUUID AS storageLocUuid#910435]
(1987) LogicalRelation
Arguments: parquet, [product#910436, plant#910437, orderDateTime#910438, planningStartDateTime#910439], false
(1988) RepartitionByExpression
Arguments: [product#910436, plant#910437], 37
(1989) Project
Arguments: [product#910436, plant#910437, orderDateTime#910438]
(1990) LogicalRelation
Arguments: parquet, [systemId#910440, internalUUID#910441, plant#910442, product#910443, blockedForReplenishmentStartingFrom#910444, productionAspect#910445, salesPlant#910446, listing#910447, sourceOfSupplyCategory#910448], false
(1991) Repartition
Arguments: 37, true
(1992) Project
Arguments: [systemId#910440, internalUUID#910441, plant#910442, product#910443, blockedForReplenishmentStartingFrom#910444, productionAspect#910445, salesPlant#910446, listing#910447, sourceOfSupplyCategory#910448, struct(systemId, systemId#910440, internalUUID, internalUUID#910441, plant, plant#910442, product, product#910443, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910444, productionAspect, productionAspect#910445, salesPlant, salesPlant#910446, listing, listing#910447, sourceOfSupplyCategory, sourceOfSupplyCategory#910448) AS productPlant#910449]
(1993) Project
Arguments: [productPlant#910449]
(1994) Join
Arguments: LeftOuter, ((product#910436 <=> productPlant#910449.product.internalRefUUID) AND (plant#910437 <=> productPlant#910449.plant.internalRefUUID))
(1995) Project
Arguments: [product#910436, plant#910437, orderDateTime#910438, productPlant#910449]
(1996) LogicalRelation
Arguments: parquet, [systemId#910450, internalUUID#910451, id#910452, displayId#910453, name#910454, baseUnitOfMeasure#910455, unitOfMeasures#910456, unitOfMeasureConversions#910457, productionAspect#910458, salesAspect#910459, procurementAspect#910460, productGroup#910461], false
(1997) Repartition
Arguments: 37, true
(1998) Join
Arguments: LeftOuter, (product#910436 = internalUUID#910451)
(1999) Project
Arguments: [product#910436, plant#910437, orderDateTime#910438, productPlant#910449, systemId#910450, internalUUID#910451, id#910452, displayId#910453, name#910454, baseUnitOfMeasure#910455, unitOfMeasures#910456, unitOfMeasureConversions#910457, productionAspect#910458, salesAspect#910459, procurementAspect#910460, productGroup#910461, filter(unitOfMeasureConversions#910457, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910449.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910449.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910455.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910455.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910462]
(2000) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910462.quantityNumerator), true, [quantityNumerator#910463]
(2001) Project
Arguments: [product#910436, plant#910437, orderDateTime#910438, productPlant#910449, systemId#910450, internalUUID#910451, id#910452, displayId#910453, name#910454, baseUnitOfMeasure#910455, unitOfMeasures#910456, unitOfMeasureConversions#910457, productionAspect#910458, salesAspect#910459, procurementAspect#910460, productGroup#910461, filteredUnitOfMeasureConversions#910462, quantityNumerator#910463]
(2002) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910462.quantityDenominator), true, [quantityDenominator#910464]
(2003) Project
Arguments: [product#910436, plant#910437, orderDateTime#910438, productPlant#910449, systemId#910450, internalUUID#910451, id#910452, displayId#910453, name#910454, baseUnitOfMeasure#910455, unitOfMeasures#910456, unitOfMeasureConversions#910457, productionAspect#910458, salesAspect#910459, procurementAspect#910460, productGroup#910461, filteredUnitOfMeasureConversions#910462, quantityNumerator#910463, quantityDenominator#910464]
(2004) Project
Arguments: [product#910436, plant#910437, orderDateTime#910438, productPlant#910449, systemId#910450, internalUUID#910451, id#910452, displayId#910453, name#910454, baseUnitOfMeasure#910455, unitOfMeasures#910456, unitOfMeasureConversions#910457, productionAspect#910458, salesAspect#910459, procurementAspect#910460, productGroup#910461, filteredUnitOfMeasureConversions#910462, quantityNumerator#910463, quantityDenominator#910464, (cast(quantityNumerator#910463 as double) / cast(quantityDenominator#910464 as double)) AS outboundUnit#910465]
(2005) Project
Arguments: [product#910436, plant#910437, orderDateTime#910438, productPlant#910449, systemId#910450, internalUUID#910451, id#910452, displayId#910453, name#910454, baseUnitOfMeasure#910455, unitOfMeasures#910456, unitOfMeasureConversions#910457, productionAspect#910458, salesAspect#910459, procurementAspect#910460, productGroup#910461, filteredUnitOfMeasureConversions#910462, quantityNumerator#910463, quantityDenominator#910464, CASE WHEN (isnull(outboundUnit#910465) OR (outboundUnit#910465 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910465 END AS outboundUnit#910466]
(2006) Project
Arguments: [product#910436, plant#910437, orderDateTime#910438, productPlant#910449, outboundUnit#910466]
(2007) Project
Arguments: [plant#910437]
(2008) Deduplicate
Arguments: [plant#910437]
(2009) Join
Arguments: Inner, (plantUuid#910433 = plant#910437)
(2010) Project
Arguments: [plantId#910432, plantUuid#910433, storageLocId#910434, storageLocUuid#910435]
(2011) Join
Arguments: Inner, (plant#910406.internalRefUUID <=> plantUuid#910433)
(2012) Generate
Arguments: explode(filter(stockQuantities#910408, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#910435) AND (lambda x#905594.storageLocation.Id = storageLocId#910434)), lambda x#905594, false))), false, [stockQuantity#910467]
(2013) Project
Arguments: [systemId#910403, internalUUID#910404, product#910405, plant#910406, calculationDateTime#910407, stockQuantities#910408, plantId#910432, plantUuid#910433, storageLocId#910434, storageLocUuid#910435, stockQuantity#910467]
(2014) Aggregate
Arguments: [plantUuid#910433, internalUUID#910404, plant#910406, product#910405, systemId#910403], [plantUuid#910433, internalUUID#910404, plant#910406, product#910405, systemId#910403, first(calculationDateTime#910407, false) AS calculationDateTime#910468, collect_list(stockQuantity#910467, 0, 0) AS stockQuantities#910469]
(2015) Project
Arguments: [systemId#910403, internalUUID#910404, product#910405, plant#910406, calculationDateTime#910468, stockQuantities#910469]
(2016) Generate
Arguments: explode(stockQuantities#910469), false, [stockQuantity#910470]
(2017) Project
Arguments: [systemId#910403, internalUUID#910404, product#910405, plant#910406, calculationDateTime#910468, stockQuantities#910469, stockQuantity#910470]
(2018) Project
Arguments: [plant#910406.id AS plant#910471, plant#910406.internalRefUUID AS plantUuid#910472, product#910405.id AS product#910473, product#910405.internalRefUUID AS productUuid#910474, calculationDateTime#910468, stockQuantity#910470.storagelocation.id AS storageLocId#910475, stockQuantity#910470.storagelocation.internalRefUUID AS storageLocUuid#910476, stockQuantity#910470.quantity.measure AS quantity#910477, stockQuantity#910470.specialStockIndicator.code AS specialStockIndicator#910478, stockQuantity#910470.stockType.code AS stockType#910479]
(2019) Filter
Arguments: ((specialStockIndicator#910478 = ) AND (stockType#910479 = 01))
(2020) LogicalRelation
Arguments: parquet, [product#910480, plant#910481, orderDateTime#910482, planningStartDateTime#910483], false
(2021) RepartitionByExpression
Arguments: [product#910480, plant#910481], 37
(2022) Project
Arguments: [product#910480, plant#910481, orderDateTime#910482]
(2023) LogicalRelation
Arguments: parquet, [systemId#910484, internalUUID#910485, plant#910486, product#910487, blockedForReplenishmentStartingFrom#910488, productionAspect#910489, salesPlant#910490, listing#910491, sourceOfSupplyCategory#910492], false
(2024) Repartition
Arguments: 37, true
(2025) Project
Arguments: [systemId#910484, internalUUID#910485, plant#910486, product#910487, blockedForReplenishmentStartingFrom#910488, productionAspect#910489, salesPlant#910490, listing#910491, sourceOfSupplyCategory#910492, struct(systemId, systemId#910484, internalUUID, internalUUID#910485, plant, plant#910486, product, product#910487, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910488, productionAspect, productionAspect#910489, salesPlant, salesPlant#910490, listing, listing#910491, sourceOfSupplyCategory, sourceOfSupplyCategory#910492) AS productPlant#910493]
(2026) Project
Arguments: [productPlant#910493]
(2027) Join
Arguments: LeftOuter, ((product#910480 <=> productPlant#910493.product.internalRefUUID) AND (plant#910481 <=> productPlant#910493.plant.internalRefUUID))
(2028) Project
Arguments: [product#910480, plant#910481, orderDateTime#910482, productPlant#910493]
(2029) LogicalRelation
Arguments: parquet, [systemId#910494, internalUUID#910495, id#910496, displayId#910497, name#910498, baseUnitOfMeasure#910499, unitOfMeasures#910500, unitOfMeasureConversions#910501, productionAspect#910502, salesAspect#910503, procurementAspect#910504, productGroup#910505], false
(2030) Repartition
Arguments: 37, true
(2031) Join
Arguments: LeftOuter, (product#910480 = internalUUID#910495)
(2032) Project
Arguments: [product#910480, plant#910481, orderDateTime#910482, productPlant#910493, systemId#910494, internalUUID#910495, id#910496, displayId#910497, name#910498, baseUnitOfMeasure#910499, unitOfMeasures#910500, unitOfMeasureConversions#910501, productionAspect#910502, salesAspect#910503, procurementAspect#910504, productGroup#910505, filter(unitOfMeasureConversions#910501, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910493.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910493.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910499.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910499.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910506]
(2033) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910506.quantityNumerator), true, [quantityNumerator#910507]
(2034) Project
Arguments: [product#910480, plant#910481, orderDateTime#910482, productPlant#910493, systemId#910494, internalUUID#910495, id#910496, displayId#910497, name#910498, baseUnitOfMeasure#910499, unitOfMeasures#910500, unitOfMeasureConversions#910501, productionAspect#910502, salesAspect#910503, procurementAspect#910504, productGroup#910505, filteredUnitOfMeasureConversions#910506, quantityNumerator#910507]
(2035) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910506.quantityDenominator), true, [quantityDenominator#910508]
(2036) Project
Arguments: [product#910480, plant#910481, orderDateTime#910482, productPlant#910493, systemId#910494, internalUUID#910495, id#910496, displayId#910497, name#910498, baseUnitOfMeasure#910499, unitOfMeasures#910500, unitOfMeasureConversions#910501, productionAspect#910502, salesAspect#910503, procurementAspect#910504, productGroup#910505, filteredUnitOfMeasureConversions#910506, quantityNumerator#910507, quantityDenominator#910508]
(2037) Project
Arguments: [product#910480, plant#910481, orderDateTime#910482, productPlant#910493, systemId#910494, internalUUID#910495, id#910496, displayId#910497, name#910498, baseUnitOfMeasure#910499, unitOfMeasures#910500, unitOfMeasureConversions#910501, productionAspect#910502, salesAspect#910503, procurementAspect#910504, productGroup#910505, filteredUnitOfMeasureConversions#910506, quantityNumerator#910507, quantityDenominator#910508, (cast(quantityNumerator#910507 as double) / cast(quantityDenominator#910508 as double)) AS outboundUnit#910509]
(2038) Project
Arguments: [product#910480, plant#910481, orderDateTime#910482, productPlant#910493, systemId#910494, internalUUID#910495, id#910496, displayId#910497, name#910498, baseUnitOfMeasure#910499, unitOfMeasures#910500, unitOfMeasureConversions#910501, productionAspect#910502, salesAspect#910503, procurementAspect#910504, productGroup#910505, filteredUnitOfMeasureConversions#910506, quantityNumerator#910507, quantityDenominator#910508, CASE WHEN (isnull(outboundUnit#910509) OR (outboundUnit#910509 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910509 END AS outboundUnit#910510]
(2039) Project
Arguments: [product#910480, plant#910481, orderDateTime#910482, productPlant#910493, outboundUnit#910510]
(2040) Join
Arguments: Inner, ((plantUuid#910472 = plant#910481) AND (productUuid#910474 = product#910480))
(2041) Filter
Arguments: (calculationDateTime#910468 <= orderDateTime#910482)
(2042) Project
Arguments: [plantUuid#910472 AS plant#910511, productUuid#910474 AS product#910512, storageLocId#910475, calculationDateTime#910468, quantity#910477]
(2043) Aggregate
Arguments: [plant#910511, product#910512, storageLocId#910475], [plant#910511, product#910512, storageLocId#910475, max(calculationDateTime#910468) AS max_calc_datetime#910513]
(2044) Join
Arguments: Inner, ((((plant#910401 <=> plant#910511) AND (product#910402 <=> product#910512)) AND (storageLocId#910365 <=> storageLocId#910475)) AND (calculationDateTime#910358 <=> max_calc_datetime#910513))
(2045) Project
Arguments: [plant#910401, product#910402, storageLocId#910365, calculationDateTime#910358, quantity#910367]
(2046) Aggregate
Arguments: [product#910402, plant#910401], [product#910402, plant#910401, sum(quantity#910367) AS quantitySum#910514, min(calculationDateTime#910358) AS minCalculationDateTime#910515]
(2047) Project
Arguments: [product#910402, plant#910401, quantitySum#910514, minCalculationDateTime#910515, round(quantitySum#910514, 0) AS roundedQuantitySum#910516]
(2048) Join
Arguments: LeftOuter, ((plant#910263 = plant#910401) AND (product#910262 = product#910402))
(2049) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, outboundUnit#910292, roundedQuantitySum#910516, minCalculationDateTime#910515]
(2050) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, outboundUnit#910292, roundedQuantitySum#910516, minCalculationDateTime#910515, CASE WHEN isnotnull(minCalculationDateTime#910515) THEN minCalculationDateTime#910515 ELSE orderDateTime#910264 END AS stockDatetime#910517]
(2051) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, outboundUnit#910292, roundedQuantitySum#910516, minCalculationDateTime#910515, stockDatetime#910517, CASE WHEN isnotnull(roundedQuantitySum#910516) THEN array(roundedQuantitySum#910516) ELSE array(0.0) END AS stockBatchQuantities#910518]
(2052) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, outboundUnit#910292, roundedQuantitySum#910516, minCalculationDateTime#910515, stockDatetime#910517, stockBatchQuantities#910518, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#910519]
(2053) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, outboundUnit#910292, roundedQuantitySum#910516, stockDatetime#910517, stockBatchQuantities#910518, stockBatchShelfLifeEndDatetimes#910519]
(2054) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, outboundUnit#910292, stockDatetime#910517, stockBatchQuantities#910518, stockBatchShelfLifeEndDatetimes#910519]
(2055) LogicalRelation
Arguments: parquet, [product#910520, plant#910521, orderDateTime#910522, planningStartDateTime#910523], false
(2056) RepartitionByExpression
Arguments: [product#910520, plant#910521], 37
(2057) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522]
(2058) LogicalRelation
Arguments: parquet, [systemId#910524, internalUUID#910525, plant#910526, product#910527, blockedForReplenishmentStartingFrom#910528, productionAspect#910529, salesPlant#910530, listing#910531, sourceOfSupplyCategory#910532], false
(2059) Repartition
Arguments: 37, true
(2060) Project
Arguments: [systemId#910524, internalUUID#910525, plant#910526, product#910527, blockedForReplenishmentStartingFrom#910528, productionAspect#910529, salesPlant#910530, listing#910531, sourceOfSupplyCategory#910532, struct(systemId, systemId#910524, internalUUID, internalUUID#910525, plant, plant#910526, product, product#910527, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910528, productionAspect, productionAspect#910529, salesPlant, salesPlant#910530, listing, listing#910531, sourceOfSupplyCategory, sourceOfSupplyCategory#910532) AS productPlant#910533]
(2061) Project
Arguments: [productPlant#910533]
(2062) Join
Arguments: LeftOuter, ((product#910520 <=> productPlant#910533.product.internalRefUUID) AND (plant#910521 <=> productPlant#910533.plant.internalRefUUID))
(2063) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533]
(2064) LogicalRelation
Arguments: parquet, [systemId#910534, internalUUID#910535, id#910536, displayId#910537, name#910538, baseUnitOfMeasure#910539, unitOfMeasures#910540, unitOfMeasureConversions#910541, productionAspect#910542, salesAspect#910543, procurementAspect#910544, productGroup#910545], false
(2065) Repartition
Arguments: 37, true
(2066) Join
Arguments: LeftOuter, (product#910520 = internalUUID#910535)
(2067) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, systemId#910534, internalUUID#910535, id#910536, displayId#910537, name#910538, baseUnitOfMeasure#910539, unitOfMeasures#910540, unitOfMeasureConversions#910541, productionAspect#910542, salesAspect#910543, procurementAspect#910544, productGroup#910545, filter(unitOfMeasureConversions#910541, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910533.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910533.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910539.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910539.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910546]
(2068) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910546.quantityNumerator), true, [quantityNumerator#910547]
(2069) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, systemId#910534, internalUUID#910535, id#910536, displayId#910537, name#910538, baseUnitOfMeasure#910539, unitOfMeasures#910540, unitOfMeasureConversions#910541, productionAspect#910542, salesAspect#910543, procurementAspect#910544, productGroup#910545, filteredUnitOfMeasureConversions#910546, quantityNumerator#910547]
(2070) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910546.quantityDenominator), true, [quantityDenominator#910548]
(2071) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, systemId#910534, internalUUID#910535, id#910536, displayId#910537, name#910538, baseUnitOfMeasure#910539, unitOfMeasures#910540, unitOfMeasureConversions#910541, productionAspect#910542, salesAspect#910543, procurementAspect#910544, productGroup#910545, filteredUnitOfMeasureConversions#910546, quantityNumerator#910547, quantityDenominator#910548]
(2072) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, systemId#910534, internalUUID#910535, id#910536, displayId#910537, name#910538, baseUnitOfMeasure#910539, unitOfMeasures#910540, unitOfMeasureConversions#910541, productionAspect#910542, salesAspect#910543, procurementAspect#910544, productGroup#910545, filteredUnitOfMeasureConversions#910546, quantityNumerator#910547, quantityDenominator#910548, (cast(quantityNumerator#910547 as double) / cast(quantityDenominator#910548 as double)) AS outboundUnit#910549]
(2073) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, systemId#910534, internalUUID#910535, id#910536, displayId#910537, name#910538, baseUnitOfMeasure#910539, unitOfMeasures#910540, unitOfMeasureConversions#910541, productionAspect#910542, salesAspect#910543, procurementAspect#910544, productGroup#910545, filteredUnitOfMeasureConversions#910546, quantityNumerator#910547, quantityDenominator#910548, CASE WHEN (isnull(outboundUnit#910549) OR (outboundUnit#910549 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910549 END AS outboundUnit#910550]
(2074) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, outboundUnit#910550]
(2075) LogicalRelation
Arguments: parquet, [systemId#910551, internalUUID#910552, product#910553, plant#910554, calculationDateTime#910555, stockQuantities#910556], false
(2076) Repartition
Arguments: 37, true
(2077) LogicalRelation
Arguments: parquet, [marketUnit#910557, description#910558, articleHierarchy#910559, defaultCurrency#910560, responsibilities#910561, replenishmentTypes#910562, distributionCenters#910563, assignedArticleHierarchyNodes#910564, minOrderQtySetting#910565, listingCheck#910566, odsSelection#910567, demandProfiles#910568, constraintProfiles#910569, optimizationProfiles#910570, orderGroupSplitProfiles#910571, supplierMinimumProfiles#910572, multipleRestrictionProfiles#910573, preferredUomSource#910574, handlingOfUnfulfilledDemands#910575, negligibleQuantitiesThreshold#910576, eventtype#910577], false
(2078) Repartition
Arguments: 37, true
(2079) Filter
Arguments: (marketUnit#910557 <=> AUTO_ALL_ProdLoc)
(2080) Project
Arguments: [marketUnit#910557, description#910558, articleHierarchy#910559, defaultCurrency#910560, responsibilities#910561, replenishmentTypes#910562, distributionCenters#910563, assignedArticleHierarchyNodes#910564, minOrderQtySetting#910565, listingCheck#910566, odsSelection#910567, demandProfiles#910568, constraintProfiles#910569, optimizationProfiles#910570, orderGroupSplitProfiles#910571, supplierMinimumProfiles#910572, multipleRestrictionProfiles#910573, preferredUomSource#910574, handlingOfUnfulfilledDemands#910575, negligibleQuantitiesThreshold#910576, eventtype#910577]
(2081) Project
Arguments: [distributionCenters#910563]
(2082) Generate
Arguments: explode(distributionCenters#910563), false, [distributionCenters#910578]
(2083) Project
Arguments: [distributionCenters#910578]
(2084) Generate
Arguments: explode(distributionCenters#910578.storageLocations), false, [storageLocations#910579]
(2085) Project
Arguments: [distributionCenters#910578.id AS plantId#910580, distributionCenters#910578.internalRefUUID AS plantUuid#910581, storageLocations#910579]
(2086) Project
Arguments: [plantId#910580, plantUuid#910581, storageLocations#910579.id AS storageLocId#910582, storageLocations#910579.internalRefUUID AS storageLocUuid#910583]
(2087) LogicalRelation
Arguments: parquet, [product#910584, plant#910585, orderDateTime#910586, planningStartDateTime#910587], false
(2088) RepartitionByExpression
Arguments: [product#910584, plant#910585], 37
(2089) Project
Arguments: [product#910584, plant#910585, orderDateTime#910586]
(2090) LogicalRelation
Arguments: parquet, [systemId#910588, internalUUID#910589, plant#910590, product#910591, blockedForReplenishmentStartingFrom#910592, productionAspect#910593, salesPlant#910594, listing#910595, sourceOfSupplyCategory#910596], false
(2091) Repartition
Arguments: 37, true
(2092) Project
Arguments: [systemId#910588, internalUUID#910589, plant#910590, product#910591, blockedForReplenishmentStartingFrom#910592, productionAspect#910593, salesPlant#910594, listing#910595, sourceOfSupplyCategory#910596, struct(systemId, systemId#910588, internalUUID, internalUUID#910589, plant, plant#910590, product, product#910591, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910592, productionAspect, productionAspect#910593, salesPlant, salesPlant#910594, listing, listing#910595, sourceOfSupplyCategory, sourceOfSupplyCategory#910596) AS productPlant#910597]
(2093) Project
Arguments: [productPlant#910597]
(2094) Join
Arguments: LeftOuter, ((product#910584 <=> productPlant#910597.product.internalRefUUID) AND (plant#910585 <=> productPlant#910597.plant.internalRefUUID))
(2095) Project
Arguments: [product#910584, plant#910585, orderDateTime#910586, productPlant#910597]
(2096) LogicalRelation
Arguments: parquet, [systemId#910598, internalUUID#910599, id#910600, displayId#910601, name#910602, baseUnitOfMeasure#910603, unitOfMeasures#910604, unitOfMeasureConversions#910605, productionAspect#910606, salesAspect#910607, procurementAspect#910608, productGroup#910609], false
(2097) Repartition
Arguments: 37, true
(2098) Join
Arguments: LeftOuter, (product#910584 = internalUUID#910599)
(2099) Project
Arguments: [product#910584, plant#910585, orderDateTime#910586, productPlant#910597, systemId#910598, internalUUID#910599, id#910600, displayId#910601, name#910602, baseUnitOfMeasure#910603, unitOfMeasures#910604, unitOfMeasureConversions#910605, productionAspect#910606, salesAspect#910607, procurementAspect#910608, productGroup#910609, filter(unitOfMeasureConversions#910605, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910597.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910597.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910603.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910603.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910610]
(2100) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910610.quantityNumerator), true, [quantityNumerator#910611]
(2101) Project
Arguments: [product#910584, plant#910585, orderDateTime#910586, productPlant#910597, systemId#910598, internalUUID#910599, id#910600, displayId#910601, name#910602, baseUnitOfMeasure#910603, unitOfMeasures#910604, unitOfMeasureConversions#910605, productionAspect#910606, salesAspect#910607, procurementAspect#910608, productGroup#910609, filteredUnitOfMeasureConversions#910610, quantityNumerator#910611]
(2102) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910610.quantityDenominator), true, [quantityDenominator#910612]
(2103) Project
Arguments: [product#910584, plant#910585, orderDateTime#910586, productPlant#910597, systemId#910598, internalUUID#910599, id#910600, displayId#910601, name#910602, baseUnitOfMeasure#910603, unitOfMeasures#910604, unitOfMeasureConversions#910605, productionAspect#910606, salesAspect#910607, procurementAspect#910608, productGroup#910609, filteredUnitOfMeasureConversions#910610, quantityNumerator#910611, quantityDenominator#910612]
(2104) Project
Arguments: [product#910584, plant#910585, orderDateTime#910586, productPlant#910597, systemId#910598, internalUUID#910599, id#910600, displayId#910601, name#910602, baseUnitOfMeasure#910603, unitOfMeasures#910604, unitOfMeasureConversions#910605, productionAspect#910606, salesAspect#910607, procurementAspect#910608, productGroup#910609, filteredUnitOfMeasureConversions#910610, quantityNumerator#910611, quantityDenominator#910612, (cast(quantityNumerator#910611 as double) / cast(quantityDenominator#910612 as double)) AS outboundUnit#910613]
(2105) Project
Arguments: [product#910584, plant#910585, orderDateTime#910586, productPlant#910597, systemId#910598, internalUUID#910599, id#910600, displayId#910601, name#910602, baseUnitOfMeasure#910603, unitOfMeasures#910604, unitOfMeasureConversions#910605, productionAspect#910606, salesAspect#910607, procurementAspect#910608, productGroup#910609, filteredUnitOfMeasureConversions#910610, quantityNumerator#910611, quantityDenominator#910612, CASE WHEN (isnull(outboundUnit#910613) OR (outboundUnit#910613 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910613 END AS outboundUnit#910614]
(2106) Project
Arguments: [product#910584, plant#910585, orderDateTime#910586, productPlant#910597, outboundUnit#910614]
(2107) Project
Arguments: [plant#910585]
(2108) Deduplicate
Arguments: [plant#910585]
(2109) Join
Arguments: Inner, (plantUuid#910581 = plant#910585)
(2110) Project
Arguments: [plantId#910580, plantUuid#910581, storageLocId#910582, storageLocUuid#910583]
(2111) Join
Arguments: Inner, (plant#910554.internalRefUUID <=> plantUuid#910581)
(2112) Generate
Arguments: explode(filter(stockQuantities#910556, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#910583) AND (lambda x#905594.storageLocation.Id = storageLocId#910582)), lambda x#905594, false))), false, [stockQuantity#910615]
(2113) Project
Arguments: [systemId#910551, internalUUID#910552, product#910553, plant#910554, calculationDateTime#910555, stockQuantities#910556, plantId#910580, plantUuid#910581, storageLocId#910582, storageLocUuid#910583, stockQuantity#910615]
(2114) Aggregate
Arguments: [plantUuid#910581, internalUUID#910552, plant#910554, product#910553, systemId#910551], [plantUuid#910581, internalUUID#910552, plant#910554, product#910553, systemId#910551, first(calculationDateTime#910555, false) AS calculationDateTime#910616, collect_list(stockQuantity#910615, 0, 0) AS stockQuantities#910617]
(2115) Project
Arguments: [systemId#910551, internalUUID#910552, product#910553, plant#910554, calculationDateTime#910616, stockQuantities#910617]
(2116) Generate
Arguments: explode(stockQuantities#910617), false, [stockQuantity#910618]
(2117) Project
Arguments: [systemId#910551, internalUUID#910552, product#910553, plant#910554, calculationDateTime#910616, stockQuantities#910617, stockQuantity#910618]
(2118) Project
Arguments: [plant#910554.id AS plant#910619, plant#910554.internalRefUUID AS plantUuid#910620, product#910553.id AS product#910621, product#910553.internalRefUUID AS productUuid#910622, calculationDateTime#910616, stockQuantity#910618.storagelocation.id AS storageLocId#910623, stockQuantity#910618.storagelocation.internalRefUUID AS storageLocUuid#910624, stockQuantity#910618.quantity.measure AS quantity#910625, stockQuantity#910618.specialStockIndicator.code AS specialStockIndicator#910626, stockQuantity#910618.stockType.code AS stockType#910627]
(2119) Filter
Arguments: ((specialStockIndicator#910626 = ) AND (stockType#910627 = 01))
(2120) LogicalRelation
Arguments: parquet, [product#910628, plant#910629, orderDateTime#910630, planningStartDateTime#910631], false
(2121) RepartitionByExpression
Arguments: [product#910628, plant#910629], 37
(2122) Project
Arguments: [product#910628, plant#910629, orderDateTime#910630]
(2123) LogicalRelation
Arguments: parquet, [systemId#910632, internalUUID#910633, plant#910634, product#910635, blockedForReplenishmentStartingFrom#910636, productionAspect#910637, salesPlant#910638, listing#910639, sourceOfSupplyCategory#910640], false
(2124) Repartition
Arguments: 37, true
(2125) Project
Arguments: [systemId#910632, internalUUID#910633, plant#910634, product#910635, blockedForReplenishmentStartingFrom#910636, productionAspect#910637, salesPlant#910638, listing#910639, sourceOfSupplyCategory#910640, struct(systemId, systemId#910632, internalUUID, internalUUID#910633, plant, plant#910634, product, product#910635, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910636, productionAspect, productionAspect#910637, salesPlant, salesPlant#910638, listing, listing#910639, sourceOfSupplyCategory, sourceOfSupplyCategory#910640) AS productPlant#910641]
(2126) Project
Arguments: [productPlant#910641]
(2127) Join
Arguments: LeftOuter, ((product#910628 <=> productPlant#910641.product.internalRefUUID) AND (plant#910629 <=> productPlant#910641.plant.internalRefUUID))
(2128) Project
Arguments: [product#910628, plant#910629, orderDateTime#910630, productPlant#910641]
(2129) LogicalRelation
Arguments: parquet, [systemId#910642, internalUUID#910643, id#910644, displayId#910645, name#910646, baseUnitOfMeasure#910647, unitOfMeasures#910648, unitOfMeasureConversions#910649, productionAspect#910650, salesAspect#910651, procurementAspect#910652, productGroup#910653], false
(2130) Repartition
Arguments: 37, true
(2131) Join
Arguments: LeftOuter, (product#910628 = internalUUID#910643)
(2132) Project
Arguments: [product#910628, plant#910629, orderDateTime#910630, productPlant#910641, systemId#910642, internalUUID#910643, id#910644, displayId#910645, name#910646, baseUnitOfMeasure#910647, unitOfMeasures#910648, unitOfMeasureConversions#910649, productionAspect#910650, salesAspect#910651, procurementAspect#910652, productGroup#910653, filter(unitOfMeasureConversions#910649, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910641.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910641.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910647.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910647.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910654]
(2133) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910654.quantityNumerator), true, [quantityNumerator#910655]
(2134) Project
Arguments: [product#910628, plant#910629, orderDateTime#910630, productPlant#910641, systemId#910642, internalUUID#910643, id#910644, displayId#910645, name#910646, baseUnitOfMeasure#910647, unitOfMeasures#910648, unitOfMeasureConversions#910649, productionAspect#910650, salesAspect#910651, procurementAspect#910652, productGroup#910653, filteredUnitOfMeasureConversions#910654, quantityNumerator#910655]
(2135) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910654.quantityDenominator), true, [quantityDenominator#910656]
(2136) Project
Arguments: [product#910628, plant#910629, orderDateTime#910630, productPlant#910641, systemId#910642, internalUUID#910643, id#910644, displayId#910645, name#910646, baseUnitOfMeasure#910647, unitOfMeasures#910648, unitOfMeasureConversions#910649, productionAspect#910650, salesAspect#910651, procurementAspect#910652, productGroup#910653, filteredUnitOfMeasureConversions#910654, quantityNumerator#910655, quantityDenominator#910656]
(2137) Project
Arguments: [product#910628, plant#910629, orderDateTime#910630, productPlant#910641, systemId#910642, internalUUID#910643, id#910644, displayId#910645, name#910646, baseUnitOfMeasure#910647, unitOfMeasures#910648, unitOfMeasureConversions#910649, productionAspect#910650, salesAspect#910651, procurementAspect#910652, productGroup#910653, filteredUnitOfMeasureConversions#910654, quantityNumerator#910655, quantityDenominator#910656, (cast(quantityNumerator#910655 as double) / cast(quantityDenominator#910656 as double)) AS outboundUnit#910657]
(2138) Project
Arguments: [product#910628, plant#910629, orderDateTime#910630, productPlant#910641, systemId#910642, internalUUID#910643, id#910644, displayId#910645, name#910646, baseUnitOfMeasure#910647, unitOfMeasures#910648, unitOfMeasureConversions#910649, productionAspect#910650, salesAspect#910651, procurementAspect#910652, productGroup#910653, filteredUnitOfMeasureConversions#910654, quantityNumerator#910655, quantityDenominator#910656, CASE WHEN (isnull(outboundUnit#910657) OR (outboundUnit#910657 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910657 END AS outboundUnit#910658]
(2139) Project
Arguments: [product#910628, plant#910629, orderDateTime#910630, productPlant#910641, outboundUnit#910658]
(2140) Join
Arguments: Inner, ((plantUuid#910620 = plant#910629) AND (productUuid#910622 = product#910628))
(2141) Filter
Arguments: (calculationDateTime#910616 <= orderDateTime#910630)
(2142) Project
Arguments: [plantUuid#910620 AS plant#910659, productUuid#910622 AS product#910660, storageLocId#910623, calculationDateTime#910616, quantity#910625]
(2143) LogicalRelation
Arguments: parquet, [systemId#910661, internalUUID#910662, product#910663, plant#910664, calculationDateTime#910665, stockQuantities#910666], false
(2144) Repartition
Arguments: 37, true
(2145) LogicalRelation
Arguments: parquet, [marketUnit#910667, description#910668, articleHierarchy#910669, defaultCurrency#910670, responsibilities#910671, replenishmentTypes#910672, distributionCenters#910673, assignedArticleHierarchyNodes#910674, minOrderQtySetting#910675, listingCheck#910676, odsSelection#910677, demandProfiles#910678, constraintProfiles#910679, optimizationProfiles#910680, orderGroupSplitProfiles#910681, supplierMinimumProfiles#910682, multipleRestrictionProfiles#910683, preferredUomSource#910684, handlingOfUnfulfilledDemands#910685, negligibleQuantitiesThreshold#910686, eventtype#910687], false
(2146) Repartition
Arguments: 37, true
(2147) Filter
Arguments: (marketUnit#910667 <=> AUTO_ALL_ProdLoc)
(2148) Project
Arguments: [marketUnit#910667, description#910668, articleHierarchy#910669, defaultCurrency#910670, responsibilities#910671, replenishmentTypes#910672, distributionCenters#910673, assignedArticleHierarchyNodes#910674, minOrderQtySetting#910675, listingCheck#910676, odsSelection#910677, demandProfiles#910678, constraintProfiles#910679, optimizationProfiles#910680, orderGroupSplitProfiles#910681, supplierMinimumProfiles#910682, multipleRestrictionProfiles#910683, preferredUomSource#910684, handlingOfUnfulfilledDemands#910685, negligibleQuantitiesThreshold#910686, eventtype#910687]
(2149) Project
Arguments: [distributionCenters#910673]
(2150) Generate
Arguments: explode(distributionCenters#910673), false, [distributionCenters#910688]
(2151) Project
Arguments: [distributionCenters#910688]
(2152) Generate
Arguments: explode(distributionCenters#910688.storageLocations), false, [storageLocations#910689]
(2153) Project
Arguments: [distributionCenters#910688.id AS plantId#910690, distributionCenters#910688.internalRefUUID AS plantUuid#910691, storageLocations#910689]
(2154) Project
Arguments: [plantId#910690, plantUuid#910691, storageLocations#910689.id AS storageLocId#910692, storageLocations#910689.internalRefUUID AS storageLocUuid#910693]
(2155) LogicalRelation
Arguments: parquet, [product#910694, plant#910695, orderDateTime#910696, planningStartDateTime#910697], false
(2156) RepartitionByExpression
Arguments: [product#910694, plant#910695], 37
(2157) Project
Arguments: [product#910694, plant#910695, orderDateTime#910696]
(2158) LogicalRelation
Arguments: parquet, [systemId#910698, internalUUID#910699, plant#910700, product#910701, blockedForReplenishmentStartingFrom#910702, productionAspect#910703, salesPlant#910704, listing#910705, sourceOfSupplyCategory#910706], false
(2159) Repartition
Arguments: 37, true
(2160) Project
Arguments: [systemId#910698, internalUUID#910699, plant#910700, product#910701, blockedForReplenishmentStartingFrom#910702, productionAspect#910703, salesPlant#910704, listing#910705, sourceOfSupplyCategory#910706, struct(systemId, systemId#910698, internalUUID, internalUUID#910699, plant, plant#910700, product, product#910701, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910702, productionAspect, productionAspect#910703, salesPlant, salesPlant#910704, listing, listing#910705, sourceOfSupplyCategory, sourceOfSupplyCategory#910706) AS productPlant#910707]
(2161) Project
Arguments: [productPlant#910707]
(2162) Join
Arguments: LeftOuter, ((product#910694 <=> productPlant#910707.product.internalRefUUID) AND (plant#910695 <=> productPlant#910707.plant.internalRefUUID))
(2163) Project
Arguments: [product#910694, plant#910695, orderDateTime#910696, productPlant#910707]
(2164) LogicalRelation
Arguments: parquet, [systemId#910708, internalUUID#910709, id#910710, displayId#910711, name#910712, baseUnitOfMeasure#910713, unitOfMeasures#910714, unitOfMeasureConversions#910715, productionAspect#910716, salesAspect#910717, procurementAspect#910718, productGroup#910719], false
(2165) Repartition
Arguments: 37, true
(2166) Join
Arguments: LeftOuter, (product#910694 = internalUUID#910709)
(2167) Project
Arguments: [product#910694, plant#910695, orderDateTime#910696, productPlant#910707, systemId#910708, internalUUID#910709, id#910710, displayId#910711, name#910712, baseUnitOfMeasure#910713, unitOfMeasures#910714, unitOfMeasureConversions#910715, productionAspect#910716, salesAspect#910717, procurementAspect#910718, productGroup#910719, filter(unitOfMeasureConversions#910715, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910707.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910707.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910713.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910713.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910720]
(2168) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910720.quantityNumerator), true, [quantityNumerator#910721]
(2169) Project
Arguments: [product#910694, plant#910695, orderDateTime#910696, productPlant#910707, systemId#910708, internalUUID#910709, id#910710, displayId#910711, name#910712, baseUnitOfMeasure#910713, unitOfMeasures#910714, unitOfMeasureConversions#910715, productionAspect#910716, salesAspect#910717, procurementAspect#910718, productGroup#910719, filteredUnitOfMeasureConversions#910720, quantityNumerator#910721]
(2170) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910720.quantityDenominator), true, [quantityDenominator#910722]
(2171) Project
Arguments: [product#910694, plant#910695, orderDateTime#910696, productPlant#910707, systemId#910708, internalUUID#910709, id#910710, displayId#910711, name#910712, baseUnitOfMeasure#910713, unitOfMeasures#910714, unitOfMeasureConversions#910715, productionAspect#910716, salesAspect#910717, procurementAspect#910718, productGroup#910719, filteredUnitOfMeasureConversions#910720, quantityNumerator#910721, quantityDenominator#910722]
(2172) Project
Arguments: [product#910694, plant#910695, orderDateTime#910696, productPlant#910707, systemId#910708, internalUUID#910709, id#910710, displayId#910711, name#910712, baseUnitOfMeasure#910713, unitOfMeasures#910714, unitOfMeasureConversions#910715, productionAspect#910716, salesAspect#910717, procurementAspect#910718, productGroup#910719, filteredUnitOfMeasureConversions#910720, quantityNumerator#910721, quantityDenominator#910722, (cast(quantityNumerator#910721 as double) / cast(quantityDenominator#910722 as double)) AS outboundUnit#910723]
(2173) Project
Arguments: [product#910694, plant#910695, orderDateTime#910696, productPlant#910707, systemId#910708, internalUUID#910709, id#910710, displayId#910711, name#910712, baseUnitOfMeasure#910713, unitOfMeasures#910714, unitOfMeasureConversions#910715, productionAspect#910716, salesAspect#910717, procurementAspect#910718, productGroup#910719, filteredUnitOfMeasureConversions#910720, quantityNumerator#910721, quantityDenominator#910722, CASE WHEN (isnull(outboundUnit#910723) OR (outboundUnit#910723 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910723 END AS outboundUnit#910724]
(2174) Project
Arguments: [product#910694, plant#910695, orderDateTime#910696, productPlant#910707, outboundUnit#910724]
(2175) Project
Arguments: [plant#910695]
(2176) Deduplicate
Arguments: [plant#910695]
(2177) Join
Arguments: Inner, (plantUuid#910691 = plant#910695)
(2178) Project
Arguments: [plantId#910690, plantUuid#910691, storageLocId#910692, storageLocUuid#910693]
(2179) Join
Arguments: Inner, (plant#910664.internalRefUUID <=> plantUuid#910691)
(2180) Generate
Arguments: explode(filter(stockQuantities#910666, lambdafunction(((lambda x#905594.storageLocation.internalRefUuid = storageLocUuid#910693) AND (lambda x#905594.storageLocation.Id = storageLocId#910692)), lambda x#905594, false))), false, [stockQuantity#910725]
(2181) Project
Arguments: [systemId#910661, internalUUID#910662, product#910663, plant#910664, calculationDateTime#910665, stockQuantities#910666, plantId#910690, plantUuid#910691, storageLocId#910692, storageLocUuid#910693, stockQuantity#910725]
(2182) Aggregate
Arguments: [plantUuid#910691, internalUUID#910662, plant#910664, product#910663, systemId#910661], [plantUuid#910691, internalUUID#910662, plant#910664, product#910663, systemId#910661, first(calculationDateTime#910665, false) AS calculationDateTime#910726, collect_list(stockQuantity#910725, 0, 0) AS stockQuantities#910727]
(2183) Project
Arguments: [systemId#910661, internalUUID#910662, product#910663, plant#910664, calculationDateTime#910726, stockQuantities#910727]
(2184) Generate
Arguments: explode(stockQuantities#910727), false, [stockQuantity#910728]
(2185) Project
Arguments: [systemId#910661, internalUUID#910662, product#910663, plant#910664, calculationDateTime#910726, stockQuantities#910727, stockQuantity#910728]
(2186) Project
Arguments: [plant#910664.id AS plant#910729, plant#910664.internalRefUUID AS plantUuid#910730, product#910663.id AS product#910731, product#910663.internalRefUUID AS productUuid#910732, calculationDateTime#910726, stockQuantity#910728.storagelocation.id AS storageLocId#910733, stockQuantity#910728.storagelocation.internalRefUUID AS storageLocUuid#910734, stockQuantity#910728.quantity.measure AS quantity#910735, stockQuantity#910728.specialStockIndicator.code AS specialStockIndicator#910736, stockQuantity#910728.stockType.code AS stockType#910737]
(2187) Filter
Arguments: ((specialStockIndicator#910736 = ) AND (stockType#910737 = 01))
(2188) LogicalRelation
Arguments: parquet, [product#910738, plant#910739, orderDateTime#910740, planningStartDateTime#910741], false
(2189) RepartitionByExpression
Arguments: [product#910738, plant#910739], 37
(2190) Project
Arguments: [product#910738, plant#910739, orderDateTime#910740]
(2191) LogicalRelation
Arguments: parquet, [systemId#910742, internalUUID#910743, plant#910744, product#910745, blockedForReplenishmentStartingFrom#910746, productionAspect#910747, salesPlant#910748, listing#910749, sourceOfSupplyCategory#910750], false
(2192) Repartition
Arguments: 37, true
(2193) Project
Arguments: [systemId#910742, internalUUID#910743, plant#910744, product#910745, blockedForReplenishmentStartingFrom#910746, productionAspect#910747, salesPlant#910748, listing#910749, sourceOfSupplyCategory#910750, struct(systemId, systemId#910742, internalUUID, internalUUID#910743, plant, plant#910744, product, product#910745, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#910746, productionAspect, productionAspect#910747, salesPlant, salesPlant#910748, listing, listing#910749, sourceOfSupplyCategory, sourceOfSupplyCategory#910750) AS productPlant#910751]
(2194) Project
Arguments: [productPlant#910751]
(2195) Join
Arguments: LeftOuter, ((product#910738 <=> productPlant#910751.product.internalRefUUID) AND (plant#910739 <=> productPlant#910751.plant.internalRefUUID))
(2196) Project
Arguments: [product#910738, plant#910739, orderDateTime#910740, productPlant#910751]
(2197) LogicalRelation
Arguments: parquet, [systemId#910752, internalUUID#910753, id#910754, displayId#910755, name#910756, baseUnitOfMeasure#910757, unitOfMeasures#910758, unitOfMeasureConversions#910759, productionAspect#910760, salesAspect#910761, procurementAspect#910762, productGroup#910763], false
(2198) Repartition
Arguments: 37, true
(2199) Join
Arguments: LeftOuter, (product#910738 = internalUUID#910753)
(2200) Project
Arguments: [product#910738, plant#910739, orderDateTime#910740, productPlant#910751, systemId#910752, internalUUID#910753, id#910754, displayId#910755, name#910756, baseUnitOfMeasure#910757, unitOfMeasures#910758, unitOfMeasureConversions#910759, productionAspect#910760, salesAspect#910761, procurementAspect#910762, productGroup#910763, filter(unitOfMeasureConversions#910759, lambdafunction((((lambda u#905464.measurementUnit1.code = productPlant#910751.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#905464.measurementUnit1.internalRefUUID = productPlant#910751.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#905464.measurementUnit2.code = baseUnitOfMeasure#910757.code) AND (lambda u#905464.measurementUnit2.internalRefUUID = baseUnitOfMeasure#910757.internalRefUUID))), lambda u#905464, false)) AS filteredUnitOfMeasureConversions#910764]
(2201) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910764.quantityNumerator), true, [quantityNumerator#910765]
(2202) Project
Arguments: [product#910738, plant#910739, orderDateTime#910740, productPlant#910751, systemId#910752, internalUUID#910753, id#910754, displayId#910755, name#910756, baseUnitOfMeasure#910757, unitOfMeasures#910758, unitOfMeasureConversions#910759, productionAspect#910760, salesAspect#910761, procurementAspect#910762, productGroup#910763, filteredUnitOfMeasureConversions#910764, quantityNumerator#910765]
(2203) Generate
Arguments: explode(filteredUnitOfMeasureConversions#910764.quantityDenominator), true, [quantityDenominator#910766]
(2204) Project
Arguments: [product#910738, plant#910739, orderDateTime#910740, productPlant#910751, systemId#910752, internalUUID#910753, id#910754, displayId#910755, name#910756, baseUnitOfMeasure#910757, unitOfMeasures#910758, unitOfMeasureConversions#910759, productionAspect#910760, salesAspect#910761, procurementAspect#910762, productGroup#910763, filteredUnitOfMeasureConversions#910764, quantityNumerator#910765, quantityDenominator#910766]
(2205) Project
Arguments: [product#910738, plant#910739, orderDateTime#910740, productPlant#910751, systemId#910752, internalUUID#910753, id#910754, displayId#910755, name#910756, baseUnitOfMeasure#910757, unitOfMeasures#910758, unitOfMeasureConversions#910759, productionAspect#910760, salesAspect#910761, procurementAspect#910762, productGroup#910763, filteredUnitOfMeasureConversions#910764, quantityNumerator#910765, quantityDenominator#910766, (cast(quantityNumerator#910765 as double) / cast(quantityDenominator#910766 as double)) AS outboundUnit#910767]
(2206) Project
Arguments: [product#910738, plant#910739, orderDateTime#910740, productPlant#910751, systemId#910752, internalUUID#910753, id#910754, displayId#910755, name#910756, baseUnitOfMeasure#910757, unitOfMeasures#910758, unitOfMeasureConversions#910759, productionAspect#910760, salesAspect#910761, procurementAspect#910762, productGroup#910763, filteredUnitOfMeasureConversions#910764, quantityNumerator#910765, quantityDenominator#910766, CASE WHEN (isnull(outboundUnit#910767) OR (outboundUnit#910767 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#910767 END AS outboundUnit#910768]
(2207) Project
Arguments: [product#910738, plant#910739, orderDateTime#910740, productPlant#910751, outboundUnit#910768]
(2208) Join
Arguments: Inner, ((plantUuid#910730 = plant#910739) AND (productUuid#910732 = product#910738))
(2209) Filter
Arguments: (calculationDateTime#910726 <= orderDateTime#910740)
(2210) Project
Arguments: [plantUuid#910730 AS plant#910769, productUuid#910732 AS product#910770, storageLocId#910733, calculationDateTime#910726, quantity#910735]
(2211) Aggregate
Arguments: [plant#910769, product#910770, storageLocId#910733], [plant#910769, product#910770, storageLocId#910733, max(calculationDateTime#910726) AS max_calc_datetime#910771]
(2212) Join
Arguments: Inner, ((((plant#910659 <=> plant#910769) AND (product#910660 <=> product#910770)) AND (storageLocId#910623 <=> storageLocId#910733)) AND (calculationDateTime#910616 <=> max_calc_datetime#910771))
(2213) Project
Arguments: [plant#910659, product#910660, storageLocId#910623, calculationDateTime#910616, quantity#910625]
(2214) Aggregate
Arguments: [product#910660, plant#910659], [product#910660, plant#910659, sum(quantity#910625) AS quantitySum#910772, min(calculationDateTime#910616) AS minCalculationDateTime#910773]
(2215) Project
Arguments: [product#910660, plant#910659, quantitySum#910772, minCalculationDateTime#910773, round(quantitySum#910772, 0) AS roundedQuantitySum#910774]
(2216) Join
Arguments: LeftOuter, ((plant#910521 = plant#910659) AND (product#910520 = product#910660))
(2217) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, outboundUnit#910550, roundedQuantitySum#910774, minCalculationDateTime#910773]
(2218) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, outboundUnit#910550, roundedQuantitySum#910774, minCalculationDateTime#910773, CASE WHEN isnotnull(minCalculationDateTime#910773) THEN minCalculationDateTime#910773 ELSE orderDateTime#910522 END AS stockDatetime#910775]
(2219) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, outboundUnit#910550, roundedQuantitySum#910774, minCalculationDateTime#910773, stockDatetime#910775, CASE WHEN isnotnull(roundedQuantitySum#910774) THEN array(roundedQuantitySum#910774) ELSE array(0.0) END AS stockBatchQuantities#910776]
(2220) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, outboundUnit#910550, roundedQuantitySum#910774, minCalculationDateTime#910773, stockDatetime#910775, stockBatchQuantities#910776, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#910777]
(2221) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, outboundUnit#910550, roundedQuantitySum#910774, stockDatetime#910775, stockBatchQuantities#910776, stockBatchShelfLifeEndDatetimes#910777]
(2222) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, outboundUnit#910550, stockDatetime#910775, stockBatchQuantities#910776, stockBatchShelfLifeEndDatetimes#910777]
(2223) LogicalRelation
Arguments: parquet, [product#910778, plant#910779, demandChannel#910780, demandStream#910781, considerVariance#910782, demandTimeBuckets#910783, demandPointInTimeStart#910784, demandPointInTimeEnd#910785, demandPointInTime#910786], false
(2224) Join
Arguments: LeftOuter, ((plant#910779 <=> plant#910521) AND (product#910778 <=> product#910520))
(2225) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, outboundUnit#910550, stockDatetime#910775, stockBatchQuantities#910776, stockBatchShelfLifeEndDatetimes#910777, product#910778, plant#910779, demandChannel#910780, demandStream#910781, considerVariance#910782, demandTimeBuckets#910783, demandPointInTimeStart#910784, demandPointInTimeEnd#910785, demandPointInTime#910786, CASE WHEN isnotnull(product#910778) THEN struct(demandChannel, demandChannel#910780, demandStream, demandStream#910781, considerVariance, considerVariance#910782, demandTimeBuckets, demandTimeBuckets#910783, demandPointInTimeStart, demandPointInTimeStart#910784, demandPointInTimeEnd, demandPointInTimeEnd#910785, demandPointInTime, demandPointInTime#910786) 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#910787]
(2226) Aggregate
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, outboundUnit#910550, stockDatetime#910775, stockBatchQuantities#910776, stockBatchShelfLifeEndDatetimes#910777], [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, outboundUnit#910550, stockDatetime#910775, stockBatchQuantities#910776, stockBatchShelfLifeEndDatetimes#910777, collect_list(rawDemands#910787, 0, 0) AS rawDemands#910788]
(2227) SubqueryAlias
Arguments: wl
(2228) LogicalRelation
Arguments: parquet, [systemId#910789, internalUUID#910790, id#910791, displayId#910792, name#910793, category#910794, companyCode#910795, address#910796, mainDistributionChain#910797, mainPurchasingOrganization#910798, validPurchasingOrganizations#910799, productGroup#910800], false
(2229) Repartition
Arguments: 37, true
(2230) Project
Arguments: [systemId#910789, internalUUID#910790, id#910791, displayId#910792, name#910793, category#910794, companyCode#910795, address#910796, mainDistributionChain#910797, mainPurchasingOrganization#910798, validPurchasingOrganizations#910799, productGroup#910800, address#910796.timezone.code AS timezonecode#910801]
(2231) Join
Arguments: LeftOuter, (plant#910521 <=> internalUUID#910790)
(2232) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, outboundUnit#910550, stockDatetime#910775, stockBatchQuantities#910776, stockBatchShelfLifeEndDatetimes#910777, rawDemands#910788, systemId#910789, internalUUID#910790, id#910791, displayId#910792, name#910793, category#910794, companyCode#910795, address#910796, mainDistributionChain#910797, mainPurchasingOrganization#910798, validPurchasingOrganizations#910799, productGroup#910800, CASE WHEN isnotnull(timezonecode#910801) THEN timezonecode#910801 ELSE UTC END AS timezonecode#910802]
(2233) Project
Arguments: [product#910520, plant#910521, orderDateTime#910522, productPlant#910533, outboundUnit#910550, stockDatetime#910775, stockBatchQuantities#910776, stockBatchShelfLifeEndDatetimes#910777, rawDemands#910788, timezonecode#910802]
(2234) DeserializeToObject
Arguments: createexternalrow(invoke(product#910520.toString()), invoke(plant#910521.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#910522)), if (isnull(productPlant#910533)) null else createexternalrow(invoke(productPlant#910533.systemId.toString()), invoke(productPlant#910533.internalUUID.toString()), if (isnull(productPlant#910533.plant)) null else createexternalrow(invoke(productPlant#910533.plant.internalRefUUID.toString()), invoke(productPlant#910533.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#910533.product)) null else createexternalrow(invoke(productPlant#910533.product.internalRefUUID.toString()), invoke(productPlant#910533.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#910533.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#910533.productionAspect)) null else createexternalrow(if (isnull(productPlant#910533.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#910533.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#910533.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#910533.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#910533.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#910533.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#910533.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#910533.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#910533.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#910533.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#910533.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#910533.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#910533.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#910533.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#910533.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#910533.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#910533.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#910533.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#910533.salesPlant)) null else createexternalrow(if (isnull(productPlant#910533.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#910533.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#910533.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, 71540), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71540).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#910533.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#910533.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#910533.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#910533.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#910550)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#910775)), mapobjects(lambdavariable(MapObject, DoubleType, true, 71541), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 71541) as double))), stockBatchQuantities#910776, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 71542), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 71542) as timestamp)))), stockBatchShelfLifeEndDatetimes#910777, 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, 71543), 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, 71543))) 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, 71543).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, 71543).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, 71543).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71544).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, 71543).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, 71543).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, 71543).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 71545).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, 71543).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#910788, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#910802.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#906942: org.apache.spark.sql.Row
(2235) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@4013ddf1, 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#906947: org.apache.spark.sql.Row
(2236) 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#910803, 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#910804, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71531), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71531), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71532), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71532), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71533), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71533), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71534), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71534), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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, 71530), 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, 71530), 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, 71530), 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, 71535), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71535), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71530), 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#910805, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71537), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71537), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71538), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71538), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71539), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71539), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71536), 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, 71536), 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, 71536), 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, 71536), 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, 71536), 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#910806]
(2237) Join
Arguments: LeftOuter, ((plant#910804 <=> plant#910263) AND (product#910803 <=> product#910262))
(2238) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, outboundUnit#910292, stockDatetime#910517, stockBatchQuantities#910518, stockBatchShelfLifeEndDatetimes#910519, plant#910804, dayBucketDemands#910805, pointInTimeDemands#910806]
(2239) Project
Arguments: [product#910262, plant#910263, orderDateTime#910264, productPlant#910275, outboundUnit#910292, stockDatetime#910517, stockBatchQuantities#910518, stockBatchShelfLifeEndDatetimes#910519, dayBucketDemands#910805, pointInTimeDemands#910806]
(2240) LocalRelation
Arguments: <empty>, [systemId#910807, internalUUID#910808, id#910809, isMarkedForDeletion#910810, supplier#910811, status#910812, items#910813]
(2241) Generate
Arguments: explode(items#910813), false, [item#910814]
(2242) Project
Arguments: [id#910809, internalUUID#910808, isMarkedForDeletion#910810, supplier#910811.internalRefUUID AS supplierUuid#910815, item#910814]
(2243) Filter
Arguments: (((NOT isMarkedForDeletion#910810 AND NOT item#910814.deletionIndicator) AND NOT item#910814.completeIndicator) AND NOT item#910814.returnIndicator)
(2244) Project
Arguments: [id#910809, internalUUID#910808, supplierUuid#910815, item#910814.plant.internalRefUUID AS plant#910816, item#910814.product.internalRefUUID AS product#910817, item#910814.storageLocation.internalRefUUID AS storageLocUuid#910818, item#910814.quantityUnit.code AS quantityUom#910819, item#910814.quantityUnit.internalRefUUID AS quantityUomUuid#910820, item#910814.quantityNumerator AS quantityNumerator#910821, item#910814.quantityDenominator AS quantityDenominator#910822, item#910814.scheduleLines AS scheduleLines#910823, item#910814.confirmations AS confirmations#910824]
(2245) Join
Arguments: Inner, ((product#910262 <=> product#910817) AND (plant#910263 <=> supplierUuid#910815))
(2246) Project
Arguments: [id#910809, internalUUID#910808, supplierUuid#910815, plant#910816, product#910817, storageLocUuid#910818, quantityUom#910819, quantityUomUuid#910820, quantityNumerator#910821, quantityDenominator#910822, scheduleLines#910823, confirmations#910824, stockDatetime#910517, plant#910263]
(2247) Project
Arguments: [id#910809, internalUUID#910808, supplierUuid#910815, product#910817, storageLocUuid#910818, quantityUom#910819, quantityUomUuid#910820, quantityNumerator#910821, quantityDenominator#910822, scheduleLines#910823, confirmations#910824, stockDatetime#910517, plant#910263]
(2248) Project
Arguments: [id#910809, internalUUID#910808, supplierUuid#910815, product#910817, storageLocUuid#910818, quantityUom#910819, quantityUomUuid#910820, quantityNumerator#910821, quantityDenominator#910822, scheduleLines#910823, confirmations#910824, stockDatetime#910517, plant#910263, filter(transform(filter(transform(scheduleLines#910823, lambdafunction(struct(openQty, (greatest((lambda x_134#907388.quantity - coalesce(lambda x_134#907388.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_134#907388.productAvailabilityDateTime, lambda x_134#907388.deliveryAt)), lambda x_134#907388, false)), lambdafunction((lambda x_135#907389.availabilityDatetime < stockDatetime#910517), lambda x_135#907389, false)), lambdafunction(struct(documentId, id#910809, documentUuid, internalUUID#910808, openQty, lambda x_136#907390.openQty, openQtyInBaseUnit, ((lambda x_136#907390.openQty * quantityNumerator#910821) / quantityDenominator#910822), qtyUom, quantityUom#910819, qtyUomUuid, quantityUomUuid#910820, availabilityDatetime, lambda x_136#907390.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_136#907390, false)), lambdafunction(NOT (lambda x_137#907391.openQty = 0.0), lambda x_137#907391, false)) AS openGoodsMovements#910825]
(2249) Aggregate
Arguments: [product#910817, plant#910263], [product#910817, plant#910263, flatten(collect_list(openGoodsMovements#910825, 0, 0)) AS openGoodsMovements#910826]
(2250) Filter
Arguments: (array_size(openGoodsMovements#910826) > 0)
(2251) Union
Arguments: false, false
(2252) Aggregate
Arguments: [product#910250, plant#910249], [product#910250, plant#910249, flatten(collect_list(openGoodsMovements#910261, 0, 0)) AS openGoodsMovements#910827]
(2253) Join
Arguments: LeftOuter, ((product#909091 = product#910250) AND (plant#909092 = plant#910249))
(2254) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, stockBatchShelfLifeEndDatetimes#909348, dayBucketDemands#909634, pointInTimeDemands#909635, openGoodsMovements#910827]
(2255) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, stockBatchShelfLifeEndDatetimes#909348, dayBucketDemands#909634, pointInTimeDemands#909635, coalesce(openGoodsMovements#910827.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#910828, coalesce(openGoodsMovements#910827.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#910829, coalesce(openGoodsMovements#910827.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#910830]
(2256) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, stockBatchShelfLifeEndDatetimes#909348, dayBucketDemands#909634, pointInTimeDemands#909635, openGoodsMovementQuantities#910828, openGoodsMovementAvailabilityDatetimes#910829, openGoodsMovementShelfLifeEndDatetimes#910830, 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#910831]
(2257) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, stockBatchShelfLifeEndDatetimes#909348, dayBucketDemands#909634, pointInTimeDemands#909635, openGoodsMovementQuantities#910828, openGoodsMovementAvailabilityDatetimes#910829, openGoodsMovementShelfLifeEndDatetimes#910830, configuration#910831, productPlant#909104.listing AS listing#909033]
(2258) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, stockBatchShelfLifeEndDatetimes#909348, dayBucketDemands#909634, pointInTimeDemands#909635, openGoodsMovementQuantities#910828, openGoodsMovementAvailabilityDatetimes#910829, openGoodsMovementShelfLifeEndDatetimes#910830, configuration#910831, CASE WHEN isnotnull(listing#909033) THEN listing#909033 ELSE cast(array() as array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>) END AS listing#909035]
(2259) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, stockBatchShelfLifeEndDatetimes#909348, dayBucketDemands#909634, pointInTimeDemands#909635, openGoodsMovementQuantities#910828, openGoodsMovementAvailabilityDatetimes#910829, openGoodsMovementShelfLifeEndDatetimes#910830, configuration#910831, filter(listing#909035, lambdafunction((lambda listing#909037.isListed = true), lambda listing#909037, false)) AS listing#909036]
(2260) Project
Arguments: [product#909091, plant#909092, orderDateTime#909093, productPlant#909104, outboundUnit#909121, stockDatetime#909346, stockBatchQuantities#909347, stockBatchShelfLifeEndDatetimes#909348, dayBucketDemands#909634, pointInTimeDemands#909635, openGoodsMovementQuantities#910828, openGoodsMovementAvailabilityDatetimes#910829, openGoodsMovementShelfLifeEndDatetimes#910830, configuration#910831, array_sort(listing#909036, lambdafunction(if ((isnull(lambda left#909039) AND isnull(lambda right#909040))) 0 else if (isnull(lambda left#909039)) 1 else if (isnull(lambda right#909040)) -1 else if ((lambda left#909039 < lambda right#909040)) -1 else if ((lambda left#909039 > lambda right#909040)) 1 else 0, lambda left#909039, lambda right#909040, false), false) AS listing#909038]
(2261) DeserializeToObject
Arguments: createexternalrow(invoke(product#909091.toString()), invoke(plant#909092.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#909093)), if (isnull(productPlant#909104)) null else createexternalrow(invoke(productPlant#909104.systemId.toString()), invoke(productPlant#909104.internalUUID.toString()), if (isnull(productPlant#909104.plant)) null else createexternalrow(invoke(productPlant#909104.plant.internalRefUUID.toString()), invoke(productPlant#909104.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#909104.product)) null else createexternalrow(invoke(productPlant#909104.product.internalRefUUID.toString()), invoke(productPlant#909104.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#909104.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#909104.productionAspect)) null else createexternalrow(if (isnull(productPlant#909104.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#909104.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#909104.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#909104.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#909104.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#909104.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#909104.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#909104.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#909104.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#909104.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#909104.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#909104.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#909104.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#909104.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#909104.salesPlant)) null else createexternalrow(if (isnull(productPlant#909104.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#909104.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#909104.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, 71725), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71725))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71725).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71725).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71725).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#909104.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#909104.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#909104.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#909104.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#909121)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#909346)), mapobjects(lambdavariable(MapObject, DoubleType, true, 71726), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 71726) as double))), stockBatchQuantities#909347, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 71727), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 71727) as timestamp)))), stockBatchShelfLifeEndDatetimes#909348, 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, 71728), 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, 71728))) 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, 71728).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, 71728).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, 71728).considerVariance)), mapobjects(lambdavariable(MapObject, DoubleType, false, 71729), assertnotnull(static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, false, 71729) 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, 71728).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 71730), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 71730) 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, 71728).demandVariances, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 71731), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 71731) 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, 71728).anchorDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StringType, false, 71732), assertnotnull(invoke(cast(lambdavariable(MapObject, StringType, false, 71732) 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, 71728).anchorWeekdays, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, IntegerType, false, 71733), assertnotnull(static_invoke(java.lang.Integer.valueOf(cast(lambdavariable(MapObject, IntegerType, false, 71733) 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, 71728).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#909634, 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, 71734), 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, 71734))) 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, 71734).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, 71734).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, 71734).considerVariance)), mapobjects(lambdavariable(MapObject, TimestampType, false, 71735), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 71735) 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, 71734).demandDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, false, 71736), assertnotnull(static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, false, 71736) 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, 71734).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 71737), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 71737) 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, 71734).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, 71734).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, 71734).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#909635, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 71738), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 71738) as double))), openGoodsMovementQuantities#910828, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, 71739), static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, true, 71739) as timestamp))), openGoodsMovementAvailabilityDatetimes#910829, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 71740), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 71740) as timestamp)))), openGoodsMovementShelfLifeEndDatetimes#910830, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 71741), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 71741))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 71741).configurationValidityDatetime)), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 71741).configurationName.toString()), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 71741).configurationValue.toString()), StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false))), configuration#910831, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71742), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71742))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71742).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71742).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 71742).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), listing#909038, 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#909071: org.apache.spark.sql.Row
(2262) 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#909078: org.apache.spark.sql.Row
(2263) 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#909085, 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#909086, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71721), static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71721), 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#909087, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71722), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71722), 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#909088, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71723), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71723), 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#909089, 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, 71724), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 71724), 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#909090]
(2264) Join
Arguments: LeftOuter, ((product#905388 = product#909085) AND (plant#905389 = plant#909086))
(2265) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, configuration#908894, timeDependentSettingsName#909087, timeDependentSettingsStartDatetime#909088, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
(2266) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, configuration#908894, CASE WHEN isnotnull(timeDependentSettingsName#909087) THEN timeDependentSettingsName#909087 ELSE cast(array() as array<string>) END AS timeDependentSettingsName#910956, timeDependentSettingsStartDatetime#909088, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
(2267) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, configuration#908894, timeDependentSettingsName#910956, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#909088) THEN timeDependentSettingsStartDatetime#909088 ELSE cast(array() as array<timestamp>) END AS timeDependentSettingsStartDatetime#910957, timeDependentSettingsEndDatetime#909089, timeDependentSettingsValue#909090]
(2268) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, configuration#908894, timeDependentSettingsName#910956, timeDependentSettingsStartDatetime#910957, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#909089) THEN timeDependentSettingsEndDatetime#909089 ELSE cast(array() as array<timestamp>) END AS timeDependentSettingsEndDatetime#910958, timeDependentSettingsValue#909090]
(2269) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, productPlant#905425, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, configuration#908894, timeDependentSettingsName#910956, timeDependentSettingsStartDatetime#910957, timeDependentSettingsEndDatetime#910958, CASE WHEN isnotnull(timeDependentSettingsValue#909090) THEN timeDependentSettingsValue#909090 ELSE cast(array() as array<double>) END AS timeDependentSettingsValue#910959]
(2270) Project
Arguments: [product#905388, plant#905389, orderDateTime#905390, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, configuration#908894, timeDependentSettingsName#910956, timeDependentSettingsStartDatetime#910957, timeDependentSettingsEndDatetime#910958, timeDependentSettingsValue#910959]
(2271) Project
Arguments: [product#905388, plant#905389, outboundUnit#905476, stockDatetime#905836, stockBatchQuantities#905837, stockBatchShelfLifeEndDatetimes#905838, dayBucketDemands#906954, pointInTimeDemands#906955, openGoodsMovementQuantities#908601, openGoodsMovementAvailabilityDatetimes#908602, openGoodsMovementShelfLifeEndDatetimes#908603, configuration#908894, timeDependentSettingsName#910956, timeDependentSettingsStartDatetime#910957, timeDependentSettingsEndDatetime#910958, timeDependentSettingsValue#910959]