== 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@28bb4ff5, [path=hdlfs://ced12e6d-bca7-47af-9525-449cba9023d7.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-quantity-kpi-service/internal/data-snapshot/10000000350/0_1_10000000350], Overwrite
(3) LogicalRelation
Arguments: parquet, [product#1101131, plant#1101132, orderDateTime#1101133, planningStartDateTime#1101134], false
(4) RepartitionByExpression
Arguments: [product#1101131, plant#1101132], 37
(5) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133]
(6) LogicalRelation
Arguments: parquet, [systemId#1101158, internalUUID#1101159, plant#1101160, product#1101161, blockedForReplenishmentStartingFrom#1101162, productionAspect#1101163, salesPlant#1101164, listing#1101165, sourceOfSupplyCategory#1101166], false
(7) Repartition
Arguments: 37, true
(8) Project
Arguments: [systemId#1101158, internalUUID#1101159, plant#1101160, product#1101161, blockedForReplenishmentStartingFrom#1101162, productionAspect#1101163, salesPlant#1101164, listing#1101165, sourceOfSupplyCategory#1101166, struct(systemId, systemId#1101158, internalUUID, internalUUID#1101159, plant, plant#1101160, product, product#1101161, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1101162, productionAspect, productionAspect#1101163, salesPlant, salesPlant#1101164, listing, listing#1101165, sourceOfSupplyCategory, sourceOfSupplyCategory#1101166) AS productPlant#1101168]
(9) Project
Arguments: [productPlant#1101168]
(10) Join
Arguments: LeftOuter, ((product#1101131 <=> productPlant#1101168.product.internalRefUUID) AND (plant#1101132 <=> productPlant#1101168.plant.internalRefUUID))
(11) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168]
(12) LogicalRelation
Arguments: parquet, [systemId#1101193, internalUUID#1101194, id#1101195, displayId#1101196, name#1101197, baseUnitOfMeasure#1101198, unitOfMeasures#1101199, unitOfMeasureConversions#1101200, productionAspect#1101201, salesAspect#1101202, procurementAspect#1101203, productGroup#1101204], false
(13) Repartition
Arguments: 37, true
(14) Join
Arguments: LeftOuter, (product#1101131 = internalUUID#1101194)
(15) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, systemId#1101193, internalUUID#1101194, id#1101195, displayId#1101196, name#1101197, baseUnitOfMeasure#1101198, unitOfMeasures#1101199, unitOfMeasureConversions#1101200, productionAspect#1101201, salesAspect#1101202, procurementAspect#1101203, productGroup#1101204, filter(unitOfMeasureConversions#1101200, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1101168.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1101168.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101198.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101198.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101206]
(16) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1101206.quantityNumerator), true, [quantityNumerator#1101214]
(17) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, systemId#1101193, internalUUID#1101194, id#1101195, displayId#1101196, name#1101197, baseUnitOfMeasure#1101198, unitOfMeasures#1101199, unitOfMeasureConversions#1101200, productionAspect#1101201, salesAspect#1101202, procurementAspect#1101203, productGroup#1101204, filteredUnitOfMeasureConversions#1101206, quantityNumerator#1101214]
(18) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1101206.quantityDenominator), true, [quantityDenominator#1101217]
(19) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, systemId#1101193, internalUUID#1101194, id#1101195, displayId#1101196, name#1101197, baseUnitOfMeasure#1101198, unitOfMeasures#1101199, unitOfMeasureConversions#1101200, productionAspect#1101201, salesAspect#1101202, procurementAspect#1101203, productGroup#1101204, filteredUnitOfMeasureConversions#1101206, quantityNumerator#1101214, quantityDenominator#1101217]
(20) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, systemId#1101193, internalUUID#1101194, id#1101195, displayId#1101196, name#1101197, baseUnitOfMeasure#1101198, unitOfMeasures#1101199, unitOfMeasureConversions#1101200, productionAspect#1101201, salesAspect#1101202, procurementAspect#1101203, productGroup#1101204, filteredUnitOfMeasureConversions#1101206, quantityNumerator#1101214, quantityDenominator#1101217, (cast(quantityNumerator#1101214 as double) / cast(quantityDenominator#1101217 as double)) AS outboundUnit#1101218]
(21) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, systemId#1101193, internalUUID#1101194, id#1101195, displayId#1101196, name#1101197, baseUnitOfMeasure#1101198, unitOfMeasures#1101199, unitOfMeasureConversions#1101200, productionAspect#1101201, salesAspect#1101202, procurementAspect#1101203, productGroup#1101204, filteredUnitOfMeasureConversions#1101206, quantityNumerator#1101214, quantityDenominator#1101217, CASE WHEN (isnull(outboundUnit#1101218) OR (outboundUnit#1101218 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1101218 END AS outboundUnit#1101219]
(22) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219]
(23) LogicalRelation
Arguments: parquet, [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333], false
(24) Repartition
Arguments: 37, true
(25) LogicalRelation
Arguments: parquet, [marketUnit#1101271, description#1101272, articleHierarchy#1101273, defaultCurrency#1101274, responsibilities#1101275, replenishmentTypes#1101276, distributionCenters#1101277, assignedArticleHierarchyNodes#1101278, minOrderQtySetting#1101279, listingCheck#1101280, odsSelection#1101281, demandProfiles#1101282, constraintProfiles#1101283, optimizationProfiles#1101284, orderGroupSplitProfiles#1101285, supplierMinimumProfiles#1101286, multipleRestrictionProfiles#1101287, preferredUomSource#1101288, handlingOfUnfulfilledDemands#1101289, negligibleQuantitiesThreshold#1101290, eventtype#1101291], false
(26) Repartition
Arguments: 37, true
(27) Filter
Arguments: (marketUnit#1101271 <=> AUTO_ALL_ProdLoc)
(28) Project
Arguments: [marketUnit#1101271, description#1101272, articleHierarchy#1101273, defaultCurrency#1101274, responsibilities#1101275, replenishmentTypes#1101276, distributionCenters#1101277, assignedArticleHierarchyNodes#1101278, minOrderQtySetting#1101279, listingCheck#1101280, odsSelection#1101281, demandProfiles#1101282, constraintProfiles#1101283, optimizationProfiles#1101284, orderGroupSplitProfiles#1101285, supplierMinimumProfiles#1101286, multipleRestrictionProfiles#1101287, preferredUomSource#1101288, handlingOfUnfulfilledDemands#1101289, negligibleQuantitiesThreshold#1101290, eventtype#1101291]
(29) Project
Arguments: [distributionCenters#1101277]
(30) Generate
Arguments: explode(distributionCenters#1101277), false, [distributionCenters#1101294]
(31) Project
Arguments: [distributionCenters#1101294]
(32) Generate
Arguments: explode(distributionCenters#1101294.storageLocations), false, [storageLocations#1101301]
(33) Project
Arguments: [distributionCenters#1101294.id AS plantId#1101295, distributionCenters#1101294.internalRefUUID AS plantUuid#1101296, storageLocations#1101301]
(34) Project
Arguments: [plantId#1101295, plantUuid#1101296, storageLocations#1101301.id AS storageLocId#1101302, storageLocations#1101301.internalRefUUID AS storageLocUuid#1101303]
(35) LogicalRelation
Arguments: parquet, [product#1101545, plant#1101546, orderDateTime#1101547, planningStartDateTime#1101548], false
(36) RepartitionByExpression
Arguments: [product#1101545, plant#1101546], 37
(37) Project
Arguments: [product#1101545, plant#1101546, orderDateTime#1101547]
(38) LogicalRelation
Arguments: parquet, [systemId#1101549, internalUUID#1101550, plant#1101551, product#1101552, blockedForReplenishmentStartingFrom#1101553, productionAspect#1101554, salesPlant#1101555, listing#1101556, sourceOfSupplyCategory#1101557], false
(39) Repartition
Arguments: 37, true
(40) Project
Arguments: [systemId#1101549, internalUUID#1101550, plant#1101551, product#1101552, blockedForReplenishmentStartingFrom#1101553, productionAspect#1101554, salesPlant#1101555, listing#1101556, sourceOfSupplyCategory#1101557, struct(systemId, systemId#1101549, internalUUID, internalUUID#1101550, plant, plant#1101551, product, product#1101552, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1101553, productionAspect, productionAspect#1101554, salesPlant, salesPlant#1101555, listing, listing#1101556, sourceOfSupplyCategory, sourceOfSupplyCategory#1101557) AS productPlant#1101558]
(41) Project
Arguments: [productPlant#1101558]
(42) Join
Arguments: LeftOuter, ((product#1101545 <=> productPlant#1101558.product.internalRefUUID) AND (plant#1101546 <=> productPlant#1101558.plant.internalRefUUID))
(43) Project
Arguments: [product#1101545, plant#1101546, orderDateTime#1101547, productPlant#1101558]
(44) LogicalRelation
Arguments: parquet, [systemId#1101559, internalUUID#1101560, id#1101561, displayId#1101562, name#1101563, baseUnitOfMeasure#1101564, unitOfMeasures#1101565, unitOfMeasureConversions#1101566, productionAspect#1101567, salesAspect#1101568, procurementAspect#1101569, productGroup#1101570], false
(45) Repartition
Arguments: 37, true
(46) Join
Arguments: LeftOuter, (product#1101545 = internalUUID#1101560)
(47) Project
Arguments: [product#1101545, plant#1101546, orderDateTime#1101547, productPlant#1101558, systemId#1101559, internalUUID#1101560, id#1101561, displayId#1101562, name#1101563, baseUnitOfMeasure#1101564, unitOfMeasures#1101565, unitOfMeasureConversions#1101566, productionAspect#1101567, salesAspect#1101568, procurementAspect#1101569, productGroup#1101570, filter(unitOfMeasureConversions#1101566, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1101558.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1101558.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101564.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101564.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101571]
(48) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1101571.quantityNumerator), true, [quantityNumerator#1101572]
(49) Project
Arguments: [product#1101545, plant#1101546, orderDateTime#1101547, productPlant#1101558, systemId#1101559, internalUUID#1101560, id#1101561, displayId#1101562, name#1101563, baseUnitOfMeasure#1101564, unitOfMeasures#1101565, unitOfMeasureConversions#1101566, productionAspect#1101567, salesAspect#1101568, procurementAspect#1101569, productGroup#1101570, filteredUnitOfMeasureConversions#1101571, quantityNumerator#1101572]
(50) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1101571.quantityDenominator), true, [quantityDenominator#1101573]
(51) Project
Arguments: [product#1101545, plant#1101546, orderDateTime#1101547, productPlant#1101558, systemId#1101559, internalUUID#1101560, id#1101561, displayId#1101562, name#1101563, baseUnitOfMeasure#1101564, unitOfMeasures#1101565, unitOfMeasureConversions#1101566, productionAspect#1101567, salesAspect#1101568, procurementAspect#1101569, productGroup#1101570, filteredUnitOfMeasureConversions#1101571, quantityNumerator#1101572, quantityDenominator#1101573]
(52) Project
Arguments: [product#1101545, plant#1101546, orderDateTime#1101547, productPlant#1101558, systemId#1101559, internalUUID#1101560, id#1101561, displayId#1101562, name#1101563, baseUnitOfMeasure#1101564, unitOfMeasures#1101565, unitOfMeasureConversions#1101566, productionAspect#1101567, salesAspect#1101568, procurementAspect#1101569, productGroup#1101570, filteredUnitOfMeasureConversions#1101571, quantityNumerator#1101572, quantityDenominator#1101573, (cast(quantityNumerator#1101572 as double) / cast(quantityDenominator#1101573 as double)) AS outboundUnit#1101574]
(53) Project
Arguments: [product#1101545, plant#1101546, orderDateTime#1101547, productPlant#1101558, systemId#1101559, internalUUID#1101560, id#1101561, displayId#1101562, name#1101563, baseUnitOfMeasure#1101564, unitOfMeasures#1101565, unitOfMeasureConversions#1101566, productionAspect#1101567, salesAspect#1101568, procurementAspect#1101569, productGroup#1101570, filteredUnitOfMeasureConversions#1101571, quantityNumerator#1101572, quantityDenominator#1101573, CASE WHEN (isnull(outboundUnit#1101574) OR (outboundUnit#1101574 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1101574 END AS outboundUnit#1101575]
(54) Project
Arguments: [product#1101545, plant#1101546, orderDateTime#1101547, productPlant#1101558, outboundUnit#1101575]
(55) Project
Arguments: [plant#1101546]
(56) Deduplicate
Arguments: [plant#1101546]
(57) Join
Arguments: Inner, (plantUuid#1101296 = plant#1101546)
(58) Project
Arguments: [plantId#1101295, plantUuid#1101296, storageLocId#1101302, storageLocUuid#1101303]
(59) Join
Arguments: Inner, (plant#1101331.internalRefUUID <=> plantUuid#1101296)
(60) Generate
Arguments: explode(filter(stockQuantities#1101333, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1101303) AND (lambda x#1101337.storageLocation.Id = storageLocId#1101302)), lambda x#1101337, false))), false, [stockQuantity#1101338]
(61) Project
Arguments: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101332, stockQuantities#1101333, plantId#1101295, plantUuid#1101296, storageLocId#1101302, storageLocUuid#1101303, stockQuantity#1101338]
(62) Aggregate
Arguments: [plantUuid#1101296, internalUUID#1101329, plant#1101331, product#1101330, systemId#1101328], [plantUuid#1101296, internalUUID#1101329, plant#1101331, product#1101330, systemId#1101328, first(calculationDateTime#1101332, false) AS calculationDateTime#1101339, collect_list(stockQuantity#1101338, 0, 0) AS stockQuantities#1101340]
(63) Project
Arguments: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101339, stockQuantities#1101340]
(64) Generate
Arguments: explode(stockQuantities#1101340), false, [stockQuantity#1101355]
(65) Project
Arguments: [systemId#1101328, internalUUID#1101329, product#1101330, plant#1101331, calculationDateTime#1101339, stockQuantities#1101340, stockQuantity#1101355]
(66) Project
Arguments: [plant#1101331.id AS plant#1101356, plant#1101331.internalRefUUID AS plantUuid#1101357, product#1101330.id AS product#1101358, product#1101330.internalRefUUID AS productUuid#1101359, calculationDateTime#1101339, stockQuantity#1101355.storagelocation.id AS storageLocId#1101360, stockQuantity#1101355.storagelocation.internalRefUUID AS storageLocUuid#1101361, stockQuantity#1101355.quantity.measure AS quantity#1101362, stockQuantity#1101355.specialStockIndicator.code AS specialStockIndicator#1101363, stockQuantity#1101355.stockType.code AS stockType#1101364]
(67) Filter
Arguments: ((specialStockIndicator#1101363 = ) AND (stockType#1101364 = 01))
(68) LogicalRelation
Arguments: parquet, [product#1101374, plant#1101375, orderDateTime#1101376, planningStartDateTime#1101377], false
(69) RepartitionByExpression
Arguments: [product#1101374, plant#1101375], 37
(70) Project
Arguments: [product#1101374, plant#1101375, orderDateTime#1101376]
(71) LogicalRelation
Arguments: parquet, [systemId#1101378, internalUUID#1101379, plant#1101380, product#1101381, blockedForReplenishmentStartingFrom#1101382, productionAspect#1101383, salesPlant#1101384, listing#1101385, sourceOfSupplyCategory#1101386], false
(72) Repartition
Arguments: 37, true
(73) Project
Arguments: [systemId#1101378, internalUUID#1101379, plant#1101380, product#1101381, blockedForReplenishmentStartingFrom#1101382, productionAspect#1101383, salesPlant#1101384, listing#1101385, sourceOfSupplyCategory#1101386, struct(systemId, systemId#1101378, internalUUID, internalUUID#1101379, plant, plant#1101380, product, product#1101381, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1101382, productionAspect, productionAspect#1101383, salesPlant, salesPlant#1101384, listing, listing#1101385, sourceOfSupplyCategory, sourceOfSupplyCategory#1101386) AS productPlant#1101387]
(74) Project
Arguments: [productPlant#1101387]
(75) Join
Arguments: LeftOuter, ((product#1101374 <=> productPlant#1101387.product.internalRefUUID) AND (plant#1101375 <=> productPlant#1101387.plant.internalRefUUID))
(76) Project
Arguments: [product#1101374, plant#1101375, orderDateTime#1101376, productPlant#1101387]
(77) LogicalRelation
Arguments: parquet, [systemId#1101388, internalUUID#1101389, id#1101390, displayId#1101391, name#1101392, baseUnitOfMeasure#1101393, unitOfMeasures#1101394, unitOfMeasureConversions#1101395, productionAspect#1101396, salesAspect#1101397, procurementAspect#1101398, productGroup#1101399], false
(78) Repartition
Arguments: 37, true
(79) Join
Arguments: LeftOuter, (product#1101374 = internalUUID#1101389)
(80) Project
Arguments: [product#1101374, plant#1101375, orderDateTime#1101376, productPlant#1101387, systemId#1101388, internalUUID#1101389, id#1101390, displayId#1101391, name#1101392, baseUnitOfMeasure#1101393, unitOfMeasures#1101394, unitOfMeasureConversions#1101395, productionAspect#1101396, salesAspect#1101397, procurementAspect#1101398, productGroup#1101399, filter(unitOfMeasureConversions#1101395, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1101387.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1101387.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101393.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101393.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101400]
(81) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1101400.quantityNumerator), true, [quantityNumerator#1101401]
(82) Project
Arguments: [product#1101374, plant#1101375, orderDateTime#1101376, productPlant#1101387, systemId#1101388, internalUUID#1101389, id#1101390, displayId#1101391, name#1101392, baseUnitOfMeasure#1101393, unitOfMeasures#1101394, unitOfMeasureConversions#1101395, productionAspect#1101396, salesAspect#1101397, procurementAspect#1101398, productGroup#1101399, filteredUnitOfMeasureConversions#1101400, quantityNumerator#1101401]
(83) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1101400.quantityDenominator), true, [quantityDenominator#1101402]
(84) Project
Arguments: [product#1101374, plant#1101375, orderDateTime#1101376, productPlant#1101387, systemId#1101388, internalUUID#1101389, id#1101390, displayId#1101391, name#1101392, baseUnitOfMeasure#1101393, unitOfMeasures#1101394, unitOfMeasureConversions#1101395, productionAspect#1101396, salesAspect#1101397, procurementAspect#1101398, productGroup#1101399, filteredUnitOfMeasureConversions#1101400, quantityNumerator#1101401, quantityDenominator#1101402]
(85) Project
Arguments: [product#1101374, plant#1101375, orderDateTime#1101376, productPlant#1101387, systemId#1101388, internalUUID#1101389, id#1101390, displayId#1101391, name#1101392, baseUnitOfMeasure#1101393, unitOfMeasures#1101394, unitOfMeasureConversions#1101395, productionAspect#1101396, salesAspect#1101397, procurementAspect#1101398, productGroup#1101399, filteredUnitOfMeasureConversions#1101400, quantityNumerator#1101401, quantityDenominator#1101402, (cast(quantityNumerator#1101401 as double) / cast(quantityDenominator#1101402 as double)) AS outboundUnit#1101403]
(86) Project
Arguments: [product#1101374, plant#1101375, orderDateTime#1101376, productPlant#1101387, systemId#1101388, internalUUID#1101389, id#1101390, displayId#1101391, name#1101392, baseUnitOfMeasure#1101393, unitOfMeasures#1101394, unitOfMeasureConversions#1101395, productionAspect#1101396, salesAspect#1101397, procurementAspect#1101398, productGroup#1101399, filteredUnitOfMeasureConversions#1101400, quantityNumerator#1101401, quantityDenominator#1101402, CASE WHEN (isnull(outboundUnit#1101403) OR (outboundUnit#1101403 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1101403 END AS outboundUnit#1101404]
(87) Project
Arguments: [product#1101374, plant#1101375, orderDateTime#1101376, productPlant#1101387, outboundUnit#1101404]
(88) Join
Arguments: Inner, ((plantUuid#1101357 = plant#1101375) AND (productUuid#1101359 = product#1101374))
(89) Filter
Arguments: (calculationDateTime#1101339 <= orderDateTime#1101376)
(90) Project
Arguments: [plantUuid#1101357 AS plant#1101408, productUuid#1101359 AS product#1101409, storageLocId#1101360, calculationDateTime#1101339, quantity#1101362]
(91) LogicalRelation
Arguments: parquet, [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, stockQuantities#1101422], false
(92) Repartition
Arguments: 37, true
(93) LogicalRelation
Arguments: parquet, [marketUnit#1101423, description#1101424, articleHierarchy#1101425, defaultCurrency#1101426, responsibilities#1101427, replenishmentTypes#1101428, distributionCenters#1101429, assignedArticleHierarchyNodes#1101430, minOrderQtySetting#1101431, listingCheck#1101432, odsSelection#1101433, demandProfiles#1101434, constraintProfiles#1101435, optimizationProfiles#1101436, orderGroupSplitProfiles#1101437, supplierMinimumProfiles#1101438, multipleRestrictionProfiles#1101439, preferredUomSource#1101440, handlingOfUnfulfilledDemands#1101441, negligibleQuantitiesThreshold#1101442, eventtype#1101443], false
(94) Repartition
Arguments: 37, true
(95) Filter
Arguments: (marketUnit#1101423 <=> AUTO_ALL_ProdLoc)
(96) Project
Arguments: [marketUnit#1101423, description#1101424, articleHierarchy#1101425, defaultCurrency#1101426, responsibilities#1101427, replenishmentTypes#1101428, distributionCenters#1101429, assignedArticleHierarchyNodes#1101430, minOrderQtySetting#1101431, listingCheck#1101432, odsSelection#1101433, demandProfiles#1101434, constraintProfiles#1101435, optimizationProfiles#1101436, orderGroupSplitProfiles#1101437, supplierMinimumProfiles#1101438, multipleRestrictionProfiles#1101439, preferredUomSource#1101440, handlingOfUnfulfilledDemands#1101441, negligibleQuantitiesThreshold#1101442, eventtype#1101443]
(97) Project
Arguments: [distributionCenters#1101429]
(98) Generate
Arguments: explode(distributionCenters#1101429), false, [distributionCenters#1101444]
(99) Project
Arguments: [distributionCenters#1101444]
(100) Generate
Arguments: explode(distributionCenters#1101444.storageLocations), false, [storageLocations#1101445]
(101) Project
Arguments: [distributionCenters#1101444.id AS plantId#1101446, distributionCenters#1101444.internalRefUUID AS plantUuid#1101447, storageLocations#1101445]
(102) Project
Arguments: [plantId#1101446, plantUuid#1101447, storageLocations#1101445.id AS storageLocId#1101448, storageLocations#1101445.internalRefUUID AS storageLocUuid#1101449]
(103) LogicalRelation
Arguments: parquet, [product#1101450, plant#1101451, orderDateTime#1101452, planningStartDateTime#1101453], false
(104) RepartitionByExpression
Arguments: [product#1101450, plant#1101451], 37
(105) Project
Arguments: [product#1101450, plant#1101451, orderDateTime#1101452]
(106) LogicalRelation
Arguments: parquet, [systemId#1101454, internalUUID#1101455, plant#1101456, product#1101457, blockedForReplenishmentStartingFrom#1101458, productionAspect#1101459, salesPlant#1101460, listing#1101461, sourceOfSupplyCategory#1101462], false
(107) Repartition
Arguments: 37, true
(108) Project
Arguments: [systemId#1101454, internalUUID#1101455, plant#1101456, product#1101457, blockedForReplenishmentStartingFrom#1101458, productionAspect#1101459, salesPlant#1101460, listing#1101461, sourceOfSupplyCategory#1101462, struct(systemId, systemId#1101454, internalUUID, internalUUID#1101455, plant, plant#1101456, product, product#1101457, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1101458, productionAspect, productionAspect#1101459, salesPlant, salesPlant#1101460, listing, listing#1101461, sourceOfSupplyCategory, sourceOfSupplyCategory#1101462) AS productPlant#1101463]
(109) Project
Arguments: [productPlant#1101463]
(110) Join
Arguments: LeftOuter, ((product#1101450 <=> productPlant#1101463.product.internalRefUUID) AND (plant#1101451 <=> productPlant#1101463.plant.internalRefUUID))
(111) Project
Arguments: [product#1101450, plant#1101451, orderDateTime#1101452, productPlant#1101463]
(112) LogicalRelation
Arguments: parquet, [systemId#1101464, internalUUID#1101465, id#1101466, displayId#1101467, name#1101468, baseUnitOfMeasure#1101469, unitOfMeasures#1101470, unitOfMeasureConversions#1101471, productionAspect#1101472, salesAspect#1101473, procurementAspect#1101474, productGroup#1101475], false
(113) Repartition
Arguments: 37, true
(114) Join
Arguments: LeftOuter, (product#1101450 = internalUUID#1101465)
(115) Project
Arguments: [product#1101450, plant#1101451, orderDateTime#1101452, productPlant#1101463, systemId#1101464, internalUUID#1101465, id#1101466, displayId#1101467, name#1101468, baseUnitOfMeasure#1101469, unitOfMeasures#1101470, unitOfMeasureConversions#1101471, productionAspect#1101472, salesAspect#1101473, procurementAspect#1101474, productGroup#1101475, filter(unitOfMeasureConversions#1101471, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1101463.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1101463.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101469.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101469.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101476]
(116) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1101476.quantityNumerator), true, [quantityNumerator#1101477]
(117) Project
Arguments: [product#1101450, plant#1101451, orderDateTime#1101452, productPlant#1101463, systemId#1101464, internalUUID#1101465, id#1101466, displayId#1101467, name#1101468, baseUnitOfMeasure#1101469, unitOfMeasures#1101470, unitOfMeasureConversions#1101471, productionAspect#1101472, salesAspect#1101473, procurementAspect#1101474, productGroup#1101475, filteredUnitOfMeasureConversions#1101476, quantityNumerator#1101477]
(118) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1101476.quantityDenominator), true, [quantityDenominator#1101478]
(119) Project
Arguments: [product#1101450, plant#1101451, orderDateTime#1101452, productPlant#1101463, systemId#1101464, internalUUID#1101465, id#1101466, displayId#1101467, name#1101468, baseUnitOfMeasure#1101469, unitOfMeasures#1101470, unitOfMeasureConversions#1101471, productionAspect#1101472, salesAspect#1101473, procurementAspect#1101474, productGroup#1101475, filteredUnitOfMeasureConversions#1101476, quantityNumerator#1101477, quantityDenominator#1101478]
(120) Project
Arguments: [product#1101450, plant#1101451, orderDateTime#1101452, productPlant#1101463, systemId#1101464, internalUUID#1101465, id#1101466, displayId#1101467, name#1101468, baseUnitOfMeasure#1101469, unitOfMeasures#1101470, unitOfMeasureConversions#1101471, productionAspect#1101472, salesAspect#1101473, procurementAspect#1101474, productGroup#1101475, filteredUnitOfMeasureConversions#1101476, quantityNumerator#1101477, quantityDenominator#1101478, (cast(quantityNumerator#1101477 as double) / cast(quantityDenominator#1101478 as double)) AS outboundUnit#1101479]
(121) Project
Arguments: [product#1101450, plant#1101451, orderDateTime#1101452, productPlant#1101463, systemId#1101464, internalUUID#1101465, id#1101466, displayId#1101467, name#1101468, baseUnitOfMeasure#1101469, unitOfMeasures#1101470, unitOfMeasureConversions#1101471, productionAspect#1101472, salesAspect#1101473, procurementAspect#1101474, productGroup#1101475, filteredUnitOfMeasureConversions#1101476, quantityNumerator#1101477, quantityDenominator#1101478, CASE WHEN (isnull(outboundUnit#1101479) OR (outboundUnit#1101479 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1101479 END AS outboundUnit#1101480]
(122) Project
Arguments: [product#1101450, plant#1101451, orderDateTime#1101452, productPlant#1101463, outboundUnit#1101480]
(123) Project
Arguments: [plant#1101451]
(124) Deduplicate
Arguments: [plant#1101451]
(125) Join
Arguments: Inner, (plantUuid#1101447 = plant#1101451)
(126) Project
Arguments: [plantId#1101446, plantUuid#1101447, storageLocId#1101448, storageLocUuid#1101449]
(127) Join
Arguments: Inner, (plant#1101420.internalRefUUID <=> plantUuid#1101447)
(128) Generate
Arguments: explode(filter(stockQuantities#1101422, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1101449) AND (lambda x#1101337.storageLocation.Id = storageLocId#1101448)), lambda x#1101337, false))), false, [stockQuantity#1101481]
(129) Project
Arguments: [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101421, stockQuantities#1101422, plantId#1101446, plantUuid#1101447, storageLocId#1101448, storageLocUuid#1101449, stockQuantity#1101481]
(130) Aggregate
Arguments: [plantUuid#1101447, internalUUID#1101418, plant#1101420, product#1101419, systemId#1101417], [plantUuid#1101447, internalUUID#1101418, plant#1101420, product#1101419, systemId#1101417, first(calculationDateTime#1101421, false) AS calculationDateTime#1101482, collect_list(stockQuantity#1101481, 0, 0) AS stockQuantities#1101483]
(131) Project
Arguments: [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101482, stockQuantities#1101483]
(132) Generate
Arguments: explode(stockQuantities#1101483), false, [stockQuantity#1101484]
(133) Project
Arguments: [systemId#1101417, internalUUID#1101418, product#1101419, plant#1101420, calculationDateTime#1101482, stockQuantities#1101483, stockQuantity#1101484]
(134) Project
Arguments: [plant#1101420.id AS plant#1101485, plant#1101420.internalRefUUID AS plantUuid#1101486, product#1101419.id AS product#1101487, product#1101419.internalRefUUID AS productUuid#1101488, calculationDateTime#1101482, stockQuantity#1101484.storagelocation.id AS storageLocId#1101489, stockQuantity#1101484.storagelocation.internalRefUUID AS storageLocUuid#1101490, stockQuantity#1101484.quantity.measure AS quantity#1101491, stockQuantity#1101484.specialStockIndicator.code AS specialStockIndicator#1101492, stockQuantity#1101484.stockType.code AS stockType#1101493]
(135) Filter
Arguments: ((specialStockIndicator#1101492 = ) AND (stockType#1101493 = 01))
(136) LogicalRelation
Arguments: parquet, [product#1101494, plant#1101495, orderDateTime#1101496, planningStartDateTime#1101497], false
(137) RepartitionByExpression
Arguments: [product#1101494, plant#1101495], 37
(138) Project
Arguments: [product#1101494, plant#1101495, orderDateTime#1101496]
(139) LogicalRelation
Arguments: parquet, [systemId#1101498, internalUUID#1101499, plant#1101500, product#1101501, blockedForReplenishmentStartingFrom#1101502, productionAspect#1101503, salesPlant#1101504, listing#1101505, sourceOfSupplyCategory#1101506], false
(140) Repartition
Arguments: 37, true
(141) Project
Arguments: [systemId#1101498, internalUUID#1101499, plant#1101500, product#1101501, blockedForReplenishmentStartingFrom#1101502, productionAspect#1101503, salesPlant#1101504, listing#1101505, sourceOfSupplyCategory#1101506, struct(systemId, systemId#1101498, internalUUID, internalUUID#1101499, plant, plant#1101500, product, product#1101501, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1101502, productionAspect, productionAspect#1101503, salesPlant, salesPlant#1101504, listing, listing#1101505, sourceOfSupplyCategory, sourceOfSupplyCategory#1101506) AS productPlant#1101507]
(142) Project
Arguments: [productPlant#1101507]
(143) Join
Arguments: LeftOuter, ((product#1101494 <=> productPlant#1101507.product.internalRefUUID) AND (plant#1101495 <=> productPlant#1101507.plant.internalRefUUID))
(144) Project
Arguments: [product#1101494, plant#1101495, orderDateTime#1101496, productPlant#1101507]
(145) LogicalRelation
Arguments: parquet, [systemId#1101508, internalUUID#1101509, id#1101510, displayId#1101511, name#1101512, baseUnitOfMeasure#1101513, unitOfMeasures#1101514, unitOfMeasureConversions#1101515, productionAspect#1101516, salesAspect#1101517, procurementAspect#1101518, productGroup#1101519], false
(146) Repartition
Arguments: 37, true
(147) Join
Arguments: LeftOuter, (product#1101494 = internalUUID#1101509)
(148) Project
Arguments: [product#1101494, plant#1101495, orderDateTime#1101496, productPlant#1101507, systemId#1101508, internalUUID#1101509, id#1101510, displayId#1101511, name#1101512, baseUnitOfMeasure#1101513, unitOfMeasures#1101514, unitOfMeasureConversions#1101515, productionAspect#1101516, salesAspect#1101517, procurementAspect#1101518, productGroup#1101519, filter(unitOfMeasureConversions#1101515, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1101507.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1101507.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1101513.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1101513.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1101520]
(149) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1101520.quantityNumerator), true, [quantityNumerator#1101521]
(150) Project
Arguments: [product#1101494, plant#1101495, orderDateTime#1101496, productPlant#1101507, systemId#1101508, internalUUID#1101509, id#1101510, displayId#1101511, name#1101512, baseUnitOfMeasure#1101513, unitOfMeasures#1101514, unitOfMeasureConversions#1101515, productionAspect#1101516, salesAspect#1101517, procurementAspect#1101518, productGroup#1101519, filteredUnitOfMeasureConversions#1101520, quantityNumerator#1101521]
(151) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1101520.quantityDenominator), true, [quantityDenominator#1101522]
(152) Project
Arguments: [product#1101494, plant#1101495, orderDateTime#1101496, productPlant#1101507, systemId#1101508, internalUUID#1101509, id#1101510, displayId#1101511, name#1101512, baseUnitOfMeasure#1101513, unitOfMeasures#1101514, unitOfMeasureConversions#1101515, productionAspect#1101516, salesAspect#1101517, procurementAspect#1101518, productGroup#1101519, filteredUnitOfMeasureConversions#1101520, quantityNumerator#1101521, quantityDenominator#1101522]
(153) Project
Arguments: [product#1101494, plant#1101495, orderDateTime#1101496, productPlant#1101507, systemId#1101508, internalUUID#1101509, id#1101510, displayId#1101511, name#1101512, baseUnitOfMeasure#1101513, unitOfMeasures#1101514, unitOfMeasureConversions#1101515, productionAspect#1101516, salesAspect#1101517, procurementAspect#1101518, productGroup#1101519, filteredUnitOfMeasureConversions#1101520, quantityNumerator#1101521, quantityDenominator#1101522, (cast(quantityNumerator#1101521 as double) / cast(quantityDenominator#1101522 as double)) AS outboundUnit#1101523]
(154) Project
Arguments: [product#1101494, plant#1101495, orderDateTime#1101496, productPlant#1101507, systemId#1101508, internalUUID#1101509, id#1101510, displayId#1101511, name#1101512, baseUnitOfMeasure#1101513, unitOfMeasures#1101514, unitOfMeasureConversions#1101515, productionAspect#1101516, salesAspect#1101517, procurementAspect#1101518, productGroup#1101519, filteredUnitOfMeasureConversions#1101520, quantityNumerator#1101521, quantityDenominator#1101522, CASE WHEN (isnull(outboundUnit#1101523) OR (outboundUnit#1101523 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1101523 END AS outboundUnit#1101524]
(155) Project
Arguments: [product#1101494, plant#1101495, orderDateTime#1101496, productPlant#1101507, outboundUnit#1101524]
(156) Join
Arguments: Inner, ((plantUuid#1101486 = plant#1101495) AND (productUuid#1101488 = product#1101494))
(157) Filter
Arguments: (calculationDateTime#1101482 <= orderDateTime#1101496)
(158) Project
Arguments: [plantUuid#1101486 AS plant#1101525, productUuid#1101488 AS product#1101526, storageLocId#1101489, calculationDateTime#1101482, quantity#1101491]
(159) Aggregate
Arguments: [plant#1101525, product#1101526, storageLocId#1101489], [plant#1101525, product#1101526, storageLocId#1101489, max(calculationDateTime#1101482) AS max_calc_datetime#1101410]
(160) Join
Arguments: Inner, ((((plant#1101408 <=> plant#1101525) AND (product#1101409 <=> product#1101526)) AND (storageLocId#1101360 <=> storageLocId#1101489)) AND (calculationDateTime#1101339 <=> max_calc_datetime#1101410))
(161) Project
Arguments: [plant#1101408, product#1101409, storageLocId#1101360, calculationDateTime#1101339, quantity#1101362]
(162) Aggregate
Arguments: [product#1101409, plant#1101408], [product#1101409, plant#1101408, sum(quantity#1101362) AS quantitySum#1101535, min(calculationDateTime#1101339) AS minCalculationDateTime#1101536]
(163) Project
Arguments: [product#1101409, plant#1101408, quantitySum#1101535, minCalculationDateTime#1101536, round(quantitySum#1101535, 0) AS roundedQuantitySum#1101544]
(164) Join
Arguments: LeftOuter, ((plant#1101132 = plant#1101408) AND (product#1101131 = product#1101409))
(165) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, roundedQuantitySum#1101544, minCalculationDateTime#1101536]
(166) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, roundedQuantitySum#1101544, minCalculationDateTime#1101536, CASE WHEN isnotnull(minCalculationDateTime#1101536) THEN minCalculationDateTime#1101536 ELSE orderDateTime#1101133 END AS stockDatetime#1101579]
(167) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, roundedQuantitySum#1101544, minCalculationDateTime#1101536, stockDatetime#1101579, CASE WHEN isnotnull(roundedQuantitySum#1101544) THEN array(roundedQuantitySum#1101544) ELSE array(0.0) END AS stockBatchQuantities#1101580]
(168) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, roundedQuantitySum#1101544, minCalculationDateTime#1101536, stockDatetime#1101579, stockBatchQuantities#1101580, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1101581]
(169) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, roundedQuantitySum#1101544, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581]
(170) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581]
(171) LogicalRelation
Arguments: parquet, [product#1102699, plant#1102700, orderDateTime#1102701, planningStartDateTime#1102702], false
(172) RepartitionByExpression
Arguments: [product#1102699, plant#1102700], 37
(173) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701]
(174) LogicalRelation
Arguments: parquet, [systemId#1102703, internalUUID#1102704, plant#1102705, product#1102706, blockedForReplenishmentStartingFrom#1102707, productionAspect#1102708, salesPlant#1102709, listing#1102710, sourceOfSupplyCategory#1102711], false
(175) Repartition
Arguments: 37, true
(176) Project
Arguments: [systemId#1102703, internalUUID#1102704, plant#1102705, product#1102706, blockedForReplenishmentStartingFrom#1102707, productionAspect#1102708, salesPlant#1102709, listing#1102710, sourceOfSupplyCategory#1102711, struct(systemId, systemId#1102703, internalUUID, internalUUID#1102704, plant, plant#1102705, product, product#1102706, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1102707, productionAspect, productionAspect#1102708, salesPlant, salesPlant#1102709, listing, listing#1102710, sourceOfSupplyCategory, sourceOfSupplyCategory#1102711) AS productPlant#1102712]
(177) Project
Arguments: [productPlant#1102712]
(178) Join
Arguments: LeftOuter, ((product#1102699 <=> productPlant#1102712.product.internalRefUUID) AND (plant#1102700 <=> productPlant#1102712.plant.internalRefUUID))
(179) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712]
(180) LogicalRelation
Arguments: parquet, [systemId#1102713, internalUUID#1102714, id#1102715, displayId#1102716, name#1102717, baseUnitOfMeasure#1102718, unitOfMeasures#1102719, unitOfMeasureConversions#1102720, productionAspect#1102721, salesAspect#1102722, procurementAspect#1102723, productGroup#1102724], false
(181) Repartition
Arguments: 37, true
(182) Join
Arguments: LeftOuter, (product#1102699 = internalUUID#1102714)
(183) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, systemId#1102713, internalUUID#1102714, id#1102715, displayId#1102716, name#1102717, baseUnitOfMeasure#1102718, unitOfMeasures#1102719, unitOfMeasureConversions#1102720, productionAspect#1102721, salesAspect#1102722, procurementAspect#1102723, productGroup#1102724, filter(unitOfMeasureConversions#1102720, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1102712.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1102712.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1102718.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1102718.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1102725]
(184) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1102725.quantityNumerator), true, [quantityNumerator#1102726]
(185) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, systemId#1102713, internalUUID#1102714, id#1102715, displayId#1102716, name#1102717, baseUnitOfMeasure#1102718, unitOfMeasures#1102719, unitOfMeasureConversions#1102720, productionAspect#1102721, salesAspect#1102722, procurementAspect#1102723, productGroup#1102724, filteredUnitOfMeasureConversions#1102725, quantityNumerator#1102726]
(186) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1102725.quantityDenominator), true, [quantityDenominator#1102727]
(187) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, systemId#1102713, internalUUID#1102714, id#1102715, displayId#1102716, name#1102717, baseUnitOfMeasure#1102718, unitOfMeasures#1102719, unitOfMeasureConversions#1102720, productionAspect#1102721, salesAspect#1102722, procurementAspect#1102723, productGroup#1102724, filteredUnitOfMeasureConversions#1102725, quantityNumerator#1102726, quantityDenominator#1102727]
(188) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, systemId#1102713, internalUUID#1102714, id#1102715, displayId#1102716, name#1102717, baseUnitOfMeasure#1102718, unitOfMeasures#1102719, unitOfMeasureConversions#1102720, productionAspect#1102721, salesAspect#1102722, procurementAspect#1102723, productGroup#1102724, filteredUnitOfMeasureConversions#1102725, quantityNumerator#1102726, quantityDenominator#1102727, (cast(quantityNumerator#1102726 as double) / cast(quantityDenominator#1102727 as double)) AS outboundUnit#1102728]
(189) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, systemId#1102713, internalUUID#1102714, id#1102715, displayId#1102716, name#1102717, baseUnitOfMeasure#1102718, unitOfMeasures#1102719, unitOfMeasureConversions#1102720, productionAspect#1102721, salesAspect#1102722, procurementAspect#1102723, productGroup#1102724, filteredUnitOfMeasureConversions#1102725, quantityNumerator#1102726, quantityDenominator#1102727, CASE WHEN (isnull(outboundUnit#1102728) OR (outboundUnit#1102728 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1102728 END AS outboundUnit#1102729]
(190) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729]
(191) LogicalRelation
Arguments: parquet, [systemId#1102730, internalUUID#1102731, product#1102732, plant#1102733, calculationDateTime#1102734, stockQuantities#1102735], false
(192) Repartition
Arguments: 37, true
(193) LogicalRelation
Arguments: parquet, [marketUnit#1102736, description#1102737, articleHierarchy#1102738, defaultCurrency#1102739, responsibilities#1102740, replenishmentTypes#1102741, distributionCenters#1102742, assignedArticleHierarchyNodes#1102743, minOrderQtySetting#1102744, listingCheck#1102745, odsSelection#1102746, demandProfiles#1102747, constraintProfiles#1102748, optimizationProfiles#1102749, orderGroupSplitProfiles#1102750, supplierMinimumProfiles#1102751, multipleRestrictionProfiles#1102752, preferredUomSource#1102753, handlingOfUnfulfilledDemands#1102754, negligibleQuantitiesThreshold#1102755, eventtype#1102756], false
(194) Repartition
Arguments: 37, true
(195) Filter
Arguments: (marketUnit#1102736 <=> AUTO_ALL_ProdLoc)
(196) Project
Arguments: [marketUnit#1102736, description#1102737, articleHierarchy#1102738, defaultCurrency#1102739, responsibilities#1102740, replenishmentTypes#1102741, distributionCenters#1102742, assignedArticleHierarchyNodes#1102743, minOrderQtySetting#1102744, listingCheck#1102745, odsSelection#1102746, demandProfiles#1102747, constraintProfiles#1102748, optimizationProfiles#1102749, orderGroupSplitProfiles#1102750, supplierMinimumProfiles#1102751, multipleRestrictionProfiles#1102752, preferredUomSource#1102753, handlingOfUnfulfilledDemands#1102754, negligibleQuantitiesThreshold#1102755, eventtype#1102756]
(197) Project
Arguments: [distributionCenters#1102742]
(198) Generate
Arguments: explode(distributionCenters#1102742), false, [distributionCenters#1102757]
(199) Project
Arguments: [distributionCenters#1102757]
(200) Generate
Arguments: explode(distributionCenters#1102757.storageLocations), false, [storageLocations#1102758]
(201) Project
Arguments: [distributionCenters#1102757.id AS plantId#1102759, distributionCenters#1102757.internalRefUUID AS plantUuid#1102760, storageLocations#1102758]
(202) Project
Arguments: [plantId#1102759, plantUuid#1102760, storageLocations#1102758.id AS storageLocId#1102761, storageLocations#1102758.internalRefUUID AS storageLocUuid#1102762]
(203) LogicalRelation
Arguments: parquet, [product#1102763, plant#1102764, orderDateTime#1102765, planningStartDateTime#1102766], false
(204) RepartitionByExpression
Arguments: [product#1102763, plant#1102764], 37
(205) Project
Arguments: [product#1102763, plant#1102764, orderDateTime#1102765]
(206) LogicalRelation
Arguments: parquet, [systemId#1102767, internalUUID#1102768, plant#1102769, product#1102770, blockedForReplenishmentStartingFrom#1102771, productionAspect#1102772, salesPlant#1102773, listing#1102774, sourceOfSupplyCategory#1102775], false
(207) Repartition
Arguments: 37, true
(208) Project
Arguments: [systemId#1102767, internalUUID#1102768, plant#1102769, product#1102770, blockedForReplenishmentStartingFrom#1102771, productionAspect#1102772, salesPlant#1102773, listing#1102774, sourceOfSupplyCategory#1102775, struct(systemId, systemId#1102767, internalUUID, internalUUID#1102768, plant, plant#1102769, product, product#1102770, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1102771, productionAspect, productionAspect#1102772, salesPlant, salesPlant#1102773, listing, listing#1102774, sourceOfSupplyCategory, sourceOfSupplyCategory#1102775) AS productPlant#1102776]
(209) Project
Arguments: [productPlant#1102776]
(210) Join
Arguments: LeftOuter, ((product#1102763 <=> productPlant#1102776.product.internalRefUUID) AND (plant#1102764 <=> productPlant#1102776.plant.internalRefUUID))
(211) Project
Arguments: [product#1102763, plant#1102764, orderDateTime#1102765, productPlant#1102776]
(212) LogicalRelation
Arguments: parquet, [systemId#1102777, internalUUID#1102778, id#1102779, displayId#1102780, name#1102781, baseUnitOfMeasure#1102782, unitOfMeasures#1102783, unitOfMeasureConversions#1102784, productionAspect#1102785, salesAspect#1102786, procurementAspect#1102787, productGroup#1102788], false
(213) Repartition
Arguments: 37, true
(214) Join
Arguments: LeftOuter, (product#1102763 = internalUUID#1102778)
(215) Project
Arguments: [product#1102763, plant#1102764, orderDateTime#1102765, productPlant#1102776, systemId#1102777, internalUUID#1102778, id#1102779, displayId#1102780, name#1102781, baseUnitOfMeasure#1102782, unitOfMeasures#1102783, unitOfMeasureConversions#1102784, productionAspect#1102785, salesAspect#1102786, procurementAspect#1102787, productGroup#1102788, filter(unitOfMeasureConversions#1102784, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1102776.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1102776.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1102782.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1102782.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1102789]
(216) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1102789.quantityNumerator), true, [quantityNumerator#1102790]
(217) Project
Arguments: [product#1102763, plant#1102764, orderDateTime#1102765, productPlant#1102776, systemId#1102777, internalUUID#1102778, id#1102779, displayId#1102780, name#1102781, baseUnitOfMeasure#1102782, unitOfMeasures#1102783, unitOfMeasureConversions#1102784, productionAspect#1102785, salesAspect#1102786, procurementAspect#1102787, productGroup#1102788, filteredUnitOfMeasureConversions#1102789, quantityNumerator#1102790]
(218) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1102789.quantityDenominator), true, [quantityDenominator#1102791]
(219) Project
Arguments: [product#1102763, plant#1102764, orderDateTime#1102765, productPlant#1102776, systemId#1102777, internalUUID#1102778, id#1102779, displayId#1102780, name#1102781, baseUnitOfMeasure#1102782, unitOfMeasures#1102783, unitOfMeasureConversions#1102784, productionAspect#1102785, salesAspect#1102786, procurementAspect#1102787, productGroup#1102788, filteredUnitOfMeasureConversions#1102789, quantityNumerator#1102790, quantityDenominator#1102791]
(220) Project
Arguments: [product#1102763, plant#1102764, orderDateTime#1102765, productPlant#1102776, systemId#1102777, internalUUID#1102778, id#1102779, displayId#1102780, name#1102781, baseUnitOfMeasure#1102782, unitOfMeasures#1102783, unitOfMeasureConversions#1102784, productionAspect#1102785, salesAspect#1102786, procurementAspect#1102787, productGroup#1102788, filteredUnitOfMeasureConversions#1102789, quantityNumerator#1102790, quantityDenominator#1102791, (cast(quantityNumerator#1102790 as double) / cast(quantityDenominator#1102791 as double)) AS outboundUnit#1102792]
(221) Project
Arguments: [product#1102763, plant#1102764, orderDateTime#1102765, productPlant#1102776, systemId#1102777, internalUUID#1102778, id#1102779, displayId#1102780, name#1102781, baseUnitOfMeasure#1102782, unitOfMeasures#1102783, unitOfMeasureConversions#1102784, productionAspect#1102785, salesAspect#1102786, procurementAspect#1102787, productGroup#1102788, filteredUnitOfMeasureConversions#1102789, quantityNumerator#1102790, quantityDenominator#1102791, CASE WHEN (isnull(outboundUnit#1102792) OR (outboundUnit#1102792 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1102792 END AS outboundUnit#1102793]
(222) Project
Arguments: [product#1102763, plant#1102764, orderDateTime#1102765, productPlant#1102776, outboundUnit#1102793]
(223) Project
Arguments: [plant#1102764]
(224) Deduplicate
Arguments: [plant#1102764]
(225) Join
Arguments: Inner, (plantUuid#1102760 = plant#1102764)
(226) Project
Arguments: [plantId#1102759, plantUuid#1102760, storageLocId#1102761, storageLocUuid#1102762]
(227) Join
Arguments: Inner, (plant#1102733.internalRefUUID <=> plantUuid#1102760)
(228) Generate
Arguments: explode(filter(stockQuantities#1102735, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1102762) AND (lambda x#1101337.storageLocation.Id = storageLocId#1102761)), lambda x#1101337, false))), false, [stockQuantity#1102794]
(229) Project
Arguments: [systemId#1102730, internalUUID#1102731, product#1102732, plant#1102733, calculationDateTime#1102734, stockQuantities#1102735, plantId#1102759, plantUuid#1102760, storageLocId#1102761, storageLocUuid#1102762, stockQuantity#1102794]
(230) Aggregate
Arguments: [plantUuid#1102760, internalUUID#1102731, plant#1102733, product#1102732, systemId#1102730], [plantUuid#1102760, internalUUID#1102731, plant#1102733, product#1102732, systemId#1102730, first(calculationDateTime#1102734, false) AS calculationDateTime#1102795, collect_list(stockQuantity#1102794, 0, 0) AS stockQuantities#1102796]
(231) Project
Arguments: [systemId#1102730, internalUUID#1102731, product#1102732, plant#1102733, calculationDateTime#1102795, stockQuantities#1102796]
(232) Generate
Arguments: explode(stockQuantities#1102796), false, [stockQuantity#1102797]
(233) Project
Arguments: [systemId#1102730, internalUUID#1102731, product#1102732, plant#1102733, calculationDateTime#1102795, stockQuantities#1102796, stockQuantity#1102797]
(234) Project
Arguments: [plant#1102733.id AS plant#1102798, plant#1102733.internalRefUUID AS plantUuid#1102799, product#1102732.id AS product#1102800, product#1102732.internalRefUUID AS productUuid#1102801, calculationDateTime#1102795, stockQuantity#1102797.storagelocation.id AS storageLocId#1102802, stockQuantity#1102797.storagelocation.internalRefUUID AS storageLocUuid#1102803, stockQuantity#1102797.quantity.measure AS quantity#1102804, stockQuantity#1102797.specialStockIndicator.code AS specialStockIndicator#1102805, stockQuantity#1102797.stockType.code AS stockType#1102806]
(235) Filter
Arguments: ((specialStockIndicator#1102805 = ) AND (stockType#1102806 = 01))
(236) LogicalRelation
Arguments: parquet, [product#1102807, plant#1102808, orderDateTime#1102809, planningStartDateTime#1102810], false
(237) RepartitionByExpression
Arguments: [product#1102807, plant#1102808], 37
(238) Project
Arguments: [product#1102807, plant#1102808, orderDateTime#1102809]
(239) LogicalRelation
Arguments: parquet, [systemId#1102811, internalUUID#1102812, plant#1102813, product#1102814, blockedForReplenishmentStartingFrom#1102815, productionAspect#1102816, salesPlant#1102817, listing#1102818, sourceOfSupplyCategory#1102819], false
(240) Repartition
Arguments: 37, true
(241) Project
Arguments: [systemId#1102811, internalUUID#1102812, plant#1102813, product#1102814, blockedForReplenishmentStartingFrom#1102815, productionAspect#1102816, salesPlant#1102817, listing#1102818, sourceOfSupplyCategory#1102819, struct(systemId, systemId#1102811, internalUUID, internalUUID#1102812, plant, plant#1102813, product, product#1102814, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1102815, productionAspect, productionAspect#1102816, salesPlant, salesPlant#1102817, listing, listing#1102818, sourceOfSupplyCategory, sourceOfSupplyCategory#1102819) AS productPlant#1102820]
(242) Project
Arguments: [productPlant#1102820]
(243) Join
Arguments: LeftOuter, ((product#1102807 <=> productPlant#1102820.product.internalRefUUID) AND (plant#1102808 <=> productPlant#1102820.plant.internalRefUUID))
(244) Project
Arguments: [product#1102807, plant#1102808, orderDateTime#1102809, productPlant#1102820]
(245) LogicalRelation
Arguments: parquet, [systemId#1102821, internalUUID#1102822, id#1102823, displayId#1102824, name#1102825, baseUnitOfMeasure#1102826, unitOfMeasures#1102827, unitOfMeasureConversions#1102828, productionAspect#1102829, salesAspect#1102830, procurementAspect#1102831, productGroup#1102832], false
(246) Repartition
Arguments: 37, true
(247) Join
Arguments: LeftOuter, (product#1102807 = internalUUID#1102822)
(248) Project
Arguments: [product#1102807, plant#1102808, orderDateTime#1102809, productPlant#1102820, systemId#1102821, internalUUID#1102822, id#1102823, displayId#1102824, name#1102825, baseUnitOfMeasure#1102826, unitOfMeasures#1102827, unitOfMeasureConversions#1102828, productionAspect#1102829, salesAspect#1102830, procurementAspect#1102831, productGroup#1102832, filter(unitOfMeasureConversions#1102828, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1102820.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1102820.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1102826.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1102826.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1102833]
(249) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1102833.quantityNumerator), true, [quantityNumerator#1102834]
(250) Project
Arguments: [product#1102807, plant#1102808, orderDateTime#1102809, productPlant#1102820, systemId#1102821, internalUUID#1102822, id#1102823, displayId#1102824, name#1102825, baseUnitOfMeasure#1102826, unitOfMeasures#1102827, unitOfMeasureConversions#1102828, productionAspect#1102829, salesAspect#1102830, procurementAspect#1102831, productGroup#1102832, filteredUnitOfMeasureConversions#1102833, quantityNumerator#1102834]
(251) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1102833.quantityDenominator), true, [quantityDenominator#1102835]
(252) Project
Arguments: [product#1102807, plant#1102808, orderDateTime#1102809, productPlant#1102820, systemId#1102821, internalUUID#1102822, id#1102823, displayId#1102824, name#1102825, baseUnitOfMeasure#1102826, unitOfMeasures#1102827, unitOfMeasureConversions#1102828, productionAspect#1102829, salesAspect#1102830, procurementAspect#1102831, productGroup#1102832, filteredUnitOfMeasureConversions#1102833, quantityNumerator#1102834, quantityDenominator#1102835]
(253) Project
Arguments: [product#1102807, plant#1102808, orderDateTime#1102809, productPlant#1102820, systemId#1102821, internalUUID#1102822, id#1102823, displayId#1102824, name#1102825, baseUnitOfMeasure#1102826, unitOfMeasures#1102827, unitOfMeasureConversions#1102828, productionAspect#1102829, salesAspect#1102830, procurementAspect#1102831, productGroup#1102832, filteredUnitOfMeasureConversions#1102833, quantityNumerator#1102834, quantityDenominator#1102835, (cast(quantityNumerator#1102834 as double) / cast(quantityDenominator#1102835 as double)) AS outboundUnit#1102836]
(254) Project
Arguments: [product#1102807, plant#1102808, orderDateTime#1102809, productPlant#1102820, systemId#1102821, internalUUID#1102822, id#1102823, displayId#1102824, name#1102825, baseUnitOfMeasure#1102826, unitOfMeasures#1102827, unitOfMeasureConversions#1102828, productionAspect#1102829, salesAspect#1102830, procurementAspect#1102831, productGroup#1102832, filteredUnitOfMeasureConversions#1102833, quantityNumerator#1102834, quantityDenominator#1102835, CASE WHEN (isnull(outboundUnit#1102836) OR (outboundUnit#1102836 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1102836 END AS outboundUnit#1102837]
(255) Project
Arguments: [product#1102807, plant#1102808, orderDateTime#1102809, productPlant#1102820, outboundUnit#1102837]
(256) Join
Arguments: Inner, ((plantUuid#1102799 = plant#1102808) AND (productUuid#1102801 = product#1102807))
(257) Filter
Arguments: (calculationDateTime#1102795 <= orderDateTime#1102809)
(258) Project
Arguments: [plantUuid#1102799 AS plant#1102838, productUuid#1102801 AS product#1102839, storageLocId#1102802, calculationDateTime#1102795, quantity#1102804]
(259) LogicalRelation
Arguments: parquet, [systemId#1102840, internalUUID#1102841, product#1102842, plant#1102843, calculationDateTime#1102844, stockQuantities#1102845], false
(260) Repartition
Arguments: 37, true
(261) LogicalRelation
Arguments: parquet, [marketUnit#1102846, description#1102847, articleHierarchy#1102848, defaultCurrency#1102849, responsibilities#1102850, replenishmentTypes#1102851, distributionCenters#1102852, assignedArticleHierarchyNodes#1102853, minOrderQtySetting#1102854, listingCheck#1102855, odsSelection#1102856, demandProfiles#1102857, constraintProfiles#1102858, optimizationProfiles#1102859, orderGroupSplitProfiles#1102860, supplierMinimumProfiles#1102861, multipleRestrictionProfiles#1102862, preferredUomSource#1102863, handlingOfUnfulfilledDemands#1102864, negligibleQuantitiesThreshold#1102865, eventtype#1102866], false
(262) Repartition
Arguments: 37, true
(263) Filter
Arguments: (marketUnit#1102846 <=> AUTO_ALL_ProdLoc)
(264) Project
Arguments: [marketUnit#1102846, description#1102847, articleHierarchy#1102848, defaultCurrency#1102849, responsibilities#1102850, replenishmentTypes#1102851, distributionCenters#1102852, assignedArticleHierarchyNodes#1102853, minOrderQtySetting#1102854, listingCheck#1102855, odsSelection#1102856, demandProfiles#1102857, constraintProfiles#1102858, optimizationProfiles#1102859, orderGroupSplitProfiles#1102860, supplierMinimumProfiles#1102861, multipleRestrictionProfiles#1102862, preferredUomSource#1102863, handlingOfUnfulfilledDemands#1102864, negligibleQuantitiesThreshold#1102865, eventtype#1102866]
(265) Project
Arguments: [distributionCenters#1102852]
(266) Generate
Arguments: explode(distributionCenters#1102852), false, [distributionCenters#1102867]
(267) Project
Arguments: [distributionCenters#1102867]
(268) Generate
Arguments: explode(distributionCenters#1102867.storageLocations), false, [storageLocations#1102868]
(269) Project
Arguments: [distributionCenters#1102867.id AS plantId#1102869, distributionCenters#1102867.internalRefUUID AS plantUuid#1102870, storageLocations#1102868]
(270) Project
Arguments: [plantId#1102869, plantUuid#1102870, storageLocations#1102868.id AS storageLocId#1102871, storageLocations#1102868.internalRefUUID AS storageLocUuid#1102872]
(271) LogicalRelation
Arguments: parquet, [product#1102873, plant#1102874, orderDateTime#1102875, planningStartDateTime#1102876], false
(272) RepartitionByExpression
Arguments: [product#1102873, plant#1102874], 37
(273) Project
Arguments: [product#1102873, plant#1102874, orderDateTime#1102875]
(274) LogicalRelation
Arguments: parquet, [systemId#1102877, internalUUID#1102878, plant#1102879, product#1102880, blockedForReplenishmentStartingFrom#1102881, productionAspect#1102882, salesPlant#1102883, listing#1102884, sourceOfSupplyCategory#1102885], false
(275) Repartition
Arguments: 37, true
(276) Project
Arguments: [systemId#1102877, internalUUID#1102878, plant#1102879, product#1102880, blockedForReplenishmentStartingFrom#1102881, productionAspect#1102882, salesPlant#1102883, listing#1102884, sourceOfSupplyCategory#1102885, struct(systemId, systemId#1102877, internalUUID, internalUUID#1102878, plant, plant#1102879, product, product#1102880, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1102881, productionAspect, productionAspect#1102882, salesPlant, salesPlant#1102883, listing, listing#1102884, sourceOfSupplyCategory, sourceOfSupplyCategory#1102885) AS productPlant#1102886]
(277) Project
Arguments: [productPlant#1102886]
(278) Join
Arguments: LeftOuter, ((product#1102873 <=> productPlant#1102886.product.internalRefUUID) AND (plant#1102874 <=> productPlant#1102886.plant.internalRefUUID))
(279) Project
Arguments: [product#1102873, plant#1102874, orderDateTime#1102875, productPlant#1102886]
(280) LogicalRelation
Arguments: parquet, [systemId#1102887, internalUUID#1102888, id#1102889, displayId#1102890, name#1102891, baseUnitOfMeasure#1102892, unitOfMeasures#1102893, unitOfMeasureConversions#1102894, productionAspect#1102895, salesAspect#1102896, procurementAspect#1102897, productGroup#1102898], false
(281) Repartition
Arguments: 37, true
(282) Join
Arguments: LeftOuter, (product#1102873 = internalUUID#1102888)
(283) Project
Arguments: [product#1102873, plant#1102874, orderDateTime#1102875, productPlant#1102886, systemId#1102887, internalUUID#1102888, id#1102889, displayId#1102890, name#1102891, baseUnitOfMeasure#1102892, unitOfMeasures#1102893, unitOfMeasureConversions#1102894, productionAspect#1102895, salesAspect#1102896, procurementAspect#1102897, productGroup#1102898, filter(unitOfMeasureConversions#1102894, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1102886.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1102886.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1102892.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1102892.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1102899]
(284) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1102899.quantityNumerator), true, [quantityNumerator#1102900]
(285) Project
Arguments: [product#1102873, plant#1102874, orderDateTime#1102875, productPlant#1102886, systemId#1102887, internalUUID#1102888, id#1102889, displayId#1102890, name#1102891, baseUnitOfMeasure#1102892, unitOfMeasures#1102893, unitOfMeasureConversions#1102894, productionAspect#1102895, salesAspect#1102896, procurementAspect#1102897, productGroup#1102898, filteredUnitOfMeasureConversions#1102899, quantityNumerator#1102900]
(286) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1102899.quantityDenominator), true, [quantityDenominator#1102901]
(287) Project
Arguments: [product#1102873, plant#1102874, orderDateTime#1102875, productPlant#1102886, systemId#1102887, internalUUID#1102888, id#1102889, displayId#1102890, name#1102891, baseUnitOfMeasure#1102892, unitOfMeasures#1102893, unitOfMeasureConversions#1102894, productionAspect#1102895, salesAspect#1102896, procurementAspect#1102897, productGroup#1102898, filteredUnitOfMeasureConversions#1102899, quantityNumerator#1102900, quantityDenominator#1102901]
(288) Project
Arguments: [product#1102873, plant#1102874, orderDateTime#1102875, productPlant#1102886, systemId#1102887, internalUUID#1102888, id#1102889, displayId#1102890, name#1102891, baseUnitOfMeasure#1102892, unitOfMeasures#1102893, unitOfMeasureConversions#1102894, productionAspect#1102895, salesAspect#1102896, procurementAspect#1102897, productGroup#1102898, filteredUnitOfMeasureConversions#1102899, quantityNumerator#1102900, quantityDenominator#1102901, (cast(quantityNumerator#1102900 as double) / cast(quantityDenominator#1102901 as double)) AS outboundUnit#1102902]
(289) Project
Arguments: [product#1102873, plant#1102874, orderDateTime#1102875, productPlant#1102886, systemId#1102887, internalUUID#1102888, id#1102889, displayId#1102890, name#1102891, baseUnitOfMeasure#1102892, unitOfMeasures#1102893, unitOfMeasureConversions#1102894, productionAspect#1102895, salesAspect#1102896, procurementAspect#1102897, productGroup#1102898, filteredUnitOfMeasureConversions#1102899, quantityNumerator#1102900, quantityDenominator#1102901, CASE WHEN (isnull(outboundUnit#1102902) OR (outboundUnit#1102902 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1102902 END AS outboundUnit#1102903]
(290) Project
Arguments: [product#1102873, plant#1102874, orderDateTime#1102875, productPlant#1102886, outboundUnit#1102903]
(291) Project
Arguments: [plant#1102874]
(292) Deduplicate
Arguments: [plant#1102874]
(293) Join
Arguments: Inner, (plantUuid#1102870 = plant#1102874)
(294) Project
Arguments: [plantId#1102869, plantUuid#1102870, storageLocId#1102871, storageLocUuid#1102872]
(295) Join
Arguments: Inner, (plant#1102843.internalRefUUID <=> plantUuid#1102870)
(296) Generate
Arguments: explode(filter(stockQuantities#1102845, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1102872) AND (lambda x#1101337.storageLocation.Id = storageLocId#1102871)), lambda x#1101337, false))), false, [stockQuantity#1102904]
(297) Project
Arguments: [systemId#1102840, internalUUID#1102841, product#1102842, plant#1102843, calculationDateTime#1102844, stockQuantities#1102845, plantId#1102869, plantUuid#1102870, storageLocId#1102871, storageLocUuid#1102872, stockQuantity#1102904]
(298) Aggregate
Arguments: [plantUuid#1102870, internalUUID#1102841, plant#1102843, product#1102842, systemId#1102840], [plantUuid#1102870, internalUUID#1102841, plant#1102843, product#1102842, systemId#1102840, first(calculationDateTime#1102844, false) AS calculationDateTime#1102905, collect_list(stockQuantity#1102904, 0, 0) AS stockQuantities#1102906]
(299) Project
Arguments: [systemId#1102840, internalUUID#1102841, product#1102842, plant#1102843, calculationDateTime#1102905, stockQuantities#1102906]
(300) Generate
Arguments: explode(stockQuantities#1102906), false, [stockQuantity#1102907]
(301) Project
Arguments: [systemId#1102840, internalUUID#1102841, product#1102842, plant#1102843, calculationDateTime#1102905, stockQuantities#1102906, stockQuantity#1102907]
(302) Project
Arguments: [plant#1102843.id AS plant#1102908, plant#1102843.internalRefUUID AS plantUuid#1102909, product#1102842.id AS product#1102910, product#1102842.internalRefUUID AS productUuid#1102911, calculationDateTime#1102905, stockQuantity#1102907.storagelocation.id AS storageLocId#1102912, stockQuantity#1102907.storagelocation.internalRefUUID AS storageLocUuid#1102913, stockQuantity#1102907.quantity.measure AS quantity#1102914, stockQuantity#1102907.specialStockIndicator.code AS specialStockIndicator#1102915, stockQuantity#1102907.stockType.code AS stockType#1102916]
(303) Filter
Arguments: ((specialStockIndicator#1102915 = ) AND (stockType#1102916 = 01))
(304) LogicalRelation
Arguments: parquet, [product#1102917, plant#1102918, orderDateTime#1102919, planningStartDateTime#1102920], false
(305) RepartitionByExpression
Arguments: [product#1102917, plant#1102918], 37
(306) Project
Arguments: [product#1102917, plant#1102918, orderDateTime#1102919]
(307) LogicalRelation
Arguments: parquet, [systemId#1102921, internalUUID#1102922, plant#1102923, product#1102924, blockedForReplenishmentStartingFrom#1102925, productionAspect#1102926, salesPlant#1102927, listing#1102928, sourceOfSupplyCategory#1102929], false
(308) Repartition
Arguments: 37, true
(309) Project
Arguments: [systemId#1102921, internalUUID#1102922, plant#1102923, product#1102924, blockedForReplenishmentStartingFrom#1102925, productionAspect#1102926, salesPlant#1102927, listing#1102928, sourceOfSupplyCategory#1102929, struct(systemId, systemId#1102921, internalUUID, internalUUID#1102922, plant, plant#1102923, product, product#1102924, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1102925, productionAspect, productionAspect#1102926, salesPlant, salesPlant#1102927, listing, listing#1102928, sourceOfSupplyCategory, sourceOfSupplyCategory#1102929) AS productPlant#1102930]
(310) Project
Arguments: [productPlant#1102930]
(311) Join
Arguments: LeftOuter, ((product#1102917 <=> productPlant#1102930.product.internalRefUUID) AND (plant#1102918 <=> productPlant#1102930.plant.internalRefUUID))
(312) Project
Arguments: [product#1102917, plant#1102918, orderDateTime#1102919, productPlant#1102930]
(313) LogicalRelation
Arguments: parquet, [systemId#1102931, internalUUID#1102932, id#1102933, displayId#1102934, name#1102935, baseUnitOfMeasure#1102936, unitOfMeasures#1102937, unitOfMeasureConversions#1102938, productionAspect#1102939, salesAspect#1102940, procurementAspect#1102941, productGroup#1102942], false
(314) Repartition
Arguments: 37, true
(315) Join
Arguments: LeftOuter, (product#1102917 = internalUUID#1102932)
(316) Project
Arguments: [product#1102917, plant#1102918, orderDateTime#1102919, productPlant#1102930, systemId#1102931, internalUUID#1102932, id#1102933, displayId#1102934, name#1102935, baseUnitOfMeasure#1102936, unitOfMeasures#1102937, unitOfMeasureConversions#1102938, productionAspect#1102939, salesAspect#1102940, procurementAspect#1102941, productGroup#1102942, filter(unitOfMeasureConversions#1102938, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1102930.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1102930.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1102936.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1102936.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1102943]
(317) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1102943.quantityNumerator), true, [quantityNumerator#1102944]
(318) Project
Arguments: [product#1102917, plant#1102918, orderDateTime#1102919, productPlant#1102930, systemId#1102931, internalUUID#1102932, id#1102933, displayId#1102934, name#1102935, baseUnitOfMeasure#1102936, unitOfMeasures#1102937, unitOfMeasureConversions#1102938, productionAspect#1102939, salesAspect#1102940, procurementAspect#1102941, productGroup#1102942, filteredUnitOfMeasureConversions#1102943, quantityNumerator#1102944]
(319) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1102943.quantityDenominator), true, [quantityDenominator#1102945]
(320) Project
Arguments: [product#1102917, plant#1102918, orderDateTime#1102919, productPlant#1102930, systemId#1102931, internalUUID#1102932, id#1102933, displayId#1102934, name#1102935, baseUnitOfMeasure#1102936, unitOfMeasures#1102937, unitOfMeasureConversions#1102938, productionAspect#1102939, salesAspect#1102940, procurementAspect#1102941, productGroup#1102942, filteredUnitOfMeasureConversions#1102943, quantityNumerator#1102944, quantityDenominator#1102945]
(321) Project
Arguments: [product#1102917, plant#1102918, orderDateTime#1102919, productPlant#1102930, systemId#1102931, internalUUID#1102932, id#1102933, displayId#1102934, name#1102935, baseUnitOfMeasure#1102936, unitOfMeasures#1102937, unitOfMeasureConversions#1102938, productionAspect#1102939, salesAspect#1102940, procurementAspect#1102941, productGroup#1102942, filteredUnitOfMeasureConversions#1102943, quantityNumerator#1102944, quantityDenominator#1102945, (cast(quantityNumerator#1102944 as double) / cast(quantityDenominator#1102945 as double)) AS outboundUnit#1102946]
(322) Project
Arguments: [product#1102917, plant#1102918, orderDateTime#1102919, productPlant#1102930, systemId#1102931, internalUUID#1102932, id#1102933, displayId#1102934, name#1102935, baseUnitOfMeasure#1102936, unitOfMeasures#1102937, unitOfMeasureConversions#1102938, productionAspect#1102939, salesAspect#1102940, procurementAspect#1102941, productGroup#1102942, filteredUnitOfMeasureConversions#1102943, quantityNumerator#1102944, quantityDenominator#1102945, CASE WHEN (isnull(outboundUnit#1102946) OR (outboundUnit#1102946 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1102946 END AS outboundUnit#1102947]
(323) Project
Arguments: [product#1102917, plant#1102918, orderDateTime#1102919, productPlant#1102930, outboundUnit#1102947]
(324) Join
Arguments: Inner, ((plantUuid#1102909 = plant#1102918) AND (productUuid#1102911 = product#1102917))
(325) Filter
Arguments: (calculationDateTime#1102905 <= orderDateTime#1102919)
(326) Project
Arguments: [plantUuid#1102909 AS plant#1102948, productUuid#1102911 AS product#1102949, storageLocId#1102912, calculationDateTime#1102905, quantity#1102914]
(327) Aggregate
Arguments: [plant#1102948, product#1102949, storageLocId#1102912], [plant#1102948, product#1102949, storageLocId#1102912, max(calculationDateTime#1102905) AS max_calc_datetime#1102950]
(328) Join
Arguments: Inner, ((((plant#1102838 <=> plant#1102948) AND (product#1102839 <=> product#1102949)) AND (storageLocId#1102802 <=> storageLocId#1102912)) AND (calculationDateTime#1102795 <=> max_calc_datetime#1102950))
(329) Project
Arguments: [plant#1102838, product#1102839, storageLocId#1102802, calculationDateTime#1102795, quantity#1102804]
(330) Aggregate
Arguments: [product#1102839, plant#1102838], [product#1102839, plant#1102838, sum(quantity#1102804) AS quantitySum#1102951, min(calculationDateTime#1102795) AS minCalculationDateTime#1102952]
(331) Project
Arguments: [product#1102839, plant#1102838, quantitySum#1102951, minCalculationDateTime#1102952, round(quantitySum#1102951, 0) AS roundedQuantitySum#1102953]
(332) Join
Arguments: LeftOuter, ((plant#1102700 = plant#1102838) AND (product#1102699 = product#1102839))
(333) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, roundedQuantitySum#1102953, minCalculationDateTime#1102952]
(334) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, roundedQuantitySum#1102953, minCalculationDateTime#1102952, CASE WHEN isnotnull(minCalculationDateTime#1102952) THEN minCalculationDateTime#1102952 ELSE orderDateTime#1102701 END AS stockDatetime#1102954]
(335) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, roundedQuantitySum#1102953, minCalculationDateTime#1102952, stockDatetime#1102954, CASE WHEN isnotnull(roundedQuantitySum#1102953) THEN array(roundedQuantitySum#1102953) ELSE array(0.0) END AS stockBatchQuantities#1102955]
(336) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, roundedQuantitySum#1102953, minCalculationDateTime#1102952, stockDatetime#1102954, stockBatchQuantities#1102955, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1102956]
(337) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, roundedQuantitySum#1102953, stockDatetime#1102954, stockBatchQuantities#1102955, stockBatchShelfLifeEndDatetimes#1102956]
(338) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, stockBatchShelfLifeEndDatetimes#1102956]
(339) LogicalRelation
Arguments: parquet, [product#1101582, plant#1101583, demandChannel#1101584, demandStream#1101585, considerVariance#1101586, demandTimeBuckets#1101587, demandPointInTimeStart#1101588, demandPointInTimeEnd#1101589, demandPointInTime#1101590], false
(340) Join
Arguments: LeftOuter, ((plant#1101583 <=> plant#1102700) AND (product#1101582 <=> product#1102699))
(341) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, stockBatchShelfLifeEndDatetimes#1102956, product#1101582, plant#1101583, demandChannel#1101584, demandStream#1101585, considerVariance#1101586, demandTimeBuckets#1101587, demandPointInTimeStart#1101588, demandPointInTimeEnd#1101589, demandPointInTime#1101590, CASE WHEN isnotnull(product#1101582) THEN struct(demandChannel, demandChannel#1101584, demandStream, demandStream#1101585, considerVariance, considerVariance#1101586, demandTimeBuckets, demandTimeBuckets#1101587, demandPointInTimeStart, demandPointInTimeStart#1101588, demandPointInTimeEnd, demandPointInTimeEnd#1101589, demandPointInTime, demandPointInTime#1101590) 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#1101592]
(342) Aggregate
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, stockBatchShelfLifeEndDatetimes#1102956], [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, stockBatchShelfLifeEndDatetimes#1102956, collect_list(rawDemands#1101592, 0, 0) AS rawDemands#1101593]
(343) SubqueryAlias
Arguments: wl
(344) LogicalRelation
Arguments: parquet, [systemId#1102649, internalUUID#1102650, id#1102651, displayId#1102652, name#1102653, category#1102654, companyCode#1102655, address#1102656, mainDistributionChain#1102657, mainPurchasingOrganization#1102658, validPurchasingOrganizations#1102659, productGroup#1102660], false
(345) Repartition
Arguments: 37, true
(346) Project
Arguments: [systemId#1102649, internalUUID#1102650, id#1102651, displayId#1102652, name#1102653, category#1102654, companyCode#1102655, address#1102656, mainDistributionChain#1102657, mainPurchasingOrganization#1102658, validPurchasingOrganizations#1102659, productGroup#1102660, address#1102656.timezone.code AS timezonecode#1102662]
(347) Join
Arguments: LeftOuter, (plant#1102700 <=> internalUUID#1102650)
(348) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, stockBatchShelfLifeEndDatetimes#1102956, rawDemands#1101593, systemId#1102649, internalUUID#1102650, id#1102651, displayId#1102652, name#1102653, category#1102654, companyCode#1102655, address#1102656, mainDistributionChain#1102657, mainPurchasingOrganization#1102658, validPurchasingOrganizations#1102659, productGroup#1102660, CASE WHEN isnotnull(timezonecode#1102662) THEN timezonecode#1102662 ELSE UTC END AS timezonecode#1102664]
(349) Project
Arguments: [product#1102699, plant#1102700, orderDateTime#1102701, productPlant#1102712, outboundUnit#1102729, stockDatetime#1102954, stockBatchQuantities#1102955, stockBatchShelfLifeEndDatetimes#1102956, rawDemands#1101593, timezonecode#1102664]
(350) DeserializeToObject
Arguments: createexternalrow(invoke(product#1102699.toString()), invoke(plant#1102700.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1102701)), if (isnull(productPlant#1102712)) null else createexternalrow(invoke(productPlant#1102712.systemId.toString()), invoke(productPlant#1102712.internalUUID.toString()), if (isnull(productPlant#1102712.plant)) null else createexternalrow(invoke(productPlant#1102712.plant.internalRefUUID.toString()), invoke(productPlant#1102712.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1102712.product)) null else createexternalrow(invoke(productPlant#1102712.product.internalRefUUID.toString()), invoke(productPlant#1102712.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1102712.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1102712.productionAspect)) null else createexternalrow(if (isnull(productPlant#1102712.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1102712.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1102712.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#1102712.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1102712.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1102712.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1102712.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1102712.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1102712.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1102712.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1102712.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1102712.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1102712.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1102712.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#1102712.salesPlant)) null else createexternalrow(if (isnull(productPlant#1102712.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1102712.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1102712.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, 87159), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#1102712.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1102712.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1102712.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1102712.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#1102729)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1102954)), mapobjects(lambdavariable(MapObject, DoubleType, true, 87160), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 87160) as double))), stockBatchQuantities#1102955, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 87161), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 87161) as timestamp)))), stockBatchShelfLifeEndDatetimes#1102956, 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, 87162), 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, 87162))) 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, 87162).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, 87162).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, 87162).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).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, 87162).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, 87162).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, 87162).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).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, 87162).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#1101593, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#1102664.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#1102685: org.apache.spark.sql.Row
(351) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@51e4e5d1, 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#1102690: 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#1102695, 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#1102696, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87150), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87150), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87151), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87151), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87152), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87152), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87153), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87153), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87154), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87154), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#1102697, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87156), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87156), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87157), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87157), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87158), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87158), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#1102698]
(353) Join
Arguments: LeftOuter, ((plant#1102696 <=> plant#1101132) AND (product#1102695 <=> product#1101131))
(354) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, plant#1102696, dayBucketDemands#1102697, pointInTimeDemands#1102698]
(355) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698]
(356) LogicalRelation
Arguments: parquet, [product#1103759, plant#1103760, orderDateTime#1103761, planningStartDateTime#1103762], false
(357) RepartitionByExpression
Arguments: [product#1103759, plant#1103760], 37
(358) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761]
(359) LogicalRelation
Arguments: parquet, [systemId#1103763, internalUUID#1103764, plant#1103765, product#1103766, blockedForReplenishmentStartingFrom#1103767, productionAspect#1103768, salesPlant#1103769, listing#1103770, sourceOfSupplyCategory#1103771], false
(360) Repartition
Arguments: 37, true
(361) Project
Arguments: [systemId#1103763, internalUUID#1103764, plant#1103765, product#1103766, blockedForReplenishmentStartingFrom#1103767, productionAspect#1103768, salesPlant#1103769, listing#1103770, sourceOfSupplyCategory#1103771, struct(systemId, systemId#1103763, internalUUID, internalUUID#1103764, plant, plant#1103765, product, product#1103766, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103767, productionAspect, productionAspect#1103768, salesPlant, salesPlant#1103769, listing, listing#1103770, sourceOfSupplyCategory, sourceOfSupplyCategory#1103771) AS productPlant#1103772]
(362) Project
Arguments: [productPlant#1103772]
(363) Join
Arguments: LeftOuter, ((product#1103759 <=> productPlant#1103772.product.internalRefUUID) AND (plant#1103760 <=> productPlant#1103772.plant.internalRefUUID))
(364) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772]
(365) LogicalRelation
Arguments: parquet, [systemId#1103773, internalUUID#1103774, id#1103775, displayId#1103776, name#1103777, baseUnitOfMeasure#1103778, unitOfMeasures#1103779, unitOfMeasureConversions#1103780, productionAspect#1103781, salesAspect#1103782, procurementAspect#1103783, productGroup#1103784], false
(366) Repartition
Arguments: 37, true
(367) Join
Arguments: LeftOuter, (product#1103759 = internalUUID#1103774)
(368) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, systemId#1103773, internalUUID#1103774, id#1103775, displayId#1103776, name#1103777, baseUnitOfMeasure#1103778, unitOfMeasures#1103779, unitOfMeasureConversions#1103780, productionAspect#1103781, salesAspect#1103782, procurementAspect#1103783, productGroup#1103784, filter(unitOfMeasureConversions#1103780, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103772.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103772.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103778.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103778.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103785]
(369) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103785.quantityNumerator), true, [quantityNumerator#1103786]
(370) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, systemId#1103773, internalUUID#1103774, id#1103775, displayId#1103776, name#1103777, baseUnitOfMeasure#1103778, unitOfMeasures#1103779, unitOfMeasureConversions#1103780, productionAspect#1103781, salesAspect#1103782, procurementAspect#1103783, productGroup#1103784, filteredUnitOfMeasureConversions#1103785, quantityNumerator#1103786]
(371) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103785.quantityDenominator), true, [quantityDenominator#1103787]
(372) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, systemId#1103773, internalUUID#1103774, id#1103775, displayId#1103776, name#1103777, baseUnitOfMeasure#1103778, unitOfMeasures#1103779, unitOfMeasureConversions#1103780, productionAspect#1103781, salesAspect#1103782, procurementAspect#1103783, productGroup#1103784, filteredUnitOfMeasureConversions#1103785, quantityNumerator#1103786, quantityDenominator#1103787]
(373) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, systemId#1103773, internalUUID#1103774, id#1103775, displayId#1103776, name#1103777, baseUnitOfMeasure#1103778, unitOfMeasures#1103779, unitOfMeasureConversions#1103780, productionAspect#1103781, salesAspect#1103782, procurementAspect#1103783, productGroup#1103784, filteredUnitOfMeasureConversions#1103785, quantityNumerator#1103786, quantityDenominator#1103787, (cast(quantityNumerator#1103786 as double) / cast(quantityDenominator#1103787 as double)) AS outboundUnit#1103788]
(374) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, systemId#1103773, internalUUID#1103774, id#1103775, displayId#1103776, name#1103777, baseUnitOfMeasure#1103778, unitOfMeasures#1103779, unitOfMeasureConversions#1103780, productionAspect#1103781, salesAspect#1103782, procurementAspect#1103783, productGroup#1103784, filteredUnitOfMeasureConversions#1103785, quantityNumerator#1103786, quantityDenominator#1103787, CASE WHEN (isnull(outboundUnit#1103788) OR (outboundUnit#1103788 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103788 END AS outboundUnit#1103789]
(375) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, outboundUnit#1103789]
(376) LogicalRelation
Arguments: parquet, [systemId#1103790, internalUUID#1103791, product#1103792, plant#1103793, calculationDateTime#1103794, stockQuantities#1103795], false
(377) Repartition
Arguments: 37, true
(378) LogicalRelation
Arguments: parquet, [marketUnit#1103796, description#1103797, articleHierarchy#1103798, defaultCurrency#1103799, responsibilities#1103800, replenishmentTypes#1103801, distributionCenters#1103802, assignedArticleHierarchyNodes#1103803, minOrderQtySetting#1103804, listingCheck#1103805, odsSelection#1103806, demandProfiles#1103807, constraintProfiles#1103808, optimizationProfiles#1103809, orderGroupSplitProfiles#1103810, supplierMinimumProfiles#1103811, multipleRestrictionProfiles#1103812, preferredUomSource#1103813, handlingOfUnfulfilledDemands#1103814, negligibleQuantitiesThreshold#1103815, eventtype#1103816], false
(379) Repartition
Arguments: 37, true
(380) Filter
Arguments: (marketUnit#1103796 <=> AUTO_ALL_ProdLoc)
(381) Project
Arguments: [marketUnit#1103796, description#1103797, articleHierarchy#1103798, defaultCurrency#1103799, responsibilities#1103800, replenishmentTypes#1103801, distributionCenters#1103802, assignedArticleHierarchyNodes#1103803, minOrderQtySetting#1103804, listingCheck#1103805, odsSelection#1103806, demandProfiles#1103807, constraintProfiles#1103808, optimizationProfiles#1103809, orderGroupSplitProfiles#1103810, supplierMinimumProfiles#1103811, multipleRestrictionProfiles#1103812, preferredUomSource#1103813, handlingOfUnfulfilledDemands#1103814, negligibleQuantitiesThreshold#1103815, eventtype#1103816]
(382) Project
Arguments: [distributionCenters#1103802]
(383) Generate
Arguments: explode(distributionCenters#1103802), false, [distributionCenters#1103817]
(384) Project
Arguments: [distributionCenters#1103817]
(385) Generate
Arguments: explode(distributionCenters#1103817.storageLocations), false, [storageLocations#1103818]
(386) Project
Arguments: [distributionCenters#1103817.id AS plantId#1103819, distributionCenters#1103817.internalRefUUID AS plantUuid#1103820, storageLocations#1103818]
(387) Project
Arguments: [plantId#1103819, plantUuid#1103820, storageLocations#1103818.id AS storageLocId#1103821, storageLocations#1103818.internalRefUUID AS storageLocUuid#1103822]
(388) LogicalRelation
Arguments: parquet, [product#1103823, plant#1103824, orderDateTime#1103825, planningStartDateTime#1103826], false
(389) RepartitionByExpression
Arguments: [product#1103823, plant#1103824], 37
(390) Project
Arguments: [product#1103823, plant#1103824, orderDateTime#1103825]
(391) LogicalRelation
Arguments: parquet, [systemId#1103827, internalUUID#1103828, plant#1103829, product#1103830, blockedForReplenishmentStartingFrom#1103831, productionAspect#1103832, salesPlant#1103833, listing#1103834, sourceOfSupplyCategory#1103835], false
(392) Repartition
Arguments: 37, true
(393) Project
Arguments: [systemId#1103827, internalUUID#1103828, plant#1103829, product#1103830, blockedForReplenishmentStartingFrom#1103831, productionAspect#1103832, salesPlant#1103833, listing#1103834, sourceOfSupplyCategory#1103835, struct(systemId, systemId#1103827, internalUUID, internalUUID#1103828, plant, plant#1103829, product, product#1103830, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103831, productionAspect, productionAspect#1103832, salesPlant, salesPlant#1103833, listing, listing#1103834, sourceOfSupplyCategory, sourceOfSupplyCategory#1103835) AS productPlant#1103836]
(394) Project
Arguments: [productPlant#1103836]
(395) Join
Arguments: LeftOuter, ((product#1103823 <=> productPlant#1103836.product.internalRefUUID) AND (plant#1103824 <=> productPlant#1103836.plant.internalRefUUID))
(396) Project
Arguments: [product#1103823, plant#1103824, orderDateTime#1103825, productPlant#1103836]
(397) LogicalRelation
Arguments: parquet, [systemId#1103837, internalUUID#1103838, id#1103839, displayId#1103840, name#1103841, baseUnitOfMeasure#1103842, unitOfMeasures#1103843, unitOfMeasureConversions#1103844, productionAspect#1103845, salesAspect#1103846, procurementAspect#1103847, productGroup#1103848], false
(398) Repartition
Arguments: 37, true
(399) Join
Arguments: LeftOuter, (product#1103823 = internalUUID#1103838)
(400) Project
Arguments: [product#1103823, plant#1103824, orderDateTime#1103825, productPlant#1103836, systemId#1103837, internalUUID#1103838, id#1103839, displayId#1103840, name#1103841, baseUnitOfMeasure#1103842, unitOfMeasures#1103843, unitOfMeasureConversions#1103844, productionAspect#1103845, salesAspect#1103846, procurementAspect#1103847, productGroup#1103848, filter(unitOfMeasureConversions#1103844, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103836.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103836.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103842.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103842.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103849]
(401) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103849.quantityNumerator), true, [quantityNumerator#1103850]
(402) Project
Arguments: [product#1103823, plant#1103824, orderDateTime#1103825, productPlant#1103836, systemId#1103837, internalUUID#1103838, id#1103839, displayId#1103840, name#1103841, baseUnitOfMeasure#1103842, unitOfMeasures#1103843, unitOfMeasureConversions#1103844, productionAspect#1103845, salesAspect#1103846, procurementAspect#1103847, productGroup#1103848, filteredUnitOfMeasureConversions#1103849, quantityNumerator#1103850]
(403) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103849.quantityDenominator), true, [quantityDenominator#1103851]
(404) Project
Arguments: [product#1103823, plant#1103824, orderDateTime#1103825, productPlant#1103836, systemId#1103837, internalUUID#1103838, id#1103839, displayId#1103840, name#1103841, baseUnitOfMeasure#1103842, unitOfMeasures#1103843, unitOfMeasureConversions#1103844, productionAspect#1103845, salesAspect#1103846, procurementAspect#1103847, productGroup#1103848, filteredUnitOfMeasureConversions#1103849, quantityNumerator#1103850, quantityDenominator#1103851]
(405) Project
Arguments: [product#1103823, plant#1103824, orderDateTime#1103825, productPlant#1103836, systemId#1103837, internalUUID#1103838, id#1103839, displayId#1103840, name#1103841, baseUnitOfMeasure#1103842, unitOfMeasures#1103843, unitOfMeasureConversions#1103844, productionAspect#1103845, salesAspect#1103846, procurementAspect#1103847, productGroup#1103848, filteredUnitOfMeasureConversions#1103849, quantityNumerator#1103850, quantityDenominator#1103851, (cast(quantityNumerator#1103850 as double) / cast(quantityDenominator#1103851 as double)) AS outboundUnit#1103852]
(406) Project
Arguments: [product#1103823, plant#1103824, orderDateTime#1103825, productPlant#1103836, systemId#1103837, internalUUID#1103838, id#1103839, displayId#1103840, name#1103841, baseUnitOfMeasure#1103842, unitOfMeasures#1103843, unitOfMeasureConversions#1103844, productionAspect#1103845, salesAspect#1103846, procurementAspect#1103847, productGroup#1103848, filteredUnitOfMeasureConversions#1103849, quantityNumerator#1103850, quantityDenominator#1103851, CASE WHEN (isnull(outboundUnit#1103852) OR (outboundUnit#1103852 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103852 END AS outboundUnit#1103853]
(407) Project
Arguments: [product#1103823, plant#1103824, orderDateTime#1103825, productPlant#1103836, outboundUnit#1103853]
(408) Project
Arguments: [plant#1103824]
(409) Deduplicate
Arguments: [plant#1103824]
(410) Join
Arguments: Inner, (plantUuid#1103820 = plant#1103824)
(411) Project
Arguments: [plantId#1103819, plantUuid#1103820, storageLocId#1103821, storageLocUuid#1103822]
(412) Join
Arguments: Inner, (plant#1103793.internalRefUUID <=> plantUuid#1103820)
(413) Generate
Arguments: explode(filter(stockQuantities#1103795, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1103822) AND (lambda x#1101337.storageLocation.Id = storageLocId#1103821)), lambda x#1101337, false))), false, [stockQuantity#1103854]
(414) Project
Arguments: [systemId#1103790, internalUUID#1103791, product#1103792, plant#1103793, calculationDateTime#1103794, stockQuantities#1103795, plantId#1103819, plantUuid#1103820, storageLocId#1103821, storageLocUuid#1103822, stockQuantity#1103854]
(415) Aggregate
Arguments: [plantUuid#1103820, internalUUID#1103791, plant#1103793, product#1103792, systemId#1103790], [plantUuid#1103820, internalUUID#1103791, plant#1103793, product#1103792, systemId#1103790, first(calculationDateTime#1103794, false) AS calculationDateTime#1103855, collect_list(stockQuantity#1103854, 0, 0) AS stockQuantities#1103856]
(416) Project
Arguments: [systemId#1103790, internalUUID#1103791, product#1103792, plant#1103793, calculationDateTime#1103855, stockQuantities#1103856]
(417) Generate
Arguments: explode(stockQuantities#1103856), false, [stockQuantity#1103857]
(418) Project
Arguments: [systemId#1103790, internalUUID#1103791, product#1103792, plant#1103793, calculationDateTime#1103855, stockQuantities#1103856, stockQuantity#1103857]
(419) Project
Arguments: [plant#1103793.id AS plant#1103858, plant#1103793.internalRefUUID AS plantUuid#1103859, product#1103792.id AS product#1103860, product#1103792.internalRefUUID AS productUuid#1103861, calculationDateTime#1103855, stockQuantity#1103857.storagelocation.id AS storageLocId#1103862, stockQuantity#1103857.storagelocation.internalRefUUID AS storageLocUuid#1103863, stockQuantity#1103857.quantity.measure AS quantity#1103864, stockQuantity#1103857.specialStockIndicator.code AS specialStockIndicator#1103865, stockQuantity#1103857.stockType.code AS stockType#1103866]
(420) Filter
Arguments: ((specialStockIndicator#1103865 = ) AND (stockType#1103866 = 01))
(421) LogicalRelation
Arguments: parquet, [product#1103867, plant#1103868, orderDateTime#1103869, planningStartDateTime#1103870], false
(422) RepartitionByExpression
Arguments: [product#1103867, plant#1103868], 37
(423) Project
Arguments: [product#1103867, plant#1103868, orderDateTime#1103869]
(424) LogicalRelation
Arguments: parquet, [systemId#1103871, internalUUID#1103872, plant#1103873, product#1103874, blockedForReplenishmentStartingFrom#1103875, productionAspect#1103876, salesPlant#1103877, listing#1103878, sourceOfSupplyCategory#1103879], false
(425) Repartition
Arguments: 37, true
(426) Project
Arguments: [systemId#1103871, internalUUID#1103872, plant#1103873, product#1103874, blockedForReplenishmentStartingFrom#1103875, productionAspect#1103876, salesPlant#1103877, listing#1103878, sourceOfSupplyCategory#1103879, struct(systemId, systemId#1103871, internalUUID, internalUUID#1103872, plant, plant#1103873, product, product#1103874, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103875, productionAspect, productionAspect#1103876, salesPlant, salesPlant#1103877, listing, listing#1103878, sourceOfSupplyCategory, sourceOfSupplyCategory#1103879) AS productPlant#1103880]
(427) Project
Arguments: [productPlant#1103880]
(428) Join
Arguments: LeftOuter, ((product#1103867 <=> productPlant#1103880.product.internalRefUUID) AND (plant#1103868 <=> productPlant#1103880.plant.internalRefUUID))
(429) Project
Arguments: [product#1103867, plant#1103868, orderDateTime#1103869, productPlant#1103880]
(430) LogicalRelation
Arguments: parquet, [systemId#1103881, internalUUID#1103882, id#1103883, displayId#1103884, name#1103885, baseUnitOfMeasure#1103886, unitOfMeasures#1103887, unitOfMeasureConversions#1103888, productionAspect#1103889, salesAspect#1103890, procurementAspect#1103891, productGroup#1103892], false
(431) Repartition
Arguments: 37, true
(432) Join
Arguments: LeftOuter, (product#1103867 = internalUUID#1103882)
(433) Project
Arguments: [product#1103867, plant#1103868, orderDateTime#1103869, productPlant#1103880, systemId#1103881, internalUUID#1103882, id#1103883, displayId#1103884, name#1103885, baseUnitOfMeasure#1103886, unitOfMeasures#1103887, unitOfMeasureConversions#1103888, productionAspect#1103889, salesAspect#1103890, procurementAspect#1103891, productGroup#1103892, filter(unitOfMeasureConversions#1103888, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103880.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103880.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103886.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103886.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103893]
(434) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103893.quantityNumerator), true, [quantityNumerator#1103894]
(435) Project
Arguments: [product#1103867, plant#1103868, orderDateTime#1103869, productPlant#1103880, systemId#1103881, internalUUID#1103882, id#1103883, displayId#1103884, name#1103885, baseUnitOfMeasure#1103886, unitOfMeasures#1103887, unitOfMeasureConversions#1103888, productionAspect#1103889, salesAspect#1103890, procurementAspect#1103891, productGroup#1103892, filteredUnitOfMeasureConversions#1103893, quantityNumerator#1103894]
(436) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103893.quantityDenominator), true, [quantityDenominator#1103895]
(437) Project
Arguments: [product#1103867, plant#1103868, orderDateTime#1103869, productPlant#1103880, systemId#1103881, internalUUID#1103882, id#1103883, displayId#1103884, name#1103885, baseUnitOfMeasure#1103886, unitOfMeasures#1103887, unitOfMeasureConversions#1103888, productionAspect#1103889, salesAspect#1103890, procurementAspect#1103891, productGroup#1103892, filteredUnitOfMeasureConversions#1103893, quantityNumerator#1103894, quantityDenominator#1103895]
(438) Project
Arguments: [product#1103867, plant#1103868, orderDateTime#1103869, productPlant#1103880, systemId#1103881, internalUUID#1103882, id#1103883, displayId#1103884, name#1103885, baseUnitOfMeasure#1103886, unitOfMeasures#1103887, unitOfMeasureConversions#1103888, productionAspect#1103889, salesAspect#1103890, procurementAspect#1103891, productGroup#1103892, filteredUnitOfMeasureConversions#1103893, quantityNumerator#1103894, quantityDenominator#1103895, (cast(quantityNumerator#1103894 as double) / cast(quantityDenominator#1103895 as double)) AS outboundUnit#1103896]
(439) Project
Arguments: [product#1103867, plant#1103868, orderDateTime#1103869, productPlant#1103880, systemId#1103881, internalUUID#1103882, id#1103883, displayId#1103884, name#1103885, baseUnitOfMeasure#1103886, unitOfMeasures#1103887, unitOfMeasureConversions#1103888, productionAspect#1103889, salesAspect#1103890, procurementAspect#1103891, productGroup#1103892, filteredUnitOfMeasureConversions#1103893, quantityNumerator#1103894, quantityDenominator#1103895, CASE WHEN (isnull(outboundUnit#1103896) OR (outboundUnit#1103896 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103896 END AS outboundUnit#1103897]
(440) Project
Arguments: [product#1103867, plant#1103868, orderDateTime#1103869, productPlant#1103880, outboundUnit#1103897]
(441) Join
Arguments: Inner, ((plantUuid#1103859 = plant#1103868) AND (productUuid#1103861 = product#1103867))
(442) Filter
Arguments: (calculationDateTime#1103855 <= orderDateTime#1103869)
(443) Project
Arguments: [plantUuid#1103859 AS plant#1103898, productUuid#1103861 AS product#1103899, storageLocId#1103862, calculationDateTime#1103855, quantity#1103864]
(444) LogicalRelation
Arguments: parquet, [systemId#1103900, internalUUID#1103901, product#1103902, plant#1103903, calculationDateTime#1103904, stockQuantities#1103905], false
(445) Repartition
Arguments: 37, true
(446) LogicalRelation
Arguments: parquet, [marketUnit#1103906, description#1103907, articleHierarchy#1103908, defaultCurrency#1103909, responsibilities#1103910, replenishmentTypes#1103911, distributionCenters#1103912, assignedArticleHierarchyNodes#1103913, minOrderQtySetting#1103914, listingCheck#1103915, odsSelection#1103916, demandProfiles#1103917, constraintProfiles#1103918, optimizationProfiles#1103919, orderGroupSplitProfiles#1103920, supplierMinimumProfiles#1103921, multipleRestrictionProfiles#1103922, preferredUomSource#1103923, handlingOfUnfulfilledDemands#1103924, negligibleQuantitiesThreshold#1103925, eventtype#1103926], false
(447) Repartition
Arguments: 37, true
(448) Filter
Arguments: (marketUnit#1103906 <=> AUTO_ALL_ProdLoc)
(449) Project
Arguments: [marketUnit#1103906, description#1103907, articleHierarchy#1103908, defaultCurrency#1103909, responsibilities#1103910, replenishmentTypes#1103911, distributionCenters#1103912, assignedArticleHierarchyNodes#1103913, minOrderQtySetting#1103914, listingCheck#1103915, odsSelection#1103916, demandProfiles#1103917, constraintProfiles#1103918, optimizationProfiles#1103919, orderGroupSplitProfiles#1103920, supplierMinimumProfiles#1103921, multipleRestrictionProfiles#1103922, preferredUomSource#1103923, handlingOfUnfulfilledDemands#1103924, negligibleQuantitiesThreshold#1103925, eventtype#1103926]
(450) Project
Arguments: [distributionCenters#1103912]
(451) Generate
Arguments: explode(distributionCenters#1103912), false, [distributionCenters#1103927]
(452) Project
Arguments: [distributionCenters#1103927]
(453) Generate
Arguments: explode(distributionCenters#1103927.storageLocations), false, [storageLocations#1103928]
(454) Project
Arguments: [distributionCenters#1103927.id AS plantId#1103929, distributionCenters#1103927.internalRefUUID AS plantUuid#1103930, storageLocations#1103928]
(455) Project
Arguments: [plantId#1103929, plantUuid#1103930, storageLocations#1103928.id AS storageLocId#1103931, storageLocations#1103928.internalRefUUID AS storageLocUuid#1103932]
(456) LogicalRelation
Arguments: parquet, [product#1103933, plant#1103934, orderDateTime#1103935, planningStartDateTime#1103936], false
(457) RepartitionByExpression
Arguments: [product#1103933, plant#1103934], 37
(458) Project
Arguments: [product#1103933, plant#1103934, orderDateTime#1103935]
(459) LogicalRelation
Arguments: parquet, [systemId#1103937, internalUUID#1103938, plant#1103939, product#1103940, blockedForReplenishmentStartingFrom#1103941, productionAspect#1103942, salesPlant#1103943, listing#1103944, sourceOfSupplyCategory#1103945], false
(460) Repartition
Arguments: 37, true
(461) Project
Arguments: [systemId#1103937, internalUUID#1103938, plant#1103939, product#1103940, blockedForReplenishmentStartingFrom#1103941, productionAspect#1103942, salesPlant#1103943, listing#1103944, sourceOfSupplyCategory#1103945, struct(systemId, systemId#1103937, internalUUID, internalUUID#1103938, plant, plant#1103939, product, product#1103940, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103941, productionAspect, productionAspect#1103942, salesPlant, salesPlant#1103943, listing, listing#1103944, sourceOfSupplyCategory, sourceOfSupplyCategory#1103945) AS productPlant#1103946]
(462) Project
Arguments: [productPlant#1103946]
(463) Join
Arguments: LeftOuter, ((product#1103933 <=> productPlant#1103946.product.internalRefUUID) AND (plant#1103934 <=> productPlant#1103946.plant.internalRefUUID))
(464) Project
Arguments: [product#1103933, plant#1103934, orderDateTime#1103935, productPlant#1103946]
(465) LogicalRelation
Arguments: parquet, [systemId#1103947, internalUUID#1103948, id#1103949, displayId#1103950, name#1103951, baseUnitOfMeasure#1103952, unitOfMeasures#1103953, unitOfMeasureConversions#1103954, productionAspect#1103955, salesAspect#1103956, procurementAspect#1103957, productGroup#1103958], false
(466) Repartition
Arguments: 37, true
(467) Join
Arguments: LeftOuter, (product#1103933 = internalUUID#1103948)
(468) Project
Arguments: [product#1103933, plant#1103934, orderDateTime#1103935, productPlant#1103946, systemId#1103947, internalUUID#1103948, id#1103949, displayId#1103950, name#1103951, baseUnitOfMeasure#1103952, unitOfMeasures#1103953, unitOfMeasureConversions#1103954, productionAspect#1103955, salesAspect#1103956, procurementAspect#1103957, productGroup#1103958, filter(unitOfMeasureConversions#1103954, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103946.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103946.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103952.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103952.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103959]
(469) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103959.quantityNumerator), true, [quantityNumerator#1103960]
(470) Project
Arguments: [product#1103933, plant#1103934, orderDateTime#1103935, productPlant#1103946, systemId#1103947, internalUUID#1103948, id#1103949, displayId#1103950, name#1103951, baseUnitOfMeasure#1103952, unitOfMeasures#1103953, unitOfMeasureConversions#1103954, productionAspect#1103955, salesAspect#1103956, procurementAspect#1103957, productGroup#1103958, filteredUnitOfMeasureConversions#1103959, quantityNumerator#1103960]
(471) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103959.quantityDenominator), true, [quantityDenominator#1103961]
(472) Project
Arguments: [product#1103933, plant#1103934, orderDateTime#1103935, productPlant#1103946, systemId#1103947, internalUUID#1103948, id#1103949, displayId#1103950, name#1103951, baseUnitOfMeasure#1103952, unitOfMeasures#1103953, unitOfMeasureConversions#1103954, productionAspect#1103955, salesAspect#1103956, procurementAspect#1103957, productGroup#1103958, filteredUnitOfMeasureConversions#1103959, quantityNumerator#1103960, quantityDenominator#1103961]
(473) Project
Arguments: [product#1103933, plant#1103934, orderDateTime#1103935, productPlant#1103946, systemId#1103947, internalUUID#1103948, id#1103949, displayId#1103950, name#1103951, baseUnitOfMeasure#1103952, unitOfMeasures#1103953, unitOfMeasureConversions#1103954, productionAspect#1103955, salesAspect#1103956, procurementAspect#1103957, productGroup#1103958, filteredUnitOfMeasureConversions#1103959, quantityNumerator#1103960, quantityDenominator#1103961, (cast(quantityNumerator#1103960 as double) / cast(quantityDenominator#1103961 as double)) AS outboundUnit#1103962]
(474) Project
Arguments: [product#1103933, plant#1103934, orderDateTime#1103935, productPlant#1103946, systemId#1103947, internalUUID#1103948, id#1103949, displayId#1103950, name#1103951, baseUnitOfMeasure#1103952, unitOfMeasures#1103953, unitOfMeasureConversions#1103954, productionAspect#1103955, salesAspect#1103956, procurementAspect#1103957, productGroup#1103958, filteredUnitOfMeasureConversions#1103959, quantityNumerator#1103960, quantityDenominator#1103961, CASE WHEN (isnull(outboundUnit#1103962) OR (outboundUnit#1103962 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103962 END AS outboundUnit#1103963]
(475) Project
Arguments: [product#1103933, plant#1103934, orderDateTime#1103935, productPlant#1103946, outboundUnit#1103963]
(476) Project
Arguments: [plant#1103934]
(477) Deduplicate
Arguments: [plant#1103934]
(478) Join
Arguments: Inner, (plantUuid#1103930 = plant#1103934)
(479) Project
Arguments: [plantId#1103929, plantUuid#1103930, storageLocId#1103931, storageLocUuid#1103932]
(480) Join
Arguments: Inner, (plant#1103903.internalRefUUID <=> plantUuid#1103930)
(481) Generate
Arguments: explode(filter(stockQuantities#1103905, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1103932) AND (lambda x#1101337.storageLocation.Id = storageLocId#1103931)), lambda x#1101337, false))), false, [stockQuantity#1103964]
(482) Project
Arguments: [systemId#1103900, internalUUID#1103901, product#1103902, plant#1103903, calculationDateTime#1103904, stockQuantities#1103905, plantId#1103929, plantUuid#1103930, storageLocId#1103931, storageLocUuid#1103932, stockQuantity#1103964]
(483) Aggregate
Arguments: [plantUuid#1103930, internalUUID#1103901, plant#1103903, product#1103902, systemId#1103900], [plantUuid#1103930, internalUUID#1103901, plant#1103903, product#1103902, systemId#1103900, first(calculationDateTime#1103904, false) AS calculationDateTime#1103965, collect_list(stockQuantity#1103964, 0, 0) AS stockQuantities#1103966]
(484) Project
Arguments: [systemId#1103900, internalUUID#1103901, product#1103902, plant#1103903, calculationDateTime#1103965, stockQuantities#1103966]
(485) Generate
Arguments: explode(stockQuantities#1103966), false, [stockQuantity#1103967]
(486) Project
Arguments: [systemId#1103900, internalUUID#1103901, product#1103902, plant#1103903, calculationDateTime#1103965, stockQuantities#1103966, stockQuantity#1103967]
(487) Project
Arguments: [plant#1103903.id AS plant#1103968, plant#1103903.internalRefUUID AS plantUuid#1103969, product#1103902.id AS product#1103970, product#1103902.internalRefUUID AS productUuid#1103971, calculationDateTime#1103965, stockQuantity#1103967.storagelocation.id AS storageLocId#1103972, stockQuantity#1103967.storagelocation.internalRefUUID AS storageLocUuid#1103973, stockQuantity#1103967.quantity.measure AS quantity#1103974, stockQuantity#1103967.specialStockIndicator.code AS specialStockIndicator#1103975, stockQuantity#1103967.stockType.code AS stockType#1103976]
(488) Filter
Arguments: ((specialStockIndicator#1103975 = ) AND (stockType#1103976 = 01))
(489) LogicalRelation
Arguments: parquet, [product#1103977, plant#1103978, orderDateTime#1103979, planningStartDateTime#1103980], false
(490) RepartitionByExpression
Arguments: [product#1103977, plant#1103978], 37
(491) Project
Arguments: [product#1103977, plant#1103978, orderDateTime#1103979]
(492) LogicalRelation
Arguments: parquet, [systemId#1103981, internalUUID#1103982, plant#1103983, product#1103984, blockedForReplenishmentStartingFrom#1103985, productionAspect#1103986, salesPlant#1103987, listing#1103988, sourceOfSupplyCategory#1103989], false
(493) Repartition
Arguments: 37, true
(494) Project
Arguments: [systemId#1103981, internalUUID#1103982, plant#1103983, product#1103984, blockedForReplenishmentStartingFrom#1103985, productionAspect#1103986, salesPlant#1103987, listing#1103988, sourceOfSupplyCategory#1103989, struct(systemId, systemId#1103981, internalUUID, internalUUID#1103982, plant, plant#1103983, product, product#1103984, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103985, productionAspect, productionAspect#1103986, salesPlant, salesPlant#1103987, listing, listing#1103988, sourceOfSupplyCategory, sourceOfSupplyCategory#1103989) AS productPlant#1103990]
(495) Project
Arguments: [productPlant#1103990]
(496) Join
Arguments: LeftOuter, ((product#1103977 <=> productPlant#1103990.product.internalRefUUID) AND (plant#1103978 <=> productPlant#1103990.plant.internalRefUUID))
(497) Project
Arguments: [product#1103977, plant#1103978, orderDateTime#1103979, productPlant#1103990]
(498) LogicalRelation
Arguments: parquet, [systemId#1103991, internalUUID#1103992, id#1103993, displayId#1103994, name#1103995, baseUnitOfMeasure#1103996, unitOfMeasures#1103997, unitOfMeasureConversions#1103998, productionAspect#1103999, salesAspect#1104000, procurementAspect#1104001, productGroup#1104002], false
(499) Repartition
Arguments: 37, true
(500) Join
Arguments: LeftOuter, (product#1103977 = internalUUID#1103992)
(501) Project
Arguments: [product#1103977, plant#1103978, orderDateTime#1103979, productPlant#1103990, systemId#1103991, internalUUID#1103992, id#1103993, displayId#1103994, name#1103995, baseUnitOfMeasure#1103996, unitOfMeasures#1103997, unitOfMeasureConversions#1103998, productionAspect#1103999, salesAspect#1104000, procurementAspect#1104001, productGroup#1104002, filter(unitOfMeasureConversions#1103998, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103990.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103996.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103996.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1104003]
(502) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104003.quantityNumerator), true, [quantityNumerator#1104004]
(503) Project
Arguments: [product#1103977, plant#1103978, orderDateTime#1103979, productPlant#1103990, systemId#1103991, internalUUID#1103992, id#1103993, displayId#1103994, name#1103995, baseUnitOfMeasure#1103996, unitOfMeasures#1103997, unitOfMeasureConversions#1103998, productionAspect#1103999, salesAspect#1104000, procurementAspect#1104001, productGroup#1104002, filteredUnitOfMeasureConversions#1104003, quantityNumerator#1104004]
(504) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104003.quantityDenominator), true, [quantityDenominator#1104005]
(505) Project
Arguments: [product#1103977, plant#1103978, orderDateTime#1103979, productPlant#1103990, systemId#1103991, internalUUID#1103992, id#1103993, displayId#1103994, name#1103995, baseUnitOfMeasure#1103996, unitOfMeasures#1103997, unitOfMeasureConversions#1103998, productionAspect#1103999, salesAspect#1104000, procurementAspect#1104001, productGroup#1104002, filteredUnitOfMeasureConversions#1104003, quantityNumerator#1104004, quantityDenominator#1104005]
(506) Project
Arguments: [product#1103977, plant#1103978, orderDateTime#1103979, productPlant#1103990, systemId#1103991, internalUUID#1103992, id#1103993, displayId#1103994, name#1103995, baseUnitOfMeasure#1103996, unitOfMeasures#1103997, unitOfMeasureConversions#1103998, productionAspect#1103999, salesAspect#1104000, procurementAspect#1104001, productGroup#1104002, filteredUnitOfMeasureConversions#1104003, quantityNumerator#1104004, quantityDenominator#1104005, (cast(quantityNumerator#1104004 as double) / cast(quantityDenominator#1104005 as double)) AS outboundUnit#1104006]
(507) Project
Arguments: [product#1103977, plant#1103978, orderDateTime#1103979, productPlant#1103990, systemId#1103991, internalUUID#1103992, id#1103993, displayId#1103994, name#1103995, baseUnitOfMeasure#1103996, unitOfMeasures#1103997, unitOfMeasureConversions#1103998, productionAspect#1103999, salesAspect#1104000, procurementAspect#1104001, productGroup#1104002, filteredUnitOfMeasureConversions#1104003, quantityNumerator#1104004, quantityDenominator#1104005, CASE WHEN (isnull(outboundUnit#1104006) OR (outboundUnit#1104006 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1104006 END AS outboundUnit#1104007]
(508) Project
Arguments: [product#1103977, plant#1103978, orderDateTime#1103979, productPlant#1103990, outboundUnit#1104007]
(509) Join
Arguments: Inner, ((plantUuid#1103969 = plant#1103978) AND (productUuid#1103971 = product#1103977))
(510) Filter
Arguments: (calculationDateTime#1103965 <= orderDateTime#1103979)
(511) Project
Arguments: [plantUuid#1103969 AS plant#1104008, productUuid#1103971 AS product#1104009, storageLocId#1103972, calculationDateTime#1103965, quantity#1103974]
(512) Aggregate
Arguments: [plant#1104008, product#1104009, storageLocId#1103972], [plant#1104008, product#1104009, storageLocId#1103972, max(calculationDateTime#1103965) AS max_calc_datetime#1104010]
(513) Join
Arguments: Inner, ((((plant#1103898 <=> plant#1104008) AND (product#1103899 <=> product#1104009)) AND (storageLocId#1103862 <=> storageLocId#1103972)) AND (calculationDateTime#1103855 <=> max_calc_datetime#1104010))
(514) Project
Arguments: [plant#1103898, product#1103899, storageLocId#1103862, calculationDateTime#1103855, quantity#1103864]
(515) Aggregate
Arguments: [product#1103899, plant#1103898], [product#1103899, plant#1103898, sum(quantity#1103864) AS quantitySum#1104011, min(calculationDateTime#1103855) AS minCalculationDateTime#1104012]
(516) Project
Arguments: [product#1103899, plant#1103898, quantitySum#1104011, minCalculationDateTime#1104012, round(quantitySum#1104011, 0) AS roundedQuantitySum#1104013]
(517) Join
Arguments: LeftOuter, ((plant#1103760 = plant#1103898) AND (product#1103759 = product#1103899))
(518) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, outboundUnit#1103789, roundedQuantitySum#1104013, minCalculationDateTime#1104012]
(519) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, outboundUnit#1103789, roundedQuantitySum#1104013, minCalculationDateTime#1104012, CASE WHEN isnotnull(minCalculationDateTime#1104012) THEN minCalculationDateTime#1104012 ELSE orderDateTime#1103761 END AS stockDatetime#1104014]
(520) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, outboundUnit#1103789, roundedQuantitySum#1104013, minCalculationDateTime#1104012, stockDatetime#1104014, CASE WHEN isnotnull(roundedQuantitySum#1104013) THEN array(roundedQuantitySum#1104013) ELSE array(0.0) END AS stockBatchQuantities#1104015]
(521) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, outboundUnit#1103789, roundedQuantitySum#1104013, minCalculationDateTime#1104012, stockDatetime#1104014, stockBatchQuantities#1104015, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1104016]
(522) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, outboundUnit#1103789, roundedQuantitySum#1104013, stockDatetime#1104014, stockBatchQuantities#1104015, stockBatchShelfLifeEndDatetimes#1104016]
(523) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, outboundUnit#1103789, stockDatetime#1104014, stockBatchQuantities#1104015, stockBatchShelfLifeEndDatetimes#1104016]
(524) LogicalRelation
Arguments: parquet, [product#1104017, plant#1104018, orderDateTime#1104019, planningStartDateTime#1104020], false
(525) RepartitionByExpression
Arguments: [product#1104017, plant#1104018], 37
(526) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019]
(527) LogicalRelation
Arguments: parquet, [systemId#1104021, internalUUID#1104022, plant#1104023, product#1104024, blockedForReplenishmentStartingFrom#1104025, productionAspect#1104026, salesPlant#1104027, listing#1104028, sourceOfSupplyCategory#1104029], false
(528) Repartition
Arguments: 37, true
(529) Project
Arguments: [systemId#1104021, internalUUID#1104022, plant#1104023, product#1104024, blockedForReplenishmentStartingFrom#1104025, productionAspect#1104026, salesPlant#1104027, listing#1104028, sourceOfSupplyCategory#1104029, struct(systemId, systemId#1104021, internalUUID, internalUUID#1104022, plant, plant#1104023, product, product#1104024, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1104025, productionAspect, productionAspect#1104026, salesPlant, salesPlant#1104027, listing, listing#1104028, sourceOfSupplyCategory, sourceOfSupplyCategory#1104029) AS productPlant#1104030]
(530) Project
Arguments: [productPlant#1104030]
(531) Join
Arguments: LeftOuter, ((product#1104017 <=> productPlant#1104030.product.internalRefUUID) AND (plant#1104018 <=> productPlant#1104030.plant.internalRefUUID))
(532) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030]
(533) LogicalRelation
Arguments: parquet, [systemId#1104031, internalUUID#1104032, id#1104033, displayId#1104034, name#1104035, baseUnitOfMeasure#1104036, unitOfMeasures#1104037, unitOfMeasureConversions#1104038, productionAspect#1104039, salesAspect#1104040, procurementAspect#1104041, productGroup#1104042], false
(534) Repartition
Arguments: 37, true
(535) Join
Arguments: LeftOuter, (product#1104017 = internalUUID#1104032)
(536) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, systemId#1104031, internalUUID#1104032, id#1104033, displayId#1104034, name#1104035, baseUnitOfMeasure#1104036, unitOfMeasures#1104037, unitOfMeasureConversions#1104038, productionAspect#1104039, salesAspect#1104040, procurementAspect#1104041, productGroup#1104042, filter(unitOfMeasureConversions#1104038, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1104030.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1104030.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1104036.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1104036.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1104043]
(537) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104043.quantityNumerator), true, [quantityNumerator#1104044]
(538) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, systemId#1104031, internalUUID#1104032, id#1104033, displayId#1104034, name#1104035, baseUnitOfMeasure#1104036, unitOfMeasures#1104037, unitOfMeasureConversions#1104038, productionAspect#1104039, salesAspect#1104040, procurementAspect#1104041, productGroup#1104042, filteredUnitOfMeasureConversions#1104043, quantityNumerator#1104044]
(539) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104043.quantityDenominator), true, [quantityDenominator#1104045]
(540) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, systemId#1104031, internalUUID#1104032, id#1104033, displayId#1104034, name#1104035, baseUnitOfMeasure#1104036, unitOfMeasures#1104037, unitOfMeasureConversions#1104038, productionAspect#1104039, salesAspect#1104040, procurementAspect#1104041, productGroup#1104042, filteredUnitOfMeasureConversions#1104043, quantityNumerator#1104044, quantityDenominator#1104045]
(541) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, systemId#1104031, internalUUID#1104032, id#1104033, displayId#1104034, name#1104035, baseUnitOfMeasure#1104036, unitOfMeasures#1104037, unitOfMeasureConversions#1104038, productionAspect#1104039, salesAspect#1104040, procurementAspect#1104041, productGroup#1104042, filteredUnitOfMeasureConversions#1104043, quantityNumerator#1104044, quantityDenominator#1104045, (cast(quantityNumerator#1104044 as double) / cast(quantityDenominator#1104045 as double)) AS outboundUnit#1104046]
(542) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, systemId#1104031, internalUUID#1104032, id#1104033, displayId#1104034, name#1104035, baseUnitOfMeasure#1104036, unitOfMeasures#1104037, unitOfMeasureConversions#1104038, productionAspect#1104039, salesAspect#1104040, procurementAspect#1104041, productGroup#1104042, filteredUnitOfMeasureConversions#1104043, quantityNumerator#1104044, quantityDenominator#1104045, CASE WHEN (isnull(outboundUnit#1104046) OR (outboundUnit#1104046 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1104046 END AS outboundUnit#1104047]
(543) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, outboundUnit#1104047]
(544) LogicalRelation
Arguments: parquet, [systemId#1104048, internalUUID#1104049, product#1104050, plant#1104051, calculationDateTime#1104052, stockQuantities#1104053], false
(545) Repartition
Arguments: 37, true
(546) LogicalRelation
Arguments: parquet, [marketUnit#1104054, description#1104055, articleHierarchy#1104056, defaultCurrency#1104057, responsibilities#1104058, replenishmentTypes#1104059, distributionCenters#1104060, assignedArticleHierarchyNodes#1104061, minOrderQtySetting#1104062, listingCheck#1104063, odsSelection#1104064, demandProfiles#1104065, constraintProfiles#1104066, optimizationProfiles#1104067, orderGroupSplitProfiles#1104068, supplierMinimumProfiles#1104069, multipleRestrictionProfiles#1104070, preferredUomSource#1104071, handlingOfUnfulfilledDemands#1104072, negligibleQuantitiesThreshold#1104073, eventtype#1104074], false
(547) Repartition
Arguments: 37, true
(548) Filter
Arguments: (marketUnit#1104054 <=> AUTO_ALL_ProdLoc)
(549) Project
Arguments: [marketUnit#1104054, description#1104055, articleHierarchy#1104056, defaultCurrency#1104057, responsibilities#1104058, replenishmentTypes#1104059, distributionCenters#1104060, assignedArticleHierarchyNodes#1104061, minOrderQtySetting#1104062, listingCheck#1104063, odsSelection#1104064, demandProfiles#1104065, constraintProfiles#1104066, optimizationProfiles#1104067, orderGroupSplitProfiles#1104068, supplierMinimumProfiles#1104069, multipleRestrictionProfiles#1104070, preferredUomSource#1104071, handlingOfUnfulfilledDemands#1104072, negligibleQuantitiesThreshold#1104073, eventtype#1104074]
(550) Project
Arguments: [distributionCenters#1104060]
(551) Generate
Arguments: explode(distributionCenters#1104060), false, [distributionCenters#1104075]
(552) Project
Arguments: [distributionCenters#1104075]
(553) Generate
Arguments: explode(distributionCenters#1104075.storageLocations), false, [storageLocations#1104076]
(554) Project
Arguments: [distributionCenters#1104075.id AS plantId#1104077, distributionCenters#1104075.internalRefUUID AS plantUuid#1104078, storageLocations#1104076]
(555) Project
Arguments: [plantId#1104077, plantUuid#1104078, storageLocations#1104076.id AS storageLocId#1104079, storageLocations#1104076.internalRefUUID AS storageLocUuid#1104080]
(556) LogicalRelation
Arguments: parquet, [product#1104081, plant#1104082, orderDateTime#1104083, planningStartDateTime#1104084], false
(557) RepartitionByExpression
Arguments: [product#1104081, plant#1104082], 37
(558) Project
Arguments: [product#1104081, plant#1104082, orderDateTime#1104083]
(559) LogicalRelation
Arguments: parquet, [systemId#1104085, internalUUID#1104086, plant#1104087, product#1104088, blockedForReplenishmentStartingFrom#1104089, productionAspect#1104090, salesPlant#1104091, listing#1104092, sourceOfSupplyCategory#1104093], false
(560) Repartition
Arguments: 37, true
(561) Project
Arguments: [systemId#1104085, internalUUID#1104086, plant#1104087, product#1104088, blockedForReplenishmentStartingFrom#1104089, productionAspect#1104090, salesPlant#1104091, listing#1104092, sourceOfSupplyCategory#1104093, struct(systemId, systemId#1104085, internalUUID, internalUUID#1104086, plant, plant#1104087, product, product#1104088, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1104089, productionAspect, productionAspect#1104090, salesPlant, salesPlant#1104091, listing, listing#1104092, sourceOfSupplyCategory, sourceOfSupplyCategory#1104093) AS productPlant#1104094]
(562) Project
Arguments: [productPlant#1104094]
(563) Join
Arguments: LeftOuter, ((product#1104081 <=> productPlant#1104094.product.internalRefUUID) AND (plant#1104082 <=> productPlant#1104094.plant.internalRefUUID))
(564) Project
Arguments: [product#1104081, plant#1104082, orderDateTime#1104083, productPlant#1104094]
(565) LogicalRelation
Arguments: parquet, [systemId#1104095, internalUUID#1104096, id#1104097, displayId#1104098, name#1104099, baseUnitOfMeasure#1104100, unitOfMeasures#1104101, unitOfMeasureConversions#1104102, productionAspect#1104103, salesAspect#1104104, procurementAspect#1104105, productGroup#1104106], false
(566) Repartition
Arguments: 37, true
(567) Join
Arguments: LeftOuter, (product#1104081 = internalUUID#1104096)
(568) Project
Arguments: [product#1104081, plant#1104082, orderDateTime#1104083, productPlant#1104094, systemId#1104095, internalUUID#1104096, id#1104097, displayId#1104098, name#1104099, baseUnitOfMeasure#1104100, unitOfMeasures#1104101, unitOfMeasureConversions#1104102, productionAspect#1104103, salesAspect#1104104, procurementAspect#1104105, productGroup#1104106, filter(unitOfMeasureConversions#1104102, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1104094.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1104094.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1104100.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1104100.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1104107]
(569) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104107.quantityNumerator), true, [quantityNumerator#1104108]
(570) Project
Arguments: [product#1104081, plant#1104082, orderDateTime#1104083, productPlant#1104094, systemId#1104095, internalUUID#1104096, id#1104097, displayId#1104098, name#1104099, baseUnitOfMeasure#1104100, unitOfMeasures#1104101, unitOfMeasureConversions#1104102, productionAspect#1104103, salesAspect#1104104, procurementAspect#1104105, productGroup#1104106, filteredUnitOfMeasureConversions#1104107, quantityNumerator#1104108]
(571) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104107.quantityDenominator), true, [quantityDenominator#1104109]
(572) Project
Arguments: [product#1104081, plant#1104082, orderDateTime#1104083, productPlant#1104094, systemId#1104095, internalUUID#1104096, id#1104097, displayId#1104098, name#1104099, baseUnitOfMeasure#1104100, unitOfMeasures#1104101, unitOfMeasureConversions#1104102, productionAspect#1104103, salesAspect#1104104, procurementAspect#1104105, productGroup#1104106, filteredUnitOfMeasureConversions#1104107, quantityNumerator#1104108, quantityDenominator#1104109]
(573) Project
Arguments: [product#1104081, plant#1104082, orderDateTime#1104083, productPlant#1104094, systemId#1104095, internalUUID#1104096, id#1104097, displayId#1104098, name#1104099, baseUnitOfMeasure#1104100, unitOfMeasures#1104101, unitOfMeasureConversions#1104102, productionAspect#1104103, salesAspect#1104104, procurementAspect#1104105, productGroup#1104106, filteredUnitOfMeasureConversions#1104107, quantityNumerator#1104108, quantityDenominator#1104109, (cast(quantityNumerator#1104108 as double) / cast(quantityDenominator#1104109 as double)) AS outboundUnit#1104110]
(574) Project
Arguments: [product#1104081, plant#1104082, orderDateTime#1104083, productPlant#1104094, systemId#1104095, internalUUID#1104096, id#1104097, displayId#1104098, name#1104099, baseUnitOfMeasure#1104100, unitOfMeasures#1104101, unitOfMeasureConversions#1104102, productionAspect#1104103, salesAspect#1104104, procurementAspect#1104105, productGroup#1104106, filteredUnitOfMeasureConversions#1104107, quantityNumerator#1104108, quantityDenominator#1104109, CASE WHEN (isnull(outboundUnit#1104110) OR (outboundUnit#1104110 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1104110 END AS outboundUnit#1104111]
(575) Project
Arguments: [product#1104081, plant#1104082, orderDateTime#1104083, productPlant#1104094, outboundUnit#1104111]
(576) Project
Arguments: [plant#1104082]
(577) Deduplicate
Arguments: [plant#1104082]
(578) Join
Arguments: Inner, (plantUuid#1104078 = plant#1104082)
(579) Project
Arguments: [plantId#1104077, plantUuid#1104078, storageLocId#1104079, storageLocUuid#1104080]
(580) Join
Arguments: Inner, (plant#1104051.internalRefUUID <=> plantUuid#1104078)
(581) Generate
Arguments: explode(filter(stockQuantities#1104053, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1104080) AND (lambda x#1101337.storageLocation.Id = storageLocId#1104079)), lambda x#1101337, false))), false, [stockQuantity#1104112]
(582) Project
Arguments: [systemId#1104048, internalUUID#1104049, product#1104050, plant#1104051, calculationDateTime#1104052, stockQuantities#1104053, plantId#1104077, plantUuid#1104078, storageLocId#1104079, storageLocUuid#1104080, stockQuantity#1104112]
(583) Aggregate
Arguments: [plantUuid#1104078, internalUUID#1104049, plant#1104051, product#1104050, systemId#1104048], [plantUuid#1104078, internalUUID#1104049, plant#1104051, product#1104050, systemId#1104048, first(calculationDateTime#1104052, false) AS calculationDateTime#1104113, collect_list(stockQuantity#1104112, 0, 0) AS stockQuantities#1104114]
(584) Project
Arguments: [systemId#1104048, internalUUID#1104049, product#1104050, plant#1104051, calculationDateTime#1104113, stockQuantities#1104114]
(585) Generate
Arguments: explode(stockQuantities#1104114), false, [stockQuantity#1104115]
(586) Project
Arguments: [systemId#1104048, internalUUID#1104049, product#1104050, plant#1104051, calculationDateTime#1104113, stockQuantities#1104114, stockQuantity#1104115]
(587) Project
Arguments: [plant#1104051.id AS plant#1104116, plant#1104051.internalRefUUID AS plantUuid#1104117, product#1104050.id AS product#1104118, product#1104050.internalRefUUID AS productUuid#1104119, calculationDateTime#1104113, stockQuantity#1104115.storagelocation.id AS storageLocId#1104120, stockQuantity#1104115.storagelocation.internalRefUUID AS storageLocUuid#1104121, stockQuantity#1104115.quantity.measure AS quantity#1104122, stockQuantity#1104115.specialStockIndicator.code AS specialStockIndicator#1104123, stockQuantity#1104115.stockType.code AS stockType#1104124]
(588) Filter
Arguments: ((specialStockIndicator#1104123 = ) AND (stockType#1104124 = 01))
(589) LogicalRelation
Arguments: parquet, [product#1104125, plant#1104126, orderDateTime#1104127, planningStartDateTime#1104128], false
(590) RepartitionByExpression
Arguments: [product#1104125, plant#1104126], 37
(591) Project
Arguments: [product#1104125, plant#1104126, orderDateTime#1104127]
(592) LogicalRelation
Arguments: parquet, [systemId#1104129, internalUUID#1104130, plant#1104131, product#1104132, blockedForReplenishmentStartingFrom#1104133, productionAspect#1104134, salesPlant#1104135, listing#1104136, sourceOfSupplyCategory#1104137], false
(593) Repartition
Arguments: 37, true
(594) Project
Arguments: [systemId#1104129, internalUUID#1104130, plant#1104131, product#1104132, blockedForReplenishmentStartingFrom#1104133, productionAspect#1104134, salesPlant#1104135, listing#1104136, sourceOfSupplyCategory#1104137, struct(systemId, systemId#1104129, internalUUID, internalUUID#1104130, plant, plant#1104131, product, product#1104132, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1104133, productionAspect, productionAspect#1104134, salesPlant, salesPlant#1104135, listing, listing#1104136, sourceOfSupplyCategory, sourceOfSupplyCategory#1104137) AS productPlant#1104138]
(595) Project
Arguments: [productPlant#1104138]
(596) Join
Arguments: LeftOuter, ((product#1104125 <=> productPlant#1104138.product.internalRefUUID) AND (plant#1104126 <=> productPlant#1104138.plant.internalRefUUID))
(597) Project
Arguments: [product#1104125, plant#1104126, orderDateTime#1104127, productPlant#1104138]
(598) LogicalRelation
Arguments: parquet, [systemId#1104139, internalUUID#1104140, id#1104141, displayId#1104142, name#1104143, baseUnitOfMeasure#1104144, unitOfMeasures#1104145, unitOfMeasureConversions#1104146, productionAspect#1104147, salesAspect#1104148, procurementAspect#1104149, productGroup#1104150], false
(599) Repartition
Arguments: 37, true
(600) Join
Arguments: LeftOuter, (product#1104125 = internalUUID#1104140)
(601) Project
Arguments: [product#1104125, plant#1104126, orderDateTime#1104127, productPlant#1104138, systemId#1104139, internalUUID#1104140, id#1104141, displayId#1104142, name#1104143, baseUnitOfMeasure#1104144, unitOfMeasures#1104145, unitOfMeasureConversions#1104146, productionAspect#1104147, salesAspect#1104148, procurementAspect#1104149, productGroup#1104150, filter(unitOfMeasureConversions#1104146, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1104138.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1104138.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1104144.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1104144.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1104151]
(602) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104151.quantityNumerator), true, [quantityNumerator#1104152]
(603) Project
Arguments: [product#1104125, plant#1104126, orderDateTime#1104127, productPlant#1104138, systemId#1104139, internalUUID#1104140, id#1104141, displayId#1104142, name#1104143, baseUnitOfMeasure#1104144, unitOfMeasures#1104145, unitOfMeasureConversions#1104146, productionAspect#1104147, salesAspect#1104148, procurementAspect#1104149, productGroup#1104150, filteredUnitOfMeasureConversions#1104151, quantityNumerator#1104152]
(604) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104151.quantityDenominator), true, [quantityDenominator#1104153]
(605) Project
Arguments: [product#1104125, plant#1104126, orderDateTime#1104127, productPlant#1104138, systemId#1104139, internalUUID#1104140, id#1104141, displayId#1104142, name#1104143, baseUnitOfMeasure#1104144, unitOfMeasures#1104145, unitOfMeasureConversions#1104146, productionAspect#1104147, salesAspect#1104148, procurementAspect#1104149, productGroup#1104150, filteredUnitOfMeasureConversions#1104151, quantityNumerator#1104152, quantityDenominator#1104153]
(606) Project
Arguments: [product#1104125, plant#1104126, orderDateTime#1104127, productPlant#1104138, systemId#1104139, internalUUID#1104140, id#1104141, displayId#1104142, name#1104143, baseUnitOfMeasure#1104144, unitOfMeasures#1104145, unitOfMeasureConversions#1104146, productionAspect#1104147, salesAspect#1104148, procurementAspect#1104149, productGroup#1104150, filteredUnitOfMeasureConversions#1104151, quantityNumerator#1104152, quantityDenominator#1104153, (cast(quantityNumerator#1104152 as double) / cast(quantityDenominator#1104153 as double)) AS outboundUnit#1104154]
(607) Project
Arguments: [product#1104125, plant#1104126, orderDateTime#1104127, productPlant#1104138, systemId#1104139, internalUUID#1104140, id#1104141, displayId#1104142, name#1104143, baseUnitOfMeasure#1104144, unitOfMeasures#1104145, unitOfMeasureConversions#1104146, productionAspect#1104147, salesAspect#1104148, procurementAspect#1104149, productGroup#1104150, filteredUnitOfMeasureConversions#1104151, quantityNumerator#1104152, quantityDenominator#1104153, CASE WHEN (isnull(outboundUnit#1104154) OR (outboundUnit#1104154 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1104154 END AS outboundUnit#1104155]
(608) Project
Arguments: [product#1104125, plant#1104126, orderDateTime#1104127, productPlant#1104138, outboundUnit#1104155]
(609) Join
Arguments: Inner, ((plantUuid#1104117 = plant#1104126) AND (productUuid#1104119 = product#1104125))
(610) Filter
Arguments: (calculationDateTime#1104113 <= orderDateTime#1104127)
(611) Project
Arguments: [plantUuid#1104117 AS plant#1104156, productUuid#1104119 AS product#1104157, storageLocId#1104120, calculationDateTime#1104113, quantity#1104122]
(612) LogicalRelation
Arguments: parquet, [systemId#1104158, internalUUID#1104159, product#1104160, plant#1104161, calculationDateTime#1104162, stockQuantities#1104163], false
(613) Repartition
Arguments: 37, true
(614) LogicalRelation
Arguments: parquet, [marketUnit#1104164, description#1104165, articleHierarchy#1104166, defaultCurrency#1104167, responsibilities#1104168, replenishmentTypes#1104169, distributionCenters#1104170, assignedArticleHierarchyNodes#1104171, minOrderQtySetting#1104172, listingCheck#1104173, odsSelection#1104174, demandProfiles#1104175, constraintProfiles#1104176, optimizationProfiles#1104177, orderGroupSplitProfiles#1104178, supplierMinimumProfiles#1104179, multipleRestrictionProfiles#1104180, preferredUomSource#1104181, handlingOfUnfulfilledDemands#1104182, negligibleQuantitiesThreshold#1104183, eventtype#1104184], false
(615) Repartition
Arguments: 37, true
(616) Filter
Arguments: (marketUnit#1104164 <=> AUTO_ALL_ProdLoc)
(617) Project
Arguments: [marketUnit#1104164, description#1104165, articleHierarchy#1104166, defaultCurrency#1104167, responsibilities#1104168, replenishmentTypes#1104169, distributionCenters#1104170, assignedArticleHierarchyNodes#1104171, minOrderQtySetting#1104172, listingCheck#1104173, odsSelection#1104174, demandProfiles#1104175, constraintProfiles#1104176, optimizationProfiles#1104177, orderGroupSplitProfiles#1104178, supplierMinimumProfiles#1104179, multipleRestrictionProfiles#1104180, preferredUomSource#1104181, handlingOfUnfulfilledDemands#1104182, negligibleQuantitiesThreshold#1104183, eventtype#1104184]
(618) Project
Arguments: [distributionCenters#1104170]
(619) Generate
Arguments: explode(distributionCenters#1104170), false, [distributionCenters#1104185]
(620) Project
Arguments: [distributionCenters#1104185]
(621) Generate
Arguments: explode(distributionCenters#1104185.storageLocations), false, [storageLocations#1104186]
(622) Project
Arguments: [distributionCenters#1104185.id AS plantId#1104187, distributionCenters#1104185.internalRefUUID AS plantUuid#1104188, storageLocations#1104186]
(623) Project
Arguments: [plantId#1104187, plantUuid#1104188, storageLocations#1104186.id AS storageLocId#1104189, storageLocations#1104186.internalRefUUID AS storageLocUuid#1104190]
(624) LogicalRelation
Arguments: parquet, [product#1104191, plant#1104192, orderDateTime#1104193, planningStartDateTime#1104194], false
(625) RepartitionByExpression
Arguments: [product#1104191, plant#1104192], 37
(626) Project
Arguments: [product#1104191, plant#1104192, orderDateTime#1104193]
(627) LogicalRelation
Arguments: parquet, [systemId#1104195, internalUUID#1104196, plant#1104197, product#1104198, blockedForReplenishmentStartingFrom#1104199, productionAspect#1104200, salesPlant#1104201, listing#1104202, sourceOfSupplyCategory#1104203], false
(628) Repartition
Arguments: 37, true
(629) Project
Arguments: [systemId#1104195, internalUUID#1104196, plant#1104197, product#1104198, blockedForReplenishmentStartingFrom#1104199, productionAspect#1104200, salesPlant#1104201, listing#1104202, sourceOfSupplyCategory#1104203, struct(systemId, systemId#1104195, internalUUID, internalUUID#1104196, plant, plant#1104197, product, product#1104198, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1104199, productionAspect, productionAspect#1104200, salesPlant, salesPlant#1104201, listing, listing#1104202, sourceOfSupplyCategory, sourceOfSupplyCategory#1104203) AS productPlant#1104204]
(630) Project
Arguments: [productPlant#1104204]
(631) Join
Arguments: LeftOuter, ((product#1104191 <=> productPlant#1104204.product.internalRefUUID) AND (plant#1104192 <=> productPlant#1104204.plant.internalRefUUID))
(632) Project
Arguments: [product#1104191, plant#1104192, orderDateTime#1104193, productPlant#1104204]
(633) LogicalRelation
Arguments: parquet, [systemId#1104205, internalUUID#1104206, id#1104207, displayId#1104208, name#1104209, baseUnitOfMeasure#1104210, unitOfMeasures#1104211, unitOfMeasureConversions#1104212, productionAspect#1104213, salesAspect#1104214, procurementAspect#1104215, productGroup#1104216], false
(634) Repartition
Arguments: 37, true
(635) Join
Arguments: LeftOuter, (product#1104191 = internalUUID#1104206)
(636) Project
Arguments: [product#1104191, plant#1104192, orderDateTime#1104193, productPlant#1104204, systemId#1104205, internalUUID#1104206, id#1104207, displayId#1104208, name#1104209, baseUnitOfMeasure#1104210, unitOfMeasures#1104211, unitOfMeasureConversions#1104212, productionAspect#1104213, salesAspect#1104214, procurementAspect#1104215, productGroup#1104216, filter(unitOfMeasureConversions#1104212, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1104204.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1104204.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1104210.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1104210.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1104217]
(637) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104217.quantityNumerator), true, [quantityNumerator#1104218]
(638) Project
Arguments: [product#1104191, plant#1104192, orderDateTime#1104193, productPlant#1104204, systemId#1104205, internalUUID#1104206, id#1104207, displayId#1104208, name#1104209, baseUnitOfMeasure#1104210, unitOfMeasures#1104211, unitOfMeasureConversions#1104212, productionAspect#1104213, salesAspect#1104214, procurementAspect#1104215, productGroup#1104216, filteredUnitOfMeasureConversions#1104217, quantityNumerator#1104218]
(639) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104217.quantityDenominator), true, [quantityDenominator#1104219]
(640) Project
Arguments: [product#1104191, plant#1104192, orderDateTime#1104193, productPlant#1104204, systemId#1104205, internalUUID#1104206, id#1104207, displayId#1104208, name#1104209, baseUnitOfMeasure#1104210, unitOfMeasures#1104211, unitOfMeasureConversions#1104212, productionAspect#1104213, salesAspect#1104214, procurementAspect#1104215, productGroup#1104216, filteredUnitOfMeasureConversions#1104217, quantityNumerator#1104218, quantityDenominator#1104219]
(641) Project
Arguments: [product#1104191, plant#1104192, orderDateTime#1104193, productPlant#1104204, systemId#1104205, internalUUID#1104206, id#1104207, displayId#1104208, name#1104209, baseUnitOfMeasure#1104210, unitOfMeasures#1104211, unitOfMeasureConversions#1104212, productionAspect#1104213, salesAspect#1104214, procurementAspect#1104215, productGroup#1104216, filteredUnitOfMeasureConversions#1104217, quantityNumerator#1104218, quantityDenominator#1104219, (cast(quantityNumerator#1104218 as double) / cast(quantityDenominator#1104219 as double)) AS outboundUnit#1104220]
(642) Project
Arguments: [product#1104191, plant#1104192, orderDateTime#1104193, productPlant#1104204, systemId#1104205, internalUUID#1104206, id#1104207, displayId#1104208, name#1104209, baseUnitOfMeasure#1104210, unitOfMeasures#1104211, unitOfMeasureConversions#1104212, productionAspect#1104213, salesAspect#1104214, procurementAspect#1104215, productGroup#1104216, filteredUnitOfMeasureConversions#1104217, quantityNumerator#1104218, quantityDenominator#1104219, CASE WHEN (isnull(outboundUnit#1104220) OR (outboundUnit#1104220 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1104220 END AS outboundUnit#1104221]
(643) Project
Arguments: [product#1104191, plant#1104192, orderDateTime#1104193, productPlant#1104204, outboundUnit#1104221]
(644) Project
Arguments: [plant#1104192]
(645) Deduplicate
Arguments: [plant#1104192]
(646) Join
Arguments: Inner, (plantUuid#1104188 = plant#1104192)
(647) Project
Arguments: [plantId#1104187, plantUuid#1104188, storageLocId#1104189, storageLocUuid#1104190]
(648) Join
Arguments: Inner, (plant#1104161.internalRefUUID <=> plantUuid#1104188)
(649) Generate
Arguments: explode(filter(stockQuantities#1104163, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1104190) AND (lambda x#1101337.storageLocation.Id = storageLocId#1104189)), lambda x#1101337, false))), false, [stockQuantity#1104222]
(650) Project
Arguments: [systemId#1104158, internalUUID#1104159, product#1104160, plant#1104161, calculationDateTime#1104162, stockQuantities#1104163, plantId#1104187, plantUuid#1104188, storageLocId#1104189, storageLocUuid#1104190, stockQuantity#1104222]
(651) Aggregate
Arguments: [plantUuid#1104188, internalUUID#1104159, plant#1104161, product#1104160, systemId#1104158], [plantUuid#1104188, internalUUID#1104159, plant#1104161, product#1104160, systemId#1104158, first(calculationDateTime#1104162, false) AS calculationDateTime#1104223, collect_list(stockQuantity#1104222, 0, 0) AS stockQuantities#1104224]
(652) Project
Arguments: [systemId#1104158, internalUUID#1104159, product#1104160, plant#1104161, calculationDateTime#1104223, stockQuantities#1104224]
(653) Generate
Arguments: explode(stockQuantities#1104224), false, [stockQuantity#1104225]
(654) Project
Arguments: [systemId#1104158, internalUUID#1104159, product#1104160, plant#1104161, calculationDateTime#1104223, stockQuantities#1104224, stockQuantity#1104225]
(655) Project
Arguments: [plant#1104161.id AS plant#1104226, plant#1104161.internalRefUUID AS plantUuid#1104227, product#1104160.id AS product#1104228, product#1104160.internalRefUUID AS productUuid#1104229, calculationDateTime#1104223, stockQuantity#1104225.storagelocation.id AS storageLocId#1104230, stockQuantity#1104225.storagelocation.internalRefUUID AS storageLocUuid#1104231, stockQuantity#1104225.quantity.measure AS quantity#1104232, stockQuantity#1104225.specialStockIndicator.code AS specialStockIndicator#1104233, stockQuantity#1104225.stockType.code AS stockType#1104234]
(656) Filter
Arguments: ((specialStockIndicator#1104233 = ) AND (stockType#1104234 = 01))
(657) LogicalRelation
Arguments: parquet, [product#1104235, plant#1104236, orderDateTime#1104237, planningStartDateTime#1104238], false
(658) RepartitionByExpression
Arguments: [product#1104235, plant#1104236], 37
(659) Project
Arguments: [product#1104235, plant#1104236, orderDateTime#1104237]
(660) LogicalRelation
Arguments: parquet, [systemId#1104239, internalUUID#1104240, plant#1104241, product#1104242, blockedForReplenishmentStartingFrom#1104243, productionAspect#1104244, salesPlant#1104245, listing#1104246, sourceOfSupplyCategory#1104247], false
(661) Repartition
Arguments: 37, true
(662) Project
Arguments: [systemId#1104239, internalUUID#1104240, plant#1104241, product#1104242, blockedForReplenishmentStartingFrom#1104243, productionAspect#1104244, salesPlant#1104245, listing#1104246, sourceOfSupplyCategory#1104247, struct(systemId, systemId#1104239, internalUUID, internalUUID#1104240, plant, plant#1104241, product, product#1104242, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1104243, productionAspect, productionAspect#1104244, salesPlant, salesPlant#1104245, listing, listing#1104246, sourceOfSupplyCategory, sourceOfSupplyCategory#1104247) AS productPlant#1104248]
(663) Project
Arguments: [productPlant#1104248]
(664) Join
Arguments: LeftOuter, ((product#1104235 <=> productPlant#1104248.product.internalRefUUID) AND (plant#1104236 <=> productPlant#1104248.plant.internalRefUUID))
(665) Project
Arguments: [product#1104235, plant#1104236, orderDateTime#1104237, productPlant#1104248]
(666) LogicalRelation
Arguments: parquet, [systemId#1104249, internalUUID#1104250, id#1104251, displayId#1104252, name#1104253, baseUnitOfMeasure#1104254, unitOfMeasures#1104255, unitOfMeasureConversions#1104256, productionAspect#1104257, salesAspect#1104258, procurementAspect#1104259, productGroup#1104260], false
(667) Repartition
Arguments: 37, true
(668) Join
Arguments: LeftOuter, (product#1104235 = internalUUID#1104250)
(669) Project
Arguments: [product#1104235, plant#1104236, orderDateTime#1104237, productPlant#1104248, systemId#1104249, internalUUID#1104250, id#1104251, displayId#1104252, name#1104253, baseUnitOfMeasure#1104254, unitOfMeasures#1104255, unitOfMeasureConversions#1104256, productionAspect#1104257, salesAspect#1104258, procurementAspect#1104259, productGroup#1104260, filter(unitOfMeasureConversions#1104256, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1104248.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1104248.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1104254.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1104254.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1104261]
(670) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104261.quantityNumerator), true, [quantityNumerator#1104262]
(671) Project
Arguments: [product#1104235, plant#1104236, orderDateTime#1104237, productPlant#1104248, systemId#1104249, internalUUID#1104250, id#1104251, displayId#1104252, name#1104253, baseUnitOfMeasure#1104254, unitOfMeasures#1104255, unitOfMeasureConversions#1104256, productionAspect#1104257, salesAspect#1104258, procurementAspect#1104259, productGroup#1104260, filteredUnitOfMeasureConversions#1104261, quantityNumerator#1104262]
(672) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104261.quantityDenominator), true, [quantityDenominator#1104263]
(673) Project
Arguments: [product#1104235, plant#1104236, orderDateTime#1104237, productPlant#1104248, systemId#1104249, internalUUID#1104250, id#1104251, displayId#1104252, name#1104253, baseUnitOfMeasure#1104254, unitOfMeasures#1104255, unitOfMeasureConversions#1104256, productionAspect#1104257, salesAspect#1104258, procurementAspect#1104259, productGroup#1104260, filteredUnitOfMeasureConversions#1104261, quantityNumerator#1104262, quantityDenominator#1104263]
(674) Project
Arguments: [product#1104235, plant#1104236, orderDateTime#1104237, productPlant#1104248, systemId#1104249, internalUUID#1104250, id#1104251, displayId#1104252, name#1104253, baseUnitOfMeasure#1104254, unitOfMeasures#1104255, unitOfMeasureConversions#1104256, productionAspect#1104257, salesAspect#1104258, procurementAspect#1104259, productGroup#1104260, filteredUnitOfMeasureConversions#1104261, quantityNumerator#1104262, quantityDenominator#1104263, (cast(quantityNumerator#1104262 as double) / cast(quantityDenominator#1104263 as double)) AS outboundUnit#1104264]
(675) Project
Arguments: [product#1104235, plant#1104236, orderDateTime#1104237, productPlant#1104248, systemId#1104249, internalUUID#1104250, id#1104251, displayId#1104252, name#1104253, baseUnitOfMeasure#1104254, unitOfMeasures#1104255, unitOfMeasureConversions#1104256, productionAspect#1104257, salesAspect#1104258, procurementAspect#1104259, productGroup#1104260, filteredUnitOfMeasureConversions#1104261, quantityNumerator#1104262, quantityDenominator#1104263, CASE WHEN (isnull(outboundUnit#1104264) OR (outboundUnit#1104264 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1104264 END AS outboundUnit#1104265]
(676) Project
Arguments: [product#1104235, plant#1104236, orderDateTime#1104237, productPlant#1104248, outboundUnit#1104265]
(677) Join
Arguments: Inner, ((plantUuid#1104227 = plant#1104236) AND (productUuid#1104229 = product#1104235))
(678) Filter
Arguments: (calculationDateTime#1104223 <= orderDateTime#1104237)
(679) Project
Arguments: [plantUuid#1104227 AS plant#1104266, productUuid#1104229 AS product#1104267, storageLocId#1104230, calculationDateTime#1104223, quantity#1104232]
(680) Aggregate
Arguments: [plant#1104266, product#1104267, storageLocId#1104230], [plant#1104266, product#1104267, storageLocId#1104230, max(calculationDateTime#1104223) AS max_calc_datetime#1104268]
(681) Join
Arguments: Inner, ((((plant#1104156 <=> plant#1104266) AND (product#1104157 <=> product#1104267)) AND (storageLocId#1104120 <=> storageLocId#1104230)) AND (calculationDateTime#1104113 <=> max_calc_datetime#1104268))
(682) Project
Arguments: [plant#1104156, product#1104157, storageLocId#1104120, calculationDateTime#1104113, quantity#1104122]
(683) Aggregate
Arguments: [product#1104157, plant#1104156], [product#1104157, plant#1104156, sum(quantity#1104122) AS quantitySum#1104269, min(calculationDateTime#1104113) AS minCalculationDateTime#1104270]
(684) Project
Arguments: [product#1104157, plant#1104156, quantitySum#1104269, minCalculationDateTime#1104270, round(quantitySum#1104269, 0) AS roundedQuantitySum#1104271]
(685) Join
Arguments: LeftOuter, ((plant#1104018 = plant#1104156) AND (product#1104017 = product#1104157))
(686) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, outboundUnit#1104047, roundedQuantitySum#1104271, minCalculationDateTime#1104270]
(687) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, outboundUnit#1104047, roundedQuantitySum#1104271, minCalculationDateTime#1104270, CASE WHEN isnotnull(minCalculationDateTime#1104270) THEN minCalculationDateTime#1104270 ELSE orderDateTime#1104019 END AS stockDatetime#1104272]
(688) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, outboundUnit#1104047, roundedQuantitySum#1104271, minCalculationDateTime#1104270, stockDatetime#1104272, CASE WHEN isnotnull(roundedQuantitySum#1104271) THEN array(roundedQuantitySum#1104271) ELSE array(0.0) END AS stockBatchQuantities#1104273]
(689) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, outboundUnit#1104047, roundedQuantitySum#1104271, minCalculationDateTime#1104270, stockDatetime#1104272, stockBatchQuantities#1104273, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1104274]
(690) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, outboundUnit#1104047, roundedQuantitySum#1104271, stockDatetime#1104272, stockBatchQuantities#1104273, stockBatchShelfLifeEndDatetimes#1104274]
(691) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, outboundUnit#1104047, stockDatetime#1104272, stockBatchQuantities#1104273, stockBatchShelfLifeEndDatetimes#1104274]
(692) LogicalRelation
Arguments: parquet, [product#1104275, plant#1104276, demandChannel#1104277, demandStream#1104278, considerVariance#1104279, demandTimeBuckets#1104280, demandPointInTimeStart#1104281, demandPointInTimeEnd#1104282, demandPointInTime#1104283], false
(693) Join
Arguments: LeftOuter, ((plant#1104276 <=> plant#1104018) AND (product#1104275 <=> product#1104017))
(694) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, outboundUnit#1104047, stockDatetime#1104272, stockBatchQuantities#1104273, stockBatchShelfLifeEndDatetimes#1104274, product#1104275, plant#1104276, demandChannel#1104277, demandStream#1104278, considerVariance#1104279, demandTimeBuckets#1104280, demandPointInTimeStart#1104281, demandPointInTimeEnd#1104282, demandPointInTime#1104283, CASE WHEN isnotnull(product#1104275) THEN struct(demandChannel, demandChannel#1104277, demandStream, demandStream#1104278, considerVariance, considerVariance#1104279, demandTimeBuckets, demandTimeBuckets#1104280, demandPointInTimeStart, demandPointInTimeStart#1104281, demandPointInTimeEnd, demandPointInTimeEnd#1104282, demandPointInTime, demandPointInTime#1104283) 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#1104284]
(695) Aggregate
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, outboundUnit#1104047, stockDatetime#1104272, stockBatchQuantities#1104273, stockBatchShelfLifeEndDatetimes#1104274], [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, outboundUnit#1104047, stockDatetime#1104272, stockBatchQuantities#1104273, stockBatchShelfLifeEndDatetimes#1104274, collect_list(rawDemands#1104284, 0, 0) AS rawDemands#1104285]
(696) SubqueryAlias
Arguments: wl
(697) LogicalRelation
Arguments: parquet, [systemId#1104286, internalUUID#1104287, id#1104288, displayId#1104289, name#1104290, category#1104291, companyCode#1104292, address#1104293, mainDistributionChain#1104294, mainPurchasingOrganization#1104295, validPurchasingOrganizations#1104296, productGroup#1104297], false
(698) Repartition
Arguments: 37, true
(699) Project
Arguments: [systemId#1104286, internalUUID#1104287, id#1104288, displayId#1104289, name#1104290, category#1104291, companyCode#1104292, address#1104293, mainDistributionChain#1104294, mainPurchasingOrganization#1104295, validPurchasingOrganizations#1104296, productGroup#1104297, address#1104293.timezone.code AS timezonecode#1104298]
(700) Join
Arguments: LeftOuter, (plant#1104018 <=> internalUUID#1104287)
(701) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, outboundUnit#1104047, stockDatetime#1104272, stockBatchQuantities#1104273, stockBatchShelfLifeEndDatetimes#1104274, rawDemands#1104285, systemId#1104286, internalUUID#1104287, id#1104288, displayId#1104289, name#1104290, category#1104291, companyCode#1104292, address#1104293, mainDistributionChain#1104294, mainPurchasingOrganization#1104295, validPurchasingOrganizations#1104296, productGroup#1104297, CASE WHEN isnotnull(timezonecode#1104298) THEN timezonecode#1104298 ELSE UTC END AS timezonecode#1104299]
(702) Project
Arguments: [product#1104017, plant#1104018, orderDateTime#1104019, productPlant#1104030, outboundUnit#1104047, stockDatetime#1104272, stockBatchQuantities#1104273, stockBatchShelfLifeEndDatetimes#1104274, rawDemands#1104285, timezonecode#1104299]
(703) DeserializeToObject
Arguments: createexternalrow(invoke(product#1104017.toString()), invoke(plant#1104018.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1104019)), if (isnull(productPlant#1104030)) null else createexternalrow(invoke(productPlant#1104030.systemId.toString()), invoke(productPlant#1104030.internalUUID.toString()), if (isnull(productPlant#1104030.plant)) null else createexternalrow(invoke(productPlant#1104030.plant.internalRefUUID.toString()), invoke(productPlant#1104030.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1104030.product)) null else createexternalrow(invoke(productPlant#1104030.product.internalRefUUID.toString()), invoke(productPlant#1104030.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1104030.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1104030.productionAspect)) null else createexternalrow(if (isnull(productPlant#1104030.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1104030.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1104030.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1104030.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#1104030.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1104030.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1104030.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1104030.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1104030.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1104030.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1104030.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1104030.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1104030.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1104030.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1104030.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1104030.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1104030.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1104030.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#1104030.salesPlant)) null else createexternalrow(if (isnull(productPlant#1104030.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1104030.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1104030.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, 87159), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#1104030.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1104030.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1104030.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1104030.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#1104047)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1104272)), mapobjects(lambdavariable(MapObject, DoubleType, true, 87160), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 87160) as double))), stockBatchQuantities#1104273, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 87161), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 87161) as timestamp)))), stockBatchShelfLifeEndDatetimes#1104274, 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, 87162), 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, 87162))) 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, 87162).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, 87162).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, 87162).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).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, 87162).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, 87162).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, 87162).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).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, 87162).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#1104285, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#1104299.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#1102685: org.apache.spark.sql.Row
(704) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@51e4e5d1, 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#1102690: 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#1104300, 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#1104301, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87150), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87150), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87151), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87151), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87152), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87152), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87153), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87153), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87154), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87154), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#1104302, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87156), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87156), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87157), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87157), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87158), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87158), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#1104303]
(706) Join
Arguments: LeftOuter, ((plant#1104301 <=> plant#1103760) AND (product#1104300 <=> product#1103759))
(707) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, outboundUnit#1103789, stockDatetime#1104014, stockBatchQuantities#1104015, stockBatchShelfLifeEndDatetimes#1104016, plant#1104301, dayBucketDemands#1104302, pointInTimeDemands#1104303]
(708) Project
Arguments: [product#1103759, plant#1103760, orderDateTime#1103761, productPlant#1103772, outboundUnit#1103789, stockDatetime#1104014, stockBatchQuantities#1104015, stockBatchShelfLifeEndDatetimes#1104016, dayBucketDemands#1104302, pointInTimeDemands#1104303]
(709) LogicalRelation
Arguments: parquet, [marketUnit#1103009, description#1103010, articleHierarchy#1103011, defaultCurrency#1103012, responsibilities#1103013, replenishmentTypes#1103014, distributionCenters#1103015, assignedArticleHierarchyNodes#1103016, minOrderQtySetting#1103017, listingCheck#1103018, odsSelection#1103019, demandProfiles#1103020, constraintProfiles#1103021, optimizationProfiles#1103022, orderGroupSplitProfiles#1103023, supplierMinimumProfiles#1103024, multipleRestrictionProfiles#1103025, preferredUomSource#1103026, handlingOfUnfulfilledDemands#1103027, negligibleQuantitiesThreshold#1103028, eventtype#1103029], false
(710) Repartition
Arguments: 37, true
(711) Filter
Arguments: (marketUnit#1103009 <=> AUTO_ALL_ProdLoc)
(712) Project
Arguments: [marketUnit#1103009, description#1103010, articleHierarchy#1103011, defaultCurrency#1103012, responsibilities#1103013, replenishmentTypes#1103014, distributionCenters#1103015, assignedArticleHierarchyNodes#1103016, minOrderQtySetting#1103017, listingCheck#1103018, odsSelection#1103019, demandProfiles#1103020, constraintProfiles#1103021, optimizationProfiles#1103022, orderGroupSplitProfiles#1103023, supplierMinimumProfiles#1103024, multipleRestrictionProfiles#1103025, preferredUomSource#1103026, handlingOfUnfulfilledDemands#1103027, negligibleQuantitiesThreshold#1103028, eventtype#1103029]
(713) Project
Arguments: [distributionCenters#1103015]
(714) Generate
Arguments: explode(distributionCenters#1103015), false, [distributionCenters#1103030]
(715) Project
Arguments: [distributionCenters#1103030]
(716) Generate
Arguments: explode(distributionCenters#1103030.storageLocations), false, [storageLocations#1103031]
(717) Project
Arguments: [distributionCenters#1103030.id AS plantId#1103032, distributionCenters#1103030.internalRefUUID AS plantUuid#1103033, storageLocations#1103031]
(718) Project
Arguments: [plantId#1103032, plantUuid#1103033, storageLocations#1103031.id AS storageLocId#1103034, storageLocations#1103031.internalRefUUID AS storageLocUuid#1103035]
(719) LogicalRelation
Arguments: parquet, [product#1103036, plant#1103037, orderDateTime#1103038, planningStartDateTime#1103039], false
(720) RepartitionByExpression
Arguments: [product#1103036, plant#1103037], 37
(721) Project
Arguments: [product#1103036, plant#1103037, orderDateTime#1103038]
(722) LogicalRelation
Arguments: parquet, [systemId#1103040, internalUUID#1103041, plant#1103042, product#1103043, blockedForReplenishmentStartingFrom#1103044, productionAspect#1103045, salesPlant#1103046, listing#1103047, sourceOfSupplyCategory#1103048], false
(723) Repartition
Arguments: 37, true
(724) Project
Arguments: [systemId#1103040, internalUUID#1103041, plant#1103042, product#1103043, blockedForReplenishmentStartingFrom#1103044, productionAspect#1103045, salesPlant#1103046, listing#1103047, sourceOfSupplyCategory#1103048, struct(systemId, systemId#1103040, internalUUID, internalUUID#1103041, plant, plant#1103042, product, product#1103043, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103044, productionAspect, productionAspect#1103045, salesPlant, salesPlant#1103046, listing, listing#1103047, sourceOfSupplyCategory, sourceOfSupplyCategory#1103048) AS productPlant#1103049]
(725) Project
Arguments: [productPlant#1103049]
(726) Join
Arguments: LeftOuter, ((product#1103036 <=> productPlant#1103049.product.internalRefUUID) AND (plant#1103037 <=> productPlant#1103049.plant.internalRefUUID))
(727) Project
Arguments: [product#1103036, plant#1103037, orderDateTime#1103038, productPlant#1103049]
(728) LogicalRelation
Arguments: parquet, [systemId#1103050, internalUUID#1103051, id#1103052, displayId#1103053, name#1103054, baseUnitOfMeasure#1103055, unitOfMeasures#1103056, unitOfMeasureConversions#1103057, productionAspect#1103058, salesAspect#1103059, procurementAspect#1103060, productGroup#1103061], false
(729) Repartition
Arguments: 37, true
(730) Join
Arguments: LeftOuter, (product#1103036 = internalUUID#1103051)
(731) Project
Arguments: [product#1103036, plant#1103037, orderDateTime#1103038, productPlant#1103049, systemId#1103050, internalUUID#1103051, id#1103052, displayId#1103053, name#1103054, baseUnitOfMeasure#1103055, unitOfMeasures#1103056, unitOfMeasureConversions#1103057, productionAspect#1103058, salesAspect#1103059, procurementAspect#1103060, productGroup#1103061, filter(unitOfMeasureConversions#1103057, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103049.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103049.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103055.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103055.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103062]
(732) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103062.quantityNumerator), true, [quantityNumerator#1103063]
(733) Project
Arguments: [product#1103036, plant#1103037, orderDateTime#1103038, productPlant#1103049, systemId#1103050, internalUUID#1103051, id#1103052, displayId#1103053, name#1103054, baseUnitOfMeasure#1103055, unitOfMeasures#1103056, unitOfMeasureConversions#1103057, productionAspect#1103058, salesAspect#1103059, procurementAspect#1103060, productGroup#1103061, filteredUnitOfMeasureConversions#1103062, quantityNumerator#1103063]
(734) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103062.quantityDenominator), true, [quantityDenominator#1103064]
(735) Project
Arguments: [product#1103036, plant#1103037, orderDateTime#1103038, productPlant#1103049, systemId#1103050, internalUUID#1103051, id#1103052, displayId#1103053, name#1103054, baseUnitOfMeasure#1103055, unitOfMeasures#1103056, unitOfMeasureConversions#1103057, productionAspect#1103058, salesAspect#1103059, procurementAspect#1103060, productGroup#1103061, filteredUnitOfMeasureConversions#1103062, quantityNumerator#1103063, quantityDenominator#1103064]
(736) Project
Arguments: [product#1103036, plant#1103037, orderDateTime#1103038, productPlant#1103049, systemId#1103050, internalUUID#1103051, id#1103052, displayId#1103053, name#1103054, baseUnitOfMeasure#1103055, unitOfMeasures#1103056, unitOfMeasureConversions#1103057, productionAspect#1103058, salesAspect#1103059, procurementAspect#1103060, productGroup#1103061, filteredUnitOfMeasureConversions#1103062, quantityNumerator#1103063, quantityDenominator#1103064, (cast(quantityNumerator#1103063 as double) / cast(quantityDenominator#1103064 as double)) AS outboundUnit#1103065]
(737) Project
Arguments: [product#1103036, plant#1103037, orderDateTime#1103038, productPlant#1103049, systemId#1103050, internalUUID#1103051, id#1103052, displayId#1103053, name#1103054, baseUnitOfMeasure#1103055, unitOfMeasures#1103056, unitOfMeasureConversions#1103057, productionAspect#1103058, salesAspect#1103059, procurementAspect#1103060, productGroup#1103061, filteredUnitOfMeasureConversions#1103062, quantityNumerator#1103063, quantityDenominator#1103064, CASE WHEN (isnull(outboundUnit#1103065) OR (outboundUnit#1103065 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103065 END AS outboundUnit#1103066]
(738) Project
Arguments: [product#1103036, plant#1103037, orderDateTime#1103038, productPlant#1103049, outboundUnit#1103066]
(739) Project
Arguments: [plant#1103037]
(740) Deduplicate
Arguments: [plant#1103037]
(741) Join
Arguments: Inner, (plantUuid#1103033 = plant#1103037)
(742) Project
Arguments: [plantId#1103032, plantUuid#1103033, storageLocId#1103034, storageLocUuid#1103035]
(743) Project
Arguments: [plantId#1103032, plantUuid#1103033 AS plant#1103008, storageLocId#1103034, storageLocUuid#1103035]
(744) Join
Arguments: Inner, (plant#1103760 = plant#1103008)
(745) Project
Arguments: [plant#1103760, product#1103759, orderDateTime#1103761, productPlant#1103772, outboundUnit#1103789, stockDatetime#1104014, stockBatchQuantities#1104015, stockBatchShelfLifeEndDatetimes#1104016, dayBucketDemands#1104302, pointInTimeDemands#1104303, plantId#1103032, storageLocId#1103034, storageLocUuid#1103035, plant#1103008]
(746) LocalRelation
Arguments: <empty>, [systemId#1102976, internalUUID#1102977, id#1102978, isMarkedForDeletion#1102979, supplier#1102980, status#1102981, items#1102982]
(747) Generate
Arguments: explode(items#1102982), false, [item#1102986]
(748) Project
Arguments: [id#1102978, internalUUID#1102977, isMarkedForDeletion#1102979, supplier#1102980.internalRefUUID AS supplierUuid#1102983, item#1102986]
(749) Filter
Arguments: (((NOT isMarkedForDeletion#1102979 AND NOT item#1102986.deletionIndicator) AND NOT item#1102986.completeIndicator) AND NOT item#1102986.returnIndicator)
(750) Project
Arguments: [id#1102978, internalUUID#1102977, supplierUuid#1102983, item#1102986.plant.internalRefUUID AS plant#1102990, item#1102986.product.internalRefUUID AS product#1102991, item#1102986.storageLocation.internalRefUUID AS storageLocUuid#1102992, item#1102986.quantityUnit.code AS quantityUom#1102993, item#1102986.quantityUnit.internalRefUUID AS quantityUomUuid#1102994, item#1102986.quantityNumerator AS quantityNumerator#1102995, item#1102986.quantityDenominator AS quantityDenominator#1102996, item#1102986.scheduleLines AS scheduleLines#1102997, item#1102986.confirmations AS confirmations#1102998]
(751) Join
Arguments: Inner, (((product#1103759 = product#1102991) AND (plant#1103760 = plant#1102990)) AND (storageLocUuid#1103035 = storageLocUuid#1102992))
(752) Project
Arguments: [product#1103759, plant#1103760, storageLocUuid#1103035, orderDateTime#1103761, productPlant#1103772, outboundUnit#1103789, stockDatetime#1104014, stockBatchQuantities#1104015, stockBatchShelfLifeEndDatetimes#1104016, dayBucketDemands#1104302, pointInTimeDemands#1104303, plantId#1103032, storageLocId#1103034, id#1102978, internalUUID#1102977, supplierUuid#1102983, quantityUom#1102993, quantityUomUuid#1102994, quantityNumerator#1102995, quantityDenominator#1102996, scheduleLines#1102997, confirmations#1102998, product#1102991, plant#1102990, storageLocUuid#1102992, ... 1 more fields]
(753) Project
Arguments: [id#1102978, internalUUID#1102977, supplierUuid#1102983, plant#1102990, product#1102991, storageLocUuid#1102992, quantityUom#1102993, quantityUomUuid#1102994, quantityNumerator#1102995, quantityDenominator#1102996, scheduleLines#1102997, confirmations#1102998, stockDatetime#1104014]
(754) Project
Arguments: [id#1102978, internalUUID#1102977, supplierUuid#1102983, plant#1102990, product#1102991, storageLocUuid#1102992, quantityUom#1102993, quantityUomUuid#1102994, quantityNumerator#1102995, quantityDenominator#1102996, scheduleLines#1102997, confirmations#1102998, stockDatetime#1104014, array_size(filter(confirmations#1102998, lambdafunction((((lambda x_160#1103082.deletionIndicator = false) AND (lambda x_160#1103082.isRelevantForConfirmation = true)) AND isnotnull(lambda x_160#1103082.confirmedDeliveryAt)), lambda x_160#1103082, false))) AS _w0#1103089]
(755) Window
Arguments: [sum(_w0#1103089) windowspecdefinition(internalUUID#1102977, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#1103090L], [internalUUID#1102977]
(756) Project
Arguments: [id#1102978, internalUUID#1102977, supplierUuid#1102983, plant#1102990, product#1102991, storageLocUuid#1102992, quantityUom#1102993, quantityUomUuid#1102994, quantityNumerator#1102995, quantityDenominator#1102996, scheduleLines#1102997, confirmations#1102998, stockDatetime#1104014, _w0#1103089, _we0#1103090L, filter(transform(CASE WHEN (_we0#1103090L > cast(0 as bigint)) THEN transform(filter(confirmations#1102998, lambdafunction((((lambda x_160#1103083.deletionIndicator = false) AND (lambda x_160#1103083.isRelevantForConfirmation = true)) AND isnotnull(lambda x_160#1103083.confirmedDeliveryAt)), lambda x_160#1103083, false)), lambdafunction(struct(openQty, greatest((lambda x_161#1103086.confirmedQuantity - coalesce(lambda x_161#1103086.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_161#1103086.confirmedDeliveryAt), lambda x_161#1103086, false)) ELSE transform(scheduleLines#1102997, lambdafunction(struct(openQty, greatest((lambda x_159#1103084.quantity - coalesce(lambda x_159#1103084.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_159#1103084.deliveryAt), lambda x_159#1103084, false)) END, lambdafunction(struct(documentId, id#1102978, documentUuid, internalUUID#1102977, openQty, lambda x_162#1103087.openQty, openQtyInBaseUnit, ((lambda x_162#1103087.openQty * quantityNumerator#1102995) / quantityDenominator#1102996), qtyUom, quantityUom#1102993, qtyUomUuid, quantityUomUuid#1102994, availabilityDatetime, lambda x_162#1103087.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_162#1103087, false)), lambdafunction(NOT (lambda x_163#1103088.openQty = 0.0), lambda x_163#1103088, false)) AS openGoodsMovements#1103081]
(757) Project
Arguments: [id#1102978, internalUUID#1102977, supplierUuid#1102983, plant#1102990, product#1102991, storageLocUuid#1102992, quantityUom#1102993, quantityUomUuid#1102994, quantityNumerator#1102995, quantityDenominator#1102996, scheduleLines#1102997, confirmations#1102998, stockDatetime#1104014, openGoodsMovements#1103081]
(758) Aggregate
Arguments: [product#1102991, plant#1102990], [product#1102991, plant#1102990, flatten(collect_list(openGoodsMovements#1103081, 0, 0)) AS openGoodsMovements#1103091]
(759) Filter
Arguments: (array_size(openGoodsMovements#1103091) > 0)
(760) LogicalRelation
Arguments: parquet, [product#1103151, plant#1103152, orderDateTime#1103153, planningStartDateTime#1103154], false
(761) RepartitionByExpression
Arguments: [product#1103151, plant#1103152], 37
(762) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153]
(763) LogicalRelation
Arguments: parquet, [systemId#1103155, internalUUID#1103156, plant#1103157, product#1103158, blockedForReplenishmentStartingFrom#1103159, productionAspect#1103160, salesPlant#1103161, listing#1103162, sourceOfSupplyCategory#1103163], false
(764) Repartition
Arguments: 37, true
(765) Project
Arguments: [systemId#1103155, internalUUID#1103156, plant#1103157, product#1103158, blockedForReplenishmentStartingFrom#1103159, productionAspect#1103160, salesPlant#1103161, listing#1103162, sourceOfSupplyCategory#1103163, struct(systemId, systemId#1103155, internalUUID, internalUUID#1103156, plant, plant#1103157, product, product#1103158, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103159, productionAspect, productionAspect#1103160, salesPlant, salesPlant#1103161, listing, listing#1103162, sourceOfSupplyCategory, sourceOfSupplyCategory#1103163) AS productPlant#1103164]
(766) Project
Arguments: [productPlant#1103164]
(767) Join
Arguments: LeftOuter, ((product#1103151 <=> productPlant#1103164.product.internalRefUUID) AND (plant#1103152 <=> productPlant#1103164.plant.internalRefUUID))
(768) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164]
(769) LogicalRelation
Arguments: parquet, [systemId#1103165, internalUUID#1103166, id#1103167, displayId#1103168, name#1103169, baseUnitOfMeasure#1103170, unitOfMeasures#1103171, unitOfMeasureConversions#1103172, productionAspect#1103173, salesAspect#1103174, procurementAspect#1103175, productGroup#1103176], false
(770) Repartition
Arguments: 37, true
(771) Join
Arguments: LeftOuter, (product#1103151 = internalUUID#1103166)
(772) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, systemId#1103165, internalUUID#1103166, id#1103167, displayId#1103168, name#1103169, baseUnitOfMeasure#1103170, unitOfMeasures#1103171, unitOfMeasureConversions#1103172, productionAspect#1103173, salesAspect#1103174, procurementAspect#1103175, productGroup#1103176, filter(unitOfMeasureConversions#1103172, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103164.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103164.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103170.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103170.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103177]
(773) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103177.quantityNumerator), true, [quantityNumerator#1103178]
(774) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, systemId#1103165, internalUUID#1103166, id#1103167, displayId#1103168, name#1103169, baseUnitOfMeasure#1103170, unitOfMeasures#1103171, unitOfMeasureConversions#1103172, productionAspect#1103173, salesAspect#1103174, procurementAspect#1103175, productGroup#1103176, filteredUnitOfMeasureConversions#1103177, quantityNumerator#1103178]
(775) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103177.quantityDenominator), true, [quantityDenominator#1103179]
(776) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, systemId#1103165, internalUUID#1103166, id#1103167, displayId#1103168, name#1103169, baseUnitOfMeasure#1103170, unitOfMeasures#1103171, unitOfMeasureConversions#1103172, productionAspect#1103173, salesAspect#1103174, procurementAspect#1103175, productGroup#1103176, filteredUnitOfMeasureConversions#1103177, quantityNumerator#1103178, quantityDenominator#1103179]
(777) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, systemId#1103165, internalUUID#1103166, id#1103167, displayId#1103168, name#1103169, baseUnitOfMeasure#1103170, unitOfMeasures#1103171, unitOfMeasureConversions#1103172, productionAspect#1103173, salesAspect#1103174, procurementAspect#1103175, productGroup#1103176, filteredUnitOfMeasureConversions#1103177, quantityNumerator#1103178, quantityDenominator#1103179, (cast(quantityNumerator#1103178 as double) / cast(quantityDenominator#1103179 as double)) AS outboundUnit#1103180]
(778) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, systemId#1103165, internalUUID#1103166, id#1103167, displayId#1103168, name#1103169, baseUnitOfMeasure#1103170, unitOfMeasures#1103171, unitOfMeasureConversions#1103172, productionAspect#1103173, salesAspect#1103174, procurementAspect#1103175, productGroup#1103176, filteredUnitOfMeasureConversions#1103177, quantityNumerator#1103178, quantityDenominator#1103179, CASE WHEN (isnull(outboundUnit#1103180) OR (outboundUnit#1103180 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103180 END AS outboundUnit#1103181]
(779) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, outboundUnit#1103181]
(780) LogicalRelation
Arguments: parquet, [systemId#1103182, internalUUID#1103183, product#1103184, plant#1103185, calculationDateTime#1103186, stockQuantities#1103187], false
(781) Repartition
Arguments: 37, true
(782) LogicalRelation
Arguments: parquet, [marketUnit#1103188, description#1103189, articleHierarchy#1103190, defaultCurrency#1103191, responsibilities#1103192, replenishmentTypes#1103193, distributionCenters#1103194, assignedArticleHierarchyNodes#1103195, minOrderQtySetting#1103196, listingCheck#1103197, odsSelection#1103198, demandProfiles#1103199, constraintProfiles#1103200, optimizationProfiles#1103201, orderGroupSplitProfiles#1103202, supplierMinimumProfiles#1103203, multipleRestrictionProfiles#1103204, preferredUomSource#1103205, handlingOfUnfulfilledDemands#1103206, negligibleQuantitiesThreshold#1103207, eventtype#1103208], false
(783) Repartition
Arguments: 37, true
(784) Filter
Arguments: (marketUnit#1103188 <=> AUTO_ALL_ProdLoc)
(785) Project
Arguments: [marketUnit#1103188, description#1103189, articleHierarchy#1103190, defaultCurrency#1103191, responsibilities#1103192, replenishmentTypes#1103193, distributionCenters#1103194, assignedArticleHierarchyNodes#1103195, minOrderQtySetting#1103196, listingCheck#1103197, odsSelection#1103198, demandProfiles#1103199, constraintProfiles#1103200, optimizationProfiles#1103201, orderGroupSplitProfiles#1103202, supplierMinimumProfiles#1103203, multipleRestrictionProfiles#1103204, preferredUomSource#1103205, handlingOfUnfulfilledDemands#1103206, negligibleQuantitiesThreshold#1103207, eventtype#1103208]
(786) Project
Arguments: [distributionCenters#1103194]
(787) Generate
Arguments: explode(distributionCenters#1103194), false, [distributionCenters#1103209]
(788) Project
Arguments: [distributionCenters#1103209]
(789) Generate
Arguments: explode(distributionCenters#1103209.storageLocations), false, [storageLocations#1103210]
(790) Project
Arguments: [distributionCenters#1103209.id AS plantId#1103211, distributionCenters#1103209.internalRefUUID AS plantUuid#1103212, storageLocations#1103210]
(791) Project
Arguments: [plantId#1103211, plantUuid#1103212, storageLocations#1103210.id AS storageLocId#1103213, storageLocations#1103210.internalRefUUID AS storageLocUuid#1103214]
(792) LogicalRelation
Arguments: parquet, [product#1103215, plant#1103216, orderDateTime#1103217, planningStartDateTime#1103218], false
(793) RepartitionByExpression
Arguments: [product#1103215, plant#1103216], 37
(794) Project
Arguments: [product#1103215, plant#1103216, orderDateTime#1103217]
(795) LogicalRelation
Arguments: parquet, [systemId#1103219, internalUUID#1103220, plant#1103221, product#1103222, blockedForReplenishmentStartingFrom#1103223, productionAspect#1103224, salesPlant#1103225, listing#1103226, sourceOfSupplyCategory#1103227], false
(796) Repartition
Arguments: 37, true
(797) Project
Arguments: [systemId#1103219, internalUUID#1103220, plant#1103221, product#1103222, blockedForReplenishmentStartingFrom#1103223, productionAspect#1103224, salesPlant#1103225, listing#1103226, sourceOfSupplyCategory#1103227, struct(systemId, systemId#1103219, internalUUID, internalUUID#1103220, plant, plant#1103221, product, product#1103222, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103223, productionAspect, productionAspect#1103224, salesPlant, salesPlant#1103225, listing, listing#1103226, sourceOfSupplyCategory, sourceOfSupplyCategory#1103227) AS productPlant#1103228]
(798) Project
Arguments: [productPlant#1103228]
(799) Join
Arguments: LeftOuter, ((product#1103215 <=> productPlant#1103228.product.internalRefUUID) AND (plant#1103216 <=> productPlant#1103228.plant.internalRefUUID))
(800) Project
Arguments: [product#1103215, plant#1103216, orderDateTime#1103217, productPlant#1103228]
(801) LogicalRelation
Arguments: parquet, [systemId#1103229, internalUUID#1103230, id#1103231, displayId#1103232, name#1103233, baseUnitOfMeasure#1103234, unitOfMeasures#1103235, unitOfMeasureConversions#1103236, productionAspect#1103237, salesAspect#1103238, procurementAspect#1103239, productGroup#1103240], false
(802) Repartition
Arguments: 37, true
(803) Join
Arguments: LeftOuter, (product#1103215 = internalUUID#1103230)
(804) Project
Arguments: [product#1103215, plant#1103216, orderDateTime#1103217, productPlant#1103228, systemId#1103229, internalUUID#1103230, id#1103231, displayId#1103232, name#1103233, baseUnitOfMeasure#1103234, unitOfMeasures#1103235, unitOfMeasureConversions#1103236, productionAspect#1103237, salesAspect#1103238, procurementAspect#1103239, productGroup#1103240, filter(unitOfMeasureConversions#1103236, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103228.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103228.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103234.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103234.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103241]
(805) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103241.quantityNumerator), true, [quantityNumerator#1103242]
(806) Project
Arguments: [product#1103215, plant#1103216, orderDateTime#1103217, productPlant#1103228, systemId#1103229, internalUUID#1103230, id#1103231, displayId#1103232, name#1103233, baseUnitOfMeasure#1103234, unitOfMeasures#1103235, unitOfMeasureConversions#1103236, productionAspect#1103237, salesAspect#1103238, procurementAspect#1103239, productGroup#1103240, filteredUnitOfMeasureConversions#1103241, quantityNumerator#1103242]
(807) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103241.quantityDenominator), true, [quantityDenominator#1103243]
(808) Project
Arguments: [product#1103215, plant#1103216, orderDateTime#1103217, productPlant#1103228, systemId#1103229, internalUUID#1103230, id#1103231, displayId#1103232, name#1103233, baseUnitOfMeasure#1103234, unitOfMeasures#1103235, unitOfMeasureConversions#1103236, productionAspect#1103237, salesAspect#1103238, procurementAspect#1103239, productGroup#1103240, filteredUnitOfMeasureConversions#1103241, quantityNumerator#1103242, quantityDenominator#1103243]
(809) Project
Arguments: [product#1103215, plant#1103216, orderDateTime#1103217, productPlant#1103228, systemId#1103229, internalUUID#1103230, id#1103231, displayId#1103232, name#1103233, baseUnitOfMeasure#1103234, unitOfMeasures#1103235, unitOfMeasureConversions#1103236, productionAspect#1103237, salesAspect#1103238, procurementAspect#1103239, productGroup#1103240, filteredUnitOfMeasureConversions#1103241, quantityNumerator#1103242, quantityDenominator#1103243, (cast(quantityNumerator#1103242 as double) / cast(quantityDenominator#1103243 as double)) AS outboundUnit#1103244]
(810) Project
Arguments: [product#1103215, plant#1103216, orderDateTime#1103217, productPlant#1103228, systemId#1103229, internalUUID#1103230, id#1103231, displayId#1103232, name#1103233, baseUnitOfMeasure#1103234, unitOfMeasures#1103235, unitOfMeasureConversions#1103236, productionAspect#1103237, salesAspect#1103238, procurementAspect#1103239, productGroup#1103240, filteredUnitOfMeasureConversions#1103241, quantityNumerator#1103242, quantityDenominator#1103243, CASE WHEN (isnull(outboundUnit#1103244) OR (outboundUnit#1103244 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103244 END AS outboundUnit#1103245]
(811) Project
Arguments: [product#1103215, plant#1103216, orderDateTime#1103217, productPlant#1103228, outboundUnit#1103245]
(812) Project
Arguments: [plant#1103216]
(813) Deduplicate
Arguments: [plant#1103216]
(814) Join
Arguments: Inner, (plantUuid#1103212 = plant#1103216)
(815) Project
Arguments: [plantId#1103211, plantUuid#1103212, storageLocId#1103213, storageLocUuid#1103214]
(816) Join
Arguments: Inner, (plant#1103185.internalRefUUID <=> plantUuid#1103212)
(817) Generate
Arguments: explode(filter(stockQuantities#1103187, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1103214) AND (lambda x#1101337.storageLocation.Id = storageLocId#1103213)), lambda x#1101337, false))), false, [stockQuantity#1103246]
(818) Project
Arguments: [systemId#1103182, internalUUID#1103183, product#1103184, plant#1103185, calculationDateTime#1103186, stockQuantities#1103187, plantId#1103211, plantUuid#1103212, storageLocId#1103213, storageLocUuid#1103214, stockQuantity#1103246]
(819) Aggregate
Arguments: [plantUuid#1103212, internalUUID#1103183, plant#1103185, product#1103184, systemId#1103182], [plantUuid#1103212, internalUUID#1103183, plant#1103185, product#1103184, systemId#1103182, first(calculationDateTime#1103186, false) AS calculationDateTime#1103247, collect_list(stockQuantity#1103246, 0, 0) AS stockQuantities#1103248]
(820) Project
Arguments: [systemId#1103182, internalUUID#1103183, product#1103184, plant#1103185, calculationDateTime#1103247, stockQuantities#1103248]
(821) Generate
Arguments: explode(stockQuantities#1103248), false, [stockQuantity#1103249]
(822) Project
Arguments: [systemId#1103182, internalUUID#1103183, product#1103184, plant#1103185, calculationDateTime#1103247, stockQuantities#1103248, stockQuantity#1103249]
(823) Project
Arguments: [plant#1103185.id AS plant#1103250, plant#1103185.internalRefUUID AS plantUuid#1103251, product#1103184.id AS product#1103252, product#1103184.internalRefUUID AS productUuid#1103253, calculationDateTime#1103247, stockQuantity#1103249.storagelocation.id AS storageLocId#1103254, stockQuantity#1103249.storagelocation.internalRefUUID AS storageLocUuid#1103255, stockQuantity#1103249.quantity.measure AS quantity#1103256, stockQuantity#1103249.specialStockIndicator.code AS specialStockIndicator#1103257, stockQuantity#1103249.stockType.code AS stockType#1103258]
(824) Filter
Arguments: ((specialStockIndicator#1103257 = ) AND (stockType#1103258 = 01))
(825) LogicalRelation
Arguments: parquet, [product#1103259, plant#1103260, orderDateTime#1103261, planningStartDateTime#1103262], false
(826) RepartitionByExpression
Arguments: [product#1103259, plant#1103260], 37
(827) Project
Arguments: [product#1103259, plant#1103260, orderDateTime#1103261]
(828) LogicalRelation
Arguments: parquet, [systemId#1103263, internalUUID#1103264, plant#1103265, product#1103266, blockedForReplenishmentStartingFrom#1103267, productionAspect#1103268, salesPlant#1103269, listing#1103270, sourceOfSupplyCategory#1103271], false
(829) Repartition
Arguments: 37, true
(830) Project
Arguments: [systemId#1103263, internalUUID#1103264, plant#1103265, product#1103266, blockedForReplenishmentStartingFrom#1103267, productionAspect#1103268, salesPlant#1103269, listing#1103270, sourceOfSupplyCategory#1103271, struct(systemId, systemId#1103263, internalUUID, internalUUID#1103264, plant, plant#1103265, product, product#1103266, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103267, productionAspect, productionAspect#1103268, salesPlant, salesPlant#1103269, listing, listing#1103270, sourceOfSupplyCategory, sourceOfSupplyCategory#1103271) AS productPlant#1103272]
(831) Project
Arguments: [productPlant#1103272]
(832) Join
Arguments: LeftOuter, ((product#1103259 <=> productPlant#1103272.product.internalRefUUID) AND (plant#1103260 <=> productPlant#1103272.plant.internalRefUUID))
(833) Project
Arguments: [product#1103259, plant#1103260, orderDateTime#1103261, productPlant#1103272]
(834) LogicalRelation
Arguments: parquet, [systemId#1103273, internalUUID#1103274, id#1103275, displayId#1103276, name#1103277, baseUnitOfMeasure#1103278, unitOfMeasures#1103279, unitOfMeasureConversions#1103280, productionAspect#1103281, salesAspect#1103282, procurementAspect#1103283, productGroup#1103284], false
(835) Repartition
Arguments: 37, true
(836) Join
Arguments: LeftOuter, (product#1103259 = internalUUID#1103274)
(837) Project
Arguments: [product#1103259, plant#1103260, orderDateTime#1103261, productPlant#1103272, systemId#1103273, internalUUID#1103274, id#1103275, displayId#1103276, name#1103277, baseUnitOfMeasure#1103278, unitOfMeasures#1103279, unitOfMeasureConversions#1103280, productionAspect#1103281, salesAspect#1103282, procurementAspect#1103283, productGroup#1103284, filter(unitOfMeasureConversions#1103280, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103272.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103272.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103278.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103278.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103285]
(838) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103285.quantityNumerator), true, [quantityNumerator#1103286]
(839) Project
Arguments: [product#1103259, plant#1103260, orderDateTime#1103261, productPlant#1103272, systemId#1103273, internalUUID#1103274, id#1103275, displayId#1103276, name#1103277, baseUnitOfMeasure#1103278, unitOfMeasures#1103279, unitOfMeasureConversions#1103280, productionAspect#1103281, salesAspect#1103282, procurementAspect#1103283, productGroup#1103284, filteredUnitOfMeasureConversions#1103285, quantityNumerator#1103286]
(840) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103285.quantityDenominator), true, [quantityDenominator#1103287]
(841) Project
Arguments: [product#1103259, plant#1103260, orderDateTime#1103261, productPlant#1103272, systemId#1103273, internalUUID#1103274, id#1103275, displayId#1103276, name#1103277, baseUnitOfMeasure#1103278, unitOfMeasures#1103279, unitOfMeasureConversions#1103280, productionAspect#1103281, salesAspect#1103282, procurementAspect#1103283, productGroup#1103284, filteredUnitOfMeasureConversions#1103285, quantityNumerator#1103286, quantityDenominator#1103287]
(842) Project
Arguments: [product#1103259, plant#1103260, orderDateTime#1103261, productPlant#1103272, systemId#1103273, internalUUID#1103274, id#1103275, displayId#1103276, name#1103277, baseUnitOfMeasure#1103278, unitOfMeasures#1103279, unitOfMeasureConversions#1103280, productionAspect#1103281, salesAspect#1103282, procurementAspect#1103283, productGroup#1103284, filteredUnitOfMeasureConversions#1103285, quantityNumerator#1103286, quantityDenominator#1103287, (cast(quantityNumerator#1103286 as double) / cast(quantityDenominator#1103287 as double)) AS outboundUnit#1103288]
(843) Project
Arguments: [product#1103259, plant#1103260, orderDateTime#1103261, productPlant#1103272, systemId#1103273, internalUUID#1103274, id#1103275, displayId#1103276, name#1103277, baseUnitOfMeasure#1103278, unitOfMeasures#1103279, unitOfMeasureConversions#1103280, productionAspect#1103281, salesAspect#1103282, procurementAspect#1103283, productGroup#1103284, filteredUnitOfMeasureConversions#1103285, quantityNumerator#1103286, quantityDenominator#1103287, CASE WHEN (isnull(outboundUnit#1103288) OR (outboundUnit#1103288 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103288 END AS outboundUnit#1103289]
(844) Project
Arguments: [product#1103259, plant#1103260, orderDateTime#1103261, productPlant#1103272, outboundUnit#1103289]
(845) Join
Arguments: Inner, ((plantUuid#1103251 = plant#1103260) AND (productUuid#1103253 = product#1103259))
(846) Filter
Arguments: (calculationDateTime#1103247 <= orderDateTime#1103261)
(847) Project
Arguments: [plantUuid#1103251 AS plant#1103290, productUuid#1103253 AS product#1103291, storageLocId#1103254, calculationDateTime#1103247, quantity#1103256]
(848) LogicalRelation
Arguments: parquet, [systemId#1103292, internalUUID#1103293, product#1103294, plant#1103295, calculationDateTime#1103296, stockQuantities#1103297], false
(849) Repartition
Arguments: 37, true
(850) LogicalRelation
Arguments: parquet, [marketUnit#1103298, description#1103299, articleHierarchy#1103300, defaultCurrency#1103301, responsibilities#1103302, replenishmentTypes#1103303, distributionCenters#1103304, assignedArticleHierarchyNodes#1103305, minOrderQtySetting#1103306, listingCheck#1103307, odsSelection#1103308, demandProfiles#1103309, constraintProfiles#1103310, optimizationProfiles#1103311, orderGroupSplitProfiles#1103312, supplierMinimumProfiles#1103313, multipleRestrictionProfiles#1103314, preferredUomSource#1103315, handlingOfUnfulfilledDemands#1103316, negligibleQuantitiesThreshold#1103317, eventtype#1103318], false
(851) Repartition
Arguments: 37, true
(852) Filter
Arguments: (marketUnit#1103298 <=> AUTO_ALL_ProdLoc)
(853) Project
Arguments: [marketUnit#1103298, description#1103299, articleHierarchy#1103300, defaultCurrency#1103301, responsibilities#1103302, replenishmentTypes#1103303, distributionCenters#1103304, assignedArticleHierarchyNodes#1103305, minOrderQtySetting#1103306, listingCheck#1103307, odsSelection#1103308, demandProfiles#1103309, constraintProfiles#1103310, optimizationProfiles#1103311, orderGroupSplitProfiles#1103312, supplierMinimumProfiles#1103313, multipleRestrictionProfiles#1103314, preferredUomSource#1103315, handlingOfUnfulfilledDemands#1103316, negligibleQuantitiesThreshold#1103317, eventtype#1103318]
(854) Project
Arguments: [distributionCenters#1103304]
(855) Generate
Arguments: explode(distributionCenters#1103304), false, [distributionCenters#1103319]
(856) Project
Arguments: [distributionCenters#1103319]
(857) Generate
Arguments: explode(distributionCenters#1103319.storageLocations), false, [storageLocations#1103320]
(858) Project
Arguments: [distributionCenters#1103319.id AS plantId#1103321, distributionCenters#1103319.internalRefUUID AS plantUuid#1103322, storageLocations#1103320]
(859) Project
Arguments: [plantId#1103321, plantUuid#1103322, storageLocations#1103320.id AS storageLocId#1103323, storageLocations#1103320.internalRefUUID AS storageLocUuid#1103324]
(860) LogicalRelation
Arguments: parquet, [product#1103325, plant#1103326, orderDateTime#1103327, planningStartDateTime#1103328], false
(861) RepartitionByExpression
Arguments: [product#1103325, plant#1103326], 37
(862) Project
Arguments: [product#1103325, plant#1103326, orderDateTime#1103327]
(863) LogicalRelation
Arguments: parquet, [systemId#1103329, internalUUID#1103330, plant#1103331, product#1103332, blockedForReplenishmentStartingFrom#1103333, productionAspect#1103334, salesPlant#1103335, listing#1103336, sourceOfSupplyCategory#1103337], false
(864) Repartition
Arguments: 37, true
(865) Project
Arguments: [systemId#1103329, internalUUID#1103330, plant#1103331, product#1103332, blockedForReplenishmentStartingFrom#1103333, productionAspect#1103334, salesPlant#1103335, listing#1103336, sourceOfSupplyCategory#1103337, struct(systemId, systemId#1103329, internalUUID, internalUUID#1103330, plant, plant#1103331, product, product#1103332, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103333, productionAspect, productionAspect#1103334, salesPlant, salesPlant#1103335, listing, listing#1103336, sourceOfSupplyCategory, sourceOfSupplyCategory#1103337) AS productPlant#1103338]
(866) Project
Arguments: [productPlant#1103338]
(867) Join
Arguments: LeftOuter, ((product#1103325 <=> productPlant#1103338.product.internalRefUUID) AND (plant#1103326 <=> productPlant#1103338.plant.internalRefUUID))
(868) Project
Arguments: [product#1103325, plant#1103326, orderDateTime#1103327, productPlant#1103338]
(869) LogicalRelation
Arguments: parquet, [systemId#1103339, internalUUID#1103340, id#1103341, displayId#1103342, name#1103343, baseUnitOfMeasure#1103344, unitOfMeasures#1103345, unitOfMeasureConversions#1103346, productionAspect#1103347, salesAspect#1103348, procurementAspect#1103349, productGroup#1103350], false
(870) Repartition
Arguments: 37, true
(871) Join
Arguments: LeftOuter, (product#1103325 = internalUUID#1103340)
(872) Project
Arguments: [product#1103325, plant#1103326, orderDateTime#1103327, productPlant#1103338, systemId#1103339, internalUUID#1103340, id#1103341, displayId#1103342, name#1103343, baseUnitOfMeasure#1103344, unitOfMeasures#1103345, unitOfMeasureConversions#1103346, productionAspect#1103347, salesAspect#1103348, procurementAspect#1103349, productGroup#1103350, filter(unitOfMeasureConversions#1103346, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103338.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103338.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103344.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103344.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103351]
(873) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103351.quantityNumerator), true, [quantityNumerator#1103352]
(874) Project
Arguments: [product#1103325, plant#1103326, orderDateTime#1103327, productPlant#1103338, systemId#1103339, internalUUID#1103340, id#1103341, displayId#1103342, name#1103343, baseUnitOfMeasure#1103344, unitOfMeasures#1103345, unitOfMeasureConversions#1103346, productionAspect#1103347, salesAspect#1103348, procurementAspect#1103349, productGroup#1103350, filteredUnitOfMeasureConversions#1103351, quantityNumerator#1103352]
(875) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103351.quantityDenominator), true, [quantityDenominator#1103353]
(876) Project
Arguments: [product#1103325, plant#1103326, orderDateTime#1103327, productPlant#1103338, systemId#1103339, internalUUID#1103340, id#1103341, displayId#1103342, name#1103343, baseUnitOfMeasure#1103344, unitOfMeasures#1103345, unitOfMeasureConversions#1103346, productionAspect#1103347, salesAspect#1103348, procurementAspect#1103349, productGroup#1103350, filteredUnitOfMeasureConversions#1103351, quantityNumerator#1103352, quantityDenominator#1103353]
(877) Project
Arguments: [product#1103325, plant#1103326, orderDateTime#1103327, productPlant#1103338, systemId#1103339, internalUUID#1103340, id#1103341, displayId#1103342, name#1103343, baseUnitOfMeasure#1103344, unitOfMeasures#1103345, unitOfMeasureConversions#1103346, productionAspect#1103347, salesAspect#1103348, procurementAspect#1103349, productGroup#1103350, filteredUnitOfMeasureConversions#1103351, quantityNumerator#1103352, quantityDenominator#1103353, (cast(quantityNumerator#1103352 as double) / cast(quantityDenominator#1103353 as double)) AS outboundUnit#1103354]
(878) Project
Arguments: [product#1103325, plant#1103326, orderDateTime#1103327, productPlant#1103338, systemId#1103339, internalUUID#1103340, id#1103341, displayId#1103342, name#1103343, baseUnitOfMeasure#1103344, unitOfMeasures#1103345, unitOfMeasureConversions#1103346, productionAspect#1103347, salesAspect#1103348, procurementAspect#1103349, productGroup#1103350, filteredUnitOfMeasureConversions#1103351, quantityNumerator#1103352, quantityDenominator#1103353, CASE WHEN (isnull(outboundUnit#1103354) OR (outboundUnit#1103354 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103354 END AS outboundUnit#1103355]
(879) Project
Arguments: [product#1103325, plant#1103326, orderDateTime#1103327, productPlant#1103338, outboundUnit#1103355]
(880) Project
Arguments: [plant#1103326]
(881) Deduplicate
Arguments: [plant#1103326]
(882) Join
Arguments: Inner, (plantUuid#1103322 = plant#1103326)
(883) Project
Arguments: [plantId#1103321, plantUuid#1103322, storageLocId#1103323, storageLocUuid#1103324]
(884) Join
Arguments: Inner, (plant#1103295.internalRefUUID <=> plantUuid#1103322)
(885) Generate
Arguments: explode(filter(stockQuantities#1103297, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1103324) AND (lambda x#1101337.storageLocation.Id = storageLocId#1103323)), lambda x#1101337, false))), false, [stockQuantity#1103356]
(886) Project
Arguments: [systemId#1103292, internalUUID#1103293, product#1103294, plant#1103295, calculationDateTime#1103296, stockQuantities#1103297, plantId#1103321, plantUuid#1103322, storageLocId#1103323, storageLocUuid#1103324, stockQuantity#1103356]
(887) Aggregate
Arguments: [plantUuid#1103322, internalUUID#1103293, plant#1103295, product#1103294, systemId#1103292], [plantUuid#1103322, internalUUID#1103293, plant#1103295, product#1103294, systemId#1103292, first(calculationDateTime#1103296, false) AS calculationDateTime#1103357, collect_list(stockQuantity#1103356, 0, 0) AS stockQuantities#1103358]
(888) Project
Arguments: [systemId#1103292, internalUUID#1103293, product#1103294, plant#1103295, calculationDateTime#1103357, stockQuantities#1103358]
(889) Generate
Arguments: explode(stockQuantities#1103358), false, [stockQuantity#1103359]
(890) Project
Arguments: [systemId#1103292, internalUUID#1103293, product#1103294, plant#1103295, calculationDateTime#1103357, stockQuantities#1103358, stockQuantity#1103359]
(891) Project
Arguments: [plant#1103295.id AS plant#1103360, plant#1103295.internalRefUUID AS plantUuid#1103361, product#1103294.id AS product#1103362, product#1103294.internalRefUUID AS productUuid#1103363, calculationDateTime#1103357, stockQuantity#1103359.storagelocation.id AS storageLocId#1103364, stockQuantity#1103359.storagelocation.internalRefUUID AS storageLocUuid#1103365, stockQuantity#1103359.quantity.measure AS quantity#1103366, stockQuantity#1103359.specialStockIndicator.code AS specialStockIndicator#1103367, stockQuantity#1103359.stockType.code AS stockType#1103368]
(892) Filter
Arguments: ((specialStockIndicator#1103367 = ) AND (stockType#1103368 = 01))
(893) LogicalRelation
Arguments: parquet, [product#1103369, plant#1103370, orderDateTime#1103371, planningStartDateTime#1103372], false
(894) RepartitionByExpression
Arguments: [product#1103369, plant#1103370], 37
(895) Project
Arguments: [product#1103369, plant#1103370, orderDateTime#1103371]
(896) LogicalRelation
Arguments: parquet, [systemId#1103373, internalUUID#1103374, plant#1103375, product#1103376, blockedForReplenishmentStartingFrom#1103377, productionAspect#1103378, salesPlant#1103379, listing#1103380, sourceOfSupplyCategory#1103381], false
(897) Repartition
Arguments: 37, true
(898) Project
Arguments: [systemId#1103373, internalUUID#1103374, plant#1103375, product#1103376, blockedForReplenishmentStartingFrom#1103377, productionAspect#1103378, salesPlant#1103379, listing#1103380, sourceOfSupplyCategory#1103381, struct(systemId, systemId#1103373, internalUUID, internalUUID#1103374, plant, plant#1103375, product, product#1103376, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103377, productionAspect, productionAspect#1103378, salesPlant, salesPlant#1103379, listing, listing#1103380, sourceOfSupplyCategory, sourceOfSupplyCategory#1103381) AS productPlant#1103382]
(899) Project
Arguments: [productPlant#1103382]
(900) Join
Arguments: LeftOuter, ((product#1103369 <=> productPlant#1103382.product.internalRefUUID) AND (plant#1103370 <=> productPlant#1103382.plant.internalRefUUID))
(901) Project
Arguments: [product#1103369, plant#1103370, orderDateTime#1103371, productPlant#1103382]
(902) LogicalRelation
Arguments: parquet, [systemId#1103383, internalUUID#1103384, id#1103385, displayId#1103386, name#1103387, baseUnitOfMeasure#1103388, unitOfMeasures#1103389, unitOfMeasureConversions#1103390, productionAspect#1103391, salesAspect#1103392, procurementAspect#1103393, productGroup#1103394], false
(903) Repartition
Arguments: 37, true
(904) Join
Arguments: LeftOuter, (product#1103369 = internalUUID#1103384)
(905) Project
Arguments: [product#1103369, plant#1103370, orderDateTime#1103371, productPlant#1103382, systemId#1103383, internalUUID#1103384, id#1103385, displayId#1103386, name#1103387, baseUnitOfMeasure#1103388, unitOfMeasures#1103389, unitOfMeasureConversions#1103390, productionAspect#1103391, salesAspect#1103392, procurementAspect#1103393, productGroup#1103394, filter(unitOfMeasureConversions#1103390, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103382.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103382.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103388.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103388.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103395]
(906) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103395.quantityNumerator), true, [quantityNumerator#1103396]
(907) Project
Arguments: [product#1103369, plant#1103370, orderDateTime#1103371, productPlant#1103382, systemId#1103383, internalUUID#1103384, id#1103385, displayId#1103386, name#1103387, baseUnitOfMeasure#1103388, unitOfMeasures#1103389, unitOfMeasureConversions#1103390, productionAspect#1103391, salesAspect#1103392, procurementAspect#1103393, productGroup#1103394, filteredUnitOfMeasureConversions#1103395, quantityNumerator#1103396]
(908) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103395.quantityDenominator), true, [quantityDenominator#1103397]
(909) Project
Arguments: [product#1103369, plant#1103370, orderDateTime#1103371, productPlant#1103382, systemId#1103383, internalUUID#1103384, id#1103385, displayId#1103386, name#1103387, baseUnitOfMeasure#1103388, unitOfMeasures#1103389, unitOfMeasureConversions#1103390, productionAspect#1103391, salesAspect#1103392, procurementAspect#1103393, productGroup#1103394, filteredUnitOfMeasureConversions#1103395, quantityNumerator#1103396, quantityDenominator#1103397]
(910) Project
Arguments: [product#1103369, plant#1103370, orderDateTime#1103371, productPlant#1103382, systemId#1103383, internalUUID#1103384, id#1103385, displayId#1103386, name#1103387, baseUnitOfMeasure#1103388, unitOfMeasures#1103389, unitOfMeasureConversions#1103390, productionAspect#1103391, salesAspect#1103392, procurementAspect#1103393, productGroup#1103394, filteredUnitOfMeasureConversions#1103395, quantityNumerator#1103396, quantityDenominator#1103397, (cast(quantityNumerator#1103396 as double) / cast(quantityDenominator#1103397 as double)) AS outboundUnit#1103398]
(911) Project
Arguments: [product#1103369, plant#1103370, orderDateTime#1103371, productPlant#1103382, systemId#1103383, internalUUID#1103384, id#1103385, displayId#1103386, name#1103387, baseUnitOfMeasure#1103388, unitOfMeasures#1103389, unitOfMeasureConversions#1103390, productionAspect#1103391, salesAspect#1103392, procurementAspect#1103393, productGroup#1103394, filteredUnitOfMeasureConversions#1103395, quantityNumerator#1103396, quantityDenominator#1103397, CASE WHEN (isnull(outboundUnit#1103398) OR (outboundUnit#1103398 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103398 END AS outboundUnit#1103399]
(912) Project
Arguments: [product#1103369, plant#1103370, orderDateTime#1103371, productPlant#1103382, outboundUnit#1103399]
(913) Join
Arguments: Inner, ((plantUuid#1103361 = plant#1103370) AND (productUuid#1103363 = product#1103369))
(914) Filter
Arguments: (calculationDateTime#1103357 <= orderDateTime#1103371)
(915) Project
Arguments: [plantUuid#1103361 AS plant#1103400, productUuid#1103363 AS product#1103401, storageLocId#1103364, calculationDateTime#1103357, quantity#1103366]
(916) Aggregate
Arguments: [plant#1103400, product#1103401, storageLocId#1103364], [plant#1103400, product#1103401, storageLocId#1103364, max(calculationDateTime#1103357) AS max_calc_datetime#1103402]
(917) Join
Arguments: Inner, ((((plant#1103290 <=> plant#1103400) AND (product#1103291 <=> product#1103401)) AND (storageLocId#1103254 <=> storageLocId#1103364)) AND (calculationDateTime#1103247 <=> max_calc_datetime#1103402))
(918) Project
Arguments: [plant#1103290, product#1103291, storageLocId#1103254, calculationDateTime#1103247, quantity#1103256]
(919) Aggregate
Arguments: [product#1103291, plant#1103290], [product#1103291, plant#1103290, sum(quantity#1103256) AS quantitySum#1103403, min(calculationDateTime#1103247) AS minCalculationDateTime#1103404]
(920) Project
Arguments: [product#1103291, plant#1103290, quantitySum#1103403, minCalculationDateTime#1103404, round(quantitySum#1103403, 0) AS roundedQuantitySum#1103405]
(921) Join
Arguments: LeftOuter, ((plant#1103152 = plant#1103290) AND (product#1103151 = product#1103291))
(922) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, outboundUnit#1103181, roundedQuantitySum#1103405, minCalculationDateTime#1103404]
(923) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, outboundUnit#1103181, roundedQuantitySum#1103405, minCalculationDateTime#1103404, CASE WHEN isnotnull(minCalculationDateTime#1103404) THEN minCalculationDateTime#1103404 ELSE orderDateTime#1103153 END AS stockDatetime#1103406]
(924) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, outboundUnit#1103181, roundedQuantitySum#1103405, minCalculationDateTime#1103404, stockDatetime#1103406, CASE WHEN isnotnull(roundedQuantitySum#1103405) THEN array(roundedQuantitySum#1103405) ELSE array(0.0) END AS stockBatchQuantities#1103407]
(925) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, outboundUnit#1103181, roundedQuantitySum#1103405, minCalculationDateTime#1103404, stockDatetime#1103406, stockBatchQuantities#1103407, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1103408]
(926) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, outboundUnit#1103181, roundedQuantitySum#1103405, stockDatetime#1103406, stockBatchQuantities#1103407, stockBatchShelfLifeEndDatetimes#1103408]
(927) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, outboundUnit#1103181, stockDatetime#1103406, stockBatchQuantities#1103407, stockBatchShelfLifeEndDatetimes#1103408]
(928) LogicalRelation
Arguments: parquet, [product#1103409, plant#1103410, orderDateTime#1103411, planningStartDateTime#1103412], false
(929) RepartitionByExpression
Arguments: [product#1103409, plant#1103410], 37
(930) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411]
(931) LogicalRelation
Arguments: parquet, [systemId#1103413, internalUUID#1103414, plant#1103415, product#1103416, blockedForReplenishmentStartingFrom#1103417, productionAspect#1103418, salesPlant#1103419, listing#1103420, sourceOfSupplyCategory#1103421], false
(932) Repartition
Arguments: 37, true
(933) Project
Arguments: [systemId#1103413, internalUUID#1103414, plant#1103415, product#1103416, blockedForReplenishmentStartingFrom#1103417, productionAspect#1103418, salesPlant#1103419, listing#1103420, sourceOfSupplyCategory#1103421, struct(systemId, systemId#1103413, internalUUID, internalUUID#1103414, plant, plant#1103415, product, product#1103416, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103417, productionAspect, productionAspect#1103418, salesPlant, salesPlant#1103419, listing, listing#1103420, sourceOfSupplyCategory, sourceOfSupplyCategory#1103421) AS productPlant#1103422]
(934) Project
Arguments: [productPlant#1103422]
(935) Join
Arguments: LeftOuter, ((product#1103409 <=> productPlant#1103422.product.internalRefUUID) AND (plant#1103410 <=> productPlant#1103422.plant.internalRefUUID))
(936) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422]
(937) LogicalRelation
Arguments: parquet, [systemId#1103423, internalUUID#1103424, id#1103425, displayId#1103426, name#1103427, baseUnitOfMeasure#1103428, unitOfMeasures#1103429, unitOfMeasureConversions#1103430, productionAspect#1103431, salesAspect#1103432, procurementAspect#1103433, productGroup#1103434], false
(938) Repartition
Arguments: 37, true
(939) Join
Arguments: LeftOuter, (product#1103409 = internalUUID#1103424)
(940) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, systemId#1103423, internalUUID#1103424, id#1103425, displayId#1103426, name#1103427, baseUnitOfMeasure#1103428, unitOfMeasures#1103429, unitOfMeasureConversions#1103430, productionAspect#1103431, salesAspect#1103432, procurementAspect#1103433, productGroup#1103434, filter(unitOfMeasureConversions#1103430, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103422.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103422.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103428.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103428.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103435]
(941) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103435.quantityNumerator), true, [quantityNumerator#1103436]
(942) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, systemId#1103423, internalUUID#1103424, id#1103425, displayId#1103426, name#1103427, baseUnitOfMeasure#1103428, unitOfMeasures#1103429, unitOfMeasureConversions#1103430, productionAspect#1103431, salesAspect#1103432, procurementAspect#1103433, productGroup#1103434, filteredUnitOfMeasureConversions#1103435, quantityNumerator#1103436]
(943) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103435.quantityDenominator), true, [quantityDenominator#1103437]
(944) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, systemId#1103423, internalUUID#1103424, id#1103425, displayId#1103426, name#1103427, baseUnitOfMeasure#1103428, unitOfMeasures#1103429, unitOfMeasureConversions#1103430, productionAspect#1103431, salesAspect#1103432, procurementAspect#1103433, productGroup#1103434, filteredUnitOfMeasureConversions#1103435, quantityNumerator#1103436, quantityDenominator#1103437]
(945) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, systemId#1103423, internalUUID#1103424, id#1103425, displayId#1103426, name#1103427, baseUnitOfMeasure#1103428, unitOfMeasures#1103429, unitOfMeasureConversions#1103430, productionAspect#1103431, salesAspect#1103432, procurementAspect#1103433, productGroup#1103434, filteredUnitOfMeasureConversions#1103435, quantityNumerator#1103436, quantityDenominator#1103437, (cast(quantityNumerator#1103436 as double) / cast(quantityDenominator#1103437 as double)) AS outboundUnit#1103438]
(946) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, systemId#1103423, internalUUID#1103424, id#1103425, displayId#1103426, name#1103427, baseUnitOfMeasure#1103428, unitOfMeasures#1103429, unitOfMeasureConversions#1103430, productionAspect#1103431, salesAspect#1103432, procurementAspect#1103433, productGroup#1103434, filteredUnitOfMeasureConversions#1103435, quantityNumerator#1103436, quantityDenominator#1103437, CASE WHEN (isnull(outboundUnit#1103438) OR (outboundUnit#1103438 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103438 END AS outboundUnit#1103439]
(947) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, outboundUnit#1103439]
(948) LogicalRelation
Arguments: parquet, [systemId#1103440, internalUUID#1103441, product#1103442, plant#1103443, calculationDateTime#1103444, stockQuantities#1103445], false
(949) Repartition
Arguments: 37, true
(950) LogicalRelation
Arguments: parquet, [marketUnit#1103446, description#1103447, articleHierarchy#1103448, defaultCurrency#1103449, responsibilities#1103450, replenishmentTypes#1103451, distributionCenters#1103452, assignedArticleHierarchyNodes#1103453, minOrderQtySetting#1103454, listingCheck#1103455, odsSelection#1103456, demandProfiles#1103457, constraintProfiles#1103458, optimizationProfiles#1103459, orderGroupSplitProfiles#1103460, supplierMinimumProfiles#1103461, multipleRestrictionProfiles#1103462, preferredUomSource#1103463, handlingOfUnfulfilledDemands#1103464, negligibleQuantitiesThreshold#1103465, eventtype#1103466], false
(951) Repartition
Arguments: 37, true
(952) Filter
Arguments: (marketUnit#1103446 <=> AUTO_ALL_ProdLoc)
(953) Project
Arguments: [marketUnit#1103446, description#1103447, articleHierarchy#1103448, defaultCurrency#1103449, responsibilities#1103450, replenishmentTypes#1103451, distributionCenters#1103452, assignedArticleHierarchyNodes#1103453, minOrderQtySetting#1103454, listingCheck#1103455, odsSelection#1103456, demandProfiles#1103457, constraintProfiles#1103458, optimizationProfiles#1103459, orderGroupSplitProfiles#1103460, supplierMinimumProfiles#1103461, multipleRestrictionProfiles#1103462, preferredUomSource#1103463, handlingOfUnfulfilledDemands#1103464, negligibleQuantitiesThreshold#1103465, eventtype#1103466]
(954) Project
Arguments: [distributionCenters#1103452]
(955) Generate
Arguments: explode(distributionCenters#1103452), false, [distributionCenters#1103467]
(956) Project
Arguments: [distributionCenters#1103467]
(957) Generate
Arguments: explode(distributionCenters#1103467.storageLocations), false, [storageLocations#1103468]
(958) Project
Arguments: [distributionCenters#1103467.id AS plantId#1103469, distributionCenters#1103467.internalRefUUID AS plantUuid#1103470, storageLocations#1103468]
(959) Project
Arguments: [plantId#1103469, plantUuid#1103470, storageLocations#1103468.id AS storageLocId#1103471, storageLocations#1103468.internalRefUUID AS storageLocUuid#1103472]
(960) LogicalRelation
Arguments: parquet, [product#1103473, plant#1103474, orderDateTime#1103475, planningStartDateTime#1103476], false
(961) RepartitionByExpression
Arguments: [product#1103473, plant#1103474], 37
(962) Project
Arguments: [product#1103473, plant#1103474, orderDateTime#1103475]
(963) LogicalRelation
Arguments: parquet, [systemId#1103477, internalUUID#1103478, plant#1103479, product#1103480, blockedForReplenishmentStartingFrom#1103481, productionAspect#1103482, salesPlant#1103483, listing#1103484, sourceOfSupplyCategory#1103485], false
(964) Repartition
Arguments: 37, true
(965) Project
Arguments: [systemId#1103477, internalUUID#1103478, plant#1103479, product#1103480, blockedForReplenishmentStartingFrom#1103481, productionAspect#1103482, salesPlant#1103483, listing#1103484, sourceOfSupplyCategory#1103485, struct(systemId, systemId#1103477, internalUUID, internalUUID#1103478, plant, plant#1103479, product, product#1103480, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103481, productionAspect, productionAspect#1103482, salesPlant, salesPlant#1103483, listing, listing#1103484, sourceOfSupplyCategory, sourceOfSupplyCategory#1103485) AS productPlant#1103486]
(966) Project
Arguments: [productPlant#1103486]
(967) Join
Arguments: LeftOuter, ((product#1103473 <=> productPlant#1103486.product.internalRefUUID) AND (plant#1103474 <=> productPlant#1103486.plant.internalRefUUID))
(968) Project
Arguments: [product#1103473, plant#1103474, orderDateTime#1103475, productPlant#1103486]
(969) LogicalRelation
Arguments: parquet, [systemId#1103487, internalUUID#1103488, id#1103489, displayId#1103490, name#1103491, baseUnitOfMeasure#1103492, unitOfMeasures#1103493, unitOfMeasureConversions#1103494, productionAspect#1103495, salesAspect#1103496, procurementAspect#1103497, productGroup#1103498], false
(970) Repartition
Arguments: 37, true
(971) Join
Arguments: LeftOuter, (product#1103473 = internalUUID#1103488)
(972) Project
Arguments: [product#1103473, plant#1103474, orderDateTime#1103475, productPlant#1103486, systemId#1103487, internalUUID#1103488, id#1103489, displayId#1103490, name#1103491, baseUnitOfMeasure#1103492, unitOfMeasures#1103493, unitOfMeasureConversions#1103494, productionAspect#1103495, salesAspect#1103496, procurementAspect#1103497, productGroup#1103498, filter(unitOfMeasureConversions#1103494, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103486.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103486.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103492.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103492.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103499]
(973) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103499.quantityNumerator), true, [quantityNumerator#1103500]
(974) Project
Arguments: [product#1103473, plant#1103474, orderDateTime#1103475, productPlant#1103486, systemId#1103487, internalUUID#1103488, id#1103489, displayId#1103490, name#1103491, baseUnitOfMeasure#1103492, unitOfMeasures#1103493, unitOfMeasureConversions#1103494, productionAspect#1103495, salesAspect#1103496, procurementAspect#1103497, productGroup#1103498, filteredUnitOfMeasureConversions#1103499, quantityNumerator#1103500]
(975) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103499.quantityDenominator), true, [quantityDenominator#1103501]
(976) Project
Arguments: [product#1103473, plant#1103474, orderDateTime#1103475, productPlant#1103486, systemId#1103487, internalUUID#1103488, id#1103489, displayId#1103490, name#1103491, baseUnitOfMeasure#1103492, unitOfMeasures#1103493, unitOfMeasureConversions#1103494, productionAspect#1103495, salesAspect#1103496, procurementAspect#1103497, productGroup#1103498, filteredUnitOfMeasureConversions#1103499, quantityNumerator#1103500, quantityDenominator#1103501]
(977) Project
Arguments: [product#1103473, plant#1103474, orderDateTime#1103475, productPlant#1103486, systemId#1103487, internalUUID#1103488, id#1103489, displayId#1103490, name#1103491, baseUnitOfMeasure#1103492, unitOfMeasures#1103493, unitOfMeasureConversions#1103494, productionAspect#1103495, salesAspect#1103496, procurementAspect#1103497, productGroup#1103498, filteredUnitOfMeasureConversions#1103499, quantityNumerator#1103500, quantityDenominator#1103501, (cast(quantityNumerator#1103500 as double) / cast(quantityDenominator#1103501 as double)) AS outboundUnit#1103502]
(978) Project
Arguments: [product#1103473, plant#1103474, orderDateTime#1103475, productPlant#1103486, systemId#1103487, internalUUID#1103488, id#1103489, displayId#1103490, name#1103491, baseUnitOfMeasure#1103492, unitOfMeasures#1103493, unitOfMeasureConversions#1103494, productionAspect#1103495, salesAspect#1103496, procurementAspect#1103497, productGroup#1103498, filteredUnitOfMeasureConversions#1103499, quantityNumerator#1103500, quantityDenominator#1103501, CASE WHEN (isnull(outboundUnit#1103502) OR (outboundUnit#1103502 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103502 END AS outboundUnit#1103503]
(979) Project
Arguments: [product#1103473, plant#1103474, orderDateTime#1103475, productPlant#1103486, outboundUnit#1103503]
(980) Project
Arguments: [plant#1103474]
(981) Deduplicate
Arguments: [plant#1103474]
(982) Join
Arguments: Inner, (plantUuid#1103470 = plant#1103474)
(983) Project
Arguments: [plantId#1103469, plantUuid#1103470, storageLocId#1103471, storageLocUuid#1103472]
(984) Join
Arguments: Inner, (plant#1103443.internalRefUUID <=> plantUuid#1103470)
(985) Generate
Arguments: explode(filter(stockQuantities#1103445, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1103472) AND (lambda x#1101337.storageLocation.Id = storageLocId#1103471)), lambda x#1101337, false))), false, [stockQuantity#1103504]
(986) Project
Arguments: [systemId#1103440, internalUUID#1103441, product#1103442, plant#1103443, calculationDateTime#1103444, stockQuantities#1103445, plantId#1103469, plantUuid#1103470, storageLocId#1103471, storageLocUuid#1103472, stockQuantity#1103504]
(987) Aggregate
Arguments: [plantUuid#1103470, internalUUID#1103441, plant#1103443, product#1103442, systemId#1103440], [plantUuid#1103470, internalUUID#1103441, plant#1103443, product#1103442, systemId#1103440, first(calculationDateTime#1103444, false) AS calculationDateTime#1103505, collect_list(stockQuantity#1103504, 0, 0) AS stockQuantities#1103506]
(988) Project
Arguments: [systemId#1103440, internalUUID#1103441, product#1103442, plant#1103443, calculationDateTime#1103505, stockQuantities#1103506]
(989) Generate
Arguments: explode(stockQuantities#1103506), false, [stockQuantity#1103507]
(990) Project
Arguments: [systemId#1103440, internalUUID#1103441, product#1103442, plant#1103443, calculationDateTime#1103505, stockQuantities#1103506, stockQuantity#1103507]
(991) Project
Arguments: [plant#1103443.id AS plant#1103508, plant#1103443.internalRefUUID AS plantUuid#1103509, product#1103442.id AS product#1103510, product#1103442.internalRefUUID AS productUuid#1103511, calculationDateTime#1103505, stockQuantity#1103507.storagelocation.id AS storageLocId#1103512, stockQuantity#1103507.storagelocation.internalRefUUID AS storageLocUuid#1103513, stockQuantity#1103507.quantity.measure AS quantity#1103514, stockQuantity#1103507.specialStockIndicator.code AS specialStockIndicator#1103515, stockQuantity#1103507.stockType.code AS stockType#1103516]
(992) Filter
Arguments: ((specialStockIndicator#1103515 = ) AND (stockType#1103516 = 01))
(993) LogicalRelation
Arguments: parquet, [product#1103517, plant#1103518, orderDateTime#1103519, planningStartDateTime#1103520], false
(994) RepartitionByExpression
Arguments: [product#1103517, plant#1103518], 37
(995) Project
Arguments: [product#1103517, plant#1103518, orderDateTime#1103519]
(996) LogicalRelation
Arguments: parquet, [systemId#1103521, internalUUID#1103522, plant#1103523, product#1103524, blockedForReplenishmentStartingFrom#1103525, productionAspect#1103526, salesPlant#1103527, listing#1103528, sourceOfSupplyCategory#1103529], false
(997) Repartition
Arguments: 37, true
(998) Project
Arguments: [systemId#1103521, internalUUID#1103522, plant#1103523, product#1103524, blockedForReplenishmentStartingFrom#1103525, productionAspect#1103526, salesPlant#1103527, listing#1103528, sourceOfSupplyCategory#1103529, struct(systemId, systemId#1103521, internalUUID, internalUUID#1103522, plant, plant#1103523, product, product#1103524, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103525, productionAspect, productionAspect#1103526, salesPlant, salesPlant#1103527, listing, listing#1103528, sourceOfSupplyCategory, sourceOfSupplyCategory#1103529) AS productPlant#1103530]
(999) Project
Arguments: [productPlant#1103530]
(1000) Join
Arguments: LeftOuter, ((product#1103517 <=> productPlant#1103530.product.internalRefUUID) AND (plant#1103518 <=> productPlant#1103530.plant.internalRefUUID))
(1001) Project
Arguments: [product#1103517, plant#1103518, orderDateTime#1103519, productPlant#1103530]
(1002) LogicalRelation
Arguments: parquet, [systemId#1103531, internalUUID#1103532, id#1103533, displayId#1103534, name#1103535, baseUnitOfMeasure#1103536, unitOfMeasures#1103537, unitOfMeasureConversions#1103538, productionAspect#1103539, salesAspect#1103540, procurementAspect#1103541, productGroup#1103542], false
(1003) Repartition
Arguments: 37, true
(1004) Join
Arguments: LeftOuter, (product#1103517 = internalUUID#1103532)
(1005) Project
Arguments: [product#1103517, plant#1103518, orderDateTime#1103519, productPlant#1103530, systemId#1103531, internalUUID#1103532, id#1103533, displayId#1103534, name#1103535, baseUnitOfMeasure#1103536, unitOfMeasures#1103537, unitOfMeasureConversions#1103538, productionAspect#1103539, salesAspect#1103540, procurementAspect#1103541, productGroup#1103542, filter(unitOfMeasureConversions#1103538, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103530.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103530.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103536.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103536.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103543]
(1006) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103543.quantityNumerator), true, [quantityNumerator#1103544]
(1007) Project
Arguments: [product#1103517, plant#1103518, orderDateTime#1103519, productPlant#1103530, systemId#1103531, internalUUID#1103532, id#1103533, displayId#1103534, name#1103535, baseUnitOfMeasure#1103536, unitOfMeasures#1103537, unitOfMeasureConversions#1103538, productionAspect#1103539, salesAspect#1103540, procurementAspect#1103541, productGroup#1103542, filteredUnitOfMeasureConversions#1103543, quantityNumerator#1103544]
(1008) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103543.quantityDenominator), true, [quantityDenominator#1103545]
(1009) Project
Arguments: [product#1103517, plant#1103518, orderDateTime#1103519, productPlant#1103530, systemId#1103531, internalUUID#1103532, id#1103533, displayId#1103534, name#1103535, baseUnitOfMeasure#1103536, unitOfMeasures#1103537, unitOfMeasureConversions#1103538, productionAspect#1103539, salesAspect#1103540, procurementAspect#1103541, productGroup#1103542, filteredUnitOfMeasureConversions#1103543, quantityNumerator#1103544, quantityDenominator#1103545]
(1010) Project
Arguments: [product#1103517, plant#1103518, orderDateTime#1103519, productPlant#1103530, systemId#1103531, internalUUID#1103532, id#1103533, displayId#1103534, name#1103535, baseUnitOfMeasure#1103536, unitOfMeasures#1103537, unitOfMeasureConversions#1103538, productionAspect#1103539, salesAspect#1103540, procurementAspect#1103541, productGroup#1103542, filteredUnitOfMeasureConversions#1103543, quantityNumerator#1103544, quantityDenominator#1103545, (cast(quantityNumerator#1103544 as double) / cast(quantityDenominator#1103545 as double)) AS outboundUnit#1103546]
(1011) Project
Arguments: [product#1103517, plant#1103518, orderDateTime#1103519, productPlant#1103530, systemId#1103531, internalUUID#1103532, id#1103533, displayId#1103534, name#1103535, baseUnitOfMeasure#1103536, unitOfMeasures#1103537, unitOfMeasureConversions#1103538, productionAspect#1103539, salesAspect#1103540, procurementAspect#1103541, productGroup#1103542, filteredUnitOfMeasureConversions#1103543, quantityNumerator#1103544, quantityDenominator#1103545, CASE WHEN (isnull(outboundUnit#1103546) OR (outboundUnit#1103546 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103546 END AS outboundUnit#1103547]
(1012) Project
Arguments: [product#1103517, plant#1103518, orderDateTime#1103519, productPlant#1103530, outboundUnit#1103547]
(1013) Join
Arguments: Inner, ((plantUuid#1103509 = plant#1103518) AND (productUuid#1103511 = product#1103517))
(1014) Filter
Arguments: (calculationDateTime#1103505 <= orderDateTime#1103519)
(1015) Project
Arguments: [plantUuid#1103509 AS plant#1103548, productUuid#1103511 AS product#1103549, storageLocId#1103512, calculationDateTime#1103505, quantity#1103514]
(1016) LogicalRelation
Arguments: parquet, [systemId#1103550, internalUUID#1103551, product#1103552, plant#1103553, calculationDateTime#1103554, stockQuantities#1103555], false
(1017) Repartition
Arguments: 37, true
(1018) LogicalRelation
Arguments: parquet, [marketUnit#1103556, description#1103557, articleHierarchy#1103558, defaultCurrency#1103559, responsibilities#1103560, replenishmentTypes#1103561, distributionCenters#1103562, assignedArticleHierarchyNodes#1103563, minOrderQtySetting#1103564, listingCheck#1103565, odsSelection#1103566, demandProfiles#1103567, constraintProfiles#1103568, optimizationProfiles#1103569, orderGroupSplitProfiles#1103570, supplierMinimumProfiles#1103571, multipleRestrictionProfiles#1103572, preferredUomSource#1103573, handlingOfUnfulfilledDemands#1103574, negligibleQuantitiesThreshold#1103575, eventtype#1103576], false
(1019) Repartition
Arguments: 37, true
(1020) Filter
Arguments: (marketUnit#1103556 <=> AUTO_ALL_ProdLoc)
(1021) Project
Arguments: [marketUnit#1103556, description#1103557, articleHierarchy#1103558, defaultCurrency#1103559, responsibilities#1103560, replenishmentTypes#1103561, distributionCenters#1103562, assignedArticleHierarchyNodes#1103563, minOrderQtySetting#1103564, listingCheck#1103565, odsSelection#1103566, demandProfiles#1103567, constraintProfiles#1103568, optimizationProfiles#1103569, orderGroupSplitProfiles#1103570, supplierMinimumProfiles#1103571, multipleRestrictionProfiles#1103572, preferredUomSource#1103573, handlingOfUnfulfilledDemands#1103574, negligibleQuantitiesThreshold#1103575, eventtype#1103576]
(1022) Project
Arguments: [distributionCenters#1103562]
(1023) Generate
Arguments: explode(distributionCenters#1103562), false, [distributionCenters#1103577]
(1024) Project
Arguments: [distributionCenters#1103577]
(1025) Generate
Arguments: explode(distributionCenters#1103577.storageLocations), false, [storageLocations#1103578]
(1026) Project
Arguments: [distributionCenters#1103577.id AS plantId#1103579, distributionCenters#1103577.internalRefUUID AS plantUuid#1103580, storageLocations#1103578]
(1027) Project
Arguments: [plantId#1103579, plantUuid#1103580, storageLocations#1103578.id AS storageLocId#1103581, storageLocations#1103578.internalRefUUID AS storageLocUuid#1103582]
(1028) LogicalRelation
Arguments: parquet, [product#1103583, plant#1103584, orderDateTime#1103585, planningStartDateTime#1103586], false
(1029) RepartitionByExpression
Arguments: [product#1103583, plant#1103584], 37
(1030) Project
Arguments: [product#1103583, plant#1103584, orderDateTime#1103585]
(1031) LogicalRelation
Arguments: parquet, [systemId#1103587, internalUUID#1103588, plant#1103589, product#1103590, blockedForReplenishmentStartingFrom#1103591, productionAspect#1103592, salesPlant#1103593, listing#1103594, sourceOfSupplyCategory#1103595], false
(1032) Repartition
Arguments: 37, true
(1033) Project
Arguments: [systemId#1103587, internalUUID#1103588, plant#1103589, product#1103590, blockedForReplenishmentStartingFrom#1103591, productionAspect#1103592, salesPlant#1103593, listing#1103594, sourceOfSupplyCategory#1103595, struct(systemId, systemId#1103587, internalUUID, internalUUID#1103588, plant, plant#1103589, product, product#1103590, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103591, productionAspect, productionAspect#1103592, salesPlant, salesPlant#1103593, listing, listing#1103594, sourceOfSupplyCategory, sourceOfSupplyCategory#1103595) AS productPlant#1103596]
(1034) Project
Arguments: [productPlant#1103596]
(1035) Join
Arguments: LeftOuter, ((product#1103583 <=> productPlant#1103596.product.internalRefUUID) AND (plant#1103584 <=> productPlant#1103596.plant.internalRefUUID))
(1036) Project
Arguments: [product#1103583, plant#1103584, orderDateTime#1103585, productPlant#1103596]
(1037) LogicalRelation
Arguments: parquet, [systemId#1103597, internalUUID#1103598, id#1103599, displayId#1103600, name#1103601, baseUnitOfMeasure#1103602, unitOfMeasures#1103603, unitOfMeasureConversions#1103604, productionAspect#1103605, salesAspect#1103606, procurementAspect#1103607, productGroup#1103608], false
(1038) Repartition
Arguments: 37, true
(1039) Join
Arguments: LeftOuter, (product#1103583 = internalUUID#1103598)
(1040) Project
Arguments: [product#1103583, plant#1103584, orderDateTime#1103585, productPlant#1103596, systemId#1103597, internalUUID#1103598, id#1103599, displayId#1103600, name#1103601, baseUnitOfMeasure#1103602, unitOfMeasures#1103603, unitOfMeasureConversions#1103604, productionAspect#1103605, salesAspect#1103606, procurementAspect#1103607, productGroup#1103608, filter(unitOfMeasureConversions#1103604, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103596.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103596.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103602.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103602.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103609]
(1041) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103609.quantityNumerator), true, [quantityNumerator#1103610]
(1042) Project
Arguments: [product#1103583, plant#1103584, orderDateTime#1103585, productPlant#1103596, systemId#1103597, internalUUID#1103598, id#1103599, displayId#1103600, name#1103601, baseUnitOfMeasure#1103602, unitOfMeasures#1103603, unitOfMeasureConversions#1103604, productionAspect#1103605, salesAspect#1103606, procurementAspect#1103607, productGroup#1103608, filteredUnitOfMeasureConversions#1103609, quantityNumerator#1103610]
(1043) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103609.quantityDenominator), true, [quantityDenominator#1103611]
(1044) Project
Arguments: [product#1103583, plant#1103584, orderDateTime#1103585, productPlant#1103596, systemId#1103597, internalUUID#1103598, id#1103599, displayId#1103600, name#1103601, baseUnitOfMeasure#1103602, unitOfMeasures#1103603, unitOfMeasureConversions#1103604, productionAspect#1103605, salesAspect#1103606, procurementAspect#1103607, productGroup#1103608, filteredUnitOfMeasureConversions#1103609, quantityNumerator#1103610, quantityDenominator#1103611]
(1045) Project
Arguments: [product#1103583, plant#1103584, orderDateTime#1103585, productPlant#1103596, systemId#1103597, internalUUID#1103598, id#1103599, displayId#1103600, name#1103601, baseUnitOfMeasure#1103602, unitOfMeasures#1103603, unitOfMeasureConversions#1103604, productionAspect#1103605, salesAspect#1103606, procurementAspect#1103607, productGroup#1103608, filteredUnitOfMeasureConversions#1103609, quantityNumerator#1103610, quantityDenominator#1103611, (cast(quantityNumerator#1103610 as double) / cast(quantityDenominator#1103611 as double)) AS outboundUnit#1103612]
(1046) Project
Arguments: [product#1103583, plant#1103584, orderDateTime#1103585, productPlant#1103596, systemId#1103597, internalUUID#1103598, id#1103599, displayId#1103600, name#1103601, baseUnitOfMeasure#1103602, unitOfMeasures#1103603, unitOfMeasureConversions#1103604, productionAspect#1103605, salesAspect#1103606, procurementAspect#1103607, productGroup#1103608, filteredUnitOfMeasureConversions#1103609, quantityNumerator#1103610, quantityDenominator#1103611, CASE WHEN (isnull(outboundUnit#1103612) OR (outboundUnit#1103612 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103612 END AS outboundUnit#1103613]
(1047) Project
Arguments: [product#1103583, plant#1103584, orderDateTime#1103585, productPlant#1103596, outboundUnit#1103613]
(1048) Project
Arguments: [plant#1103584]
(1049) Deduplicate
Arguments: [plant#1103584]
(1050) Join
Arguments: Inner, (plantUuid#1103580 = plant#1103584)
(1051) Project
Arguments: [plantId#1103579, plantUuid#1103580, storageLocId#1103581, storageLocUuid#1103582]
(1052) Join
Arguments: Inner, (plant#1103553.internalRefUUID <=> plantUuid#1103580)
(1053) Generate
Arguments: explode(filter(stockQuantities#1103555, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1103582) AND (lambda x#1101337.storageLocation.Id = storageLocId#1103581)), lambda x#1101337, false))), false, [stockQuantity#1103614]
(1054) Project
Arguments: [systemId#1103550, internalUUID#1103551, product#1103552, plant#1103553, calculationDateTime#1103554, stockQuantities#1103555, plantId#1103579, plantUuid#1103580, storageLocId#1103581, storageLocUuid#1103582, stockQuantity#1103614]
(1055) Aggregate
Arguments: [plantUuid#1103580, internalUUID#1103551, plant#1103553, product#1103552, systemId#1103550], [plantUuid#1103580, internalUUID#1103551, plant#1103553, product#1103552, systemId#1103550, first(calculationDateTime#1103554, false) AS calculationDateTime#1103615, collect_list(stockQuantity#1103614, 0, 0) AS stockQuantities#1103616]
(1056) Project
Arguments: [systemId#1103550, internalUUID#1103551, product#1103552, plant#1103553, calculationDateTime#1103615, stockQuantities#1103616]
(1057) Generate
Arguments: explode(stockQuantities#1103616), false, [stockQuantity#1103617]
(1058) Project
Arguments: [systemId#1103550, internalUUID#1103551, product#1103552, plant#1103553, calculationDateTime#1103615, stockQuantities#1103616, stockQuantity#1103617]
(1059) Project
Arguments: [plant#1103553.id AS plant#1103618, plant#1103553.internalRefUUID AS plantUuid#1103619, product#1103552.id AS product#1103620, product#1103552.internalRefUUID AS productUuid#1103621, calculationDateTime#1103615, stockQuantity#1103617.storagelocation.id AS storageLocId#1103622, stockQuantity#1103617.storagelocation.internalRefUUID AS storageLocUuid#1103623, stockQuantity#1103617.quantity.measure AS quantity#1103624, stockQuantity#1103617.specialStockIndicator.code AS specialStockIndicator#1103625, stockQuantity#1103617.stockType.code AS stockType#1103626]
(1060) Filter
Arguments: ((specialStockIndicator#1103625 = ) AND (stockType#1103626 = 01))
(1061) LogicalRelation
Arguments: parquet, [product#1103627, plant#1103628, orderDateTime#1103629, planningStartDateTime#1103630], false
(1062) RepartitionByExpression
Arguments: [product#1103627, plant#1103628], 37
(1063) Project
Arguments: [product#1103627, plant#1103628, orderDateTime#1103629]
(1064) LogicalRelation
Arguments: parquet, [systemId#1103631, internalUUID#1103632, plant#1103633, product#1103634, blockedForReplenishmentStartingFrom#1103635, productionAspect#1103636, salesPlant#1103637, listing#1103638, sourceOfSupplyCategory#1103639], false
(1065) Repartition
Arguments: 37, true
(1066) Project
Arguments: [systemId#1103631, internalUUID#1103632, plant#1103633, product#1103634, blockedForReplenishmentStartingFrom#1103635, productionAspect#1103636, salesPlant#1103637, listing#1103638, sourceOfSupplyCategory#1103639, struct(systemId, systemId#1103631, internalUUID, internalUUID#1103632, plant, plant#1103633, product, product#1103634, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1103635, productionAspect, productionAspect#1103636, salesPlant, salesPlant#1103637, listing, listing#1103638, sourceOfSupplyCategory, sourceOfSupplyCategory#1103639) AS productPlant#1103640]
(1067) Project
Arguments: [productPlant#1103640]
(1068) Join
Arguments: LeftOuter, ((product#1103627 <=> productPlant#1103640.product.internalRefUUID) AND (plant#1103628 <=> productPlant#1103640.plant.internalRefUUID))
(1069) Project
Arguments: [product#1103627, plant#1103628, orderDateTime#1103629, productPlant#1103640]
(1070) LogicalRelation
Arguments: parquet, [systemId#1103641, internalUUID#1103642, id#1103643, displayId#1103644, name#1103645, baseUnitOfMeasure#1103646, unitOfMeasures#1103647, unitOfMeasureConversions#1103648, productionAspect#1103649, salesAspect#1103650, procurementAspect#1103651, productGroup#1103652], false
(1071) Repartition
Arguments: 37, true
(1072) Join
Arguments: LeftOuter, (product#1103627 = internalUUID#1103642)
(1073) Project
Arguments: [product#1103627, plant#1103628, orderDateTime#1103629, productPlant#1103640, systemId#1103641, internalUUID#1103642, id#1103643, displayId#1103644, name#1103645, baseUnitOfMeasure#1103646, unitOfMeasures#1103647, unitOfMeasureConversions#1103648, productionAspect#1103649, salesAspect#1103650, procurementAspect#1103651, productGroup#1103652, filter(unitOfMeasureConversions#1103648, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1103640.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1103640.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1103646.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1103646.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1103653]
(1074) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103653.quantityNumerator), true, [quantityNumerator#1103654]
(1075) Project
Arguments: [product#1103627, plant#1103628, orderDateTime#1103629, productPlant#1103640, systemId#1103641, internalUUID#1103642, id#1103643, displayId#1103644, name#1103645, baseUnitOfMeasure#1103646, unitOfMeasures#1103647, unitOfMeasureConversions#1103648, productionAspect#1103649, salesAspect#1103650, procurementAspect#1103651, productGroup#1103652, filteredUnitOfMeasureConversions#1103653, quantityNumerator#1103654]
(1076) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1103653.quantityDenominator), true, [quantityDenominator#1103655]
(1077) Project
Arguments: [product#1103627, plant#1103628, orderDateTime#1103629, productPlant#1103640, systemId#1103641, internalUUID#1103642, id#1103643, displayId#1103644, name#1103645, baseUnitOfMeasure#1103646, unitOfMeasures#1103647, unitOfMeasureConversions#1103648, productionAspect#1103649, salesAspect#1103650, procurementAspect#1103651, productGroup#1103652, filteredUnitOfMeasureConversions#1103653, quantityNumerator#1103654, quantityDenominator#1103655]
(1078) Project
Arguments: [product#1103627, plant#1103628, orderDateTime#1103629, productPlant#1103640, systemId#1103641, internalUUID#1103642, id#1103643, displayId#1103644, name#1103645, baseUnitOfMeasure#1103646, unitOfMeasures#1103647, unitOfMeasureConversions#1103648, productionAspect#1103649, salesAspect#1103650, procurementAspect#1103651, productGroup#1103652, filteredUnitOfMeasureConversions#1103653, quantityNumerator#1103654, quantityDenominator#1103655, (cast(quantityNumerator#1103654 as double) / cast(quantityDenominator#1103655 as double)) AS outboundUnit#1103656]
(1079) Project
Arguments: [product#1103627, plant#1103628, orderDateTime#1103629, productPlant#1103640, systemId#1103641, internalUUID#1103642, id#1103643, displayId#1103644, name#1103645, baseUnitOfMeasure#1103646, unitOfMeasures#1103647, unitOfMeasureConversions#1103648, productionAspect#1103649, salesAspect#1103650, procurementAspect#1103651, productGroup#1103652, filteredUnitOfMeasureConversions#1103653, quantityNumerator#1103654, quantityDenominator#1103655, CASE WHEN (isnull(outboundUnit#1103656) OR (outboundUnit#1103656 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1103656 END AS outboundUnit#1103657]
(1080) Project
Arguments: [product#1103627, plant#1103628, orderDateTime#1103629, productPlant#1103640, outboundUnit#1103657]
(1081) Join
Arguments: Inner, ((plantUuid#1103619 = plant#1103628) AND (productUuid#1103621 = product#1103627))
(1082) Filter
Arguments: (calculationDateTime#1103615 <= orderDateTime#1103629)
(1083) Project
Arguments: [plantUuid#1103619 AS plant#1103658, productUuid#1103621 AS product#1103659, storageLocId#1103622, calculationDateTime#1103615, quantity#1103624]
(1084) Aggregate
Arguments: [plant#1103658, product#1103659, storageLocId#1103622], [plant#1103658, product#1103659, storageLocId#1103622, max(calculationDateTime#1103615) AS max_calc_datetime#1103660]
(1085) Join
Arguments: Inner, ((((plant#1103548 <=> plant#1103658) AND (product#1103549 <=> product#1103659)) AND (storageLocId#1103512 <=> storageLocId#1103622)) AND (calculationDateTime#1103505 <=> max_calc_datetime#1103660))
(1086) Project
Arguments: [plant#1103548, product#1103549, storageLocId#1103512, calculationDateTime#1103505, quantity#1103514]
(1087) Aggregate
Arguments: [product#1103549, plant#1103548], [product#1103549, plant#1103548, sum(quantity#1103514) AS quantitySum#1103661, min(calculationDateTime#1103505) AS minCalculationDateTime#1103662]
(1088) Project
Arguments: [product#1103549, plant#1103548, quantitySum#1103661, minCalculationDateTime#1103662, round(quantitySum#1103661, 0) AS roundedQuantitySum#1103663]
(1089) Join
Arguments: LeftOuter, ((plant#1103410 = plant#1103548) AND (product#1103409 = product#1103549))
(1090) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, outboundUnit#1103439, roundedQuantitySum#1103663, minCalculationDateTime#1103662]
(1091) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, outboundUnit#1103439, roundedQuantitySum#1103663, minCalculationDateTime#1103662, CASE WHEN isnotnull(minCalculationDateTime#1103662) THEN minCalculationDateTime#1103662 ELSE orderDateTime#1103411 END AS stockDatetime#1103664]
(1092) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, outboundUnit#1103439, roundedQuantitySum#1103663, minCalculationDateTime#1103662, stockDatetime#1103664, CASE WHEN isnotnull(roundedQuantitySum#1103663) THEN array(roundedQuantitySum#1103663) ELSE array(0.0) END AS stockBatchQuantities#1103665]
(1093) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, outboundUnit#1103439, roundedQuantitySum#1103663, minCalculationDateTime#1103662, stockDatetime#1103664, stockBatchQuantities#1103665, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1103666]
(1094) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, outboundUnit#1103439, roundedQuantitySum#1103663, stockDatetime#1103664, stockBatchQuantities#1103665, stockBatchShelfLifeEndDatetimes#1103666]
(1095) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, outboundUnit#1103439, stockDatetime#1103664, stockBatchQuantities#1103665, stockBatchShelfLifeEndDatetimes#1103666]
(1096) LogicalRelation
Arguments: parquet, [product#1103667, plant#1103668, demandChannel#1103669, demandStream#1103670, considerVariance#1103671, demandTimeBuckets#1103672, demandPointInTimeStart#1103673, demandPointInTimeEnd#1103674, demandPointInTime#1103675], false
(1097) Join
Arguments: LeftOuter, ((plant#1103668 <=> plant#1103410) AND (product#1103667 <=> product#1103409))
(1098) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, outboundUnit#1103439, stockDatetime#1103664, stockBatchQuantities#1103665, stockBatchShelfLifeEndDatetimes#1103666, product#1103667, plant#1103668, demandChannel#1103669, demandStream#1103670, considerVariance#1103671, demandTimeBuckets#1103672, demandPointInTimeStart#1103673, demandPointInTimeEnd#1103674, demandPointInTime#1103675, CASE WHEN isnotnull(product#1103667) THEN struct(demandChannel, demandChannel#1103669, demandStream, demandStream#1103670, considerVariance, considerVariance#1103671, demandTimeBuckets, demandTimeBuckets#1103672, demandPointInTimeStart, demandPointInTimeStart#1103673, demandPointInTimeEnd, demandPointInTimeEnd#1103674, demandPointInTime, demandPointInTime#1103675) 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#1103676]
(1099) Aggregate
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, outboundUnit#1103439, stockDatetime#1103664, stockBatchQuantities#1103665, stockBatchShelfLifeEndDatetimes#1103666], [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, outboundUnit#1103439, stockDatetime#1103664, stockBatchQuantities#1103665, stockBatchShelfLifeEndDatetimes#1103666, collect_list(rawDemands#1103676, 0, 0) AS rawDemands#1103677]
(1100) SubqueryAlias
Arguments: wl
(1101) LogicalRelation
Arguments: parquet, [systemId#1103678, internalUUID#1103679, id#1103680, displayId#1103681, name#1103682, category#1103683, companyCode#1103684, address#1103685, mainDistributionChain#1103686, mainPurchasingOrganization#1103687, validPurchasingOrganizations#1103688, productGroup#1103689], false
(1102) Repartition
Arguments: 37, true
(1103) Project
Arguments: [systemId#1103678, internalUUID#1103679, id#1103680, displayId#1103681, name#1103682, category#1103683, companyCode#1103684, address#1103685, mainDistributionChain#1103686, mainPurchasingOrganization#1103687, validPurchasingOrganizations#1103688, productGroup#1103689, address#1103685.timezone.code AS timezonecode#1103690]
(1104) Join
Arguments: LeftOuter, (plant#1103410 <=> internalUUID#1103679)
(1105) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, outboundUnit#1103439, stockDatetime#1103664, stockBatchQuantities#1103665, stockBatchShelfLifeEndDatetimes#1103666, rawDemands#1103677, systemId#1103678, internalUUID#1103679, id#1103680, displayId#1103681, name#1103682, category#1103683, companyCode#1103684, address#1103685, mainDistributionChain#1103686, mainPurchasingOrganization#1103687, validPurchasingOrganizations#1103688, productGroup#1103689, CASE WHEN isnotnull(timezonecode#1103690) THEN timezonecode#1103690 ELSE UTC END AS timezonecode#1103691]
(1106) Project
Arguments: [product#1103409, plant#1103410, orderDateTime#1103411, productPlant#1103422, outboundUnit#1103439, stockDatetime#1103664, stockBatchQuantities#1103665, stockBatchShelfLifeEndDatetimes#1103666, rawDemands#1103677, timezonecode#1103691]
(1107) DeserializeToObject
Arguments: createexternalrow(invoke(product#1103409.toString()), invoke(plant#1103410.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1103411)), if (isnull(productPlant#1103422)) null else createexternalrow(invoke(productPlant#1103422.systemId.toString()), invoke(productPlant#1103422.internalUUID.toString()), if (isnull(productPlant#1103422.plant)) null else createexternalrow(invoke(productPlant#1103422.plant.internalRefUUID.toString()), invoke(productPlant#1103422.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1103422.product)) null else createexternalrow(invoke(productPlant#1103422.product.internalRefUUID.toString()), invoke(productPlant#1103422.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1103422.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1103422.productionAspect)) null else createexternalrow(if (isnull(productPlant#1103422.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1103422.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1103422.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1103422.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#1103422.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1103422.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1103422.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1103422.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1103422.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1103422.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1103422.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1103422.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1103422.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1103422.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1103422.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1103422.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1103422.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1103422.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#1103422.salesPlant)) null else createexternalrow(if (isnull(productPlant#1103422.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1103422.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1103422.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, 87159), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#1103422.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1103422.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1103422.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1103422.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#1103439)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1103664)), mapobjects(lambdavariable(MapObject, DoubleType, true, 87160), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 87160) as double))), stockBatchQuantities#1103665, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 87161), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 87161) as timestamp)))), stockBatchShelfLifeEndDatetimes#1103666, 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, 87162), 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, 87162))) 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, 87162).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, 87162).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, 87162).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).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, 87162).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, 87162).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, 87162).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).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, 87162).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#1103677, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#1103691.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#1102685: org.apache.spark.sql.Row
(1108) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@51e4e5d1, 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#1102690: 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#1103692, 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#1103693, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87150), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87150), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87151), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87151), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87152), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87152), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87153), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87153), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87154), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87154), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#1103694, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87156), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87156), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87157), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87157), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87158), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87158), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#1103695]
(1110) Join
Arguments: LeftOuter, ((plant#1103693 <=> plant#1103152) AND (product#1103692 <=> product#1103151))
(1111) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, outboundUnit#1103181, stockDatetime#1103406, stockBatchQuantities#1103407, stockBatchShelfLifeEndDatetimes#1103408, plant#1103693, dayBucketDemands#1103694, pointInTimeDemands#1103695]
(1112) Project
Arguments: [product#1103151, plant#1103152, orderDateTime#1103153, productPlant#1103164, outboundUnit#1103181, stockDatetime#1103406, stockBatchQuantities#1103407, stockBatchShelfLifeEndDatetimes#1103408, dayBucketDemands#1103694, pointInTimeDemands#1103695]
(1113) LocalRelation
Arguments: <empty>, [systemId#1103696, internalUUID#1103697, id#1103698, isMarkedForDeletion#1103699, supplier#1103700, status#1103701, items#1103702]
(1114) Generate
Arguments: explode(items#1103702), false, [item#1103703]
(1115) Project
Arguments: [id#1103698, internalUUID#1103697, isMarkedForDeletion#1103699, supplier#1103700.internalRefUUID AS supplierUuid#1103704, item#1103703]
(1116) Filter
Arguments: (((NOT isMarkedForDeletion#1103699 AND NOT item#1103703.deletionIndicator) AND NOT item#1103703.completeIndicator) AND NOT item#1103703.returnIndicator)
(1117) Project
Arguments: [id#1103698, internalUUID#1103697, supplierUuid#1103704, item#1103703.plant.internalRefUUID AS plant#1103705, item#1103703.product.internalRefUUID AS product#1103706, item#1103703.storageLocation.internalRefUUID AS storageLocUuid#1103707, item#1103703.quantityUnit.code AS quantityUom#1103708, item#1103703.quantityUnit.internalRefUUID AS quantityUomUuid#1103709, item#1103703.quantityNumerator AS quantityNumerator#1103710, item#1103703.quantityDenominator AS quantityDenominator#1103711, item#1103703.scheduleLines AS scheduleLines#1103712, item#1103703.confirmations AS confirmations#1103713]
(1118) Join
Arguments: Inner, ((product#1103151 <=> product#1103706) AND (plant#1103152 <=> supplierUuid#1103704))
(1119) Project
Arguments: [id#1103698, internalUUID#1103697, supplierUuid#1103704, plant#1103705, product#1103706, storageLocUuid#1103707, quantityUom#1103708, quantityUomUuid#1103709, quantityNumerator#1103710, quantityDenominator#1103711, scheduleLines#1103712, confirmations#1103713, stockDatetime#1103406, plant#1103152]
(1120) Project
Arguments: [id#1103698, internalUUID#1103697, supplierUuid#1103704, product#1103706, storageLocUuid#1103707, quantityUom#1103708, quantityUomUuid#1103709, quantityNumerator#1103710, quantityDenominator#1103711, scheduleLines#1103712, confirmations#1103713, stockDatetime#1103406, plant#1103152]
(1121) Project
Arguments: [id#1103698, internalUUID#1103697, supplierUuid#1103704, product#1103706, storageLocUuid#1103707, quantityUom#1103708, quantityUomUuid#1103709, quantityNumerator#1103710, quantityDenominator#1103711, scheduleLines#1103712, confirmations#1103713, stockDatetime#1103406, plant#1103152, filter(transform(filter(transform(scheduleLines#1103712, lambdafunction(struct(openQty, (greatest((lambda x_164#1103131.quantity - coalesce(lambda x_164#1103131.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_164#1103131.productAvailabilityDateTime, lambda x_164#1103131.deliveryAt)), lambda x_164#1103131, false)), lambdafunction((lambda x_165#1103132.availabilityDatetime < stockDatetime#1103406), lambda x_165#1103132, false)), lambdafunction(struct(documentId, id#1103698, documentUuid, internalUUID#1103697, openQty, lambda x_166#1103133.openQty, openQtyInBaseUnit, ((lambda x_166#1103133.openQty * quantityNumerator#1103710) / quantityDenominator#1103711), qtyUom, quantityUom#1103708, qtyUomUuid, quantityUomUuid#1103709, availabilityDatetime, lambda x_166#1103133.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_166#1103133, false)), lambdafunction(NOT (lambda x_167#1103134.openQty = 0.0), lambda x_167#1103134, false)) AS openGoodsMovements#1103130]
(1122) Aggregate
Arguments: [product#1103706, plant#1103152], [product#1103706, plant#1103152, flatten(collect_list(openGoodsMovements#1103130, 0, 0)) AS openGoodsMovements#1103135]
(1123) Filter
Arguments: (array_size(openGoodsMovements#1103135) > 0)
(1124) Union
Arguments: false, false
(1125) Aggregate
Arguments: [product#1102991, plant#1102990], [product#1102991, plant#1102990, flatten(collect_list(openGoodsMovements#1103091, 0, 0)) AS openGoodsMovements#1103754]
(1126) Join
Arguments: LeftOuter, ((product#1101131 = product#1102991) AND (plant#1101132 = plant#1102990))
(1127) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovements#1103754]
(1128) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, coalesce(openGoodsMovements#1103754.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#1104344, coalesce(openGoodsMovements#1103754.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#1104345, coalesce(openGoodsMovements#1103754.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#1104346]
(1129) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, 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#1104637]
(1130) LogicalRelation
Arguments: parquet, [product#1104834, plant#1104835, orderDateTime#1104836, planningStartDateTime#1104837], false
(1131) RepartitionByExpression
Arguments: [product#1104834, plant#1104835], 37
(1132) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836]
(1133) LogicalRelation
Arguments: parquet, [systemId#1104838, internalUUID#1104839, plant#1104840, product#1104841, blockedForReplenishmentStartingFrom#1104842, productionAspect#1104843, salesPlant#1104844, listing#1104845, sourceOfSupplyCategory#1104846], false
(1134) Repartition
Arguments: 37, true
(1135) Project
Arguments: [systemId#1104838, internalUUID#1104839, plant#1104840, product#1104841, blockedForReplenishmentStartingFrom#1104842, productionAspect#1104843, salesPlant#1104844, listing#1104845, sourceOfSupplyCategory#1104846, struct(systemId, systemId#1104838, internalUUID, internalUUID#1104839, plant, plant#1104840, product, product#1104841, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1104842, productionAspect, productionAspect#1104843, salesPlant, salesPlant#1104844, listing, listing#1104845, sourceOfSupplyCategory, sourceOfSupplyCategory#1104846) AS productPlant#1104847]
(1136) Project
Arguments: [productPlant#1104847]
(1137) Join
Arguments: LeftOuter, ((product#1104834 <=> productPlant#1104847.product.internalRefUUID) AND (plant#1104835 <=> productPlant#1104847.plant.internalRefUUID))
(1138) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847]
(1139) LogicalRelation
Arguments: parquet, [systemId#1104848, internalUUID#1104849, id#1104850, displayId#1104851, name#1104852, baseUnitOfMeasure#1104853, unitOfMeasures#1104854, unitOfMeasureConversions#1104855, productionAspect#1104856, salesAspect#1104857, procurementAspect#1104858, productGroup#1104859], false
(1140) Repartition
Arguments: 37, true
(1141) Join
Arguments: LeftOuter, (product#1104834 = internalUUID#1104849)
(1142) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, systemId#1104848, internalUUID#1104849, id#1104850, displayId#1104851, name#1104852, baseUnitOfMeasure#1104853, unitOfMeasures#1104854, unitOfMeasureConversions#1104855, productionAspect#1104856, salesAspect#1104857, procurementAspect#1104858, productGroup#1104859, filter(unitOfMeasureConversions#1104855, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1104847.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1104847.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1104853.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1104853.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1104860]
(1143) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104860.quantityNumerator), true, [quantityNumerator#1104861]
(1144) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, systemId#1104848, internalUUID#1104849, id#1104850, displayId#1104851, name#1104852, baseUnitOfMeasure#1104853, unitOfMeasures#1104854, unitOfMeasureConversions#1104855, productionAspect#1104856, salesAspect#1104857, procurementAspect#1104858, productGroup#1104859, filteredUnitOfMeasureConversions#1104860, quantityNumerator#1104861]
(1145) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104860.quantityDenominator), true, [quantityDenominator#1104862]
(1146) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, systemId#1104848, internalUUID#1104849, id#1104850, displayId#1104851, name#1104852, baseUnitOfMeasure#1104853, unitOfMeasures#1104854, unitOfMeasureConversions#1104855, productionAspect#1104856, salesAspect#1104857, procurementAspect#1104858, productGroup#1104859, filteredUnitOfMeasureConversions#1104860, quantityNumerator#1104861, quantityDenominator#1104862]
(1147) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, systemId#1104848, internalUUID#1104849, id#1104850, displayId#1104851, name#1104852, baseUnitOfMeasure#1104853, unitOfMeasures#1104854, unitOfMeasureConversions#1104855, productionAspect#1104856, salesAspect#1104857, procurementAspect#1104858, productGroup#1104859, filteredUnitOfMeasureConversions#1104860, quantityNumerator#1104861, quantityDenominator#1104862, (cast(quantityNumerator#1104861 as double) / cast(quantityDenominator#1104862 as double)) AS outboundUnit#1104863]
(1148) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, systemId#1104848, internalUUID#1104849, id#1104850, displayId#1104851, name#1104852, baseUnitOfMeasure#1104853, unitOfMeasures#1104854, unitOfMeasureConversions#1104855, productionAspect#1104856, salesAspect#1104857, procurementAspect#1104858, productGroup#1104859, filteredUnitOfMeasureConversions#1104860, quantityNumerator#1104861, quantityDenominator#1104862, CASE WHEN (isnull(outboundUnit#1104863) OR (outboundUnit#1104863 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1104863 END AS outboundUnit#1104864]
(1149) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864]
(1150) LogicalRelation
Arguments: parquet, [systemId#1104865, internalUUID#1104866, product#1104867, plant#1104868, calculationDateTime#1104869, stockQuantities#1104870], false
(1151) Repartition
Arguments: 37, true
(1152) LogicalRelation
Arguments: parquet, [marketUnit#1104871, description#1104872, articleHierarchy#1104873, defaultCurrency#1104874, responsibilities#1104875, replenishmentTypes#1104876, distributionCenters#1104877, assignedArticleHierarchyNodes#1104878, minOrderQtySetting#1104879, listingCheck#1104880, odsSelection#1104881, demandProfiles#1104882, constraintProfiles#1104883, optimizationProfiles#1104884, orderGroupSplitProfiles#1104885, supplierMinimumProfiles#1104886, multipleRestrictionProfiles#1104887, preferredUomSource#1104888, handlingOfUnfulfilledDemands#1104889, negligibleQuantitiesThreshold#1104890, eventtype#1104891], false
(1153) Repartition
Arguments: 37, true
(1154) Filter
Arguments: (marketUnit#1104871 <=> AUTO_ALL_ProdLoc)
(1155) Project
Arguments: [marketUnit#1104871, description#1104872, articleHierarchy#1104873, defaultCurrency#1104874, responsibilities#1104875, replenishmentTypes#1104876, distributionCenters#1104877, assignedArticleHierarchyNodes#1104878, minOrderQtySetting#1104879, listingCheck#1104880, odsSelection#1104881, demandProfiles#1104882, constraintProfiles#1104883, optimizationProfiles#1104884, orderGroupSplitProfiles#1104885, supplierMinimumProfiles#1104886, multipleRestrictionProfiles#1104887, preferredUomSource#1104888, handlingOfUnfulfilledDemands#1104889, negligibleQuantitiesThreshold#1104890, eventtype#1104891]
(1156) Project
Arguments: [distributionCenters#1104877]
(1157) Generate
Arguments: explode(distributionCenters#1104877), false, [distributionCenters#1104892]
(1158) Project
Arguments: [distributionCenters#1104892]
(1159) Generate
Arguments: explode(distributionCenters#1104892.storageLocations), false, [storageLocations#1104893]
(1160) Project
Arguments: [distributionCenters#1104892.id AS plantId#1104894, distributionCenters#1104892.internalRefUUID AS plantUuid#1104895, storageLocations#1104893]
(1161) Project
Arguments: [plantId#1104894, plantUuid#1104895, storageLocations#1104893.id AS storageLocId#1104896, storageLocations#1104893.internalRefUUID AS storageLocUuid#1104897]
(1162) LogicalRelation
Arguments: parquet, [product#1104898, plant#1104899, orderDateTime#1104900, planningStartDateTime#1104901], false
(1163) RepartitionByExpression
Arguments: [product#1104898, plant#1104899], 37
(1164) Project
Arguments: [product#1104898, plant#1104899, orderDateTime#1104900]
(1165) LogicalRelation
Arguments: parquet, [systemId#1104902, internalUUID#1104903, plant#1104904, product#1104905, blockedForReplenishmentStartingFrom#1104906, productionAspect#1104907, salesPlant#1104908, listing#1104909, sourceOfSupplyCategory#1104910], false
(1166) Repartition
Arguments: 37, true
(1167) Project
Arguments: [systemId#1104902, internalUUID#1104903, plant#1104904, product#1104905, blockedForReplenishmentStartingFrom#1104906, productionAspect#1104907, salesPlant#1104908, listing#1104909, sourceOfSupplyCategory#1104910, struct(systemId, systemId#1104902, internalUUID, internalUUID#1104903, plant, plant#1104904, product, product#1104905, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1104906, productionAspect, productionAspect#1104907, salesPlant, salesPlant#1104908, listing, listing#1104909, sourceOfSupplyCategory, sourceOfSupplyCategory#1104910) AS productPlant#1104911]
(1168) Project
Arguments: [productPlant#1104911]
(1169) Join
Arguments: LeftOuter, ((product#1104898 <=> productPlant#1104911.product.internalRefUUID) AND (plant#1104899 <=> productPlant#1104911.plant.internalRefUUID))
(1170) Project
Arguments: [product#1104898, plant#1104899, orderDateTime#1104900, productPlant#1104911]
(1171) LogicalRelation
Arguments: parquet, [systemId#1104912, internalUUID#1104913, id#1104914, displayId#1104915, name#1104916, baseUnitOfMeasure#1104917, unitOfMeasures#1104918, unitOfMeasureConversions#1104919, productionAspect#1104920, salesAspect#1104921, procurementAspect#1104922, productGroup#1104923], false
(1172) Repartition
Arguments: 37, true
(1173) Join
Arguments: LeftOuter, (product#1104898 = internalUUID#1104913)
(1174) Project
Arguments: [product#1104898, plant#1104899, orderDateTime#1104900, productPlant#1104911, systemId#1104912, internalUUID#1104913, id#1104914, displayId#1104915, name#1104916, baseUnitOfMeasure#1104917, unitOfMeasures#1104918, unitOfMeasureConversions#1104919, productionAspect#1104920, salesAspect#1104921, procurementAspect#1104922, productGroup#1104923, filter(unitOfMeasureConversions#1104919, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1104911.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1104911.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1104917.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1104917.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1104924]
(1175) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104924.quantityNumerator), true, [quantityNumerator#1104925]
(1176) Project
Arguments: [product#1104898, plant#1104899, orderDateTime#1104900, productPlant#1104911, systemId#1104912, internalUUID#1104913, id#1104914, displayId#1104915, name#1104916, baseUnitOfMeasure#1104917, unitOfMeasures#1104918, unitOfMeasureConversions#1104919, productionAspect#1104920, salesAspect#1104921, procurementAspect#1104922, productGroup#1104923, filteredUnitOfMeasureConversions#1104924, quantityNumerator#1104925]
(1177) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104924.quantityDenominator), true, [quantityDenominator#1104926]
(1178) Project
Arguments: [product#1104898, plant#1104899, orderDateTime#1104900, productPlant#1104911, systemId#1104912, internalUUID#1104913, id#1104914, displayId#1104915, name#1104916, baseUnitOfMeasure#1104917, unitOfMeasures#1104918, unitOfMeasureConversions#1104919, productionAspect#1104920, salesAspect#1104921, procurementAspect#1104922, productGroup#1104923, filteredUnitOfMeasureConversions#1104924, quantityNumerator#1104925, quantityDenominator#1104926]
(1179) Project
Arguments: [product#1104898, plant#1104899, orderDateTime#1104900, productPlant#1104911, systemId#1104912, internalUUID#1104913, id#1104914, displayId#1104915, name#1104916, baseUnitOfMeasure#1104917, unitOfMeasures#1104918, unitOfMeasureConversions#1104919, productionAspect#1104920, salesAspect#1104921, procurementAspect#1104922, productGroup#1104923, filteredUnitOfMeasureConversions#1104924, quantityNumerator#1104925, quantityDenominator#1104926, (cast(quantityNumerator#1104925 as double) / cast(quantityDenominator#1104926 as double)) AS outboundUnit#1104927]
(1180) Project
Arguments: [product#1104898, plant#1104899, orderDateTime#1104900, productPlant#1104911, systemId#1104912, internalUUID#1104913, id#1104914, displayId#1104915, name#1104916, baseUnitOfMeasure#1104917, unitOfMeasures#1104918, unitOfMeasureConversions#1104919, productionAspect#1104920, salesAspect#1104921, procurementAspect#1104922, productGroup#1104923, filteredUnitOfMeasureConversions#1104924, quantityNumerator#1104925, quantityDenominator#1104926, CASE WHEN (isnull(outboundUnit#1104927) OR (outboundUnit#1104927 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1104927 END AS outboundUnit#1104928]
(1181) Project
Arguments: [product#1104898, plant#1104899, orderDateTime#1104900, productPlant#1104911, outboundUnit#1104928]
(1182) Project
Arguments: [plant#1104899]
(1183) Deduplicate
Arguments: [plant#1104899]
(1184) Join
Arguments: Inner, (plantUuid#1104895 = plant#1104899)
(1185) Project
Arguments: [plantId#1104894, plantUuid#1104895, storageLocId#1104896, storageLocUuid#1104897]
(1186) Join
Arguments: Inner, (plant#1104868.internalRefUUID <=> plantUuid#1104895)
(1187) Generate
Arguments: explode(filter(stockQuantities#1104870, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1104897) AND (lambda x#1101337.storageLocation.Id = storageLocId#1104896)), lambda x#1101337, false))), false, [stockQuantity#1104929]
(1188) Project
Arguments: [systemId#1104865, internalUUID#1104866, product#1104867, plant#1104868, calculationDateTime#1104869, stockQuantities#1104870, plantId#1104894, plantUuid#1104895, storageLocId#1104896, storageLocUuid#1104897, stockQuantity#1104929]
(1189) Aggregate
Arguments: [plantUuid#1104895, internalUUID#1104866, plant#1104868, product#1104867, systemId#1104865], [plantUuid#1104895, internalUUID#1104866, plant#1104868, product#1104867, systemId#1104865, first(calculationDateTime#1104869, false) AS calculationDateTime#1104930, collect_list(stockQuantity#1104929, 0, 0) AS stockQuantities#1104931]
(1190) Project
Arguments: [systemId#1104865, internalUUID#1104866, product#1104867, plant#1104868, calculationDateTime#1104930, stockQuantities#1104931]
(1191) Generate
Arguments: explode(stockQuantities#1104931), false, [stockQuantity#1104932]
(1192) Project
Arguments: [systemId#1104865, internalUUID#1104866, product#1104867, plant#1104868, calculationDateTime#1104930, stockQuantities#1104931, stockQuantity#1104932]
(1193) Project
Arguments: [plant#1104868.id AS plant#1104933, plant#1104868.internalRefUUID AS plantUuid#1104934, product#1104867.id AS product#1104935, product#1104867.internalRefUUID AS productUuid#1104936, calculationDateTime#1104930, stockQuantity#1104932.storagelocation.id AS storageLocId#1104937, stockQuantity#1104932.storagelocation.internalRefUUID AS storageLocUuid#1104938, stockQuantity#1104932.quantity.measure AS quantity#1104939, stockQuantity#1104932.specialStockIndicator.code AS specialStockIndicator#1104940, stockQuantity#1104932.stockType.code AS stockType#1104941]
(1194) Filter
Arguments: ((specialStockIndicator#1104940 = ) AND (stockType#1104941 = 01))
(1195) LogicalRelation
Arguments: parquet, [product#1104942, plant#1104943, orderDateTime#1104944, planningStartDateTime#1104945], false
(1196) RepartitionByExpression
Arguments: [product#1104942, plant#1104943], 37
(1197) Project
Arguments: [product#1104942, plant#1104943, orderDateTime#1104944]
(1198) LogicalRelation
Arguments: parquet, [systemId#1104946, internalUUID#1104947, plant#1104948, product#1104949, blockedForReplenishmentStartingFrom#1104950, productionAspect#1104951, salesPlant#1104952, listing#1104953, sourceOfSupplyCategory#1104954], false
(1199) Repartition
Arguments: 37, true
(1200) Project
Arguments: [systemId#1104946, internalUUID#1104947, plant#1104948, product#1104949, blockedForReplenishmentStartingFrom#1104950, productionAspect#1104951, salesPlant#1104952, listing#1104953, sourceOfSupplyCategory#1104954, struct(systemId, systemId#1104946, internalUUID, internalUUID#1104947, plant, plant#1104948, product, product#1104949, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1104950, productionAspect, productionAspect#1104951, salesPlant, salesPlant#1104952, listing, listing#1104953, sourceOfSupplyCategory, sourceOfSupplyCategory#1104954) AS productPlant#1104955]
(1201) Project
Arguments: [productPlant#1104955]
(1202) Join
Arguments: LeftOuter, ((product#1104942 <=> productPlant#1104955.product.internalRefUUID) AND (plant#1104943 <=> productPlant#1104955.plant.internalRefUUID))
(1203) Project
Arguments: [product#1104942, plant#1104943, orderDateTime#1104944, productPlant#1104955]
(1204) LogicalRelation
Arguments: parquet, [systemId#1104956, internalUUID#1104957, id#1104958, displayId#1104959, name#1104960, baseUnitOfMeasure#1104961, unitOfMeasures#1104962, unitOfMeasureConversions#1104963, productionAspect#1104964, salesAspect#1104965, procurementAspect#1104966, productGroup#1104967], false
(1205) Repartition
Arguments: 37, true
(1206) Join
Arguments: LeftOuter, (product#1104942 = internalUUID#1104957)
(1207) Project
Arguments: [product#1104942, plant#1104943, orderDateTime#1104944, productPlant#1104955, systemId#1104956, internalUUID#1104957, id#1104958, displayId#1104959, name#1104960, baseUnitOfMeasure#1104961, unitOfMeasures#1104962, unitOfMeasureConversions#1104963, productionAspect#1104964, salesAspect#1104965, procurementAspect#1104966, productGroup#1104967, filter(unitOfMeasureConversions#1104963, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1104955.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1104955.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1104961.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1104961.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1104968]
(1208) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104968.quantityNumerator), true, [quantityNumerator#1104969]
(1209) Project
Arguments: [product#1104942, plant#1104943, orderDateTime#1104944, productPlant#1104955, systemId#1104956, internalUUID#1104957, id#1104958, displayId#1104959, name#1104960, baseUnitOfMeasure#1104961, unitOfMeasures#1104962, unitOfMeasureConversions#1104963, productionAspect#1104964, salesAspect#1104965, procurementAspect#1104966, productGroup#1104967, filteredUnitOfMeasureConversions#1104968, quantityNumerator#1104969]
(1210) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1104968.quantityDenominator), true, [quantityDenominator#1104970]
(1211) Project
Arguments: [product#1104942, plant#1104943, orderDateTime#1104944, productPlant#1104955, systemId#1104956, internalUUID#1104957, id#1104958, displayId#1104959, name#1104960, baseUnitOfMeasure#1104961, unitOfMeasures#1104962, unitOfMeasureConversions#1104963, productionAspect#1104964, salesAspect#1104965, procurementAspect#1104966, productGroup#1104967, filteredUnitOfMeasureConversions#1104968, quantityNumerator#1104969, quantityDenominator#1104970]
(1212) Project
Arguments: [product#1104942, plant#1104943, orderDateTime#1104944, productPlant#1104955, systemId#1104956, internalUUID#1104957, id#1104958, displayId#1104959, name#1104960, baseUnitOfMeasure#1104961, unitOfMeasures#1104962, unitOfMeasureConversions#1104963, productionAspect#1104964, salesAspect#1104965, procurementAspect#1104966, productGroup#1104967, filteredUnitOfMeasureConversions#1104968, quantityNumerator#1104969, quantityDenominator#1104970, (cast(quantityNumerator#1104969 as double) / cast(quantityDenominator#1104970 as double)) AS outboundUnit#1104971]
(1213) Project
Arguments: [product#1104942, plant#1104943, orderDateTime#1104944, productPlant#1104955, systemId#1104956, internalUUID#1104957, id#1104958, displayId#1104959, name#1104960, baseUnitOfMeasure#1104961, unitOfMeasures#1104962, unitOfMeasureConversions#1104963, productionAspect#1104964, salesAspect#1104965, procurementAspect#1104966, productGroup#1104967, filteredUnitOfMeasureConversions#1104968, quantityNumerator#1104969, quantityDenominator#1104970, CASE WHEN (isnull(outboundUnit#1104971) OR (outboundUnit#1104971 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1104971 END AS outboundUnit#1104972]
(1214) Project
Arguments: [product#1104942, plant#1104943, orderDateTime#1104944, productPlant#1104955, outboundUnit#1104972]
(1215) Join
Arguments: Inner, ((plantUuid#1104934 = plant#1104943) AND (productUuid#1104936 = product#1104942))
(1216) Filter
Arguments: (calculationDateTime#1104930 <= orderDateTime#1104944)
(1217) Project
Arguments: [plantUuid#1104934 AS plant#1104973, productUuid#1104936 AS product#1104974, storageLocId#1104937, calculationDateTime#1104930, quantity#1104939]
(1218) LogicalRelation
Arguments: parquet, [systemId#1104975, internalUUID#1104976, product#1104977, plant#1104978, calculationDateTime#1104979, stockQuantities#1104980], false
(1219) Repartition
Arguments: 37, true
(1220) LogicalRelation
Arguments: parquet, [marketUnit#1104981, description#1104982, articleHierarchy#1104983, defaultCurrency#1104984, responsibilities#1104985, replenishmentTypes#1104986, distributionCenters#1104987, assignedArticleHierarchyNodes#1104988, minOrderQtySetting#1104989, listingCheck#1104990, odsSelection#1104991, demandProfiles#1104992, constraintProfiles#1104993, optimizationProfiles#1104994, orderGroupSplitProfiles#1104995, supplierMinimumProfiles#1104996, multipleRestrictionProfiles#1104997, preferredUomSource#1104998, handlingOfUnfulfilledDemands#1104999, negligibleQuantitiesThreshold#1105000, eventtype#1105001], false
(1221) Repartition
Arguments: 37, true
(1222) Filter
Arguments: (marketUnit#1104981 <=> AUTO_ALL_ProdLoc)
(1223) Project
Arguments: [marketUnit#1104981, description#1104982, articleHierarchy#1104983, defaultCurrency#1104984, responsibilities#1104985, replenishmentTypes#1104986, distributionCenters#1104987, assignedArticleHierarchyNodes#1104988, minOrderQtySetting#1104989, listingCheck#1104990, odsSelection#1104991, demandProfiles#1104992, constraintProfiles#1104993, optimizationProfiles#1104994, orderGroupSplitProfiles#1104995, supplierMinimumProfiles#1104996, multipleRestrictionProfiles#1104997, preferredUomSource#1104998, handlingOfUnfulfilledDemands#1104999, negligibleQuantitiesThreshold#1105000, eventtype#1105001]
(1224) Project
Arguments: [distributionCenters#1104987]
(1225) Generate
Arguments: explode(distributionCenters#1104987), false, [distributionCenters#1105002]
(1226) Project
Arguments: [distributionCenters#1105002]
(1227) Generate
Arguments: explode(distributionCenters#1105002.storageLocations), false, [storageLocations#1105003]
(1228) Project
Arguments: [distributionCenters#1105002.id AS plantId#1105004, distributionCenters#1105002.internalRefUUID AS plantUuid#1105005, storageLocations#1105003]
(1229) Project
Arguments: [plantId#1105004, plantUuid#1105005, storageLocations#1105003.id AS storageLocId#1105006, storageLocations#1105003.internalRefUUID AS storageLocUuid#1105007]
(1230) LogicalRelation
Arguments: parquet, [product#1105008, plant#1105009, orderDateTime#1105010, planningStartDateTime#1105011], false
(1231) RepartitionByExpression
Arguments: [product#1105008, plant#1105009], 37
(1232) Project
Arguments: [product#1105008, plant#1105009, orderDateTime#1105010]
(1233) LogicalRelation
Arguments: parquet, [systemId#1105012, internalUUID#1105013, plant#1105014, product#1105015, blockedForReplenishmentStartingFrom#1105016, productionAspect#1105017, salesPlant#1105018, listing#1105019, sourceOfSupplyCategory#1105020], false
(1234) Repartition
Arguments: 37, true
(1235) Project
Arguments: [systemId#1105012, internalUUID#1105013, plant#1105014, product#1105015, blockedForReplenishmentStartingFrom#1105016, productionAspect#1105017, salesPlant#1105018, listing#1105019, sourceOfSupplyCategory#1105020, struct(systemId, systemId#1105012, internalUUID, internalUUID#1105013, plant, plant#1105014, product, product#1105015, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105016, productionAspect, productionAspect#1105017, salesPlant, salesPlant#1105018, listing, listing#1105019, sourceOfSupplyCategory, sourceOfSupplyCategory#1105020) AS productPlant#1105021]
(1236) Project
Arguments: [productPlant#1105021]
(1237) Join
Arguments: LeftOuter, ((product#1105008 <=> productPlant#1105021.product.internalRefUUID) AND (plant#1105009 <=> productPlant#1105021.plant.internalRefUUID))
(1238) Project
Arguments: [product#1105008, plant#1105009, orderDateTime#1105010, productPlant#1105021]
(1239) LogicalRelation
Arguments: parquet, [systemId#1105022, internalUUID#1105023, id#1105024, displayId#1105025, name#1105026, baseUnitOfMeasure#1105027, unitOfMeasures#1105028, unitOfMeasureConversions#1105029, productionAspect#1105030, salesAspect#1105031, procurementAspect#1105032, productGroup#1105033], false
(1240) Repartition
Arguments: 37, true
(1241) Join
Arguments: LeftOuter, (product#1105008 = internalUUID#1105023)
(1242) Project
Arguments: [product#1105008, plant#1105009, orderDateTime#1105010, productPlant#1105021, systemId#1105022, internalUUID#1105023, id#1105024, displayId#1105025, name#1105026, baseUnitOfMeasure#1105027, unitOfMeasures#1105028, unitOfMeasureConversions#1105029, productionAspect#1105030, salesAspect#1105031, procurementAspect#1105032, productGroup#1105033, filter(unitOfMeasureConversions#1105029, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105021.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105021.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105027.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105027.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105034]
(1243) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105034.quantityNumerator), true, [quantityNumerator#1105035]
(1244) Project
Arguments: [product#1105008, plant#1105009, orderDateTime#1105010, productPlant#1105021, systemId#1105022, internalUUID#1105023, id#1105024, displayId#1105025, name#1105026, baseUnitOfMeasure#1105027, unitOfMeasures#1105028, unitOfMeasureConversions#1105029, productionAspect#1105030, salesAspect#1105031, procurementAspect#1105032, productGroup#1105033, filteredUnitOfMeasureConversions#1105034, quantityNumerator#1105035]
(1245) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105034.quantityDenominator), true, [quantityDenominator#1105036]
(1246) Project
Arguments: [product#1105008, plant#1105009, orderDateTime#1105010, productPlant#1105021, systemId#1105022, internalUUID#1105023, id#1105024, displayId#1105025, name#1105026, baseUnitOfMeasure#1105027, unitOfMeasures#1105028, unitOfMeasureConversions#1105029, productionAspect#1105030, salesAspect#1105031, procurementAspect#1105032, productGroup#1105033, filteredUnitOfMeasureConversions#1105034, quantityNumerator#1105035, quantityDenominator#1105036]
(1247) Project
Arguments: [product#1105008, plant#1105009, orderDateTime#1105010, productPlant#1105021, systemId#1105022, internalUUID#1105023, id#1105024, displayId#1105025, name#1105026, baseUnitOfMeasure#1105027, unitOfMeasures#1105028, unitOfMeasureConversions#1105029, productionAspect#1105030, salesAspect#1105031, procurementAspect#1105032, productGroup#1105033, filteredUnitOfMeasureConversions#1105034, quantityNumerator#1105035, quantityDenominator#1105036, (cast(quantityNumerator#1105035 as double) / cast(quantityDenominator#1105036 as double)) AS outboundUnit#1105037]
(1248) Project
Arguments: [product#1105008, plant#1105009, orderDateTime#1105010, productPlant#1105021, systemId#1105022, internalUUID#1105023, id#1105024, displayId#1105025, name#1105026, baseUnitOfMeasure#1105027, unitOfMeasures#1105028, unitOfMeasureConversions#1105029, productionAspect#1105030, salesAspect#1105031, procurementAspect#1105032, productGroup#1105033, filteredUnitOfMeasureConversions#1105034, quantityNumerator#1105035, quantityDenominator#1105036, CASE WHEN (isnull(outboundUnit#1105037) OR (outboundUnit#1105037 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105037 END AS outboundUnit#1105038]
(1249) Project
Arguments: [product#1105008, plant#1105009, orderDateTime#1105010, productPlant#1105021, outboundUnit#1105038]
(1250) Project
Arguments: [plant#1105009]
(1251) Deduplicate
Arguments: [plant#1105009]
(1252) Join
Arguments: Inner, (plantUuid#1105005 = plant#1105009)
(1253) Project
Arguments: [plantId#1105004, plantUuid#1105005, storageLocId#1105006, storageLocUuid#1105007]
(1254) Join
Arguments: Inner, (plant#1104978.internalRefUUID <=> plantUuid#1105005)
(1255) Generate
Arguments: explode(filter(stockQuantities#1104980, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1105007) AND (lambda x#1101337.storageLocation.Id = storageLocId#1105006)), lambda x#1101337, false))), false, [stockQuantity#1105039]
(1256) Project
Arguments: [systemId#1104975, internalUUID#1104976, product#1104977, plant#1104978, calculationDateTime#1104979, stockQuantities#1104980, plantId#1105004, plantUuid#1105005, storageLocId#1105006, storageLocUuid#1105007, stockQuantity#1105039]
(1257) Aggregate
Arguments: [plantUuid#1105005, internalUUID#1104976, plant#1104978, product#1104977, systemId#1104975], [plantUuid#1105005, internalUUID#1104976, plant#1104978, product#1104977, systemId#1104975, first(calculationDateTime#1104979, false) AS calculationDateTime#1105040, collect_list(stockQuantity#1105039, 0, 0) AS stockQuantities#1105041]
(1258) Project
Arguments: [systemId#1104975, internalUUID#1104976, product#1104977, plant#1104978, calculationDateTime#1105040, stockQuantities#1105041]
(1259) Generate
Arguments: explode(stockQuantities#1105041), false, [stockQuantity#1105042]
(1260) Project
Arguments: [systemId#1104975, internalUUID#1104976, product#1104977, plant#1104978, calculationDateTime#1105040, stockQuantities#1105041, stockQuantity#1105042]
(1261) Project
Arguments: [plant#1104978.id AS plant#1105043, plant#1104978.internalRefUUID AS plantUuid#1105044, product#1104977.id AS product#1105045, product#1104977.internalRefUUID AS productUuid#1105046, calculationDateTime#1105040, stockQuantity#1105042.storagelocation.id AS storageLocId#1105047, stockQuantity#1105042.storagelocation.internalRefUUID AS storageLocUuid#1105048, stockQuantity#1105042.quantity.measure AS quantity#1105049, stockQuantity#1105042.specialStockIndicator.code AS specialStockIndicator#1105050, stockQuantity#1105042.stockType.code AS stockType#1105051]
(1262) Filter
Arguments: ((specialStockIndicator#1105050 = ) AND (stockType#1105051 = 01))
(1263) LogicalRelation
Arguments: parquet, [product#1105052, plant#1105053, orderDateTime#1105054, planningStartDateTime#1105055], false
(1264) RepartitionByExpression
Arguments: [product#1105052, plant#1105053], 37
(1265) Project
Arguments: [product#1105052, plant#1105053, orderDateTime#1105054]
(1266) LogicalRelation
Arguments: parquet, [systemId#1105056, internalUUID#1105057, plant#1105058, product#1105059, blockedForReplenishmentStartingFrom#1105060, productionAspect#1105061, salesPlant#1105062, listing#1105063, sourceOfSupplyCategory#1105064], false
(1267) Repartition
Arguments: 37, true
(1268) Project
Arguments: [systemId#1105056, internalUUID#1105057, plant#1105058, product#1105059, blockedForReplenishmentStartingFrom#1105060, productionAspect#1105061, salesPlant#1105062, listing#1105063, sourceOfSupplyCategory#1105064, struct(systemId, systemId#1105056, internalUUID, internalUUID#1105057, plant, plant#1105058, product, product#1105059, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105060, productionAspect, productionAspect#1105061, salesPlant, salesPlant#1105062, listing, listing#1105063, sourceOfSupplyCategory, sourceOfSupplyCategory#1105064) AS productPlant#1105065]
(1269) Project
Arguments: [productPlant#1105065]
(1270) Join
Arguments: LeftOuter, ((product#1105052 <=> productPlant#1105065.product.internalRefUUID) AND (plant#1105053 <=> productPlant#1105065.plant.internalRefUUID))
(1271) Project
Arguments: [product#1105052, plant#1105053, orderDateTime#1105054, productPlant#1105065]
(1272) LogicalRelation
Arguments: parquet, [systemId#1105066, internalUUID#1105067, id#1105068, displayId#1105069, name#1105070, baseUnitOfMeasure#1105071, unitOfMeasures#1105072, unitOfMeasureConversions#1105073, productionAspect#1105074, salesAspect#1105075, procurementAspect#1105076, productGroup#1105077], false
(1273) Repartition
Arguments: 37, true
(1274) Join
Arguments: LeftOuter, (product#1105052 = internalUUID#1105067)
(1275) Project
Arguments: [product#1105052, plant#1105053, orderDateTime#1105054, productPlant#1105065, systemId#1105066, internalUUID#1105067, id#1105068, displayId#1105069, name#1105070, baseUnitOfMeasure#1105071, unitOfMeasures#1105072, unitOfMeasureConversions#1105073, productionAspect#1105074, salesAspect#1105075, procurementAspect#1105076, productGroup#1105077, filter(unitOfMeasureConversions#1105073, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105065.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105065.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105071.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105071.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105078]
(1276) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105078.quantityNumerator), true, [quantityNumerator#1105079]
(1277) Project
Arguments: [product#1105052, plant#1105053, orderDateTime#1105054, productPlant#1105065, systemId#1105066, internalUUID#1105067, id#1105068, displayId#1105069, name#1105070, baseUnitOfMeasure#1105071, unitOfMeasures#1105072, unitOfMeasureConversions#1105073, productionAspect#1105074, salesAspect#1105075, procurementAspect#1105076, productGroup#1105077, filteredUnitOfMeasureConversions#1105078, quantityNumerator#1105079]
(1278) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105078.quantityDenominator), true, [quantityDenominator#1105080]
(1279) Project
Arguments: [product#1105052, plant#1105053, orderDateTime#1105054, productPlant#1105065, systemId#1105066, internalUUID#1105067, id#1105068, displayId#1105069, name#1105070, baseUnitOfMeasure#1105071, unitOfMeasures#1105072, unitOfMeasureConversions#1105073, productionAspect#1105074, salesAspect#1105075, procurementAspect#1105076, productGroup#1105077, filteredUnitOfMeasureConversions#1105078, quantityNumerator#1105079, quantityDenominator#1105080]
(1280) Project
Arguments: [product#1105052, plant#1105053, orderDateTime#1105054, productPlant#1105065, systemId#1105066, internalUUID#1105067, id#1105068, displayId#1105069, name#1105070, baseUnitOfMeasure#1105071, unitOfMeasures#1105072, unitOfMeasureConversions#1105073, productionAspect#1105074, salesAspect#1105075, procurementAspect#1105076, productGroup#1105077, filteredUnitOfMeasureConversions#1105078, quantityNumerator#1105079, quantityDenominator#1105080, (cast(quantityNumerator#1105079 as double) / cast(quantityDenominator#1105080 as double)) AS outboundUnit#1105081]
(1281) Project
Arguments: [product#1105052, plant#1105053, orderDateTime#1105054, productPlant#1105065, systemId#1105066, internalUUID#1105067, id#1105068, displayId#1105069, name#1105070, baseUnitOfMeasure#1105071, unitOfMeasures#1105072, unitOfMeasureConversions#1105073, productionAspect#1105074, salesAspect#1105075, procurementAspect#1105076, productGroup#1105077, filteredUnitOfMeasureConversions#1105078, quantityNumerator#1105079, quantityDenominator#1105080, CASE WHEN (isnull(outboundUnit#1105081) OR (outboundUnit#1105081 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105081 END AS outboundUnit#1105082]
(1282) Project
Arguments: [product#1105052, plant#1105053, orderDateTime#1105054, productPlant#1105065, outboundUnit#1105082]
(1283) Join
Arguments: Inner, ((plantUuid#1105044 = plant#1105053) AND (productUuid#1105046 = product#1105052))
(1284) Filter
Arguments: (calculationDateTime#1105040 <= orderDateTime#1105054)
(1285) Project
Arguments: [plantUuid#1105044 AS plant#1105083, productUuid#1105046 AS product#1105084, storageLocId#1105047, calculationDateTime#1105040, quantity#1105049]
(1286) Aggregate
Arguments: [plant#1105083, product#1105084, storageLocId#1105047], [plant#1105083, product#1105084, storageLocId#1105047, max(calculationDateTime#1105040) AS max_calc_datetime#1105085]
(1287) Join
Arguments: Inner, ((((plant#1104973 <=> plant#1105083) AND (product#1104974 <=> product#1105084)) AND (storageLocId#1104937 <=> storageLocId#1105047)) AND (calculationDateTime#1104930 <=> max_calc_datetime#1105085))
(1288) Project
Arguments: [plant#1104973, product#1104974, storageLocId#1104937, calculationDateTime#1104930, quantity#1104939]
(1289) Aggregate
Arguments: [product#1104974, plant#1104973], [product#1104974, plant#1104973, sum(quantity#1104939) AS quantitySum#1105086, min(calculationDateTime#1104930) AS minCalculationDateTime#1105087]
(1290) Project
Arguments: [product#1104974, plant#1104973, quantitySum#1105086, minCalculationDateTime#1105087, round(quantitySum#1105086, 0) AS roundedQuantitySum#1105088]
(1291) Join
Arguments: LeftOuter, ((plant#1104835 = plant#1104973) AND (product#1104834 = product#1104974))
(1292) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, roundedQuantitySum#1105088, minCalculationDateTime#1105087]
(1293) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, roundedQuantitySum#1105088, minCalculationDateTime#1105087, CASE WHEN isnotnull(minCalculationDateTime#1105087) THEN minCalculationDateTime#1105087 ELSE orderDateTime#1104836 END AS stockDatetime#1105089]
(1294) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, roundedQuantitySum#1105088, minCalculationDateTime#1105087, stockDatetime#1105089, CASE WHEN isnotnull(roundedQuantitySum#1105088) THEN array(roundedQuantitySum#1105088) ELSE array(0.0) END AS stockBatchQuantities#1105090]
(1295) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, roundedQuantitySum#1105088, minCalculationDateTime#1105087, stockDatetime#1105089, stockBatchQuantities#1105090, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1105091]
(1296) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, roundedQuantitySum#1105088, stockDatetime#1105089, stockBatchQuantities#1105090, stockBatchShelfLifeEndDatetimes#1105091]
(1297) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, stockBatchShelfLifeEndDatetimes#1105091]
(1298) LogicalRelation
Arguments: parquet, [product#1105092, plant#1105093, orderDateTime#1105094, planningStartDateTime#1105095], false
(1299) RepartitionByExpression
Arguments: [product#1105092, plant#1105093], 37
(1300) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094]
(1301) LogicalRelation
Arguments: parquet, [systemId#1105096, internalUUID#1105097, plant#1105098, product#1105099, blockedForReplenishmentStartingFrom#1105100, productionAspect#1105101, salesPlant#1105102, listing#1105103, sourceOfSupplyCategory#1105104], false
(1302) Repartition
Arguments: 37, true
(1303) Project
Arguments: [systemId#1105096, internalUUID#1105097, plant#1105098, product#1105099, blockedForReplenishmentStartingFrom#1105100, productionAspect#1105101, salesPlant#1105102, listing#1105103, sourceOfSupplyCategory#1105104, struct(systemId, systemId#1105096, internalUUID, internalUUID#1105097, plant, plant#1105098, product, product#1105099, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105100, productionAspect, productionAspect#1105101, salesPlant, salesPlant#1105102, listing, listing#1105103, sourceOfSupplyCategory, sourceOfSupplyCategory#1105104) AS productPlant#1105105]
(1304) Project
Arguments: [productPlant#1105105]
(1305) Join
Arguments: LeftOuter, ((product#1105092 <=> productPlant#1105105.product.internalRefUUID) AND (plant#1105093 <=> productPlant#1105105.plant.internalRefUUID))
(1306) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105]
(1307) LogicalRelation
Arguments: parquet, [systemId#1105106, internalUUID#1105107, id#1105108, displayId#1105109, name#1105110, baseUnitOfMeasure#1105111, unitOfMeasures#1105112, unitOfMeasureConversions#1105113, productionAspect#1105114, salesAspect#1105115, procurementAspect#1105116, productGroup#1105117], false
(1308) Repartition
Arguments: 37, true
(1309) Join
Arguments: LeftOuter, (product#1105092 = internalUUID#1105107)
(1310) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, systemId#1105106, internalUUID#1105107, id#1105108, displayId#1105109, name#1105110, baseUnitOfMeasure#1105111, unitOfMeasures#1105112, unitOfMeasureConversions#1105113, productionAspect#1105114, salesAspect#1105115, procurementAspect#1105116, productGroup#1105117, filter(unitOfMeasureConversions#1105113, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105105.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105105.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105111.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105111.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105118]
(1311) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105118.quantityNumerator), true, [quantityNumerator#1105119]
(1312) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, systemId#1105106, internalUUID#1105107, id#1105108, displayId#1105109, name#1105110, baseUnitOfMeasure#1105111, unitOfMeasures#1105112, unitOfMeasureConversions#1105113, productionAspect#1105114, salesAspect#1105115, procurementAspect#1105116, productGroup#1105117, filteredUnitOfMeasureConversions#1105118, quantityNumerator#1105119]
(1313) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105118.quantityDenominator), true, [quantityDenominator#1105120]
(1314) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, systemId#1105106, internalUUID#1105107, id#1105108, displayId#1105109, name#1105110, baseUnitOfMeasure#1105111, unitOfMeasures#1105112, unitOfMeasureConversions#1105113, productionAspect#1105114, salesAspect#1105115, procurementAspect#1105116, productGroup#1105117, filteredUnitOfMeasureConversions#1105118, quantityNumerator#1105119, quantityDenominator#1105120]
(1315) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, systemId#1105106, internalUUID#1105107, id#1105108, displayId#1105109, name#1105110, baseUnitOfMeasure#1105111, unitOfMeasures#1105112, unitOfMeasureConversions#1105113, productionAspect#1105114, salesAspect#1105115, procurementAspect#1105116, productGroup#1105117, filteredUnitOfMeasureConversions#1105118, quantityNumerator#1105119, quantityDenominator#1105120, (cast(quantityNumerator#1105119 as double) / cast(quantityDenominator#1105120 as double)) AS outboundUnit#1105121]
(1316) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, systemId#1105106, internalUUID#1105107, id#1105108, displayId#1105109, name#1105110, baseUnitOfMeasure#1105111, unitOfMeasures#1105112, unitOfMeasureConversions#1105113, productionAspect#1105114, salesAspect#1105115, procurementAspect#1105116, productGroup#1105117, filteredUnitOfMeasureConversions#1105118, quantityNumerator#1105119, quantityDenominator#1105120, CASE WHEN (isnull(outboundUnit#1105121) OR (outboundUnit#1105121 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105121 END AS outboundUnit#1105122]
(1317) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122]
(1318) LogicalRelation
Arguments: parquet, [systemId#1105123, internalUUID#1105124, product#1105125, plant#1105126, calculationDateTime#1105127, stockQuantities#1105128], false
(1319) Repartition
Arguments: 37, true
(1320) LogicalRelation
Arguments: parquet, [marketUnit#1105129, description#1105130, articleHierarchy#1105131, defaultCurrency#1105132, responsibilities#1105133, replenishmentTypes#1105134, distributionCenters#1105135, assignedArticleHierarchyNodes#1105136, minOrderQtySetting#1105137, listingCheck#1105138, odsSelection#1105139, demandProfiles#1105140, constraintProfiles#1105141, optimizationProfiles#1105142, orderGroupSplitProfiles#1105143, supplierMinimumProfiles#1105144, multipleRestrictionProfiles#1105145, preferredUomSource#1105146, handlingOfUnfulfilledDemands#1105147, negligibleQuantitiesThreshold#1105148, eventtype#1105149], false
(1321) Repartition
Arguments: 37, true
(1322) Filter
Arguments: (marketUnit#1105129 <=> AUTO_ALL_ProdLoc)
(1323) Project
Arguments: [marketUnit#1105129, description#1105130, articleHierarchy#1105131, defaultCurrency#1105132, responsibilities#1105133, replenishmentTypes#1105134, distributionCenters#1105135, assignedArticleHierarchyNodes#1105136, minOrderQtySetting#1105137, listingCheck#1105138, odsSelection#1105139, demandProfiles#1105140, constraintProfiles#1105141, optimizationProfiles#1105142, orderGroupSplitProfiles#1105143, supplierMinimumProfiles#1105144, multipleRestrictionProfiles#1105145, preferredUomSource#1105146, handlingOfUnfulfilledDemands#1105147, negligibleQuantitiesThreshold#1105148, eventtype#1105149]
(1324) Project
Arguments: [distributionCenters#1105135]
(1325) Generate
Arguments: explode(distributionCenters#1105135), false, [distributionCenters#1105150]
(1326) Project
Arguments: [distributionCenters#1105150]
(1327) Generate
Arguments: explode(distributionCenters#1105150.storageLocations), false, [storageLocations#1105151]
(1328) Project
Arguments: [distributionCenters#1105150.id AS plantId#1105152, distributionCenters#1105150.internalRefUUID AS plantUuid#1105153, storageLocations#1105151]
(1329) Project
Arguments: [plantId#1105152, plantUuid#1105153, storageLocations#1105151.id AS storageLocId#1105154, storageLocations#1105151.internalRefUUID AS storageLocUuid#1105155]
(1330) LogicalRelation
Arguments: parquet, [product#1105156, plant#1105157, orderDateTime#1105158, planningStartDateTime#1105159], false
(1331) RepartitionByExpression
Arguments: [product#1105156, plant#1105157], 37
(1332) Project
Arguments: [product#1105156, plant#1105157, orderDateTime#1105158]
(1333) LogicalRelation
Arguments: parquet, [systemId#1105160, internalUUID#1105161, plant#1105162, product#1105163, blockedForReplenishmentStartingFrom#1105164, productionAspect#1105165, salesPlant#1105166, listing#1105167, sourceOfSupplyCategory#1105168], false
(1334) Repartition
Arguments: 37, true
(1335) Project
Arguments: [systemId#1105160, internalUUID#1105161, plant#1105162, product#1105163, blockedForReplenishmentStartingFrom#1105164, productionAspect#1105165, salesPlant#1105166, listing#1105167, sourceOfSupplyCategory#1105168, struct(systemId, systemId#1105160, internalUUID, internalUUID#1105161, plant, plant#1105162, product, product#1105163, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105164, productionAspect, productionAspect#1105165, salesPlant, salesPlant#1105166, listing, listing#1105167, sourceOfSupplyCategory, sourceOfSupplyCategory#1105168) AS productPlant#1105169]
(1336) Project
Arguments: [productPlant#1105169]
(1337) Join
Arguments: LeftOuter, ((product#1105156 <=> productPlant#1105169.product.internalRefUUID) AND (plant#1105157 <=> productPlant#1105169.plant.internalRefUUID))
(1338) Project
Arguments: [product#1105156, plant#1105157, orderDateTime#1105158, productPlant#1105169]
(1339) LogicalRelation
Arguments: parquet, [systemId#1105170, internalUUID#1105171, id#1105172, displayId#1105173, name#1105174, baseUnitOfMeasure#1105175, unitOfMeasures#1105176, unitOfMeasureConversions#1105177, productionAspect#1105178, salesAspect#1105179, procurementAspect#1105180, productGroup#1105181], false
(1340) Repartition
Arguments: 37, true
(1341) Join
Arguments: LeftOuter, (product#1105156 = internalUUID#1105171)
(1342) Project
Arguments: [product#1105156, plant#1105157, orderDateTime#1105158, productPlant#1105169, systemId#1105170, internalUUID#1105171, id#1105172, displayId#1105173, name#1105174, baseUnitOfMeasure#1105175, unitOfMeasures#1105176, unitOfMeasureConversions#1105177, productionAspect#1105178, salesAspect#1105179, procurementAspect#1105180, productGroup#1105181, filter(unitOfMeasureConversions#1105177, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105169.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105169.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105175.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105175.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105182]
(1343) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105182.quantityNumerator), true, [quantityNumerator#1105183]
(1344) Project
Arguments: [product#1105156, plant#1105157, orderDateTime#1105158, productPlant#1105169, systemId#1105170, internalUUID#1105171, id#1105172, displayId#1105173, name#1105174, baseUnitOfMeasure#1105175, unitOfMeasures#1105176, unitOfMeasureConversions#1105177, productionAspect#1105178, salesAspect#1105179, procurementAspect#1105180, productGroup#1105181, filteredUnitOfMeasureConversions#1105182, quantityNumerator#1105183]
(1345) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105182.quantityDenominator), true, [quantityDenominator#1105184]
(1346) Project
Arguments: [product#1105156, plant#1105157, orderDateTime#1105158, productPlant#1105169, systemId#1105170, internalUUID#1105171, id#1105172, displayId#1105173, name#1105174, baseUnitOfMeasure#1105175, unitOfMeasures#1105176, unitOfMeasureConversions#1105177, productionAspect#1105178, salesAspect#1105179, procurementAspect#1105180, productGroup#1105181, filteredUnitOfMeasureConversions#1105182, quantityNumerator#1105183, quantityDenominator#1105184]
(1347) Project
Arguments: [product#1105156, plant#1105157, orderDateTime#1105158, productPlant#1105169, systemId#1105170, internalUUID#1105171, id#1105172, displayId#1105173, name#1105174, baseUnitOfMeasure#1105175, unitOfMeasures#1105176, unitOfMeasureConversions#1105177, productionAspect#1105178, salesAspect#1105179, procurementAspect#1105180, productGroup#1105181, filteredUnitOfMeasureConversions#1105182, quantityNumerator#1105183, quantityDenominator#1105184, (cast(quantityNumerator#1105183 as double) / cast(quantityDenominator#1105184 as double)) AS outboundUnit#1105185]
(1348) Project
Arguments: [product#1105156, plant#1105157, orderDateTime#1105158, productPlant#1105169, systemId#1105170, internalUUID#1105171, id#1105172, displayId#1105173, name#1105174, baseUnitOfMeasure#1105175, unitOfMeasures#1105176, unitOfMeasureConversions#1105177, productionAspect#1105178, salesAspect#1105179, procurementAspect#1105180, productGroup#1105181, filteredUnitOfMeasureConversions#1105182, quantityNumerator#1105183, quantityDenominator#1105184, CASE WHEN (isnull(outboundUnit#1105185) OR (outboundUnit#1105185 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105185 END AS outboundUnit#1105186]
(1349) Project
Arguments: [product#1105156, plant#1105157, orderDateTime#1105158, productPlant#1105169, outboundUnit#1105186]
(1350) Project
Arguments: [plant#1105157]
(1351) Deduplicate
Arguments: [plant#1105157]
(1352) Join
Arguments: Inner, (plantUuid#1105153 = plant#1105157)
(1353) Project
Arguments: [plantId#1105152, plantUuid#1105153, storageLocId#1105154, storageLocUuid#1105155]
(1354) Join
Arguments: Inner, (plant#1105126.internalRefUUID <=> plantUuid#1105153)
(1355) Generate
Arguments: explode(filter(stockQuantities#1105128, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1105155) AND (lambda x#1101337.storageLocation.Id = storageLocId#1105154)), lambda x#1101337, false))), false, [stockQuantity#1105187]
(1356) Project
Arguments: [systemId#1105123, internalUUID#1105124, product#1105125, plant#1105126, calculationDateTime#1105127, stockQuantities#1105128, plantId#1105152, plantUuid#1105153, storageLocId#1105154, storageLocUuid#1105155, stockQuantity#1105187]
(1357) Aggregate
Arguments: [plantUuid#1105153, internalUUID#1105124, plant#1105126, product#1105125, systemId#1105123], [plantUuid#1105153, internalUUID#1105124, plant#1105126, product#1105125, systemId#1105123, first(calculationDateTime#1105127, false) AS calculationDateTime#1105188, collect_list(stockQuantity#1105187, 0, 0) AS stockQuantities#1105189]
(1358) Project
Arguments: [systemId#1105123, internalUUID#1105124, product#1105125, plant#1105126, calculationDateTime#1105188, stockQuantities#1105189]
(1359) Generate
Arguments: explode(stockQuantities#1105189), false, [stockQuantity#1105190]
(1360) Project
Arguments: [systemId#1105123, internalUUID#1105124, product#1105125, plant#1105126, calculationDateTime#1105188, stockQuantities#1105189, stockQuantity#1105190]
(1361) Project
Arguments: [plant#1105126.id AS plant#1105191, plant#1105126.internalRefUUID AS plantUuid#1105192, product#1105125.id AS product#1105193, product#1105125.internalRefUUID AS productUuid#1105194, calculationDateTime#1105188, stockQuantity#1105190.storagelocation.id AS storageLocId#1105195, stockQuantity#1105190.storagelocation.internalRefUUID AS storageLocUuid#1105196, stockQuantity#1105190.quantity.measure AS quantity#1105197, stockQuantity#1105190.specialStockIndicator.code AS specialStockIndicator#1105198, stockQuantity#1105190.stockType.code AS stockType#1105199]
(1362) Filter
Arguments: ((specialStockIndicator#1105198 = ) AND (stockType#1105199 = 01))
(1363) LogicalRelation
Arguments: parquet, [product#1105200, plant#1105201, orderDateTime#1105202, planningStartDateTime#1105203], false
(1364) RepartitionByExpression
Arguments: [product#1105200, plant#1105201], 37
(1365) Project
Arguments: [product#1105200, plant#1105201, orderDateTime#1105202]
(1366) LogicalRelation
Arguments: parquet, [systemId#1105204, internalUUID#1105205, plant#1105206, product#1105207, blockedForReplenishmentStartingFrom#1105208, productionAspect#1105209, salesPlant#1105210, listing#1105211, sourceOfSupplyCategory#1105212], false
(1367) Repartition
Arguments: 37, true
(1368) Project
Arguments: [systemId#1105204, internalUUID#1105205, plant#1105206, product#1105207, blockedForReplenishmentStartingFrom#1105208, productionAspect#1105209, salesPlant#1105210, listing#1105211, sourceOfSupplyCategory#1105212, struct(systemId, systemId#1105204, internalUUID, internalUUID#1105205, plant, plant#1105206, product, product#1105207, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105208, productionAspect, productionAspect#1105209, salesPlant, salesPlant#1105210, listing, listing#1105211, sourceOfSupplyCategory, sourceOfSupplyCategory#1105212) AS productPlant#1105213]
(1369) Project
Arguments: [productPlant#1105213]
(1370) Join
Arguments: LeftOuter, ((product#1105200 <=> productPlant#1105213.product.internalRefUUID) AND (plant#1105201 <=> productPlant#1105213.plant.internalRefUUID))
(1371) Project
Arguments: [product#1105200, plant#1105201, orderDateTime#1105202, productPlant#1105213]
(1372) LogicalRelation
Arguments: parquet, [systemId#1105214, internalUUID#1105215, id#1105216, displayId#1105217, name#1105218, baseUnitOfMeasure#1105219, unitOfMeasures#1105220, unitOfMeasureConversions#1105221, productionAspect#1105222, salesAspect#1105223, procurementAspect#1105224, productGroup#1105225], false
(1373) Repartition
Arguments: 37, true
(1374) Join
Arguments: LeftOuter, (product#1105200 = internalUUID#1105215)
(1375) Project
Arguments: [product#1105200, plant#1105201, orderDateTime#1105202, productPlant#1105213, systemId#1105214, internalUUID#1105215, id#1105216, displayId#1105217, name#1105218, baseUnitOfMeasure#1105219, unitOfMeasures#1105220, unitOfMeasureConversions#1105221, productionAspect#1105222, salesAspect#1105223, procurementAspect#1105224, productGroup#1105225, filter(unitOfMeasureConversions#1105221, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105213.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105213.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105219.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105219.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105226]
(1376) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105226.quantityNumerator), true, [quantityNumerator#1105227]
(1377) Project
Arguments: [product#1105200, plant#1105201, orderDateTime#1105202, productPlant#1105213, systemId#1105214, internalUUID#1105215, id#1105216, displayId#1105217, name#1105218, baseUnitOfMeasure#1105219, unitOfMeasures#1105220, unitOfMeasureConversions#1105221, productionAspect#1105222, salesAspect#1105223, procurementAspect#1105224, productGroup#1105225, filteredUnitOfMeasureConversions#1105226, quantityNumerator#1105227]
(1378) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105226.quantityDenominator), true, [quantityDenominator#1105228]
(1379) Project
Arguments: [product#1105200, plant#1105201, orderDateTime#1105202, productPlant#1105213, systemId#1105214, internalUUID#1105215, id#1105216, displayId#1105217, name#1105218, baseUnitOfMeasure#1105219, unitOfMeasures#1105220, unitOfMeasureConversions#1105221, productionAspect#1105222, salesAspect#1105223, procurementAspect#1105224, productGroup#1105225, filteredUnitOfMeasureConversions#1105226, quantityNumerator#1105227, quantityDenominator#1105228]
(1380) Project
Arguments: [product#1105200, plant#1105201, orderDateTime#1105202, productPlant#1105213, systemId#1105214, internalUUID#1105215, id#1105216, displayId#1105217, name#1105218, baseUnitOfMeasure#1105219, unitOfMeasures#1105220, unitOfMeasureConversions#1105221, productionAspect#1105222, salesAspect#1105223, procurementAspect#1105224, productGroup#1105225, filteredUnitOfMeasureConversions#1105226, quantityNumerator#1105227, quantityDenominator#1105228, (cast(quantityNumerator#1105227 as double) / cast(quantityDenominator#1105228 as double)) AS outboundUnit#1105229]
(1381) Project
Arguments: [product#1105200, plant#1105201, orderDateTime#1105202, productPlant#1105213, systemId#1105214, internalUUID#1105215, id#1105216, displayId#1105217, name#1105218, baseUnitOfMeasure#1105219, unitOfMeasures#1105220, unitOfMeasureConversions#1105221, productionAspect#1105222, salesAspect#1105223, procurementAspect#1105224, productGroup#1105225, filteredUnitOfMeasureConversions#1105226, quantityNumerator#1105227, quantityDenominator#1105228, CASE WHEN (isnull(outboundUnit#1105229) OR (outboundUnit#1105229 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105229 END AS outboundUnit#1105230]
(1382) Project
Arguments: [product#1105200, plant#1105201, orderDateTime#1105202, productPlant#1105213, outboundUnit#1105230]
(1383) Join
Arguments: Inner, ((plantUuid#1105192 = plant#1105201) AND (productUuid#1105194 = product#1105200))
(1384) Filter
Arguments: (calculationDateTime#1105188 <= orderDateTime#1105202)
(1385) Project
Arguments: [plantUuid#1105192 AS plant#1105231, productUuid#1105194 AS product#1105232, storageLocId#1105195, calculationDateTime#1105188, quantity#1105197]
(1386) LogicalRelation
Arguments: parquet, [systemId#1105233, internalUUID#1105234, product#1105235, plant#1105236, calculationDateTime#1105237, stockQuantities#1105238], false
(1387) Repartition
Arguments: 37, true
(1388) LogicalRelation
Arguments: parquet, [marketUnit#1105239, description#1105240, articleHierarchy#1105241, defaultCurrency#1105242, responsibilities#1105243, replenishmentTypes#1105244, distributionCenters#1105245, assignedArticleHierarchyNodes#1105246, minOrderQtySetting#1105247, listingCheck#1105248, odsSelection#1105249, demandProfiles#1105250, constraintProfiles#1105251, optimizationProfiles#1105252, orderGroupSplitProfiles#1105253, supplierMinimumProfiles#1105254, multipleRestrictionProfiles#1105255, preferredUomSource#1105256, handlingOfUnfulfilledDemands#1105257, negligibleQuantitiesThreshold#1105258, eventtype#1105259], false
(1389) Repartition
Arguments: 37, true
(1390) Filter
Arguments: (marketUnit#1105239 <=> AUTO_ALL_ProdLoc)
(1391) Project
Arguments: [marketUnit#1105239, description#1105240, articleHierarchy#1105241, defaultCurrency#1105242, responsibilities#1105243, replenishmentTypes#1105244, distributionCenters#1105245, assignedArticleHierarchyNodes#1105246, minOrderQtySetting#1105247, listingCheck#1105248, odsSelection#1105249, demandProfiles#1105250, constraintProfiles#1105251, optimizationProfiles#1105252, orderGroupSplitProfiles#1105253, supplierMinimumProfiles#1105254, multipleRestrictionProfiles#1105255, preferredUomSource#1105256, handlingOfUnfulfilledDemands#1105257, negligibleQuantitiesThreshold#1105258, eventtype#1105259]
(1392) Project
Arguments: [distributionCenters#1105245]
(1393) Generate
Arguments: explode(distributionCenters#1105245), false, [distributionCenters#1105260]
(1394) Project
Arguments: [distributionCenters#1105260]
(1395) Generate
Arguments: explode(distributionCenters#1105260.storageLocations), false, [storageLocations#1105261]
(1396) Project
Arguments: [distributionCenters#1105260.id AS plantId#1105262, distributionCenters#1105260.internalRefUUID AS plantUuid#1105263, storageLocations#1105261]
(1397) Project
Arguments: [plantId#1105262, plantUuid#1105263, storageLocations#1105261.id AS storageLocId#1105264, storageLocations#1105261.internalRefUUID AS storageLocUuid#1105265]
(1398) LogicalRelation
Arguments: parquet, [product#1105266, plant#1105267, orderDateTime#1105268, planningStartDateTime#1105269], false
(1399) RepartitionByExpression
Arguments: [product#1105266, plant#1105267], 37
(1400) Project
Arguments: [product#1105266, plant#1105267, orderDateTime#1105268]
(1401) LogicalRelation
Arguments: parquet, [systemId#1105270, internalUUID#1105271, plant#1105272, product#1105273, blockedForReplenishmentStartingFrom#1105274, productionAspect#1105275, salesPlant#1105276, listing#1105277, sourceOfSupplyCategory#1105278], false
(1402) Repartition
Arguments: 37, true
(1403) Project
Arguments: [systemId#1105270, internalUUID#1105271, plant#1105272, product#1105273, blockedForReplenishmentStartingFrom#1105274, productionAspect#1105275, salesPlant#1105276, listing#1105277, sourceOfSupplyCategory#1105278, struct(systemId, systemId#1105270, internalUUID, internalUUID#1105271, plant, plant#1105272, product, product#1105273, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105274, productionAspect, productionAspect#1105275, salesPlant, salesPlant#1105276, listing, listing#1105277, sourceOfSupplyCategory, sourceOfSupplyCategory#1105278) AS productPlant#1105279]
(1404) Project
Arguments: [productPlant#1105279]
(1405) Join
Arguments: LeftOuter, ((product#1105266 <=> productPlant#1105279.product.internalRefUUID) AND (plant#1105267 <=> productPlant#1105279.plant.internalRefUUID))
(1406) Project
Arguments: [product#1105266, plant#1105267, orderDateTime#1105268, productPlant#1105279]
(1407) LogicalRelation
Arguments: parquet, [systemId#1105280, internalUUID#1105281, id#1105282, displayId#1105283, name#1105284, baseUnitOfMeasure#1105285, unitOfMeasures#1105286, unitOfMeasureConversions#1105287, productionAspect#1105288, salesAspect#1105289, procurementAspect#1105290, productGroup#1105291], false
(1408) Repartition
Arguments: 37, true
(1409) Join
Arguments: LeftOuter, (product#1105266 = internalUUID#1105281)
(1410) Project
Arguments: [product#1105266, plant#1105267, orderDateTime#1105268, productPlant#1105279, systemId#1105280, internalUUID#1105281, id#1105282, displayId#1105283, name#1105284, baseUnitOfMeasure#1105285, unitOfMeasures#1105286, unitOfMeasureConversions#1105287, productionAspect#1105288, salesAspect#1105289, procurementAspect#1105290, productGroup#1105291, filter(unitOfMeasureConversions#1105287, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105279.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105279.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105285.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105285.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105292]
(1411) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105292.quantityNumerator), true, [quantityNumerator#1105293]
(1412) Project
Arguments: [product#1105266, plant#1105267, orderDateTime#1105268, productPlant#1105279, systemId#1105280, internalUUID#1105281, id#1105282, displayId#1105283, name#1105284, baseUnitOfMeasure#1105285, unitOfMeasures#1105286, unitOfMeasureConversions#1105287, productionAspect#1105288, salesAspect#1105289, procurementAspect#1105290, productGroup#1105291, filteredUnitOfMeasureConversions#1105292, quantityNumerator#1105293]
(1413) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105292.quantityDenominator), true, [quantityDenominator#1105294]
(1414) Project
Arguments: [product#1105266, plant#1105267, orderDateTime#1105268, productPlant#1105279, systemId#1105280, internalUUID#1105281, id#1105282, displayId#1105283, name#1105284, baseUnitOfMeasure#1105285, unitOfMeasures#1105286, unitOfMeasureConversions#1105287, productionAspect#1105288, salesAspect#1105289, procurementAspect#1105290, productGroup#1105291, filteredUnitOfMeasureConversions#1105292, quantityNumerator#1105293, quantityDenominator#1105294]
(1415) Project
Arguments: [product#1105266, plant#1105267, orderDateTime#1105268, productPlant#1105279, systemId#1105280, internalUUID#1105281, id#1105282, displayId#1105283, name#1105284, baseUnitOfMeasure#1105285, unitOfMeasures#1105286, unitOfMeasureConversions#1105287, productionAspect#1105288, salesAspect#1105289, procurementAspect#1105290, productGroup#1105291, filteredUnitOfMeasureConversions#1105292, quantityNumerator#1105293, quantityDenominator#1105294, (cast(quantityNumerator#1105293 as double) / cast(quantityDenominator#1105294 as double)) AS outboundUnit#1105295]
(1416) Project
Arguments: [product#1105266, plant#1105267, orderDateTime#1105268, productPlant#1105279, systemId#1105280, internalUUID#1105281, id#1105282, displayId#1105283, name#1105284, baseUnitOfMeasure#1105285, unitOfMeasures#1105286, unitOfMeasureConversions#1105287, productionAspect#1105288, salesAspect#1105289, procurementAspect#1105290, productGroup#1105291, filteredUnitOfMeasureConversions#1105292, quantityNumerator#1105293, quantityDenominator#1105294, CASE WHEN (isnull(outboundUnit#1105295) OR (outboundUnit#1105295 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105295 END AS outboundUnit#1105296]
(1417) Project
Arguments: [product#1105266, plant#1105267, orderDateTime#1105268, productPlant#1105279, outboundUnit#1105296]
(1418) Project
Arguments: [plant#1105267]
(1419) Deduplicate
Arguments: [plant#1105267]
(1420) Join
Arguments: Inner, (plantUuid#1105263 = plant#1105267)
(1421) Project
Arguments: [plantId#1105262, plantUuid#1105263, storageLocId#1105264, storageLocUuid#1105265]
(1422) Join
Arguments: Inner, (plant#1105236.internalRefUUID <=> plantUuid#1105263)
(1423) Generate
Arguments: explode(filter(stockQuantities#1105238, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1105265) AND (lambda x#1101337.storageLocation.Id = storageLocId#1105264)), lambda x#1101337, false))), false, [stockQuantity#1105297]
(1424) Project
Arguments: [systemId#1105233, internalUUID#1105234, product#1105235, plant#1105236, calculationDateTime#1105237, stockQuantities#1105238, plantId#1105262, plantUuid#1105263, storageLocId#1105264, storageLocUuid#1105265, stockQuantity#1105297]
(1425) Aggregate
Arguments: [plantUuid#1105263, internalUUID#1105234, plant#1105236, product#1105235, systemId#1105233], [plantUuid#1105263, internalUUID#1105234, plant#1105236, product#1105235, systemId#1105233, first(calculationDateTime#1105237, false) AS calculationDateTime#1105298, collect_list(stockQuantity#1105297, 0, 0) AS stockQuantities#1105299]
(1426) Project
Arguments: [systemId#1105233, internalUUID#1105234, product#1105235, plant#1105236, calculationDateTime#1105298, stockQuantities#1105299]
(1427) Generate
Arguments: explode(stockQuantities#1105299), false, [stockQuantity#1105300]
(1428) Project
Arguments: [systemId#1105233, internalUUID#1105234, product#1105235, plant#1105236, calculationDateTime#1105298, stockQuantities#1105299, stockQuantity#1105300]
(1429) Project
Arguments: [plant#1105236.id AS plant#1105301, plant#1105236.internalRefUUID AS plantUuid#1105302, product#1105235.id AS product#1105303, product#1105235.internalRefUUID AS productUuid#1105304, calculationDateTime#1105298, stockQuantity#1105300.storagelocation.id AS storageLocId#1105305, stockQuantity#1105300.storagelocation.internalRefUUID AS storageLocUuid#1105306, stockQuantity#1105300.quantity.measure AS quantity#1105307, stockQuantity#1105300.specialStockIndicator.code AS specialStockIndicator#1105308, stockQuantity#1105300.stockType.code AS stockType#1105309]
(1430) Filter
Arguments: ((specialStockIndicator#1105308 = ) AND (stockType#1105309 = 01))
(1431) LogicalRelation
Arguments: parquet, [product#1105310, plant#1105311, orderDateTime#1105312, planningStartDateTime#1105313], false
(1432) RepartitionByExpression
Arguments: [product#1105310, plant#1105311], 37
(1433) Project
Arguments: [product#1105310, plant#1105311, orderDateTime#1105312]
(1434) LogicalRelation
Arguments: parquet, [systemId#1105314, internalUUID#1105315, plant#1105316, product#1105317, blockedForReplenishmentStartingFrom#1105318, productionAspect#1105319, salesPlant#1105320, listing#1105321, sourceOfSupplyCategory#1105322], false
(1435) Repartition
Arguments: 37, true
(1436) Project
Arguments: [systemId#1105314, internalUUID#1105315, plant#1105316, product#1105317, blockedForReplenishmentStartingFrom#1105318, productionAspect#1105319, salesPlant#1105320, listing#1105321, sourceOfSupplyCategory#1105322, struct(systemId, systemId#1105314, internalUUID, internalUUID#1105315, plant, plant#1105316, product, product#1105317, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105318, productionAspect, productionAspect#1105319, salesPlant, salesPlant#1105320, listing, listing#1105321, sourceOfSupplyCategory, sourceOfSupplyCategory#1105322) AS productPlant#1105323]
(1437) Project
Arguments: [productPlant#1105323]
(1438) Join
Arguments: LeftOuter, ((product#1105310 <=> productPlant#1105323.product.internalRefUUID) AND (plant#1105311 <=> productPlant#1105323.plant.internalRefUUID))
(1439) Project
Arguments: [product#1105310, plant#1105311, orderDateTime#1105312, productPlant#1105323]
(1440) LogicalRelation
Arguments: parquet, [systemId#1105324, internalUUID#1105325, id#1105326, displayId#1105327, name#1105328, baseUnitOfMeasure#1105329, unitOfMeasures#1105330, unitOfMeasureConversions#1105331, productionAspect#1105332, salesAspect#1105333, procurementAspect#1105334, productGroup#1105335], false
(1441) Repartition
Arguments: 37, true
(1442) Join
Arguments: LeftOuter, (product#1105310 = internalUUID#1105325)
(1443) Project
Arguments: [product#1105310, plant#1105311, orderDateTime#1105312, productPlant#1105323, systemId#1105324, internalUUID#1105325, id#1105326, displayId#1105327, name#1105328, baseUnitOfMeasure#1105329, unitOfMeasures#1105330, unitOfMeasureConversions#1105331, productionAspect#1105332, salesAspect#1105333, procurementAspect#1105334, productGroup#1105335, filter(unitOfMeasureConversions#1105331, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105323.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105323.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105329.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105329.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105336]
(1444) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105336.quantityNumerator), true, [quantityNumerator#1105337]
(1445) Project
Arguments: [product#1105310, plant#1105311, orderDateTime#1105312, productPlant#1105323, systemId#1105324, internalUUID#1105325, id#1105326, displayId#1105327, name#1105328, baseUnitOfMeasure#1105329, unitOfMeasures#1105330, unitOfMeasureConversions#1105331, productionAspect#1105332, salesAspect#1105333, procurementAspect#1105334, productGroup#1105335, filteredUnitOfMeasureConversions#1105336, quantityNumerator#1105337]
(1446) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105336.quantityDenominator), true, [quantityDenominator#1105338]
(1447) Project
Arguments: [product#1105310, plant#1105311, orderDateTime#1105312, productPlant#1105323, systemId#1105324, internalUUID#1105325, id#1105326, displayId#1105327, name#1105328, baseUnitOfMeasure#1105329, unitOfMeasures#1105330, unitOfMeasureConversions#1105331, productionAspect#1105332, salesAspect#1105333, procurementAspect#1105334, productGroup#1105335, filteredUnitOfMeasureConversions#1105336, quantityNumerator#1105337, quantityDenominator#1105338]
(1448) Project
Arguments: [product#1105310, plant#1105311, orderDateTime#1105312, productPlant#1105323, systemId#1105324, internalUUID#1105325, id#1105326, displayId#1105327, name#1105328, baseUnitOfMeasure#1105329, unitOfMeasures#1105330, unitOfMeasureConversions#1105331, productionAspect#1105332, salesAspect#1105333, procurementAspect#1105334, productGroup#1105335, filteredUnitOfMeasureConversions#1105336, quantityNumerator#1105337, quantityDenominator#1105338, (cast(quantityNumerator#1105337 as double) / cast(quantityDenominator#1105338 as double)) AS outboundUnit#1105339]
(1449) Project
Arguments: [product#1105310, plant#1105311, orderDateTime#1105312, productPlant#1105323, systemId#1105324, internalUUID#1105325, id#1105326, displayId#1105327, name#1105328, baseUnitOfMeasure#1105329, unitOfMeasures#1105330, unitOfMeasureConversions#1105331, productionAspect#1105332, salesAspect#1105333, procurementAspect#1105334, productGroup#1105335, filteredUnitOfMeasureConversions#1105336, quantityNumerator#1105337, quantityDenominator#1105338, CASE WHEN (isnull(outboundUnit#1105339) OR (outboundUnit#1105339 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105339 END AS outboundUnit#1105340]
(1450) Project
Arguments: [product#1105310, plant#1105311, orderDateTime#1105312, productPlant#1105323, outboundUnit#1105340]
(1451) Join
Arguments: Inner, ((plantUuid#1105302 = plant#1105311) AND (productUuid#1105304 = product#1105310))
(1452) Filter
Arguments: (calculationDateTime#1105298 <= orderDateTime#1105312)
(1453) Project
Arguments: [plantUuid#1105302 AS plant#1105341, productUuid#1105304 AS product#1105342, storageLocId#1105305, calculationDateTime#1105298, quantity#1105307]
(1454) Aggregate
Arguments: [plant#1105341, product#1105342, storageLocId#1105305], [plant#1105341, product#1105342, storageLocId#1105305, max(calculationDateTime#1105298) AS max_calc_datetime#1105343]
(1455) Join
Arguments: Inner, ((((plant#1105231 <=> plant#1105341) AND (product#1105232 <=> product#1105342)) AND (storageLocId#1105195 <=> storageLocId#1105305)) AND (calculationDateTime#1105188 <=> max_calc_datetime#1105343))
(1456) Project
Arguments: [plant#1105231, product#1105232, storageLocId#1105195, calculationDateTime#1105188, quantity#1105197]
(1457) Aggregate
Arguments: [product#1105232, plant#1105231], [product#1105232, plant#1105231, sum(quantity#1105197) AS quantitySum#1105344, min(calculationDateTime#1105188) AS minCalculationDateTime#1105345]
(1458) Project
Arguments: [product#1105232, plant#1105231, quantitySum#1105344, minCalculationDateTime#1105345, round(quantitySum#1105344, 0) AS roundedQuantitySum#1105346]
(1459) Join
Arguments: LeftOuter, ((plant#1105093 = plant#1105231) AND (product#1105092 = product#1105232))
(1460) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, roundedQuantitySum#1105346, minCalculationDateTime#1105345]
(1461) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, roundedQuantitySum#1105346, minCalculationDateTime#1105345, CASE WHEN isnotnull(minCalculationDateTime#1105345) THEN minCalculationDateTime#1105345 ELSE orderDateTime#1105094 END AS stockDatetime#1105347]
(1462) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, roundedQuantitySum#1105346, minCalculationDateTime#1105345, stockDatetime#1105347, CASE WHEN isnotnull(roundedQuantitySum#1105346) THEN array(roundedQuantitySum#1105346) ELSE array(0.0) END AS stockBatchQuantities#1105348]
(1463) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, roundedQuantitySum#1105346, minCalculationDateTime#1105345, stockDatetime#1105347, stockBatchQuantities#1105348, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1105349]
(1464) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, roundedQuantitySum#1105346, stockDatetime#1105347, stockBatchQuantities#1105348, stockBatchShelfLifeEndDatetimes#1105349]
(1465) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, stockBatchShelfLifeEndDatetimes#1105349]
(1466) LogicalRelation
Arguments: parquet, [product#1105350, plant#1105351, demandChannel#1105352, demandStream#1105353, considerVariance#1105354, demandTimeBuckets#1105355, demandPointInTimeStart#1105356, demandPointInTimeEnd#1105357, demandPointInTime#1105358], false
(1467) Join
Arguments: LeftOuter, ((plant#1105351 <=> plant#1105093) AND (product#1105350 <=> product#1105092))
(1468) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, stockBatchShelfLifeEndDatetimes#1105349, product#1105350, plant#1105351, demandChannel#1105352, demandStream#1105353, considerVariance#1105354, demandTimeBuckets#1105355, demandPointInTimeStart#1105356, demandPointInTimeEnd#1105357, demandPointInTime#1105358, CASE WHEN isnotnull(product#1105350) THEN struct(demandChannel, demandChannel#1105352, demandStream, demandStream#1105353, considerVariance, considerVariance#1105354, demandTimeBuckets, demandTimeBuckets#1105355, demandPointInTimeStart, demandPointInTimeStart#1105356, demandPointInTimeEnd, demandPointInTimeEnd#1105357, demandPointInTime, demandPointInTime#1105358) 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#1105359]
(1469) Aggregate
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, stockBatchShelfLifeEndDatetimes#1105349], [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, stockBatchShelfLifeEndDatetimes#1105349, collect_list(rawDemands#1105359, 0, 0) AS rawDemands#1105360]
(1470) SubqueryAlias
Arguments: wl
(1471) LogicalRelation
Arguments: parquet, [systemId#1105361, internalUUID#1105362, id#1105363, displayId#1105364, name#1105365, category#1105366, companyCode#1105367, address#1105368, mainDistributionChain#1105369, mainPurchasingOrganization#1105370, validPurchasingOrganizations#1105371, productGroup#1105372], false
(1472) Repartition
Arguments: 37, true
(1473) Project
Arguments: [systemId#1105361, internalUUID#1105362, id#1105363, displayId#1105364, name#1105365, category#1105366, companyCode#1105367, address#1105368, mainDistributionChain#1105369, mainPurchasingOrganization#1105370, validPurchasingOrganizations#1105371, productGroup#1105372, address#1105368.timezone.code AS timezonecode#1105373]
(1474) Join
Arguments: LeftOuter, (plant#1105093 <=> internalUUID#1105362)
(1475) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, stockBatchShelfLifeEndDatetimes#1105349, rawDemands#1105360, systemId#1105361, internalUUID#1105362, id#1105363, displayId#1105364, name#1105365, category#1105366, companyCode#1105367, address#1105368, mainDistributionChain#1105369, mainPurchasingOrganization#1105370, validPurchasingOrganizations#1105371, productGroup#1105372, CASE WHEN isnotnull(timezonecode#1105373) THEN timezonecode#1105373 ELSE UTC END AS timezonecode#1105374]
(1476) Project
Arguments: [product#1105092, plant#1105093, orderDateTime#1105094, productPlant#1105105, outboundUnit#1105122, stockDatetime#1105347, stockBatchQuantities#1105348, stockBatchShelfLifeEndDatetimes#1105349, rawDemands#1105360, timezonecode#1105374]
(1477) DeserializeToObject
Arguments: createexternalrow(invoke(product#1105092.toString()), invoke(plant#1105093.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1105094)), if (isnull(productPlant#1105105)) null else createexternalrow(invoke(productPlant#1105105.systemId.toString()), invoke(productPlant#1105105.internalUUID.toString()), if (isnull(productPlant#1105105.plant)) null else createexternalrow(invoke(productPlant#1105105.plant.internalRefUUID.toString()), invoke(productPlant#1105105.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1105105.product)) null else createexternalrow(invoke(productPlant#1105105.product.internalRefUUID.toString()), invoke(productPlant#1105105.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1105105.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1105105.productionAspect)) null else createexternalrow(if (isnull(productPlant#1105105.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1105105.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1105105.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1105105.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#1105105.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1105105.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1105105.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1105105.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1105105.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1105105.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1105105.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1105105.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1105105.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1105105.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1105105.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1105105.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1105105.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1105105.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#1105105.salesPlant)) null else createexternalrow(if (isnull(productPlant#1105105.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1105105.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1105105.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, 87159), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#1105105.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1105105.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1105105.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1105105.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#1105122)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1105347)), mapobjects(lambdavariable(MapObject, DoubleType, true, 87160), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 87160) as double))), stockBatchQuantities#1105348, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 87161), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 87161) as timestamp)))), stockBatchShelfLifeEndDatetimes#1105349, 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, 87162), 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, 87162))) 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, 87162).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, 87162).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, 87162).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).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, 87162).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, 87162).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, 87162).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).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, 87162).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#1105360, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#1105374.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#1102685: org.apache.spark.sql.Row
(1478) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@51e4e5d1, 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#1102690: 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#1105375, 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#1105376, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87150), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87150), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87151), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87151), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87152), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87152), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87153), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87153), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87154), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87154), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#1105377, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87156), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87156), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87157), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87157), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87158), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87158), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#1105378]
(1480) Join
Arguments: LeftOuter, ((plant#1105376 <=> plant#1104835) AND (product#1105375 <=> product#1104834))
(1481) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, stockBatchShelfLifeEndDatetimes#1105091, plant#1105376, dayBucketDemands#1105377, pointInTimeDemands#1105378]
(1482) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, stockBatchShelfLifeEndDatetimes#1105091, dayBucketDemands#1105377, pointInTimeDemands#1105378]
(1483) LogicalRelation
Arguments: parquet, [product#1105379, plant#1105380, orderDateTime#1105381, planningStartDateTime#1105382], false
(1484) RepartitionByExpression
Arguments: [product#1105379, plant#1105380], 37
(1485) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381]
(1486) LogicalRelation
Arguments: parquet, [systemId#1105383, internalUUID#1105384, plant#1105385, product#1105386, blockedForReplenishmentStartingFrom#1105387, productionAspect#1105388, salesPlant#1105389, listing#1105390, sourceOfSupplyCategory#1105391], false
(1487) Repartition
Arguments: 37, true
(1488) Project
Arguments: [systemId#1105383, internalUUID#1105384, plant#1105385, product#1105386, blockedForReplenishmentStartingFrom#1105387, productionAspect#1105388, salesPlant#1105389, listing#1105390, sourceOfSupplyCategory#1105391, struct(systemId, systemId#1105383, internalUUID, internalUUID#1105384, plant, plant#1105385, product, product#1105386, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105387, productionAspect, productionAspect#1105388, salesPlant, salesPlant#1105389, listing, listing#1105390, sourceOfSupplyCategory, sourceOfSupplyCategory#1105391) AS productPlant#1105392]
(1489) Project
Arguments: [productPlant#1105392]
(1490) Join
Arguments: LeftOuter, ((product#1105379 <=> productPlant#1105392.product.internalRefUUID) AND (plant#1105380 <=> productPlant#1105392.plant.internalRefUUID))
(1491) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392]
(1492) LogicalRelation
Arguments: parquet, [systemId#1105393, internalUUID#1105394, id#1105395, displayId#1105396, name#1105397, baseUnitOfMeasure#1105398, unitOfMeasures#1105399, unitOfMeasureConversions#1105400, productionAspect#1105401, salesAspect#1105402, procurementAspect#1105403, productGroup#1105404], false
(1493) Repartition
Arguments: 37, true
(1494) Join
Arguments: LeftOuter, (product#1105379 = internalUUID#1105394)
(1495) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, systemId#1105393, internalUUID#1105394, id#1105395, displayId#1105396, name#1105397, baseUnitOfMeasure#1105398, unitOfMeasures#1105399, unitOfMeasureConversions#1105400, productionAspect#1105401, salesAspect#1105402, procurementAspect#1105403, productGroup#1105404, filter(unitOfMeasureConversions#1105400, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105392.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105392.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105398.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105398.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105405]
(1496) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105405.quantityNumerator), true, [quantityNumerator#1105406]
(1497) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, systemId#1105393, internalUUID#1105394, id#1105395, displayId#1105396, name#1105397, baseUnitOfMeasure#1105398, unitOfMeasures#1105399, unitOfMeasureConversions#1105400, productionAspect#1105401, salesAspect#1105402, procurementAspect#1105403, productGroup#1105404, filteredUnitOfMeasureConversions#1105405, quantityNumerator#1105406]
(1498) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105405.quantityDenominator), true, [quantityDenominator#1105407]
(1499) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, systemId#1105393, internalUUID#1105394, id#1105395, displayId#1105396, name#1105397, baseUnitOfMeasure#1105398, unitOfMeasures#1105399, unitOfMeasureConversions#1105400, productionAspect#1105401, salesAspect#1105402, procurementAspect#1105403, productGroup#1105404, filteredUnitOfMeasureConversions#1105405, quantityNumerator#1105406, quantityDenominator#1105407]
(1500) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, systemId#1105393, internalUUID#1105394, id#1105395, displayId#1105396, name#1105397, baseUnitOfMeasure#1105398, unitOfMeasures#1105399, unitOfMeasureConversions#1105400, productionAspect#1105401, salesAspect#1105402, procurementAspect#1105403, productGroup#1105404, filteredUnitOfMeasureConversions#1105405, quantityNumerator#1105406, quantityDenominator#1105407, (cast(quantityNumerator#1105406 as double) / cast(quantityDenominator#1105407 as double)) AS outboundUnit#1105408]
(1501) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, systemId#1105393, internalUUID#1105394, id#1105395, displayId#1105396, name#1105397, baseUnitOfMeasure#1105398, unitOfMeasures#1105399, unitOfMeasureConversions#1105400, productionAspect#1105401, salesAspect#1105402, procurementAspect#1105403, productGroup#1105404, filteredUnitOfMeasureConversions#1105405, quantityNumerator#1105406, quantityDenominator#1105407, CASE WHEN (isnull(outboundUnit#1105408) OR (outboundUnit#1105408 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105408 END AS outboundUnit#1105409]
(1502) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, outboundUnit#1105409]
(1503) LogicalRelation
Arguments: parquet, [systemId#1105410, internalUUID#1105411, product#1105412, plant#1105413, calculationDateTime#1105414, stockQuantities#1105415], false
(1504) Repartition
Arguments: 37, true
(1505) LogicalRelation
Arguments: parquet, [marketUnit#1105416, description#1105417, articleHierarchy#1105418, defaultCurrency#1105419, responsibilities#1105420, replenishmentTypes#1105421, distributionCenters#1105422, assignedArticleHierarchyNodes#1105423, minOrderQtySetting#1105424, listingCheck#1105425, odsSelection#1105426, demandProfiles#1105427, constraintProfiles#1105428, optimizationProfiles#1105429, orderGroupSplitProfiles#1105430, supplierMinimumProfiles#1105431, multipleRestrictionProfiles#1105432, preferredUomSource#1105433, handlingOfUnfulfilledDemands#1105434, negligibleQuantitiesThreshold#1105435, eventtype#1105436], false
(1506) Repartition
Arguments: 37, true
(1507) Filter
Arguments: (marketUnit#1105416 <=> AUTO_ALL_ProdLoc)
(1508) Project
Arguments: [marketUnit#1105416, description#1105417, articleHierarchy#1105418, defaultCurrency#1105419, responsibilities#1105420, replenishmentTypes#1105421, distributionCenters#1105422, assignedArticleHierarchyNodes#1105423, minOrderQtySetting#1105424, listingCheck#1105425, odsSelection#1105426, demandProfiles#1105427, constraintProfiles#1105428, optimizationProfiles#1105429, orderGroupSplitProfiles#1105430, supplierMinimumProfiles#1105431, multipleRestrictionProfiles#1105432, preferredUomSource#1105433, handlingOfUnfulfilledDemands#1105434, negligibleQuantitiesThreshold#1105435, eventtype#1105436]
(1509) Project
Arguments: [distributionCenters#1105422]
(1510) Generate
Arguments: explode(distributionCenters#1105422), false, [distributionCenters#1105437]
(1511) Project
Arguments: [distributionCenters#1105437]
(1512) Generate
Arguments: explode(distributionCenters#1105437.storageLocations), false, [storageLocations#1105438]
(1513) Project
Arguments: [distributionCenters#1105437.id AS plantId#1105439, distributionCenters#1105437.internalRefUUID AS plantUuid#1105440, storageLocations#1105438]
(1514) Project
Arguments: [plantId#1105439, plantUuid#1105440, storageLocations#1105438.id AS storageLocId#1105441, storageLocations#1105438.internalRefUUID AS storageLocUuid#1105442]
(1515) LogicalRelation
Arguments: parquet, [product#1105443, plant#1105444, orderDateTime#1105445, planningStartDateTime#1105446], false
(1516) RepartitionByExpression
Arguments: [product#1105443, plant#1105444], 37
(1517) Project
Arguments: [product#1105443, plant#1105444, orderDateTime#1105445]
(1518) LogicalRelation
Arguments: parquet, [systemId#1105447, internalUUID#1105448, plant#1105449, product#1105450, blockedForReplenishmentStartingFrom#1105451, productionAspect#1105452, salesPlant#1105453, listing#1105454, sourceOfSupplyCategory#1105455], false
(1519) Repartition
Arguments: 37, true
(1520) Project
Arguments: [systemId#1105447, internalUUID#1105448, plant#1105449, product#1105450, blockedForReplenishmentStartingFrom#1105451, productionAspect#1105452, salesPlant#1105453, listing#1105454, sourceOfSupplyCategory#1105455, struct(systemId, systemId#1105447, internalUUID, internalUUID#1105448, plant, plant#1105449, product, product#1105450, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105451, productionAspect, productionAspect#1105452, salesPlant, salesPlant#1105453, listing, listing#1105454, sourceOfSupplyCategory, sourceOfSupplyCategory#1105455) AS productPlant#1105456]
(1521) Project
Arguments: [productPlant#1105456]
(1522) Join
Arguments: LeftOuter, ((product#1105443 <=> productPlant#1105456.product.internalRefUUID) AND (plant#1105444 <=> productPlant#1105456.plant.internalRefUUID))
(1523) Project
Arguments: [product#1105443, plant#1105444, orderDateTime#1105445, productPlant#1105456]
(1524) LogicalRelation
Arguments: parquet, [systemId#1105457, internalUUID#1105458, id#1105459, displayId#1105460, name#1105461, baseUnitOfMeasure#1105462, unitOfMeasures#1105463, unitOfMeasureConversions#1105464, productionAspect#1105465, salesAspect#1105466, procurementAspect#1105467, productGroup#1105468], false
(1525) Repartition
Arguments: 37, true
(1526) Join
Arguments: LeftOuter, (product#1105443 = internalUUID#1105458)
(1527) Project
Arguments: [product#1105443, plant#1105444, orderDateTime#1105445, productPlant#1105456, systemId#1105457, internalUUID#1105458, id#1105459, displayId#1105460, name#1105461, baseUnitOfMeasure#1105462, unitOfMeasures#1105463, unitOfMeasureConversions#1105464, productionAspect#1105465, salesAspect#1105466, procurementAspect#1105467, productGroup#1105468, filter(unitOfMeasureConversions#1105464, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105456.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105456.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105462.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105462.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105469]
(1528) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105469.quantityNumerator), true, [quantityNumerator#1105470]
(1529) Project
Arguments: [product#1105443, plant#1105444, orderDateTime#1105445, productPlant#1105456, systemId#1105457, internalUUID#1105458, id#1105459, displayId#1105460, name#1105461, baseUnitOfMeasure#1105462, unitOfMeasures#1105463, unitOfMeasureConversions#1105464, productionAspect#1105465, salesAspect#1105466, procurementAspect#1105467, productGroup#1105468, filteredUnitOfMeasureConversions#1105469, quantityNumerator#1105470]
(1530) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105469.quantityDenominator), true, [quantityDenominator#1105471]
(1531) Project
Arguments: [product#1105443, plant#1105444, orderDateTime#1105445, productPlant#1105456, systemId#1105457, internalUUID#1105458, id#1105459, displayId#1105460, name#1105461, baseUnitOfMeasure#1105462, unitOfMeasures#1105463, unitOfMeasureConversions#1105464, productionAspect#1105465, salesAspect#1105466, procurementAspect#1105467, productGroup#1105468, filteredUnitOfMeasureConversions#1105469, quantityNumerator#1105470, quantityDenominator#1105471]
(1532) Project
Arguments: [product#1105443, plant#1105444, orderDateTime#1105445, productPlant#1105456, systemId#1105457, internalUUID#1105458, id#1105459, displayId#1105460, name#1105461, baseUnitOfMeasure#1105462, unitOfMeasures#1105463, unitOfMeasureConversions#1105464, productionAspect#1105465, salesAspect#1105466, procurementAspect#1105467, productGroup#1105468, filteredUnitOfMeasureConversions#1105469, quantityNumerator#1105470, quantityDenominator#1105471, (cast(quantityNumerator#1105470 as double) / cast(quantityDenominator#1105471 as double)) AS outboundUnit#1105472]
(1533) Project
Arguments: [product#1105443, plant#1105444, orderDateTime#1105445, productPlant#1105456, systemId#1105457, internalUUID#1105458, id#1105459, displayId#1105460, name#1105461, baseUnitOfMeasure#1105462, unitOfMeasures#1105463, unitOfMeasureConversions#1105464, productionAspect#1105465, salesAspect#1105466, procurementAspect#1105467, productGroup#1105468, filteredUnitOfMeasureConversions#1105469, quantityNumerator#1105470, quantityDenominator#1105471, CASE WHEN (isnull(outboundUnit#1105472) OR (outboundUnit#1105472 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105472 END AS outboundUnit#1105473]
(1534) Project
Arguments: [product#1105443, plant#1105444, orderDateTime#1105445, productPlant#1105456, outboundUnit#1105473]
(1535) Project
Arguments: [plant#1105444]
(1536) Deduplicate
Arguments: [plant#1105444]
(1537) Join
Arguments: Inner, (plantUuid#1105440 = plant#1105444)
(1538) Project
Arguments: [plantId#1105439, plantUuid#1105440, storageLocId#1105441, storageLocUuid#1105442]
(1539) Join
Arguments: Inner, (plant#1105413.internalRefUUID <=> plantUuid#1105440)
(1540) Generate
Arguments: explode(filter(stockQuantities#1105415, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1105442) AND (lambda x#1101337.storageLocation.Id = storageLocId#1105441)), lambda x#1101337, false))), false, [stockQuantity#1105474]
(1541) Project
Arguments: [systemId#1105410, internalUUID#1105411, product#1105412, plant#1105413, calculationDateTime#1105414, stockQuantities#1105415, plantId#1105439, plantUuid#1105440, storageLocId#1105441, storageLocUuid#1105442, stockQuantity#1105474]
(1542) Aggregate
Arguments: [plantUuid#1105440, internalUUID#1105411, plant#1105413, product#1105412, systemId#1105410], [plantUuid#1105440, internalUUID#1105411, plant#1105413, product#1105412, systemId#1105410, first(calculationDateTime#1105414, false) AS calculationDateTime#1105475, collect_list(stockQuantity#1105474, 0, 0) AS stockQuantities#1105476]
(1543) Project
Arguments: [systemId#1105410, internalUUID#1105411, product#1105412, plant#1105413, calculationDateTime#1105475, stockQuantities#1105476]
(1544) Generate
Arguments: explode(stockQuantities#1105476), false, [stockQuantity#1105477]
(1545) Project
Arguments: [systemId#1105410, internalUUID#1105411, product#1105412, plant#1105413, calculationDateTime#1105475, stockQuantities#1105476, stockQuantity#1105477]
(1546) Project
Arguments: [plant#1105413.id AS plant#1105478, plant#1105413.internalRefUUID AS plantUuid#1105479, product#1105412.id AS product#1105480, product#1105412.internalRefUUID AS productUuid#1105481, calculationDateTime#1105475, stockQuantity#1105477.storagelocation.id AS storageLocId#1105482, stockQuantity#1105477.storagelocation.internalRefUUID AS storageLocUuid#1105483, stockQuantity#1105477.quantity.measure AS quantity#1105484, stockQuantity#1105477.specialStockIndicator.code AS specialStockIndicator#1105485, stockQuantity#1105477.stockType.code AS stockType#1105486]
(1547) Filter
Arguments: ((specialStockIndicator#1105485 = ) AND (stockType#1105486 = 01))
(1548) LogicalRelation
Arguments: parquet, [product#1105487, plant#1105488, orderDateTime#1105489, planningStartDateTime#1105490], false
(1549) RepartitionByExpression
Arguments: [product#1105487, plant#1105488], 37
(1550) Project
Arguments: [product#1105487, plant#1105488, orderDateTime#1105489]
(1551) LogicalRelation
Arguments: parquet, [systemId#1105491, internalUUID#1105492, plant#1105493, product#1105494, blockedForReplenishmentStartingFrom#1105495, productionAspect#1105496, salesPlant#1105497, listing#1105498, sourceOfSupplyCategory#1105499], false
(1552) Repartition
Arguments: 37, true
(1553) Project
Arguments: [systemId#1105491, internalUUID#1105492, plant#1105493, product#1105494, blockedForReplenishmentStartingFrom#1105495, productionAspect#1105496, salesPlant#1105497, listing#1105498, sourceOfSupplyCategory#1105499, struct(systemId, systemId#1105491, internalUUID, internalUUID#1105492, plant, plant#1105493, product, product#1105494, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105495, productionAspect, productionAspect#1105496, salesPlant, salesPlant#1105497, listing, listing#1105498, sourceOfSupplyCategory, sourceOfSupplyCategory#1105499) AS productPlant#1105500]
(1554) Project
Arguments: [productPlant#1105500]
(1555) Join
Arguments: LeftOuter, ((product#1105487 <=> productPlant#1105500.product.internalRefUUID) AND (plant#1105488 <=> productPlant#1105500.plant.internalRefUUID))
(1556) Project
Arguments: [product#1105487, plant#1105488, orderDateTime#1105489, productPlant#1105500]
(1557) LogicalRelation
Arguments: parquet, [systemId#1105501, internalUUID#1105502, id#1105503, displayId#1105504, name#1105505, baseUnitOfMeasure#1105506, unitOfMeasures#1105507, unitOfMeasureConversions#1105508, productionAspect#1105509, salesAspect#1105510, procurementAspect#1105511, productGroup#1105512], false
(1558) Repartition
Arguments: 37, true
(1559) Join
Arguments: LeftOuter, (product#1105487 = internalUUID#1105502)
(1560) Project
Arguments: [product#1105487, plant#1105488, orderDateTime#1105489, productPlant#1105500, systemId#1105501, internalUUID#1105502, id#1105503, displayId#1105504, name#1105505, baseUnitOfMeasure#1105506, unitOfMeasures#1105507, unitOfMeasureConversions#1105508, productionAspect#1105509, salesAspect#1105510, procurementAspect#1105511, productGroup#1105512, filter(unitOfMeasureConversions#1105508, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105500.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105500.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105506.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105506.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105513]
(1561) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105513.quantityNumerator), true, [quantityNumerator#1105514]
(1562) Project
Arguments: [product#1105487, plant#1105488, orderDateTime#1105489, productPlant#1105500, systemId#1105501, internalUUID#1105502, id#1105503, displayId#1105504, name#1105505, baseUnitOfMeasure#1105506, unitOfMeasures#1105507, unitOfMeasureConversions#1105508, productionAspect#1105509, salesAspect#1105510, procurementAspect#1105511, productGroup#1105512, filteredUnitOfMeasureConversions#1105513, quantityNumerator#1105514]
(1563) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105513.quantityDenominator), true, [quantityDenominator#1105515]
(1564) Project
Arguments: [product#1105487, plant#1105488, orderDateTime#1105489, productPlant#1105500, systemId#1105501, internalUUID#1105502, id#1105503, displayId#1105504, name#1105505, baseUnitOfMeasure#1105506, unitOfMeasures#1105507, unitOfMeasureConversions#1105508, productionAspect#1105509, salesAspect#1105510, procurementAspect#1105511, productGroup#1105512, filteredUnitOfMeasureConversions#1105513, quantityNumerator#1105514, quantityDenominator#1105515]
(1565) Project
Arguments: [product#1105487, plant#1105488, orderDateTime#1105489, productPlant#1105500, systemId#1105501, internalUUID#1105502, id#1105503, displayId#1105504, name#1105505, baseUnitOfMeasure#1105506, unitOfMeasures#1105507, unitOfMeasureConversions#1105508, productionAspect#1105509, salesAspect#1105510, procurementAspect#1105511, productGroup#1105512, filteredUnitOfMeasureConversions#1105513, quantityNumerator#1105514, quantityDenominator#1105515, (cast(quantityNumerator#1105514 as double) / cast(quantityDenominator#1105515 as double)) AS outboundUnit#1105516]
(1566) Project
Arguments: [product#1105487, plant#1105488, orderDateTime#1105489, productPlant#1105500, systemId#1105501, internalUUID#1105502, id#1105503, displayId#1105504, name#1105505, baseUnitOfMeasure#1105506, unitOfMeasures#1105507, unitOfMeasureConversions#1105508, productionAspect#1105509, salesAspect#1105510, procurementAspect#1105511, productGroup#1105512, filteredUnitOfMeasureConversions#1105513, quantityNumerator#1105514, quantityDenominator#1105515, CASE WHEN (isnull(outboundUnit#1105516) OR (outboundUnit#1105516 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105516 END AS outboundUnit#1105517]
(1567) Project
Arguments: [product#1105487, plant#1105488, orderDateTime#1105489, productPlant#1105500, outboundUnit#1105517]
(1568) Join
Arguments: Inner, ((plantUuid#1105479 = plant#1105488) AND (productUuid#1105481 = product#1105487))
(1569) Filter
Arguments: (calculationDateTime#1105475 <= orderDateTime#1105489)
(1570) Project
Arguments: [plantUuid#1105479 AS plant#1105518, productUuid#1105481 AS product#1105519, storageLocId#1105482, calculationDateTime#1105475, quantity#1105484]
(1571) LogicalRelation
Arguments: parquet, [systemId#1105520, internalUUID#1105521, product#1105522, plant#1105523, calculationDateTime#1105524, stockQuantities#1105525], false
(1572) Repartition
Arguments: 37, true
(1573) LogicalRelation
Arguments: parquet, [marketUnit#1105526, description#1105527, articleHierarchy#1105528, defaultCurrency#1105529, responsibilities#1105530, replenishmentTypes#1105531, distributionCenters#1105532, assignedArticleHierarchyNodes#1105533, minOrderQtySetting#1105534, listingCheck#1105535, odsSelection#1105536, demandProfiles#1105537, constraintProfiles#1105538, optimizationProfiles#1105539, orderGroupSplitProfiles#1105540, supplierMinimumProfiles#1105541, multipleRestrictionProfiles#1105542, preferredUomSource#1105543, handlingOfUnfulfilledDemands#1105544, negligibleQuantitiesThreshold#1105545, eventtype#1105546], false
(1574) Repartition
Arguments: 37, true
(1575) Filter
Arguments: (marketUnit#1105526 <=> AUTO_ALL_ProdLoc)
(1576) Project
Arguments: [marketUnit#1105526, description#1105527, articleHierarchy#1105528, defaultCurrency#1105529, responsibilities#1105530, replenishmentTypes#1105531, distributionCenters#1105532, assignedArticleHierarchyNodes#1105533, minOrderQtySetting#1105534, listingCheck#1105535, odsSelection#1105536, demandProfiles#1105537, constraintProfiles#1105538, optimizationProfiles#1105539, orderGroupSplitProfiles#1105540, supplierMinimumProfiles#1105541, multipleRestrictionProfiles#1105542, preferredUomSource#1105543, handlingOfUnfulfilledDemands#1105544, negligibleQuantitiesThreshold#1105545, eventtype#1105546]
(1577) Project
Arguments: [distributionCenters#1105532]
(1578) Generate
Arguments: explode(distributionCenters#1105532), false, [distributionCenters#1105547]
(1579) Project
Arguments: [distributionCenters#1105547]
(1580) Generate
Arguments: explode(distributionCenters#1105547.storageLocations), false, [storageLocations#1105548]
(1581) Project
Arguments: [distributionCenters#1105547.id AS plantId#1105549, distributionCenters#1105547.internalRefUUID AS plantUuid#1105550, storageLocations#1105548]
(1582) Project
Arguments: [plantId#1105549, plantUuid#1105550, storageLocations#1105548.id AS storageLocId#1105551, storageLocations#1105548.internalRefUUID AS storageLocUuid#1105552]
(1583) LogicalRelation
Arguments: parquet, [product#1105553, plant#1105554, orderDateTime#1105555, planningStartDateTime#1105556], false
(1584) RepartitionByExpression
Arguments: [product#1105553, plant#1105554], 37
(1585) Project
Arguments: [product#1105553, plant#1105554, orderDateTime#1105555]
(1586) LogicalRelation
Arguments: parquet, [systemId#1105557, internalUUID#1105558, plant#1105559, product#1105560, blockedForReplenishmentStartingFrom#1105561, productionAspect#1105562, salesPlant#1105563, listing#1105564, sourceOfSupplyCategory#1105565], false
(1587) Repartition
Arguments: 37, true
(1588) Project
Arguments: [systemId#1105557, internalUUID#1105558, plant#1105559, product#1105560, blockedForReplenishmentStartingFrom#1105561, productionAspect#1105562, salesPlant#1105563, listing#1105564, sourceOfSupplyCategory#1105565, struct(systemId, systemId#1105557, internalUUID, internalUUID#1105558, plant, plant#1105559, product, product#1105560, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105561, productionAspect, productionAspect#1105562, salesPlant, salesPlant#1105563, listing, listing#1105564, sourceOfSupplyCategory, sourceOfSupplyCategory#1105565) AS productPlant#1105566]
(1589) Project
Arguments: [productPlant#1105566]
(1590) Join
Arguments: LeftOuter, ((product#1105553 <=> productPlant#1105566.product.internalRefUUID) AND (plant#1105554 <=> productPlant#1105566.plant.internalRefUUID))
(1591) Project
Arguments: [product#1105553, plant#1105554, orderDateTime#1105555, productPlant#1105566]
(1592) LogicalRelation
Arguments: parquet, [systemId#1105567, internalUUID#1105568, id#1105569, displayId#1105570, name#1105571, baseUnitOfMeasure#1105572, unitOfMeasures#1105573, unitOfMeasureConversions#1105574, productionAspect#1105575, salesAspect#1105576, procurementAspect#1105577, productGroup#1105578], false
(1593) Repartition
Arguments: 37, true
(1594) Join
Arguments: LeftOuter, (product#1105553 = internalUUID#1105568)
(1595) Project
Arguments: [product#1105553, plant#1105554, orderDateTime#1105555, productPlant#1105566, systemId#1105567, internalUUID#1105568, id#1105569, displayId#1105570, name#1105571, baseUnitOfMeasure#1105572, unitOfMeasures#1105573, unitOfMeasureConversions#1105574, productionAspect#1105575, salesAspect#1105576, procurementAspect#1105577, productGroup#1105578, filter(unitOfMeasureConversions#1105574, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105566.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105566.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105572.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105572.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105579]
(1596) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105579.quantityNumerator), true, [quantityNumerator#1105580]
(1597) Project
Arguments: [product#1105553, plant#1105554, orderDateTime#1105555, productPlant#1105566, systemId#1105567, internalUUID#1105568, id#1105569, displayId#1105570, name#1105571, baseUnitOfMeasure#1105572, unitOfMeasures#1105573, unitOfMeasureConversions#1105574, productionAspect#1105575, salesAspect#1105576, procurementAspect#1105577, productGroup#1105578, filteredUnitOfMeasureConversions#1105579, quantityNumerator#1105580]
(1598) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105579.quantityDenominator), true, [quantityDenominator#1105581]
(1599) Project
Arguments: [product#1105553, plant#1105554, orderDateTime#1105555, productPlant#1105566, systemId#1105567, internalUUID#1105568, id#1105569, displayId#1105570, name#1105571, baseUnitOfMeasure#1105572, unitOfMeasures#1105573, unitOfMeasureConversions#1105574, productionAspect#1105575, salesAspect#1105576, procurementAspect#1105577, productGroup#1105578, filteredUnitOfMeasureConversions#1105579, quantityNumerator#1105580, quantityDenominator#1105581]
(1600) Project
Arguments: [product#1105553, plant#1105554, orderDateTime#1105555, productPlant#1105566, systemId#1105567, internalUUID#1105568, id#1105569, displayId#1105570, name#1105571, baseUnitOfMeasure#1105572, unitOfMeasures#1105573, unitOfMeasureConversions#1105574, productionAspect#1105575, salesAspect#1105576, procurementAspect#1105577, productGroup#1105578, filteredUnitOfMeasureConversions#1105579, quantityNumerator#1105580, quantityDenominator#1105581, (cast(quantityNumerator#1105580 as double) / cast(quantityDenominator#1105581 as double)) AS outboundUnit#1105582]
(1601) Project
Arguments: [product#1105553, plant#1105554, orderDateTime#1105555, productPlant#1105566, systemId#1105567, internalUUID#1105568, id#1105569, displayId#1105570, name#1105571, baseUnitOfMeasure#1105572, unitOfMeasures#1105573, unitOfMeasureConversions#1105574, productionAspect#1105575, salesAspect#1105576, procurementAspect#1105577, productGroup#1105578, filteredUnitOfMeasureConversions#1105579, quantityNumerator#1105580, quantityDenominator#1105581, CASE WHEN (isnull(outboundUnit#1105582) OR (outboundUnit#1105582 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105582 END AS outboundUnit#1105583]
(1602) Project
Arguments: [product#1105553, plant#1105554, orderDateTime#1105555, productPlant#1105566, outboundUnit#1105583]
(1603) Project
Arguments: [plant#1105554]
(1604) Deduplicate
Arguments: [plant#1105554]
(1605) Join
Arguments: Inner, (plantUuid#1105550 = plant#1105554)
(1606) Project
Arguments: [plantId#1105549, plantUuid#1105550, storageLocId#1105551, storageLocUuid#1105552]
(1607) Join
Arguments: Inner, (plant#1105523.internalRefUUID <=> plantUuid#1105550)
(1608) Generate
Arguments: explode(filter(stockQuantities#1105525, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1105552) AND (lambda x#1101337.storageLocation.Id = storageLocId#1105551)), lambda x#1101337, false))), false, [stockQuantity#1105584]
(1609) Project
Arguments: [systemId#1105520, internalUUID#1105521, product#1105522, plant#1105523, calculationDateTime#1105524, stockQuantities#1105525, plantId#1105549, plantUuid#1105550, storageLocId#1105551, storageLocUuid#1105552, stockQuantity#1105584]
(1610) Aggregate
Arguments: [plantUuid#1105550, internalUUID#1105521, plant#1105523, product#1105522, systemId#1105520], [plantUuid#1105550, internalUUID#1105521, plant#1105523, product#1105522, systemId#1105520, first(calculationDateTime#1105524, false) AS calculationDateTime#1105585, collect_list(stockQuantity#1105584, 0, 0) AS stockQuantities#1105586]
(1611) Project
Arguments: [systemId#1105520, internalUUID#1105521, product#1105522, plant#1105523, calculationDateTime#1105585, stockQuantities#1105586]
(1612) Generate
Arguments: explode(stockQuantities#1105586), false, [stockQuantity#1105587]
(1613) Project
Arguments: [systemId#1105520, internalUUID#1105521, product#1105522, plant#1105523, calculationDateTime#1105585, stockQuantities#1105586, stockQuantity#1105587]
(1614) Project
Arguments: [plant#1105523.id AS plant#1105588, plant#1105523.internalRefUUID AS plantUuid#1105589, product#1105522.id AS product#1105590, product#1105522.internalRefUUID AS productUuid#1105591, calculationDateTime#1105585, stockQuantity#1105587.storagelocation.id AS storageLocId#1105592, stockQuantity#1105587.storagelocation.internalRefUUID AS storageLocUuid#1105593, stockQuantity#1105587.quantity.measure AS quantity#1105594, stockQuantity#1105587.specialStockIndicator.code AS specialStockIndicator#1105595, stockQuantity#1105587.stockType.code AS stockType#1105596]
(1615) Filter
Arguments: ((specialStockIndicator#1105595 = ) AND (stockType#1105596 = 01))
(1616) LogicalRelation
Arguments: parquet, [product#1105597, plant#1105598, orderDateTime#1105599, planningStartDateTime#1105600], false
(1617) RepartitionByExpression
Arguments: [product#1105597, plant#1105598], 37
(1618) Project
Arguments: [product#1105597, plant#1105598, orderDateTime#1105599]
(1619) LogicalRelation
Arguments: parquet, [systemId#1105601, internalUUID#1105602, plant#1105603, product#1105604, blockedForReplenishmentStartingFrom#1105605, productionAspect#1105606, salesPlant#1105607, listing#1105608, sourceOfSupplyCategory#1105609], false
(1620) Repartition
Arguments: 37, true
(1621) Project
Arguments: [systemId#1105601, internalUUID#1105602, plant#1105603, product#1105604, blockedForReplenishmentStartingFrom#1105605, productionAspect#1105606, salesPlant#1105607, listing#1105608, sourceOfSupplyCategory#1105609, struct(systemId, systemId#1105601, internalUUID, internalUUID#1105602, plant, plant#1105603, product, product#1105604, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105605, productionAspect, productionAspect#1105606, salesPlant, salesPlant#1105607, listing, listing#1105608, sourceOfSupplyCategory, sourceOfSupplyCategory#1105609) AS productPlant#1105610]
(1622) Project
Arguments: [productPlant#1105610]
(1623) Join
Arguments: LeftOuter, ((product#1105597 <=> productPlant#1105610.product.internalRefUUID) AND (plant#1105598 <=> productPlant#1105610.plant.internalRefUUID))
(1624) Project
Arguments: [product#1105597, plant#1105598, orderDateTime#1105599, productPlant#1105610]
(1625) LogicalRelation
Arguments: parquet, [systemId#1105611, internalUUID#1105612, id#1105613, displayId#1105614, name#1105615, baseUnitOfMeasure#1105616, unitOfMeasures#1105617, unitOfMeasureConversions#1105618, productionAspect#1105619, salesAspect#1105620, procurementAspect#1105621, productGroup#1105622], false
(1626) Repartition
Arguments: 37, true
(1627) Join
Arguments: LeftOuter, (product#1105597 = internalUUID#1105612)
(1628) Project
Arguments: [product#1105597, plant#1105598, orderDateTime#1105599, productPlant#1105610, systemId#1105611, internalUUID#1105612, id#1105613, displayId#1105614, name#1105615, baseUnitOfMeasure#1105616, unitOfMeasures#1105617, unitOfMeasureConversions#1105618, productionAspect#1105619, salesAspect#1105620, procurementAspect#1105621, productGroup#1105622, filter(unitOfMeasureConversions#1105618, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105610.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105610.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105616.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105616.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105623]
(1629) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105623.quantityNumerator), true, [quantityNumerator#1105624]
(1630) Project
Arguments: [product#1105597, plant#1105598, orderDateTime#1105599, productPlant#1105610, systemId#1105611, internalUUID#1105612, id#1105613, displayId#1105614, name#1105615, baseUnitOfMeasure#1105616, unitOfMeasures#1105617, unitOfMeasureConversions#1105618, productionAspect#1105619, salesAspect#1105620, procurementAspect#1105621, productGroup#1105622, filteredUnitOfMeasureConversions#1105623, quantityNumerator#1105624]
(1631) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105623.quantityDenominator), true, [quantityDenominator#1105625]
(1632) Project
Arguments: [product#1105597, plant#1105598, orderDateTime#1105599, productPlant#1105610, systemId#1105611, internalUUID#1105612, id#1105613, displayId#1105614, name#1105615, baseUnitOfMeasure#1105616, unitOfMeasures#1105617, unitOfMeasureConversions#1105618, productionAspect#1105619, salesAspect#1105620, procurementAspect#1105621, productGroup#1105622, filteredUnitOfMeasureConversions#1105623, quantityNumerator#1105624, quantityDenominator#1105625]
(1633) Project
Arguments: [product#1105597, plant#1105598, orderDateTime#1105599, productPlant#1105610, systemId#1105611, internalUUID#1105612, id#1105613, displayId#1105614, name#1105615, baseUnitOfMeasure#1105616, unitOfMeasures#1105617, unitOfMeasureConversions#1105618, productionAspect#1105619, salesAspect#1105620, procurementAspect#1105621, productGroup#1105622, filteredUnitOfMeasureConversions#1105623, quantityNumerator#1105624, quantityDenominator#1105625, (cast(quantityNumerator#1105624 as double) / cast(quantityDenominator#1105625 as double)) AS outboundUnit#1105626]
(1634) Project
Arguments: [product#1105597, plant#1105598, orderDateTime#1105599, productPlant#1105610, systemId#1105611, internalUUID#1105612, id#1105613, displayId#1105614, name#1105615, baseUnitOfMeasure#1105616, unitOfMeasures#1105617, unitOfMeasureConversions#1105618, productionAspect#1105619, salesAspect#1105620, procurementAspect#1105621, productGroup#1105622, filteredUnitOfMeasureConversions#1105623, quantityNumerator#1105624, quantityDenominator#1105625, CASE WHEN (isnull(outboundUnit#1105626) OR (outboundUnit#1105626 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105626 END AS outboundUnit#1105627]
(1635) Project
Arguments: [product#1105597, plant#1105598, orderDateTime#1105599, productPlant#1105610, outboundUnit#1105627]
(1636) Join
Arguments: Inner, ((plantUuid#1105589 = plant#1105598) AND (productUuid#1105591 = product#1105597))
(1637) Filter
Arguments: (calculationDateTime#1105585 <= orderDateTime#1105599)
(1638) Project
Arguments: [plantUuid#1105589 AS plant#1105628, productUuid#1105591 AS product#1105629, storageLocId#1105592, calculationDateTime#1105585, quantity#1105594]
(1639) Aggregate
Arguments: [plant#1105628, product#1105629, storageLocId#1105592], [plant#1105628, product#1105629, storageLocId#1105592, max(calculationDateTime#1105585) AS max_calc_datetime#1105630]
(1640) Join
Arguments: Inner, ((((plant#1105518 <=> plant#1105628) AND (product#1105519 <=> product#1105629)) AND (storageLocId#1105482 <=> storageLocId#1105592)) AND (calculationDateTime#1105475 <=> max_calc_datetime#1105630))
(1641) Project
Arguments: [plant#1105518, product#1105519, storageLocId#1105482, calculationDateTime#1105475, quantity#1105484]
(1642) Aggregate
Arguments: [product#1105519, plant#1105518], [product#1105519, plant#1105518, sum(quantity#1105484) AS quantitySum#1105631, min(calculationDateTime#1105475) AS minCalculationDateTime#1105632]
(1643) Project
Arguments: [product#1105519, plant#1105518, quantitySum#1105631, minCalculationDateTime#1105632, round(quantitySum#1105631, 0) AS roundedQuantitySum#1105633]
(1644) Join
Arguments: LeftOuter, ((plant#1105380 = plant#1105518) AND (product#1105379 = product#1105519))
(1645) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, outboundUnit#1105409, roundedQuantitySum#1105633, minCalculationDateTime#1105632]
(1646) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, outboundUnit#1105409, roundedQuantitySum#1105633, minCalculationDateTime#1105632, CASE WHEN isnotnull(minCalculationDateTime#1105632) THEN minCalculationDateTime#1105632 ELSE orderDateTime#1105381 END AS stockDatetime#1105634]
(1647) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, outboundUnit#1105409, roundedQuantitySum#1105633, minCalculationDateTime#1105632, stockDatetime#1105634, CASE WHEN isnotnull(roundedQuantitySum#1105633) THEN array(roundedQuantitySum#1105633) ELSE array(0.0) END AS stockBatchQuantities#1105635]
(1648) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, outboundUnit#1105409, roundedQuantitySum#1105633, minCalculationDateTime#1105632, stockDatetime#1105634, stockBatchQuantities#1105635, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1105636]
(1649) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, outboundUnit#1105409, roundedQuantitySum#1105633, stockDatetime#1105634, stockBatchQuantities#1105635, stockBatchShelfLifeEndDatetimes#1105636]
(1650) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, outboundUnit#1105409, stockDatetime#1105634, stockBatchQuantities#1105635, stockBatchShelfLifeEndDatetimes#1105636]
(1651) LogicalRelation
Arguments: parquet, [product#1105637, plant#1105638, orderDateTime#1105639, planningStartDateTime#1105640], false
(1652) RepartitionByExpression
Arguments: [product#1105637, plant#1105638], 37
(1653) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639]
(1654) LogicalRelation
Arguments: parquet, [systemId#1105641, internalUUID#1105642, plant#1105643, product#1105644, blockedForReplenishmentStartingFrom#1105645, productionAspect#1105646, salesPlant#1105647, listing#1105648, sourceOfSupplyCategory#1105649], false
(1655) Repartition
Arguments: 37, true
(1656) Project
Arguments: [systemId#1105641, internalUUID#1105642, plant#1105643, product#1105644, blockedForReplenishmentStartingFrom#1105645, productionAspect#1105646, salesPlant#1105647, listing#1105648, sourceOfSupplyCategory#1105649, struct(systemId, systemId#1105641, internalUUID, internalUUID#1105642, plant, plant#1105643, product, product#1105644, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105645, productionAspect, productionAspect#1105646, salesPlant, salesPlant#1105647, listing, listing#1105648, sourceOfSupplyCategory, sourceOfSupplyCategory#1105649) AS productPlant#1105650]
(1657) Project
Arguments: [productPlant#1105650]
(1658) Join
Arguments: LeftOuter, ((product#1105637 <=> productPlant#1105650.product.internalRefUUID) AND (plant#1105638 <=> productPlant#1105650.plant.internalRefUUID))
(1659) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650]
(1660) LogicalRelation
Arguments: parquet, [systemId#1105651, internalUUID#1105652, id#1105653, displayId#1105654, name#1105655, baseUnitOfMeasure#1105656, unitOfMeasures#1105657, unitOfMeasureConversions#1105658, productionAspect#1105659, salesAspect#1105660, procurementAspect#1105661, productGroup#1105662], false
(1661) Repartition
Arguments: 37, true
(1662) Join
Arguments: LeftOuter, (product#1105637 = internalUUID#1105652)
(1663) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, systemId#1105651, internalUUID#1105652, id#1105653, displayId#1105654, name#1105655, baseUnitOfMeasure#1105656, unitOfMeasures#1105657, unitOfMeasureConversions#1105658, productionAspect#1105659, salesAspect#1105660, procurementAspect#1105661, productGroup#1105662, filter(unitOfMeasureConversions#1105658, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105650.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105650.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105656.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105656.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105663]
(1664) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105663.quantityNumerator), true, [quantityNumerator#1105664]
(1665) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, systemId#1105651, internalUUID#1105652, id#1105653, displayId#1105654, name#1105655, baseUnitOfMeasure#1105656, unitOfMeasures#1105657, unitOfMeasureConversions#1105658, productionAspect#1105659, salesAspect#1105660, procurementAspect#1105661, productGroup#1105662, filteredUnitOfMeasureConversions#1105663, quantityNumerator#1105664]
(1666) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105663.quantityDenominator), true, [quantityDenominator#1105665]
(1667) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, systemId#1105651, internalUUID#1105652, id#1105653, displayId#1105654, name#1105655, baseUnitOfMeasure#1105656, unitOfMeasures#1105657, unitOfMeasureConversions#1105658, productionAspect#1105659, salesAspect#1105660, procurementAspect#1105661, productGroup#1105662, filteredUnitOfMeasureConversions#1105663, quantityNumerator#1105664, quantityDenominator#1105665]
(1668) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, systemId#1105651, internalUUID#1105652, id#1105653, displayId#1105654, name#1105655, baseUnitOfMeasure#1105656, unitOfMeasures#1105657, unitOfMeasureConversions#1105658, productionAspect#1105659, salesAspect#1105660, procurementAspect#1105661, productGroup#1105662, filteredUnitOfMeasureConversions#1105663, quantityNumerator#1105664, quantityDenominator#1105665, (cast(quantityNumerator#1105664 as double) / cast(quantityDenominator#1105665 as double)) AS outboundUnit#1105666]
(1669) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, systemId#1105651, internalUUID#1105652, id#1105653, displayId#1105654, name#1105655, baseUnitOfMeasure#1105656, unitOfMeasures#1105657, unitOfMeasureConversions#1105658, productionAspect#1105659, salesAspect#1105660, procurementAspect#1105661, productGroup#1105662, filteredUnitOfMeasureConversions#1105663, quantityNumerator#1105664, quantityDenominator#1105665, CASE WHEN (isnull(outboundUnit#1105666) OR (outboundUnit#1105666 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105666 END AS outboundUnit#1105667]
(1670) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, outboundUnit#1105667]
(1671) LogicalRelation
Arguments: parquet, [systemId#1105668, internalUUID#1105669, product#1105670, plant#1105671, calculationDateTime#1105672, stockQuantities#1105673], false
(1672) Repartition
Arguments: 37, true
(1673) LogicalRelation
Arguments: parquet, [marketUnit#1105674, description#1105675, articleHierarchy#1105676, defaultCurrency#1105677, responsibilities#1105678, replenishmentTypes#1105679, distributionCenters#1105680, assignedArticleHierarchyNodes#1105681, minOrderQtySetting#1105682, listingCheck#1105683, odsSelection#1105684, demandProfiles#1105685, constraintProfiles#1105686, optimizationProfiles#1105687, orderGroupSplitProfiles#1105688, supplierMinimumProfiles#1105689, multipleRestrictionProfiles#1105690, preferredUomSource#1105691, handlingOfUnfulfilledDemands#1105692, negligibleQuantitiesThreshold#1105693, eventtype#1105694], false
(1674) Repartition
Arguments: 37, true
(1675) Filter
Arguments: (marketUnit#1105674 <=> AUTO_ALL_ProdLoc)
(1676) Project
Arguments: [marketUnit#1105674, description#1105675, articleHierarchy#1105676, defaultCurrency#1105677, responsibilities#1105678, replenishmentTypes#1105679, distributionCenters#1105680, assignedArticleHierarchyNodes#1105681, minOrderQtySetting#1105682, listingCheck#1105683, odsSelection#1105684, demandProfiles#1105685, constraintProfiles#1105686, optimizationProfiles#1105687, orderGroupSplitProfiles#1105688, supplierMinimumProfiles#1105689, multipleRestrictionProfiles#1105690, preferredUomSource#1105691, handlingOfUnfulfilledDemands#1105692, negligibleQuantitiesThreshold#1105693, eventtype#1105694]
(1677) Project
Arguments: [distributionCenters#1105680]
(1678) Generate
Arguments: explode(distributionCenters#1105680), false, [distributionCenters#1105695]
(1679) Project
Arguments: [distributionCenters#1105695]
(1680) Generate
Arguments: explode(distributionCenters#1105695.storageLocations), false, [storageLocations#1105696]
(1681) Project
Arguments: [distributionCenters#1105695.id AS plantId#1105697, distributionCenters#1105695.internalRefUUID AS plantUuid#1105698, storageLocations#1105696]
(1682) Project
Arguments: [plantId#1105697, plantUuid#1105698, storageLocations#1105696.id AS storageLocId#1105699, storageLocations#1105696.internalRefUUID AS storageLocUuid#1105700]
(1683) LogicalRelation
Arguments: parquet, [product#1105701, plant#1105702, orderDateTime#1105703, planningStartDateTime#1105704], false
(1684) RepartitionByExpression
Arguments: [product#1105701, plant#1105702], 37
(1685) Project
Arguments: [product#1105701, plant#1105702, orderDateTime#1105703]
(1686) LogicalRelation
Arguments: parquet, [systemId#1105705, internalUUID#1105706, plant#1105707, product#1105708, blockedForReplenishmentStartingFrom#1105709, productionAspect#1105710, salesPlant#1105711, listing#1105712, sourceOfSupplyCategory#1105713], false
(1687) Repartition
Arguments: 37, true
(1688) Project
Arguments: [systemId#1105705, internalUUID#1105706, plant#1105707, product#1105708, blockedForReplenishmentStartingFrom#1105709, productionAspect#1105710, salesPlant#1105711, listing#1105712, sourceOfSupplyCategory#1105713, struct(systemId, systemId#1105705, internalUUID, internalUUID#1105706, plant, plant#1105707, product, product#1105708, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105709, productionAspect, productionAspect#1105710, salesPlant, salesPlant#1105711, listing, listing#1105712, sourceOfSupplyCategory, sourceOfSupplyCategory#1105713) AS productPlant#1105714]
(1689) Project
Arguments: [productPlant#1105714]
(1690) Join
Arguments: LeftOuter, ((product#1105701 <=> productPlant#1105714.product.internalRefUUID) AND (plant#1105702 <=> productPlant#1105714.plant.internalRefUUID))
(1691) Project
Arguments: [product#1105701, plant#1105702, orderDateTime#1105703, productPlant#1105714]
(1692) LogicalRelation
Arguments: parquet, [systemId#1105715, internalUUID#1105716, id#1105717, displayId#1105718, name#1105719, baseUnitOfMeasure#1105720, unitOfMeasures#1105721, unitOfMeasureConversions#1105722, productionAspect#1105723, salesAspect#1105724, procurementAspect#1105725, productGroup#1105726], false
(1693) Repartition
Arguments: 37, true
(1694) Join
Arguments: LeftOuter, (product#1105701 = internalUUID#1105716)
(1695) Project
Arguments: [product#1105701, plant#1105702, orderDateTime#1105703, productPlant#1105714, systemId#1105715, internalUUID#1105716, id#1105717, displayId#1105718, name#1105719, baseUnitOfMeasure#1105720, unitOfMeasures#1105721, unitOfMeasureConversions#1105722, productionAspect#1105723, salesAspect#1105724, procurementAspect#1105725, productGroup#1105726, filter(unitOfMeasureConversions#1105722, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105714.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105714.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105720.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105720.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105727]
(1696) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105727.quantityNumerator), true, [quantityNumerator#1105728]
(1697) Project
Arguments: [product#1105701, plant#1105702, orderDateTime#1105703, productPlant#1105714, systemId#1105715, internalUUID#1105716, id#1105717, displayId#1105718, name#1105719, baseUnitOfMeasure#1105720, unitOfMeasures#1105721, unitOfMeasureConversions#1105722, productionAspect#1105723, salesAspect#1105724, procurementAspect#1105725, productGroup#1105726, filteredUnitOfMeasureConversions#1105727, quantityNumerator#1105728]
(1698) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105727.quantityDenominator), true, [quantityDenominator#1105729]
(1699) Project
Arguments: [product#1105701, plant#1105702, orderDateTime#1105703, productPlant#1105714, systemId#1105715, internalUUID#1105716, id#1105717, displayId#1105718, name#1105719, baseUnitOfMeasure#1105720, unitOfMeasures#1105721, unitOfMeasureConversions#1105722, productionAspect#1105723, salesAspect#1105724, procurementAspect#1105725, productGroup#1105726, filteredUnitOfMeasureConversions#1105727, quantityNumerator#1105728, quantityDenominator#1105729]
(1700) Project
Arguments: [product#1105701, plant#1105702, orderDateTime#1105703, productPlant#1105714, systemId#1105715, internalUUID#1105716, id#1105717, displayId#1105718, name#1105719, baseUnitOfMeasure#1105720, unitOfMeasures#1105721, unitOfMeasureConversions#1105722, productionAspect#1105723, salesAspect#1105724, procurementAspect#1105725, productGroup#1105726, filteredUnitOfMeasureConversions#1105727, quantityNumerator#1105728, quantityDenominator#1105729, (cast(quantityNumerator#1105728 as double) / cast(quantityDenominator#1105729 as double)) AS outboundUnit#1105730]
(1701) Project
Arguments: [product#1105701, plant#1105702, orderDateTime#1105703, productPlant#1105714, systemId#1105715, internalUUID#1105716, id#1105717, displayId#1105718, name#1105719, baseUnitOfMeasure#1105720, unitOfMeasures#1105721, unitOfMeasureConversions#1105722, productionAspect#1105723, salesAspect#1105724, procurementAspect#1105725, productGroup#1105726, filteredUnitOfMeasureConversions#1105727, quantityNumerator#1105728, quantityDenominator#1105729, CASE WHEN (isnull(outboundUnit#1105730) OR (outboundUnit#1105730 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105730 END AS outboundUnit#1105731]
(1702) Project
Arguments: [product#1105701, plant#1105702, orderDateTime#1105703, productPlant#1105714, outboundUnit#1105731]
(1703) Project
Arguments: [plant#1105702]
(1704) Deduplicate
Arguments: [plant#1105702]
(1705) Join
Arguments: Inner, (plantUuid#1105698 = plant#1105702)
(1706) Project
Arguments: [plantId#1105697, plantUuid#1105698, storageLocId#1105699, storageLocUuid#1105700]
(1707) Join
Arguments: Inner, (plant#1105671.internalRefUUID <=> plantUuid#1105698)
(1708) Generate
Arguments: explode(filter(stockQuantities#1105673, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1105700) AND (lambda x#1101337.storageLocation.Id = storageLocId#1105699)), lambda x#1101337, false))), false, [stockQuantity#1105732]
(1709) Project
Arguments: [systemId#1105668, internalUUID#1105669, product#1105670, plant#1105671, calculationDateTime#1105672, stockQuantities#1105673, plantId#1105697, plantUuid#1105698, storageLocId#1105699, storageLocUuid#1105700, stockQuantity#1105732]
(1710) Aggregate
Arguments: [plantUuid#1105698, internalUUID#1105669, plant#1105671, product#1105670, systemId#1105668], [plantUuid#1105698, internalUUID#1105669, plant#1105671, product#1105670, systemId#1105668, first(calculationDateTime#1105672, false) AS calculationDateTime#1105733, collect_list(stockQuantity#1105732, 0, 0) AS stockQuantities#1105734]
(1711) Project
Arguments: [systemId#1105668, internalUUID#1105669, product#1105670, plant#1105671, calculationDateTime#1105733, stockQuantities#1105734]
(1712) Generate
Arguments: explode(stockQuantities#1105734), false, [stockQuantity#1105735]
(1713) Project
Arguments: [systemId#1105668, internalUUID#1105669, product#1105670, plant#1105671, calculationDateTime#1105733, stockQuantities#1105734, stockQuantity#1105735]
(1714) Project
Arguments: [plant#1105671.id AS plant#1105736, plant#1105671.internalRefUUID AS plantUuid#1105737, product#1105670.id AS product#1105738, product#1105670.internalRefUUID AS productUuid#1105739, calculationDateTime#1105733, stockQuantity#1105735.storagelocation.id AS storageLocId#1105740, stockQuantity#1105735.storagelocation.internalRefUUID AS storageLocUuid#1105741, stockQuantity#1105735.quantity.measure AS quantity#1105742, stockQuantity#1105735.specialStockIndicator.code AS specialStockIndicator#1105743, stockQuantity#1105735.stockType.code AS stockType#1105744]
(1715) Filter
Arguments: ((specialStockIndicator#1105743 = ) AND (stockType#1105744 = 01))
(1716) LogicalRelation
Arguments: parquet, [product#1105745, plant#1105746, orderDateTime#1105747, planningStartDateTime#1105748], false
(1717) RepartitionByExpression
Arguments: [product#1105745, plant#1105746], 37
(1718) Project
Arguments: [product#1105745, plant#1105746, orderDateTime#1105747]
(1719) LogicalRelation
Arguments: parquet, [systemId#1105749, internalUUID#1105750, plant#1105751, product#1105752, blockedForReplenishmentStartingFrom#1105753, productionAspect#1105754, salesPlant#1105755, listing#1105756, sourceOfSupplyCategory#1105757], false
(1720) Repartition
Arguments: 37, true
(1721) Project
Arguments: [systemId#1105749, internalUUID#1105750, plant#1105751, product#1105752, blockedForReplenishmentStartingFrom#1105753, productionAspect#1105754, salesPlant#1105755, listing#1105756, sourceOfSupplyCategory#1105757, struct(systemId, systemId#1105749, internalUUID, internalUUID#1105750, plant, plant#1105751, product, product#1105752, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105753, productionAspect, productionAspect#1105754, salesPlant, salesPlant#1105755, listing, listing#1105756, sourceOfSupplyCategory, sourceOfSupplyCategory#1105757) AS productPlant#1105758]
(1722) Project
Arguments: [productPlant#1105758]
(1723) Join
Arguments: LeftOuter, ((product#1105745 <=> productPlant#1105758.product.internalRefUUID) AND (plant#1105746 <=> productPlant#1105758.plant.internalRefUUID))
(1724) Project
Arguments: [product#1105745, plant#1105746, orderDateTime#1105747, productPlant#1105758]
(1725) LogicalRelation
Arguments: parquet, [systemId#1105759, internalUUID#1105760, id#1105761, displayId#1105762, name#1105763, baseUnitOfMeasure#1105764, unitOfMeasures#1105765, unitOfMeasureConversions#1105766, productionAspect#1105767, salesAspect#1105768, procurementAspect#1105769, productGroup#1105770], false
(1726) Repartition
Arguments: 37, true
(1727) Join
Arguments: LeftOuter, (product#1105745 = internalUUID#1105760)
(1728) Project
Arguments: [product#1105745, plant#1105746, orderDateTime#1105747, productPlant#1105758, systemId#1105759, internalUUID#1105760, id#1105761, displayId#1105762, name#1105763, baseUnitOfMeasure#1105764, unitOfMeasures#1105765, unitOfMeasureConversions#1105766, productionAspect#1105767, salesAspect#1105768, procurementAspect#1105769, productGroup#1105770, filter(unitOfMeasureConversions#1105766, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105758.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105758.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105764.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105764.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105771]
(1729) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105771.quantityNumerator), true, [quantityNumerator#1105772]
(1730) Project
Arguments: [product#1105745, plant#1105746, orderDateTime#1105747, productPlant#1105758, systemId#1105759, internalUUID#1105760, id#1105761, displayId#1105762, name#1105763, baseUnitOfMeasure#1105764, unitOfMeasures#1105765, unitOfMeasureConversions#1105766, productionAspect#1105767, salesAspect#1105768, procurementAspect#1105769, productGroup#1105770, filteredUnitOfMeasureConversions#1105771, quantityNumerator#1105772]
(1731) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105771.quantityDenominator), true, [quantityDenominator#1105773]
(1732) Project
Arguments: [product#1105745, plant#1105746, orderDateTime#1105747, productPlant#1105758, systemId#1105759, internalUUID#1105760, id#1105761, displayId#1105762, name#1105763, baseUnitOfMeasure#1105764, unitOfMeasures#1105765, unitOfMeasureConversions#1105766, productionAspect#1105767, salesAspect#1105768, procurementAspect#1105769, productGroup#1105770, filteredUnitOfMeasureConversions#1105771, quantityNumerator#1105772, quantityDenominator#1105773]
(1733) Project
Arguments: [product#1105745, plant#1105746, orderDateTime#1105747, productPlant#1105758, systemId#1105759, internalUUID#1105760, id#1105761, displayId#1105762, name#1105763, baseUnitOfMeasure#1105764, unitOfMeasures#1105765, unitOfMeasureConversions#1105766, productionAspect#1105767, salesAspect#1105768, procurementAspect#1105769, productGroup#1105770, filteredUnitOfMeasureConversions#1105771, quantityNumerator#1105772, quantityDenominator#1105773, (cast(quantityNumerator#1105772 as double) / cast(quantityDenominator#1105773 as double)) AS outboundUnit#1105774]
(1734) Project
Arguments: [product#1105745, plant#1105746, orderDateTime#1105747, productPlant#1105758, systemId#1105759, internalUUID#1105760, id#1105761, displayId#1105762, name#1105763, baseUnitOfMeasure#1105764, unitOfMeasures#1105765, unitOfMeasureConversions#1105766, productionAspect#1105767, salesAspect#1105768, procurementAspect#1105769, productGroup#1105770, filteredUnitOfMeasureConversions#1105771, quantityNumerator#1105772, quantityDenominator#1105773, CASE WHEN (isnull(outboundUnit#1105774) OR (outboundUnit#1105774 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105774 END AS outboundUnit#1105775]
(1735) Project
Arguments: [product#1105745, plant#1105746, orderDateTime#1105747, productPlant#1105758, outboundUnit#1105775]
(1736) Join
Arguments: Inner, ((plantUuid#1105737 = plant#1105746) AND (productUuid#1105739 = product#1105745))
(1737) Filter
Arguments: (calculationDateTime#1105733 <= orderDateTime#1105747)
(1738) Project
Arguments: [plantUuid#1105737 AS plant#1105776, productUuid#1105739 AS product#1105777, storageLocId#1105740, calculationDateTime#1105733, quantity#1105742]
(1739) LogicalRelation
Arguments: parquet, [systemId#1105778, internalUUID#1105779, product#1105780, plant#1105781, calculationDateTime#1105782, stockQuantities#1105783], false
(1740) Repartition
Arguments: 37, true
(1741) LogicalRelation
Arguments: parquet, [marketUnit#1105784, description#1105785, articleHierarchy#1105786, defaultCurrency#1105787, responsibilities#1105788, replenishmentTypes#1105789, distributionCenters#1105790, assignedArticleHierarchyNodes#1105791, minOrderQtySetting#1105792, listingCheck#1105793, odsSelection#1105794, demandProfiles#1105795, constraintProfiles#1105796, optimizationProfiles#1105797, orderGroupSplitProfiles#1105798, supplierMinimumProfiles#1105799, multipleRestrictionProfiles#1105800, preferredUomSource#1105801, handlingOfUnfulfilledDemands#1105802, negligibleQuantitiesThreshold#1105803, eventtype#1105804], false
(1742) Repartition
Arguments: 37, true
(1743) Filter
Arguments: (marketUnit#1105784 <=> AUTO_ALL_ProdLoc)
(1744) Project
Arguments: [marketUnit#1105784, description#1105785, articleHierarchy#1105786, defaultCurrency#1105787, responsibilities#1105788, replenishmentTypes#1105789, distributionCenters#1105790, assignedArticleHierarchyNodes#1105791, minOrderQtySetting#1105792, listingCheck#1105793, odsSelection#1105794, demandProfiles#1105795, constraintProfiles#1105796, optimizationProfiles#1105797, orderGroupSplitProfiles#1105798, supplierMinimumProfiles#1105799, multipleRestrictionProfiles#1105800, preferredUomSource#1105801, handlingOfUnfulfilledDemands#1105802, negligibleQuantitiesThreshold#1105803, eventtype#1105804]
(1745) Project
Arguments: [distributionCenters#1105790]
(1746) Generate
Arguments: explode(distributionCenters#1105790), false, [distributionCenters#1105805]
(1747) Project
Arguments: [distributionCenters#1105805]
(1748) Generate
Arguments: explode(distributionCenters#1105805.storageLocations), false, [storageLocations#1105806]
(1749) Project
Arguments: [distributionCenters#1105805.id AS plantId#1105807, distributionCenters#1105805.internalRefUUID AS plantUuid#1105808, storageLocations#1105806]
(1750) Project
Arguments: [plantId#1105807, plantUuid#1105808, storageLocations#1105806.id AS storageLocId#1105809, storageLocations#1105806.internalRefUUID AS storageLocUuid#1105810]
(1751) LogicalRelation
Arguments: parquet, [product#1105811, plant#1105812, orderDateTime#1105813, planningStartDateTime#1105814], false
(1752) RepartitionByExpression
Arguments: [product#1105811, plant#1105812], 37
(1753) Project
Arguments: [product#1105811, plant#1105812, orderDateTime#1105813]
(1754) LogicalRelation
Arguments: parquet, [systemId#1105815, internalUUID#1105816, plant#1105817, product#1105818, blockedForReplenishmentStartingFrom#1105819, productionAspect#1105820, salesPlant#1105821, listing#1105822, sourceOfSupplyCategory#1105823], false
(1755) Repartition
Arguments: 37, true
(1756) Project
Arguments: [systemId#1105815, internalUUID#1105816, plant#1105817, product#1105818, blockedForReplenishmentStartingFrom#1105819, productionAspect#1105820, salesPlant#1105821, listing#1105822, sourceOfSupplyCategory#1105823, struct(systemId, systemId#1105815, internalUUID, internalUUID#1105816, plant, plant#1105817, product, product#1105818, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105819, productionAspect, productionAspect#1105820, salesPlant, salesPlant#1105821, listing, listing#1105822, sourceOfSupplyCategory, sourceOfSupplyCategory#1105823) AS productPlant#1105824]
(1757) Project
Arguments: [productPlant#1105824]
(1758) Join
Arguments: LeftOuter, ((product#1105811 <=> productPlant#1105824.product.internalRefUUID) AND (plant#1105812 <=> productPlant#1105824.plant.internalRefUUID))
(1759) Project
Arguments: [product#1105811, plant#1105812, orderDateTime#1105813, productPlant#1105824]
(1760) LogicalRelation
Arguments: parquet, [systemId#1105825, internalUUID#1105826, id#1105827, displayId#1105828, name#1105829, baseUnitOfMeasure#1105830, unitOfMeasures#1105831, unitOfMeasureConversions#1105832, productionAspect#1105833, salesAspect#1105834, procurementAspect#1105835, productGroup#1105836], false
(1761) Repartition
Arguments: 37, true
(1762) Join
Arguments: LeftOuter, (product#1105811 = internalUUID#1105826)
(1763) Project
Arguments: [product#1105811, plant#1105812, orderDateTime#1105813, productPlant#1105824, systemId#1105825, internalUUID#1105826, id#1105827, displayId#1105828, name#1105829, baseUnitOfMeasure#1105830, unitOfMeasures#1105831, unitOfMeasureConversions#1105832, productionAspect#1105833, salesAspect#1105834, procurementAspect#1105835, productGroup#1105836, filter(unitOfMeasureConversions#1105832, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105824.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105824.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105830.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105830.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105837]
(1764) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105837.quantityNumerator), true, [quantityNumerator#1105838]
(1765) Project
Arguments: [product#1105811, plant#1105812, orderDateTime#1105813, productPlant#1105824, systemId#1105825, internalUUID#1105826, id#1105827, displayId#1105828, name#1105829, baseUnitOfMeasure#1105830, unitOfMeasures#1105831, unitOfMeasureConversions#1105832, productionAspect#1105833, salesAspect#1105834, procurementAspect#1105835, productGroup#1105836, filteredUnitOfMeasureConversions#1105837, quantityNumerator#1105838]
(1766) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105837.quantityDenominator), true, [quantityDenominator#1105839]
(1767) Project
Arguments: [product#1105811, plant#1105812, orderDateTime#1105813, productPlant#1105824, systemId#1105825, internalUUID#1105826, id#1105827, displayId#1105828, name#1105829, baseUnitOfMeasure#1105830, unitOfMeasures#1105831, unitOfMeasureConversions#1105832, productionAspect#1105833, salesAspect#1105834, procurementAspect#1105835, productGroup#1105836, filteredUnitOfMeasureConversions#1105837, quantityNumerator#1105838, quantityDenominator#1105839]
(1768) Project
Arguments: [product#1105811, plant#1105812, orderDateTime#1105813, productPlant#1105824, systemId#1105825, internalUUID#1105826, id#1105827, displayId#1105828, name#1105829, baseUnitOfMeasure#1105830, unitOfMeasures#1105831, unitOfMeasureConversions#1105832, productionAspect#1105833, salesAspect#1105834, procurementAspect#1105835, productGroup#1105836, filteredUnitOfMeasureConversions#1105837, quantityNumerator#1105838, quantityDenominator#1105839, (cast(quantityNumerator#1105838 as double) / cast(quantityDenominator#1105839 as double)) AS outboundUnit#1105840]
(1769) Project
Arguments: [product#1105811, plant#1105812, orderDateTime#1105813, productPlant#1105824, systemId#1105825, internalUUID#1105826, id#1105827, displayId#1105828, name#1105829, baseUnitOfMeasure#1105830, unitOfMeasures#1105831, unitOfMeasureConversions#1105832, productionAspect#1105833, salesAspect#1105834, procurementAspect#1105835, productGroup#1105836, filteredUnitOfMeasureConversions#1105837, quantityNumerator#1105838, quantityDenominator#1105839, CASE WHEN (isnull(outboundUnit#1105840) OR (outboundUnit#1105840 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105840 END AS outboundUnit#1105841]
(1770) Project
Arguments: [product#1105811, plant#1105812, orderDateTime#1105813, productPlant#1105824, outboundUnit#1105841]
(1771) Project
Arguments: [plant#1105812]
(1772) Deduplicate
Arguments: [plant#1105812]
(1773) Join
Arguments: Inner, (plantUuid#1105808 = plant#1105812)
(1774) Project
Arguments: [plantId#1105807, plantUuid#1105808, storageLocId#1105809, storageLocUuid#1105810]
(1775) Join
Arguments: Inner, (plant#1105781.internalRefUUID <=> plantUuid#1105808)
(1776) Generate
Arguments: explode(filter(stockQuantities#1105783, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1105810) AND (lambda x#1101337.storageLocation.Id = storageLocId#1105809)), lambda x#1101337, false))), false, [stockQuantity#1105842]
(1777) Project
Arguments: [systemId#1105778, internalUUID#1105779, product#1105780, plant#1105781, calculationDateTime#1105782, stockQuantities#1105783, plantId#1105807, plantUuid#1105808, storageLocId#1105809, storageLocUuid#1105810, stockQuantity#1105842]
(1778) Aggregate
Arguments: [plantUuid#1105808, internalUUID#1105779, plant#1105781, product#1105780, systemId#1105778], [plantUuid#1105808, internalUUID#1105779, plant#1105781, product#1105780, systemId#1105778, first(calculationDateTime#1105782, false) AS calculationDateTime#1105843, collect_list(stockQuantity#1105842, 0, 0) AS stockQuantities#1105844]
(1779) Project
Arguments: [systemId#1105778, internalUUID#1105779, product#1105780, plant#1105781, calculationDateTime#1105843, stockQuantities#1105844]
(1780) Generate
Arguments: explode(stockQuantities#1105844), false, [stockQuantity#1105845]
(1781) Project
Arguments: [systemId#1105778, internalUUID#1105779, product#1105780, plant#1105781, calculationDateTime#1105843, stockQuantities#1105844, stockQuantity#1105845]
(1782) Project
Arguments: [plant#1105781.id AS plant#1105846, plant#1105781.internalRefUUID AS plantUuid#1105847, product#1105780.id AS product#1105848, product#1105780.internalRefUUID AS productUuid#1105849, calculationDateTime#1105843, stockQuantity#1105845.storagelocation.id AS storageLocId#1105850, stockQuantity#1105845.storagelocation.internalRefUUID AS storageLocUuid#1105851, stockQuantity#1105845.quantity.measure AS quantity#1105852, stockQuantity#1105845.specialStockIndicator.code AS specialStockIndicator#1105853, stockQuantity#1105845.stockType.code AS stockType#1105854]
(1783) Filter
Arguments: ((specialStockIndicator#1105853 = ) AND (stockType#1105854 = 01))
(1784) LogicalRelation
Arguments: parquet, [product#1105855, plant#1105856, orderDateTime#1105857, planningStartDateTime#1105858], false
(1785) RepartitionByExpression
Arguments: [product#1105855, plant#1105856], 37
(1786) Project
Arguments: [product#1105855, plant#1105856, orderDateTime#1105857]
(1787) LogicalRelation
Arguments: parquet, [systemId#1105859, internalUUID#1105860, plant#1105861, product#1105862, blockedForReplenishmentStartingFrom#1105863, productionAspect#1105864, salesPlant#1105865, listing#1105866, sourceOfSupplyCategory#1105867], false
(1788) Repartition
Arguments: 37, true
(1789) Project
Arguments: [systemId#1105859, internalUUID#1105860, plant#1105861, product#1105862, blockedForReplenishmentStartingFrom#1105863, productionAspect#1105864, salesPlant#1105865, listing#1105866, sourceOfSupplyCategory#1105867, struct(systemId, systemId#1105859, internalUUID, internalUUID#1105860, plant, plant#1105861, product, product#1105862, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105863, productionAspect, productionAspect#1105864, salesPlant, salesPlant#1105865, listing, listing#1105866, sourceOfSupplyCategory, sourceOfSupplyCategory#1105867) AS productPlant#1105868]
(1790) Project
Arguments: [productPlant#1105868]
(1791) Join
Arguments: LeftOuter, ((product#1105855 <=> productPlant#1105868.product.internalRefUUID) AND (plant#1105856 <=> productPlant#1105868.plant.internalRefUUID))
(1792) Project
Arguments: [product#1105855, plant#1105856, orderDateTime#1105857, productPlant#1105868]
(1793) LogicalRelation
Arguments: parquet, [systemId#1105869, internalUUID#1105870, id#1105871, displayId#1105872, name#1105873, baseUnitOfMeasure#1105874, unitOfMeasures#1105875, unitOfMeasureConversions#1105876, productionAspect#1105877, salesAspect#1105878, procurementAspect#1105879, productGroup#1105880], false
(1794) Repartition
Arguments: 37, true
(1795) Join
Arguments: LeftOuter, (product#1105855 = internalUUID#1105870)
(1796) Project
Arguments: [product#1105855, plant#1105856, orderDateTime#1105857, productPlant#1105868, systemId#1105869, internalUUID#1105870, id#1105871, displayId#1105872, name#1105873, baseUnitOfMeasure#1105874, unitOfMeasures#1105875, unitOfMeasureConversions#1105876, productionAspect#1105877, salesAspect#1105878, procurementAspect#1105879, productGroup#1105880, filter(unitOfMeasureConversions#1105876, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105868.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105868.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105874.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105874.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105881]
(1797) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105881.quantityNumerator), true, [quantityNumerator#1105882]
(1798) Project
Arguments: [product#1105855, plant#1105856, orderDateTime#1105857, productPlant#1105868, systemId#1105869, internalUUID#1105870, id#1105871, displayId#1105872, name#1105873, baseUnitOfMeasure#1105874, unitOfMeasures#1105875, unitOfMeasureConversions#1105876, productionAspect#1105877, salesAspect#1105878, procurementAspect#1105879, productGroup#1105880, filteredUnitOfMeasureConversions#1105881, quantityNumerator#1105882]
(1799) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105881.quantityDenominator), true, [quantityDenominator#1105883]
(1800) Project
Arguments: [product#1105855, plant#1105856, orderDateTime#1105857, productPlant#1105868, systemId#1105869, internalUUID#1105870, id#1105871, displayId#1105872, name#1105873, baseUnitOfMeasure#1105874, unitOfMeasures#1105875, unitOfMeasureConversions#1105876, productionAspect#1105877, salesAspect#1105878, procurementAspect#1105879, productGroup#1105880, filteredUnitOfMeasureConversions#1105881, quantityNumerator#1105882, quantityDenominator#1105883]
(1801) Project
Arguments: [product#1105855, plant#1105856, orderDateTime#1105857, productPlant#1105868, systemId#1105869, internalUUID#1105870, id#1105871, displayId#1105872, name#1105873, baseUnitOfMeasure#1105874, unitOfMeasures#1105875, unitOfMeasureConversions#1105876, productionAspect#1105877, salesAspect#1105878, procurementAspect#1105879, productGroup#1105880, filteredUnitOfMeasureConversions#1105881, quantityNumerator#1105882, quantityDenominator#1105883, (cast(quantityNumerator#1105882 as double) / cast(quantityDenominator#1105883 as double)) AS outboundUnit#1105884]
(1802) Project
Arguments: [product#1105855, plant#1105856, orderDateTime#1105857, productPlant#1105868, systemId#1105869, internalUUID#1105870, id#1105871, displayId#1105872, name#1105873, baseUnitOfMeasure#1105874, unitOfMeasures#1105875, unitOfMeasureConversions#1105876, productionAspect#1105877, salesAspect#1105878, procurementAspect#1105879, productGroup#1105880, filteredUnitOfMeasureConversions#1105881, quantityNumerator#1105882, quantityDenominator#1105883, CASE WHEN (isnull(outboundUnit#1105884) OR (outboundUnit#1105884 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105884 END AS outboundUnit#1105885]
(1803) Project
Arguments: [product#1105855, plant#1105856, orderDateTime#1105857, productPlant#1105868, outboundUnit#1105885]
(1804) Join
Arguments: Inner, ((plantUuid#1105847 = plant#1105856) AND (productUuid#1105849 = product#1105855))
(1805) Filter
Arguments: (calculationDateTime#1105843 <= orderDateTime#1105857)
(1806) Project
Arguments: [plantUuid#1105847 AS plant#1105886, productUuid#1105849 AS product#1105887, storageLocId#1105850, calculationDateTime#1105843, quantity#1105852]
(1807) Aggregate
Arguments: [plant#1105886, product#1105887, storageLocId#1105850], [plant#1105886, product#1105887, storageLocId#1105850, max(calculationDateTime#1105843) AS max_calc_datetime#1105888]
(1808) Join
Arguments: Inner, ((((plant#1105776 <=> plant#1105886) AND (product#1105777 <=> product#1105887)) AND (storageLocId#1105740 <=> storageLocId#1105850)) AND (calculationDateTime#1105733 <=> max_calc_datetime#1105888))
(1809) Project
Arguments: [plant#1105776, product#1105777, storageLocId#1105740, calculationDateTime#1105733, quantity#1105742]
(1810) Aggregate
Arguments: [product#1105777, plant#1105776], [product#1105777, plant#1105776, sum(quantity#1105742) AS quantitySum#1105889, min(calculationDateTime#1105733) AS minCalculationDateTime#1105890]
(1811) Project
Arguments: [product#1105777, plant#1105776, quantitySum#1105889, minCalculationDateTime#1105890, round(quantitySum#1105889, 0) AS roundedQuantitySum#1105891]
(1812) Join
Arguments: LeftOuter, ((plant#1105638 = plant#1105776) AND (product#1105637 = product#1105777))
(1813) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, outboundUnit#1105667, roundedQuantitySum#1105891, minCalculationDateTime#1105890]
(1814) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, outboundUnit#1105667, roundedQuantitySum#1105891, minCalculationDateTime#1105890, CASE WHEN isnotnull(minCalculationDateTime#1105890) THEN minCalculationDateTime#1105890 ELSE orderDateTime#1105639 END AS stockDatetime#1105892]
(1815) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, outboundUnit#1105667, roundedQuantitySum#1105891, minCalculationDateTime#1105890, stockDatetime#1105892, CASE WHEN isnotnull(roundedQuantitySum#1105891) THEN array(roundedQuantitySum#1105891) ELSE array(0.0) END AS stockBatchQuantities#1105893]
(1816) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, outboundUnit#1105667, roundedQuantitySum#1105891, minCalculationDateTime#1105890, stockDatetime#1105892, stockBatchQuantities#1105893, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1105894]
(1817) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, outboundUnit#1105667, roundedQuantitySum#1105891, stockDatetime#1105892, stockBatchQuantities#1105893, stockBatchShelfLifeEndDatetimes#1105894]
(1818) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, outboundUnit#1105667, stockDatetime#1105892, stockBatchQuantities#1105893, stockBatchShelfLifeEndDatetimes#1105894]
(1819) LogicalRelation
Arguments: parquet, [product#1105895, plant#1105896, demandChannel#1105897, demandStream#1105898, considerVariance#1105899, demandTimeBuckets#1105900, demandPointInTimeStart#1105901, demandPointInTimeEnd#1105902, demandPointInTime#1105903], false
(1820) Join
Arguments: LeftOuter, ((plant#1105896 <=> plant#1105638) AND (product#1105895 <=> product#1105637))
(1821) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, outboundUnit#1105667, stockDatetime#1105892, stockBatchQuantities#1105893, stockBatchShelfLifeEndDatetimes#1105894, product#1105895, plant#1105896, demandChannel#1105897, demandStream#1105898, considerVariance#1105899, demandTimeBuckets#1105900, demandPointInTimeStart#1105901, demandPointInTimeEnd#1105902, demandPointInTime#1105903, CASE WHEN isnotnull(product#1105895) THEN struct(demandChannel, demandChannel#1105897, demandStream, demandStream#1105898, considerVariance, considerVariance#1105899, demandTimeBuckets, demandTimeBuckets#1105900, demandPointInTimeStart, demandPointInTimeStart#1105901, demandPointInTimeEnd, demandPointInTimeEnd#1105902, demandPointInTime, demandPointInTime#1105903) 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#1105904]
(1822) Aggregate
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, outboundUnit#1105667, stockDatetime#1105892, stockBatchQuantities#1105893, stockBatchShelfLifeEndDatetimes#1105894], [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, outboundUnit#1105667, stockDatetime#1105892, stockBatchQuantities#1105893, stockBatchShelfLifeEndDatetimes#1105894, collect_list(rawDemands#1105904, 0, 0) AS rawDemands#1105905]
(1823) SubqueryAlias
Arguments: wl
(1824) LogicalRelation
Arguments: parquet, [systemId#1105906, internalUUID#1105907, id#1105908, displayId#1105909, name#1105910, category#1105911, companyCode#1105912, address#1105913, mainDistributionChain#1105914, mainPurchasingOrganization#1105915, validPurchasingOrganizations#1105916, productGroup#1105917], false
(1825) Repartition
Arguments: 37, true
(1826) Project
Arguments: [systemId#1105906, internalUUID#1105907, id#1105908, displayId#1105909, name#1105910, category#1105911, companyCode#1105912, address#1105913, mainDistributionChain#1105914, mainPurchasingOrganization#1105915, validPurchasingOrganizations#1105916, productGroup#1105917, address#1105913.timezone.code AS timezonecode#1105918]
(1827) Join
Arguments: LeftOuter, (plant#1105638 <=> internalUUID#1105907)
(1828) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, outboundUnit#1105667, stockDatetime#1105892, stockBatchQuantities#1105893, stockBatchShelfLifeEndDatetimes#1105894, rawDemands#1105905, systemId#1105906, internalUUID#1105907, id#1105908, displayId#1105909, name#1105910, category#1105911, companyCode#1105912, address#1105913, mainDistributionChain#1105914, mainPurchasingOrganization#1105915, validPurchasingOrganizations#1105916, productGroup#1105917, CASE WHEN isnotnull(timezonecode#1105918) THEN timezonecode#1105918 ELSE UTC END AS timezonecode#1105919]
(1829) Project
Arguments: [product#1105637, plant#1105638, orderDateTime#1105639, productPlant#1105650, outboundUnit#1105667, stockDatetime#1105892, stockBatchQuantities#1105893, stockBatchShelfLifeEndDatetimes#1105894, rawDemands#1105905, timezonecode#1105919]
(1830) DeserializeToObject
Arguments: createexternalrow(invoke(product#1105637.toString()), invoke(plant#1105638.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1105639)), if (isnull(productPlant#1105650)) null else createexternalrow(invoke(productPlant#1105650.systemId.toString()), invoke(productPlant#1105650.internalUUID.toString()), if (isnull(productPlant#1105650.plant)) null else createexternalrow(invoke(productPlant#1105650.plant.internalRefUUID.toString()), invoke(productPlant#1105650.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1105650.product)) null else createexternalrow(invoke(productPlant#1105650.product.internalRefUUID.toString()), invoke(productPlant#1105650.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1105650.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1105650.productionAspect)) null else createexternalrow(if (isnull(productPlant#1105650.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1105650.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1105650.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1105650.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#1105650.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1105650.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1105650.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1105650.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1105650.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1105650.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1105650.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1105650.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1105650.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1105650.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1105650.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1105650.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1105650.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1105650.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#1105650.salesPlant)) null else createexternalrow(if (isnull(productPlant#1105650.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1105650.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1105650.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, 87159), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#1105650.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1105650.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1105650.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1105650.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#1105667)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1105892)), mapobjects(lambdavariable(MapObject, DoubleType, true, 87160), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 87160) as double))), stockBatchQuantities#1105893, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 87161), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 87161) as timestamp)))), stockBatchShelfLifeEndDatetimes#1105894, 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, 87162), 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, 87162))) 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, 87162).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, 87162).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, 87162).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).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, 87162).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, 87162).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, 87162).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).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, 87162).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#1105905, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#1105919.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#1102685: org.apache.spark.sql.Row
(1831) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@51e4e5d1, 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#1102690: 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#1105920, 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#1105921, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87150), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87150), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87151), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87151), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87152), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87152), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87153), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87153), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87154), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87154), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#1105922, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87156), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87156), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87157), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87157), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87158), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87158), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#1105923]
(1833) Join
Arguments: LeftOuter, ((plant#1105921 <=> plant#1105380) AND (product#1105920 <=> product#1105379))
(1834) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, outboundUnit#1105409, stockDatetime#1105634, stockBatchQuantities#1105635, stockBatchShelfLifeEndDatetimes#1105636, plant#1105921, dayBucketDemands#1105922, pointInTimeDemands#1105923]
(1835) Project
Arguments: [product#1105379, plant#1105380, orderDateTime#1105381, productPlant#1105392, outboundUnit#1105409, stockDatetime#1105634, stockBatchQuantities#1105635, stockBatchShelfLifeEndDatetimes#1105636, dayBucketDemands#1105922, pointInTimeDemands#1105923]
(1836) LogicalRelation
Arguments: parquet, [marketUnit#1105924, description#1105925, articleHierarchy#1105926, defaultCurrency#1105927, responsibilities#1105928, replenishmentTypes#1105929, distributionCenters#1105930, assignedArticleHierarchyNodes#1105931, minOrderQtySetting#1105932, listingCheck#1105933, odsSelection#1105934, demandProfiles#1105935, constraintProfiles#1105936, optimizationProfiles#1105937, orderGroupSplitProfiles#1105938, supplierMinimumProfiles#1105939, multipleRestrictionProfiles#1105940, preferredUomSource#1105941, handlingOfUnfulfilledDemands#1105942, negligibleQuantitiesThreshold#1105943, eventtype#1105944], false
(1837) Repartition
Arguments: 37, true
(1838) Filter
Arguments: (marketUnit#1105924 <=> AUTO_ALL_ProdLoc)
(1839) Project
Arguments: [marketUnit#1105924, description#1105925, articleHierarchy#1105926, defaultCurrency#1105927, responsibilities#1105928, replenishmentTypes#1105929, distributionCenters#1105930, assignedArticleHierarchyNodes#1105931, minOrderQtySetting#1105932, listingCheck#1105933, odsSelection#1105934, demandProfiles#1105935, constraintProfiles#1105936, optimizationProfiles#1105937, orderGroupSplitProfiles#1105938, supplierMinimumProfiles#1105939, multipleRestrictionProfiles#1105940, preferredUomSource#1105941, handlingOfUnfulfilledDemands#1105942, negligibleQuantitiesThreshold#1105943, eventtype#1105944]
(1840) Project
Arguments: [distributionCenters#1105930]
(1841) Generate
Arguments: explode(distributionCenters#1105930), false, [distributionCenters#1105945]
(1842) Project
Arguments: [distributionCenters#1105945]
(1843) Generate
Arguments: explode(distributionCenters#1105945.storageLocations), false, [storageLocations#1105946]
(1844) Project
Arguments: [distributionCenters#1105945.id AS plantId#1105947, distributionCenters#1105945.internalRefUUID AS plantUuid#1105948, storageLocations#1105946]
(1845) Project
Arguments: [plantId#1105947, plantUuid#1105948, storageLocations#1105946.id AS storageLocId#1105949, storageLocations#1105946.internalRefUUID AS storageLocUuid#1105950]
(1846) LogicalRelation
Arguments: parquet, [product#1105951, plant#1105952, orderDateTime#1105953, planningStartDateTime#1105954], false
(1847) RepartitionByExpression
Arguments: [product#1105951, plant#1105952], 37
(1848) Project
Arguments: [product#1105951, plant#1105952, orderDateTime#1105953]
(1849) LogicalRelation
Arguments: parquet, [systemId#1105955, internalUUID#1105956, plant#1105957, product#1105958, blockedForReplenishmentStartingFrom#1105959, productionAspect#1105960, salesPlant#1105961, listing#1105962, sourceOfSupplyCategory#1105963], false
(1850) Repartition
Arguments: 37, true
(1851) Project
Arguments: [systemId#1105955, internalUUID#1105956, plant#1105957, product#1105958, blockedForReplenishmentStartingFrom#1105959, productionAspect#1105960, salesPlant#1105961, listing#1105962, sourceOfSupplyCategory#1105963, struct(systemId, systemId#1105955, internalUUID, internalUUID#1105956, plant, plant#1105957, product, product#1105958, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1105959, productionAspect, productionAspect#1105960, salesPlant, salesPlant#1105961, listing, listing#1105962, sourceOfSupplyCategory, sourceOfSupplyCategory#1105963) AS productPlant#1105964]
(1852) Project
Arguments: [productPlant#1105964]
(1853) Join
Arguments: LeftOuter, ((product#1105951 <=> productPlant#1105964.product.internalRefUUID) AND (plant#1105952 <=> productPlant#1105964.plant.internalRefUUID))
(1854) Project
Arguments: [product#1105951, plant#1105952, orderDateTime#1105953, productPlant#1105964]
(1855) LogicalRelation
Arguments: parquet, [systemId#1105965, internalUUID#1105966, id#1105967, displayId#1105968, name#1105969, baseUnitOfMeasure#1105970, unitOfMeasures#1105971, unitOfMeasureConversions#1105972, productionAspect#1105973, salesAspect#1105974, procurementAspect#1105975, productGroup#1105976], false
(1856) Repartition
Arguments: 37, true
(1857) Join
Arguments: LeftOuter, (product#1105951 = internalUUID#1105966)
(1858) Project
Arguments: [product#1105951, plant#1105952, orderDateTime#1105953, productPlant#1105964, systemId#1105965, internalUUID#1105966, id#1105967, displayId#1105968, name#1105969, baseUnitOfMeasure#1105970, unitOfMeasures#1105971, unitOfMeasureConversions#1105972, productionAspect#1105973, salesAspect#1105974, procurementAspect#1105975, productGroup#1105976, filter(unitOfMeasureConversions#1105972, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1105964.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1105964.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1105970.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1105970.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1105977]
(1859) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105977.quantityNumerator), true, [quantityNumerator#1105978]
(1860) Project
Arguments: [product#1105951, plant#1105952, orderDateTime#1105953, productPlant#1105964, systemId#1105965, internalUUID#1105966, id#1105967, displayId#1105968, name#1105969, baseUnitOfMeasure#1105970, unitOfMeasures#1105971, unitOfMeasureConversions#1105972, productionAspect#1105973, salesAspect#1105974, procurementAspect#1105975, productGroup#1105976, filteredUnitOfMeasureConversions#1105977, quantityNumerator#1105978]
(1861) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1105977.quantityDenominator), true, [quantityDenominator#1105979]
(1862) Project
Arguments: [product#1105951, plant#1105952, orderDateTime#1105953, productPlant#1105964, systemId#1105965, internalUUID#1105966, id#1105967, displayId#1105968, name#1105969, baseUnitOfMeasure#1105970, unitOfMeasures#1105971, unitOfMeasureConversions#1105972, productionAspect#1105973, salesAspect#1105974, procurementAspect#1105975, productGroup#1105976, filteredUnitOfMeasureConversions#1105977, quantityNumerator#1105978, quantityDenominator#1105979]
(1863) Project
Arguments: [product#1105951, plant#1105952, orderDateTime#1105953, productPlant#1105964, systemId#1105965, internalUUID#1105966, id#1105967, displayId#1105968, name#1105969, baseUnitOfMeasure#1105970, unitOfMeasures#1105971, unitOfMeasureConversions#1105972, productionAspect#1105973, salesAspect#1105974, procurementAspect#1105975, productGroup#1105976, filteredUnitOfMeasureConversions#1105977, quantityNumerator#1105978, quantityDenominator#1105979, (cast(quantityNumerator#1105978 as double) / cast(quantityDenominator#1105979 as double)) AS outboundUnit#1105980]
(1864) Project
Arguments: [product#1105951, plant#1105952, orderDateTime#1105953, productPlant#1105964, systemId#1105965, internalUUID#1105966, id#1105967, displayId#1105968, name#1105969, baseUnitOfMeasure#1105970, unitOfMeasures#1105971, unitOfMeasureConversions#1105972, productionAspect#1105973, salesAspect#1105974, procurementAspect#1105975, productGroup#1105976, filteredUnitOfMeasureConversions#1105977, quantityNumerator#1105978, quantityDenominator#1105979, CASE WHEN (isnull(outboundUnit#1105980) OR (outboundUnit#1105980 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1105980 END AS outboundUnit#1105981]
(1865) Project
Arguments: [product#1105951, plant#1105952, orderDateTime#1105953, productPlant#1105964, outboundUnit#1105981]
(1866) Project
Arguments: [plant#1105952]
(1867) Deduplicate
Arguments: [plant#1105952]
(1868) Join
Arguments: Inner, (plantUuid#1105948 = plant#1105952)
(1869) Project
Arguments: [plantId#1105947, plantUuid#1105948, storageLocId#1105949, storageLocUuid#1105950]
(1870) Project
Arguments: [plantId#1105947, plantUuid#1105948 AS plant#1105982, storageLocId#1105949, storageLocUuid#1105950]
(1871) Join
Arguments: Inner, (plant#1105380 = plant#1105982)
(1872) Project
Arguments: [plant#1105380, product#1105379, orderDateTime#1105381, productPlant#1105392, outboundUnit#1105409, stockDatetime#1105634, stockBatchQuantities#1105635, stockBatchShelfLifeEndDatetimes#1105636, dayBucketDemands#1105922, pointInTimeDemands#1105923, plantId#1105947, storageLocId#1105949, storageLocUuid#1105950, plant#1105982]
(1873) LocalRelation
Arguments: <empty>, [systemId#1105983, internalUUID#1105984, id#1105985, isMarkedForDeletion#1105986, supplier#1105987, status#1105988, items#1105989]
(1874) Generate
Arguments: explode(items#1105989), false, [item#1105990]
(1875) Project
Arguments: [id#1105985, internalUUID#1105984, isMarkedForDeletion#1105986, supplier#1105987.internalRefUUID AS supplierUuid#1105991, item#1105990]
(1876) Filter
Arguments: (((NOT isMarkedForDeletion#1105986 AND NOT item#1105990.deletionIndicator) AND NOT item#1105990.completeIndicator) AND NOT item#1105990.returnIndicator)
(1877) Project
Arguments: [id#1105985, internalUUID#1105984, supplierUuid#1105991, item#1105990.plant.internalRefUUID AS plant#1105992, item#1105990.product.internalRefUUID AS product#1105993, item#1105990.storageLocation.internalRefUUID AS storageLocUuid#1105994, item#1105990.quantityUnit.code AS quantityUom#1105995, item#1105990.quantityUnit.internalRefUUID AS quantityUomUuid#1105996, item#1105990.quantityNumerator AS quantityNumerator#1105997, item#1105990.quantityDenominator AS quantityDenominator#1105998, item#1105990.scheduleLines AS scheduleLines#1105999, item#1105990.confirmations AS confirmations#1106000]
(1878) Join
Arguments: Inner, (((product#1105379 = product#1105993) AND (plant#1105380 = plant#1105992)) AND (storageLocUuid#1105950 = storageLocUuid#1105994))
(1879) Project
Arguments: [product#1105379, plant#1105380, storageLocUuid#1105950, orderDateTime#1105381, productPlant#1105392, outboundUnit#1105409, stockDatetime#1105634, stockBatchQuantities#1105635, stockBatchShelfLifeEndDatetimes#1105636, dayBucketDemands#1105922, pointInTimeDemands#1105923, plantId#1105947, storageLocId#1105949, id#1105985, internalUUID#1105984, supplierUuid#1105991, quantityUom#1105995, quantityUomUuid#1105996, quantityNumerator#1105997, quantityDenominator#1105998, scheduleLines#1105999, confirmations#1106000, product#1105993, plant#1105992, storageLocUuid#1105994, ... 1 more fields]
(1880) Project
Arguments: [id#1105985, internalUUID#1105984, supplierUuid#1105991, plant#1105992, product#1105993, storageLocUuid#1105994, quantityUom#1105995, quantityUomUuid#1105996, quantityNumerator#1105997, quantityDenominator#1105998, scheduleLines#1105999, confirmations#1106000, stockDatetime#1105634]
(1881) Project
Arguments: [id#1105985, internalUUID#1105984, supplierUuid#1105991, plant#1105992, product#1105993, storageLocUuid#1105994, quantityUom#1105995, quantityUomUuid#1105996, quantityNumerator#1105997, quantityDenominator#1105998, scheduleLines#1105999, confirmations#1106000, stockDatetime#1105634, array_size(filter(confirmations#1106000, lambdafunction((((lambda x_160#1103082.deletionIndicator = false) AND (lambda x_160#1103082.isRelevantForConfirmation = true)) AND isnotnull(lambda x_160#1103082.confirmedDeliveryAt)), lambda x_160#1103082, false))) AS _w0#1106001]
(1882) Window
Arguments: [sum(_w0#1106001) windowspecdefinition(internalUUID#1105984, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#1106002L], [internalUUID#1105984]
(1883) Project
Arguments: [id#1105985, internalUUID#1105984, supplierUuid#1105991, plant#1105992, product#1105993, storageLocUuid#1105994, quantityUom#1105995, quantityUomUuid#1105996, quantityNumerator#1105997, quantityDenominator#1105998, scheduleLines#1105999, confirmations#1106000, stockDatetime#1105634, _w0#1106001, _we0#1106002L, filter(transform(CASE WHEN (_we0#1106002L > cast(0 as bigint)) THEN transform(filter(confirmations#1106000, lambdafunction((((lambda x_160#1103083.deletionIndicator = false) AND (lambda x_160#1103083.isRelevantForConfirmation = true)) AND isnotnull(lambda x_160#1103083.confirmedDeliveryAt)), lambda x_160#1103083, false)), lambdafunction(struct(openQty, greatest((lambda x_161#1103086.confirmedQuantity - coalesce(lambda x_161#1103086.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_161#1103086.confirmedDeliveryAt), lambda x_161#1103086, false)) ELSE transform(scheduleLines#1105999, lambdafunction(struct(openQty, greatest((lambda x_159#1103084.quantity - coalesce(lambda x_159#1103084.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_159#1103084.deliveryAt), lambda x_159#1103084, false)) END, lambdafunction(struct(documentId, id#1105985, documentUuid, internalUUID#1105984, openQty, lambda x_162#1103087.openQty, openQtyInBaseUnit, ((lambda x_162#1103087.openQty * quantityNumerator#1105997) / quantityDenominator#1105998), qtyUom, quantityUom#1105995, qtyUomUuid, quantityUomUuid#1105996, availabilityDatetime, lambda x_162#1103087.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_162#1103087, false)), lambdafunction(NOT (lambda x_163#1103088.openQty = 0.0), lambda x_163#1103088, false)) AS openGoodsMovements#1106003]
(1884) Project
Arguments: [id#1105985, internalUUID#1105984, supplierUuid#1105991, plant#1105992, product#1105993, storageLocUuid#1105994, quantityUom#1105995, quantityUomUuid#1105996, quantityNumerator#1105997, quantityDenominator#1105998, scheduleLines#1105999, confirmations#1106000, stockDatetime#1105634, openGoodsMovements#1106003]
(1885) Aggregate
Arguments: [product#1105993, plant#1105992], [product#1105993, plant#1105992, flatten(collect_list(openGoodsMovements#1106003, 0, 0)) AS openGoodsMovements#1106004]
(1886) Filter
Arguments: (array_size(openGoodsMovements#1106004) > 0)
(1887) LogicalRelation
Arguments: parquet, [product#1106005, plant#1106006, orderDateTime#1106007, planningStartDateTime#1106008], false
(1888) RepartitionByExpression
Arguments: [product#1106005, plant#1106006], 37
(1889) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007]
(1890) LogicalRelation
Arguments: parquet, [systemId#1106009, internalUUID#1106010, plant#1106011, product#1106012, blockedForReplenishmentStartingFrom#1106013, productionAspect#1106014, salesPlant#1106015, listing#1106016, sourceOfSupplyCategory#1106017], false
(1891) Repartition
Arguments: 37, true
(1892) Project
Arguments: [systemId#1106009, internalUUID#1106010, plant#1106011, product#1106012, blockedForReplenishmentStartingFrom#1106013, productionAspect#1106014, salesPlant#1106015, listing#1106016, sourceOfSupplyCategory#1106017, struct(systemId, systemId#1106009, internalUUID, internalUUID#1106010, plant, plant#1106011, product, product#1106012, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1106013, productionAspect, productionAspect#1106014, salesPlant, salesPlant#1106015, listing, listing#1106016, sourceOfSupplyCategory, sourceOfSupplyCategory#1106017) AS productPlant#1106018]
(1893) Project
Arguments: [productPlant#1106018]
(1894) Join
Arguments: LeftOuter, ((product#1106005 <=> productPlant#1106018.product.internalRefUUID) AND (plant#1106006 <=> productPlant#1106018.plant.internalRefUUID))
(1895) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018]
(1896) LogicalRelation
Arguments: parquet, [systemId#1106019, internalUUID#1106020, id#1106021, displayId#1106022, name#1106023, baseUnitOfMeasure#1106024, unitOfMeasures#1106025, unitOfMeasureConversions#1106026, productionAspect#1106027, salesAspect#1106028, procurementAspect#1106029, productGroup#1106030], false
(1897) Repartition
Arguments: 37, true
(1898) Join
Arguments: LeftOuter, (product#1106005 = internalUUID#1106020)
(1899) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, systemId#1106019, internalUUID#1106020, id#1106021, displayId#1106022, name#1106023, baseUnitOfMeasure#1106024, unitOfMeasures#1106025, unitOfMeasureConversions#1106026, productionAspect#1106027, salesAspect#1106028, procurementAspect#1106029, productGroup#1106030, filter(unitOfMeasureConversions#1106026, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1106018.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1106018.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1106024.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1106024.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1106031]
(1900) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106031.quantityNumerator), true, [quantityNumerator#1106032]
(1901) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, systemId#1106019, internalUUID#1106020, id#1106021, displayId#1106022, name#1106023, baseUnitOfMeasure#1106024, unitOfMeasures#1106025, unitOfMeasureConversions#1106026, productionAspect#1106027, salesAspect#1106028, procurementAspect#1106029, productGroup#1106030, filteredUnitOfMeasureConversions#1106031, quantityNumerator#1106032]
(1902) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106031.quantityDenominator), true, [quantityDenominator#1106033]
(1903) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, systemId#1106019, internalUUID#1106020, id#1106021, displayId#1106022, name#1106023, baseUnitOfMeasure#1106024, unitOfMeasures#1106025, unitOfMeasureConversions#1106026, productionAspect#1106027, salesAspect#1106028, procurementAspect#1106029, productGroup#1106030, filteredUnitOfMeasureConversions#1106031, quantityNumerator#1106032, quantityDenominator#1106033]
(1904) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, systemId#1106019, internalUUID#1106020, id#1106021, displayId#1106022, name#1106023, baseUnitOfMeasure#1106024, unitOfMeasures#1106025, unitOfMeasureConversions#1106026, productionAspect#1106027, salesAspect#1106028, procurementAspect#1106029, productGroup#1106030, filteredUnitOfMeasureConversions#1106031, quantityNumerator#1106032, quantityDenominator#1106033, (cast(quantityNumerator#1106032 as double) / cast(quantityDenominator#1106033 as double)) AS outboundUnit#1106034]
(1905) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, systemId#1106019, internalUUID#1106020, id#1106021, displayId#1106022, name#1106023, baseUnitOfMeasure#1106024, unitOfMeasures#1106025, unitOfMeasureConversions#1106026, productionAspect#1106027, salesAspect#1106028, procurementAspect#1106029, productGroup#1106030, filteredUnitOfMeasureConversions#1106031, quantityNumerator#1106032, quantityDenominator#1106033, CASE WHEN (isnull(outboundUnit#1106034) OR (outboundUnit#1106034 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1106034 END AS outboundUnit#1106035]
(1906) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, outboundUnit#1106035]
(1907) LogicalRelation
Arguments: parquet, [systemId#1106036, internalUUID#1106037, product#1106038, plant#1106039, calculationDateTime#1106040, stockQuantities#1106041], false
(1908) Repartition
Arguments: 37, true
(1909) LogicalRelation
Arguments: parquet, [marketUnit#1106042, description#1106043, articleHierarchy#1106044, defaultCurrency#1106045, responsibilities#1106046, replenishmentTypes#1106047, distributionCenters#1106048, assignedArticleHierarchyNodes#1106049, minOrderQtySetting#1106050, listingCheck#1106051, odsSelection#1106052, demandProfiles#1106053, constraintProfiles#1106054, optimizationProfiles#1106055, orderGroupSplitProfiles#1106056, supplierMinimumProfiles#1106057, multipleRestrictionProfiles#1106058, preferredUomSource#1106059, handlingOfUnfulfilledDemands#1106060, negligibleQuantitiesThreshold#1106061, eventtype#1106062], false
(1910) Repartition
Arguments: 37, true
(1911) Filter
Arguments: (marketUnit#1106042 <=> AUTO_ALL_ProdLoc)
(1912) Project
Arguments: [marketUnit#1106042, description#1106043, articleHierarchy#1106044, defaultCurrency#1106045, responsibilities#1106046, replenishmentTypes#1106047, distributionCenters#1106048, assignedArticleHierarchyNodes#1106049, minOrderQtySetting#1106050, listingCheck#1106051, odsSelection#1106052, demandProfiles#1106053, constraintProfiles#1106054, optimizationProfiles#1106055, orderGroupSplitProfiles#1106056, supplierMinimumProfiles#1106057, multipleRestrictionProfiles#1106058, preferredUomSource#1106059, handlingOfUnfulfilledDemands#1106060, negligibleQuantitiesThreshold#1106061, eventtype#1106062]
(1913) Project
Arguments: [distributionCenters#1106048]
(1914) Generate
Arguments: explode(distributionCenters#1106048), false, [distributionCenters#1106063]
(1915) Project
Arguments: [distributionCenters#1106063]
(1916) Generate
Arguments: explode(distributionCenters#1106063.storageLocations), false, [storageLocations#1106064]
(1917) Project
Arguments: [distributionCenters#1106063.id AS plantId#1106065, distributionCenters#1106063.internalRefUUID AS plantUuid#1106066, storageLocations#1106064]
(1918) Project
Arguments: [plantId#1106065, plantUuid#1106066, storageLocations#1106064.id AS storageLocId#1106067, storageLocations#1106064.internalRefUUID AS storageLocUuid#1106068]
(1919) LogicalRelation
Arguments: parquet, [product#1106069, plant#1106070, orderDateTime#1106071, planningStartDateTime#1106072], false
(1920) RepartitionByExpression
Arguments: [product#1106069, plant#1106070], 37
(1921) Project
Arguments: [product#1106069, plant#1106070, orderDateTime#1106071]
(1922) LogicalRelation
Arguments: parquet, [systemId#1106073, internalUUID#1106074, plant#1106075, product#1106076, blockedForReplenishmentStartingFrom#1106077, productionAspect#1106078, salesPlant#1106079, listing#1106080, sourceOfSupplyCategory#1106081], false
(1923) Repartition
Arguments: 37, true
(1924) Project
Arguments: [systemId#1106073, internalUUID#1106074, plant#1106075, product#1106076, blockedForReplenishmentStartingFrom#1106077, productionAspect#1106078, salesPlant#1106079, listing#1106080, sourceOfSupplyCategory#1106081, struct(systemId, systemId#1106073, internalUUID, internalUUID#1106074, plant, plant#1106075, product, product#1106076, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1106077, productionAspect, productionAspect#1106078, salesPlant, salesPlant#1106079, listing, listing#1106080, sourceOfSupplyCategory, sourceOfSupplyCategory#1106081) AS productPlant#1106082]
(1925) Project
Arguments: [productPlant#1106082]
(1926) Join
Arguments: LeftOuter, ((product#1106069 <=> productPlant#1106082.product.internalRefUUID) AND (plant#1106070 <=> productPlant#1106082.plant.internalRefUUID))
(1927) Project
Arguments: [product#1106069, plant#1106070, orderDateTime#1106071, productPlant#1106082]
(1928) LogicalRelation
Arguments: parquet, [systemId#1106083, internalUUID#1106084, id#1106085, displayId#1106086, name#1106087, baseUnitOfMeasure#1106088, unitOfMeasures#1106089, unitOfMeasureConversions#1106090, productionAspect#1106091, salesAspect#1106092, procurementAspect#1106093, productGroup#1106094], false
(1929) Repartition
Arguments: 37, true
(1930) Join
Arguments: LeftOuter, (product#1106069 = internalUUID#1106084)
(1931) Project
Arguments: [product#1106069, plant#1106070, orderDateTime#1106071, productPlant#1106082, systemId#1106083, internalUUID#1106084, id#1106085, displayId#1106086, name#1106087, baseUnitOfMeasure#1106088, unitOfMeasures#1106089, unitOfMeasureConversions#1106090, productionAspect#1106091, salesAspect#1106092, procurementAspect#1106093, productGroup#1106094, filter(unitOfMeasureConversions#1106090, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1106082.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1106082.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1106088.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1106088.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1106095]
(1932) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106095.quantityNumerator), true, [quantityNumerator#1106096]
(1933) Project
Arguments: [product#1106069, plant#1106070, orderDateTime#1106071, productPlant#1106082, systemId#1106083, internalUUID#1106084, id#1106085, displayId#1106086, name#1106087, baseUnitOfMeasure#1106088, unitOfMeasures#1106089, unitOfMeasureConversions#1106090, productionAspect#1106091, salesAspect#1106092, procurementAspect#1106093, productGroup#1106094, filteredUnitOfMeasureConversions#1106095, quantityNumerator#1106096]
(1934) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106095.quantityDenominator), true, [quantityDenominator#1106097]
(1935) Project
Arguments: [product#1106069, plant#1106070, orderDateTime#1106071, productPlant#1106082, systemId#1106083, internalUUID#1106084, id#1106085, displayId#1106086, name#1106087, baseUnitOfMeasure#1106088, unitOfMeasures#1106089, unitOfMeasureConversions#1106090, productionAspect#1106091, salesAspect#1106092, procurementAspect#1106093, productGroup#1106094, filteredUnitOfMeasureConversions#1106095, quantityNumerator#1106096, quantityDenominator#1106097]
(1936) Project
Arguments: [product#1106069, plant#1106070, orderDateTime#1106071, productPlant#1106082, systemId#1106083, internalUUID#1106084, id#1106085, displayId#1106086, name#1106087, baseUnitOfMeasure#1106088, unitOfMeasures#1106089, unitOfMeasureConversions#1106090, productionAspect#1106091, salesAspect#1106092, procurementAspect#1106093, productGroup#1106094, filteredUnitOfMeasureConversions#1106095, quantityNumerator#1106096, quantityDenominator#1106097, (cast(quantityNumerator#1106096 as double) / cast(quantityDenominator#1106097 as double)) AS outboundUnit#1106098]
(1937) Project
Arguments: [product#1106069, plant#1106070, orderDateTime#1106071, productPlant#1106082, systemId#1106083, internalUUID#1106084, id#1106085, displayId#1106086, name#1106087, baseUnitOfMeasure#1106088, unitOfMeasures#1106089, unitOfMeasureConversions#1106090, productionAspect#1106091, salesAspect#1106092, procurementAspect#1106093, productGroup#1106094, filteredUnitOfMeasureConversions#1106095, quantityNumerator#1106096, quantityDenominator#1106097, CASE WHEN (isnull(outboundUnit#1106098) OR (outboundUnit#1106098 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1106098 END AS outboundUnit#1106099]
(1938) Project
Arguments: [product#1106069, plant#1106070, orderDateTime#1106071, productPlant#1106082, outboundUnit#1106099]
(1939) Project
Arguments: [plant#1106070]
(1940) Deduplicate
Arguments: [plant#1106070]
(1941) Join
Arguments: Inner, (plantUuid#1106066 = plant#1106070)
(1942) Project
Arguments: [plantId#1106065, plantUuid#1106066, storageLocId#1106067, storageLocUuid#1106068]
(1943) Join
Arguments: Inner, (plant#1106039.internalRefUUID <=> plantUuid#1106066)
(1944) Generate
Arguments: explode(filter(stockQuantities#1106041, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1106068) AND (lambda x#1101337.storageLocation.Id = storageLocId#1106067)), lambda x#1101337, false))), false, [stockQuantity#1106100]
(1945) Project
Arguments: [systemId#1106036, internalUUID#1106037, product#1106038, plant#1106039, calculationDateTime#1106040, stockQuantities#1106041, plantId#1106065, plantUuid#1106066, storageLocId#1106067, storageLocUuid#1106068, stockQuantity#1106100]
(1946) Aggregate
Arguments: [plantUuid#1106066, internalUUID#1106037, plant#1106039, product#1106038, systemId#1106036], [plantUuid#1106066, internalUUID#1106037, plant#1106039, product#1106038, systemId#1106036, first(calculationDateTime#1106040, false) AS calculationDateTime#1106101, collect_list(stockQuantity#1106100, 0, 0) AS stockQuantities#1106102]
(1947) Project
Arguments: [systemId#1106036, internalUUID#1106037, product#1106038, plant#1106039, calculationDateTime#1106101, stockQuantities#1106102]
(1948) Generate
Arguments: explode(stockQuantities#1106102), false, [stockQuantity#1106103]
(1949) Project
Arguments: [systemId#1106036, internalUUID#1106037, product#1106038, plant#1106039, calculationDateTime#1106101, stockQuantities#1106102, stockQuantity#1106103]
(1950) Project
Arguments: [plant#1106039.id AS plant#1106104, plant#1106039.internalRefUUID AS plantUuid#1106105, product#1106038.id AS product#1106106, product#1106038.internalRefUUID AS productUuid#1106107, calculationDateTime#1106101, stockQuantity#1106103.storagelocation.id AS storageLocId#1106108, stockQuantity#1106103.storagelocation.internalRefUUID AS storageLocUuid#1106109, stockQuantity#1106103.quantity.measure AS quantity#1106110, stockQuantity#1106103.specialStockIndicator.code AS specialStockIndicator#1106111, stockQuantity#1106103.stockType.code AS stockType#1106112]
(1951) Filter
Arguments: ((specialStockIndicator#1106111 = ) AND (stockType#1106112 = 01))
(1952) LogicalRelation
Arguments: parquet, [product#1106113, plant#1106114, orderDateTime#1106115, planningStartDateTime#1106116], false
(1953) RepartitionByExpression
Arguments: [product#1106113, plant#1106114], 37
(1954) Project
Arguments: [product#1106113, plant#1106114, orderDateTime#1106115]
(1955) LogicalRelation
Arguments: parquet, [systemId#1106117, internalUUID#1106118, plant#1106119, product#1106120, blockedForReplenishmentStartingFrom#1106121, productionAspect#1106122, salesPlant#1106123, listing#1106124, sourceOfSupplyCategory#1106125], false
(1956) Repartition
Arguments: 37, true
(1957) Project
Arguments: [systemId#1106117, internalUUID#1106118, plant#1106119, product#1106120, blockedForReplenishmentStartingFrom#1106121, productionAspect#1106122, salesPlant#1106123, listing#1106124, sourceOfSupplyCategory#1106125, struct(systemId, systemId#1106117, internalUUID, internalUUID#1106118, plant, plant#1106119, product, product#1106120, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1106121, productionAspect, productionAspect#1106122, salesPlant, salesPlant#1106123, listing, listing#1106124, sourceOfSupplyCategory, sourceOfSupplyCategory#1106125) AS productPlant#1106126]
(1958) Project
Arguments: [productPlant#1106126]
(1959) Join
Arguments: LeftOuter, ((product#1106113 <=> productPlant#1106126.product.internalRefUUID) AND (plant#1106114 <=> productPlant#1106126.plant.internalRefUUID))
(1960) Project
Arguments: [product#1106113, plant#1106114, orderDateTime#1106115, productPlant#1106126]
(1961) LogicalRelation
Arguments: parquet, [systemId#1106127, internalUUID#1106128, id#1106129, displayId#1106130, name#1106131, baseUnitOfMeasure#1106132, unitOfMeasures#1106133, unitOfMeasureConversions#1106134, productionAspect#1106135, salesAspect#1106136, procurementAspect#1106137, productGroup#1106138], false
(1962) Repartition
Arguments: 37, true
(1963) Join
Arguments: LeftOuter, (product#1106113 = internalUUID#1106128)
(1964) Project
Arguments: [product#1106113, plant#1106114, orderDateTime#1106115, productPlant#1106126, systemId#1106127, internalUUID#1106128, id#1106129, displayId#1106130, name#1106131, baseUnitOfMeasure#1106132, unitOfMeasures#1106133, unitOfMeasureConversions#1106134, productionAspect#1106135, salesAspect#1106136, procurementAspect#1106137, productGroup#1106138, filter(unitOfMeasureConversions#1106134, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1106126.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1106126.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1106132.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1106132.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1106139]
(1965) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106139.quantityNumerator), true, [quantityNumerator#1106140]
(1966) Project
Arguments: [product#1106113, plant#1106114, orderDateTime#1106115, productPlant#1106126, systemId#1106127, internalUUID#1106128, id#1106129, displayId#1106130, name#1106131, baseUnitOfMeasure#1106132, unitOfMeasures#1106133, unitOfMeasureConversions#1106134, productionAspect#1106135, salesAspect#1106136, procurementAspect#1106137, productGroup#1106138, filteredUnitOfMeasureConversions#1106139, quantityNumerator#1106140]
(1967) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106139.quantityDenominator), true, [quantityDenominator#1106141]
(1968) Project
Arguments: [product#1106113, plant#1106114, orderDateTime#1106115, productPlant#1106126, systemId#1106127, internalUUID#1106128, id#1106129, displayId#1106130, name#1106131, baseUnitOfMeasure#1106132, unitOfMeasures#1106133, unitOfMeasureConversions#1106134, productionAspect#1106135, salesAspect#1106136, procurementAspect#1106137, productGroup#1106138, filteredUnitOfMeasureConversions#1106139, quantityNumerator#1106140, quantityDenominator#1106141]
(1969) Project
Arguments: [product#1106113, plant#1106114, orderDateTime#1106115, productPlant#1106126, systemId#1106127, internalUUID#1106128, id#1106129, displayId#1106130, name#1106131, baseUnitOfMeasure#1106132, unitOfMeasures#1106133, unitOfMeasureConversions#1106134, productionAspect#1106135, salesAspect#1106136, procurementAspect#1106137, productGroup#1106138, filteredUnitOfMeasureConversions#1106139, quantityNumerator#1106140, quantityDenominator#1106141, (cast(quantityNumerator#1106140 as double) / cast(quantityDenominator#1106141 as double)) AS outboundUnit#1106142]
(1970) Project
Arguments: [product#1106113, plant#1106114, orderDateTime#1106115, productPlant#1106126, systemId#1106127, internalUUID#1106128, id#1106129, displayId#1106130, name#1106131, baseUnitOfMeasure#1106132, unitOfMeasures#1106133, unitOfMeasureConversions#1106134, productionAspect#1106135, salesAspect#1106136, procurementAspect#1106137, productGroup#1106138, filteredUnitOfMeasureConversions#1106139, quantityNumerator#1106140, quantityDenominator#1106141, CASE WHEN (isnull(outboundUnit#1106142) OR (outboundUnit#1106142 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1106142 END AS outboundUnit#1106143]
(1971) Project
Arguments: [product#1106113, plant#1106114, orderDateTime#1106115, productPlant#1106126, outboundUnit#1106143]
(1972) Join
Arguments: Inner, ((plantUuid#1106105 = plant#1106114) AND (productUuid#1106107 = product#1106113))
(1973) Filter
Arguments: (calculationDateTime#1106101 <= orderDateTime#1106115)
(1974) Project
Arguments: [plantUuid#1106105 AS plant#1106144, productUuid#1106107 AS product#1106145, storageLocId#1106108, calculationDateTime#1106101, quantity#1106110]
(1975) LogicalRelation
Arguments: parquet, [systemId#1106146, internalUUID#1106147, product#1106148, plant#1106149, calculationDateTime#1106150, stockQuantities#1106151], false
(1976) Repartition
Arguments: 37, true
(1977) LogicalRelation
Arguments: parquet, [marketUnit#1106152, description#1106153, articleHierarchy#1106154, defaultCurrency#1106155, responsibilities#1106156, replenishmentTypes#1106157, distributionCenters#1106158, assignedArticleHierarchyNodes#1106159, minOrderQtySetting#1106160, listingCheck#1106161, odsSelection#1106162, demandProfiles#1106163, constraintProfiles#1106164, optimizationProfiles#1106165, orderGroupSplitProfiles#1106166, supplierMinimumProfiles#1106167, multipleRestrictionProfiles#1106168, preferredUomSource#1106169, handlingOfUnfulfilledDemands#1106170, negligibleQuantitiesThreshold#1106171, eventtype#1106172], false
(1978) Repartition
Arguments: 37, true
(1979) Filter
Arguments: (marketUnit#1106152 <=> AUTO_ALL_ProdLoc)
(1980) Project
Arguments: [marketUnit#1106152, description#1106153, articleHierarchy#1106154, defaultCurrency#1106155, responsibilities#1106156, replenishmentTypes#1106157, distributionCenters#1106158, assignedArticleHierarchyNodes#1106159, minOrderQtySetting#1106160, listingCheck#1106161, odsSelection#1106162, demandProfiles#1106163, constraintProfiles#1106164, optimizationProfiles#1106165, orderGroupSplitProfiles#1106166, supplierMinimumProfiles#1106167, multipleRestrictionProfiles#1106168, preferredUomSource#1106169, handlingOfUnfulfilledDemands#1106170, negligibleQuantitiesThreshold#1106171, eventtype#1106172]
(1981) Project
Arguments: [distributionCenters#1106158]
(1982) Generate
Arguments: explode(distributionCenters#1106158), false, [distributionCenters#1106173]
(1983) Project
Arguments: [distributionCenters#1106173]
(1984) Generate
Arguments: explode(distributionCenters#1106173.storageLocations), false, [storageLocations#1106174]
(1985) Project
Arguments: [distributionCenters#1106173.id AS plantId#1106175, distributionCenters#1106173.internalRefUUID AS plantUuid#1106176, storageLocations#1106174]
(1986) Project
Arguments: [plantId#1106175, plantUuid#1106176, storageLocations#1106174.id AS storageLocId#1106177, storageLocations#1106174.internalRefUUID AS storageLocUuid#1106178]
(1987) LogicalRelation
Arguments: parquet, [product#1106179, plant#1106180, orderDateTime#1106181, planningStartDateTime#1106182], false
(1988) RepartitionByExpression
Arguments: [product#1106179, plant#1106180], 37
(1989) Project
Arguments: [product#1106179, plant#1106180, orderDateTime#1106181]
(1990) LogicalRelation
Arguments: parquet, [systemId#1106183, internalUUID#1106184, plant#1106185, product#1106186, blockedForReplenishmentStartingFrom#1106187, productionAspect#1106188, salesPlant#1106189, listing#1106190, sourceOfSupplyCategory#1106191], false
(1991) Repartition
Arguments: 37, true
(1992) Project
Arguments: [systemId#1106183, internalUUID#1106184, plant#1106185, product#1106186, blockedForReplenishmentStartingFrom#1106187, productionAspect#1106188, salesPlant#1106189, listing#1106190, sourceOfSupplyCategory#1106191, struct(systemId, systemId#1106183, internalUUID, internalUUID#1106184, plant, plant#1106185, product, product#1106186, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1106187, productionAspect, productionAspect#1106188, salesPlant, salesPlant#1106189, listing, listing#1106190, sourceOfSupplyCategory, sourceOfSupplyCategory#1106191) AS productPlant#1106192]
(1993) Project
Arguments: [productPlant#1106192]
(1994) Join
Arguments: LeftOuter, ((product#1106179 <=> productPlant#1106192.product.internalRefUUID) AND (plant#1106180 <=> productPlant#1106192.plant.internalRefUUID))
(1995) Project
Arguments: [product#1106179, plant#1106180, orderDateTime#1106181, productPlant#1106192]
(1996) LogicalRelation
Arguments: parquet, [systemId#1106193, internalUUID#1106194, id#1106195, displayId#1106196, name#1106197, baseUnitOfMeasure#1106198, unitOfMeasures#1106199, unitOfMeasureConversions#1106200, productionAspect#1106201, salesAspect#1106202, procurementAspect#1106203, productGroup#1106204], false
(1997) Repartition
Arguments: 37, true
(1998) Join
Arguments: LeftOuter, (product#1106179 = internalUUID#1106194)
(1999) Project
Arguments: [product#1106179, plant#1106180, orderDateTime#1106181, productPlant#1106192, systemId#1106193, internalUUID#1106194, id#1106195, displayId#1106196, name#1106197, baseUnitOfMeasure#1106198, unitOfMeasures#1106199, unitOfMeasureConversions#1106200, productionAspect#1106201, salesAspect#1106202, procurementAspect#1106203, productGroup#1106204, filter(unitOfMeasureConversions#1106200, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1106192.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1106192.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1106198.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1106198.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1106205]
(2000) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106205.quantityNumerator), true, [quantityNumerator#1106206]
(2001) Project
Arguments: [product#1106179, plant#1106180, orderDateTime#1106181, productPlant#1106192, systemId#1106193, internalUUID#1106194, id#1106195, displayId#1106196, name#1106197, baseUnitOfMeasure#1106198, unitOfMeasures#1106199, unitOfMeasureConversions#1106200, productionAspect#1106201, salesAspect#1106202, procurementAspect#1106203, productGroup#1106204, filteredUnitOfMeasureConversions#1106205, quantityNumerator#1106206]
(2002) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106205.quantityDenominator), true, [quantityDenominator#1106207]
(2003) Project
Arguments: [product#1106179, plant#1106180, orderDateTime#1106181, productPlant#1106192, systemId#1106193, internalUUID#1106194, id#1106195, displayId#1106196, name#1106197, baseUnitOfMeasure#1106198, unitOfMeasures#1106199, unitOfMeasureConversions#1106200, productionAspect#1106201, salesAspect#1106202, procurementAspect#1106203, productGroup#1106204, filteredUnitOfMeasureConversions#1106205, quantityNumerator#1106206, quantityDenominator#1106207]
(2004) Project
Arguments: [product#1106179, plant#1106180, orderDateTime#1106181, productPlant#1106192, systemId#1106193, internalUUID#1106194, id#1106195, displayId#1106196, name#1106197, baseUnitOfMeasure#1106198, unitOfMeasures#1106199, unitOfMeasureConversions#1106200, productionAspect#1106201, salesAspect#1106202, procurementAspect#1106203, productGroup#1106204, filteredUnitOfMeasureConversions#1106205, quantityNumerator#1106206, quantityDenominator#1106207, (cast(quantityNumerator#1106206 as double) / cast(quantityDenominator#1106207 as double)) AS outboundUnit#1106208]
(2005) Project
Arguments: [product#1106179, plant#1106180, orderDateTime#1106181, productPlant#1106192, systemId#1106193, internalUUID#1106194, id#1106195, displayId#1106196, name#1106197, baseUnitOfMeasure#1106198, unitOfMeasures#1106199, unitOfMeasureConversions#1106200, productionAspect#1106201, salesAspect#1106202, procurementAspect#1106203, productGroup#1106204, filteredUnitOfMeasureConversions#1106205, quantityNumerator#1106206, quantityDenominator#1106207, CASE WHEN (isnull(outboundUnit#1106208) OR (outboundUnit#1106208 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1106208 END AS outboundUnit#1106209]
(2006) Project
Arguments: [product#1106179, plant#1106180, orderDateTime#1106181, productPlant#1106192, outboundUnit#1106209]
(2007) Project
Arguments: [plant#1106180]
(2008) Deduplicate
Arguments: [plant#1106180]
(2009) Join
Arguments: Inner, (plantUuid#1106176 = plant#1106180)
(2010) Project
Arguments: [plantId#1106175, plantUuid#1106176, storageLocId#1106177, storageLocUuid#1106178]
(2011) Join
Arguments: Inner, (plant#1106149.internalRefUUID <=> plantUuid#1106176)
(2012) Generate
Arguments: explode(filter(stockQuantities#1106151, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1106178) AND (lambda x#1101337.storageLocation.Id = storageLocId#1106177)), lambda x#1101337, false))), false, [stockQuantity#1106210]
(2013) Project
Arguments: [systemId#1106146, internalUUID#1106147, product#1106148, plant#1106149, calculationDateTime#1106150, stockQuantities#1106151, plantId#1106175, plantUuid#1106176, storageLocId#1106177, storageLocUuid#1106178, stockQuantity#1106210]
(2014) Aggregate
Arguments: [plantUuid#1106176, internalUUID#1106147, plant#1106149, product#1106148, systemId#1106146], [plantUuid#1106176, internalUUID#1106147, plant#1106149, product#1106148, systemId#1106146, first(calculationDateTime#1106150, false) AS calculationDateTime#1106211, collect_list(stockQuantity#1106210, 0, 0) AS stockQuantities#1106212]
(2015) Project
Arguments: [systemId#1106146, internalUUID#1106147, product#1106148, plant#1106149, calculationDateTime#1106211, stockQuantities#1106212]
(2016) Generate
Arguments: explode(stockQuantities#1106212), false, [stockQuantity#1106213]
(2017) Project
Arguments: [systemId#1106146, internalUUID#1106147, product#1106148, plant#1106149, calculationDateTime#1106211, stockQuantities#1106212, stockQuantity#1106213]
(2018) Project
Arguments: [plant#1106149.id AS plant#1106214, plant#1106149.internalRefUUID AS plantUuid#1106215, product#1106148.id AS product#1106216, product#1106148.internalRefUUID AS productUuid#1106217, calculationDateTime#1106211, stockQuantity#1106213.storagelocation.id AS storageLocId#1106218, stockQuantity#1106213.storagelocation.internalRefUUID AS storageLocUuid#1106219, stockQuantity#1106213.quantity.measure AS quantity#1106220, stockQuantity#1106213.specialStockIndicator.code AS specialStockIndicator#1106221, stockQuantity#1106213.stockType.code AS stockType#1106222]
(2019) Filter
Arguments: ((specialStockIndicator#1106221 = ) AND (stockType#1106222 = 01))
(2020) LogicalRelation
Arguments: parquet, [product#1106223, plant#1106224, orderDateTime#1106225, planningStartDateTime#1106226], false
(2021) RepartitionByExpression
Arguments: [product#1106223, plant#1106224], 37
(2022) Project
Arguments: [product#1106223, plant#1106224, orderDateTime#1106225]
(2023) LogicalRelation
Arguments: parquet, [systemId#1106227, internalUUID#1106228, plant#1106229, product#1106230, blockedForReplenishmentStartingFrom#1106231, productionAspect#1106232, salesPlant#1106233, listing#1106234, sourceOfSupplyCategory#1106235], false
(2024) Repartition
Arguments: 37, true
(2025) Project
Arguments: [systemId#1106227, internalUUID#1106228, plant#1106229, product#1106230, blockedForReplenishmentStartingFrom#1106231, productionAspect#1106232, salesPlant#1106233, listing#1106234, sourceOfSupplyCategory#1106235, struct(systemId, systemId#1106227, internalUUID, internalUUID#1106228, plant, plant#1106229, product, product#1106230, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1106231, productionAspect, productionAspect#1106232, salesPlant, salesPlant#1106233, listing, listing#1106234, sourceOfSupplyCategory, sourceOfSupplyCategory#1106235) AS productPlant#1106236]
(2026) Project
Arguments: [productPlant#1106236]
(2027) Join
Arguments: LeftOuter, ((product#1106223 <=> productPlant#1106236.product.internalRefUUID) AND (plant#1106224 <=> productPlant#1106236.plant.internalRefUUID))
(2028) Project
Arguments: [product#1106223, plant#1106224, orderDateTime#1106225, productPlant#1106236]
(2029) LogicalRelation
Arguments: parquet, [systemId#1106237, internalUUID#1106238, id#1106239, displayId#1106240, name#1106241, baseUnitOfMeasure#1106242, unitOfMeasures#1106243, unitOfMeasureConversions#1106244, productionAspect#1106245, salesAspect#1106246, procurementAspect#1106247, productGroup#1106248], false
(2030) Repartition
Arguments: 37, true
(2031) Join
Arguments: LeftOuter, (product#1106223 = internalUUID#1106238)
(2032) Project
Arguments: [product#1106223, plant#1106224, orderDateTime#1106225, productPlant#1106236, systemId#1106237, internalUUID#1106238, id#1106239, displayId#1106240, name#1106241, baseUnitOfMeasure#1106242, unitOfMeasures#1106243, unitOfMeasureConversions#1106244, productionAspect#1106245, salesAspect#1106246, procurementAspect#1106247, productGroup#1106248, filter(unitOfMeasureConversions#1106244, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1106236.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1106236.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1106242.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1106242.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1106249]
(2033) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106249.quantityNumerator), true, [quantityNumerator#1106250]
(2034) Project
Arguments: [product#1106223, plant#1106224, orderDateTime#1106225, productPlant#1106236, systemId#1106237, internalUUID#1106238, id#1106239, displayId#1106240, name#1106241, baseUnitOfMeasure#1106242, unitOfMeasures#1106243, unitOfMeasureConversions#1106244, productionAspect#1106245, salesAspect#1106246, procurementAspect#1106247, productGroup#1106248, filteredUnitOfMeasureConversions#1106249, quantityNumerator#1106250]
(2035) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106249.quantityDenominator), true, [quantityDenominator#1106251]
(2036) Project
Arguments: [product#1106223, plant#1106224, orderDateTime#1106225, productPlant#1106236, systemId#1106237, internalUUID#1106238, id#1106239, displayId#1106240, name#1106241, baseUnitOfMeasure#1106242, unitOfMeasures#1106243, unitOfMeasureConversions#1106244, productionAspect#1106245, salesAspect#1106246, procurementAspect#1106247, productGroup#1106248, filteredUnitOfMeasureConversions#1106249, quantityNumerator#1106250, quantityDenominator#1106251]
(2037) Project
Arguments: [product#1106223, plant#1106224, orderDateTime#1106225, productPlant#1106236, systemId#1106237, internalUUID#1106238, id#1106239, displayId#1106240, name#1106241, baseUnitOfMeasure#1106242, unitOfMeasures#1106243, unitOfMeasureConversions#1106244, productionAspect#1106245, salesAspect#1106246, procurementAspect#1106247, productGroup#1106248, filteredUnitOfMeasureConversions#1106249, quantityNumerator#1106250, quantityDenominator#1106251, (cast(quantityNumerator#1106250 as double) / cast(quantityDenominator#1106251 as double)) AS outboundUnit#1106252]
(2038) Project
Arguments: [product#1106223, plant#1106224, orderDateTime#1106225, productPlant#1106236, systemId#1106237, internalUUID#1106238, id#1106239, displayId#1106240, name#1106241, baseUnitOfMeasure#1106242, unitOfMeasures#1106243, unitOfMeasureConversions#1106244, productionAspect#1106245, salesAspect#1106246, procurementAspect#1106247, productGroup#1106248, filteredUnitOfMeasureConversions#1106249, quantityNumerator#1106250, quantityDenominator#1106251, CASE WHEN (isnull(outboundUnit#1106252) OR (outboundUnit#1106252 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1106252 END AS outboundUnit#1106253]
(2039) Project
Arguments: [product#1106223, plant#1106224, orderDateTime#1106225, productPlant#1106236, outboundUnit#1106253]
(2040) Join
Arguments: Inner, ((plantUuid#1106215 = plant#1106224) AND (productUuid#1106217 = product#1106223))
(2041) Filter
Arguments: (calculationDateTime#1106211 <= orderDateTime#1106225)
(2042) Project
Arguments: [plantUuid#1106215 AS plant#1106254, productUuid#1106217 AS product#1106255, storageLocId#1106218, calculationDateTime#1106211, quantity#1106220]
(2043) Aggregate
Arguments: [plant#1106254, product#1106255, storageLocId#1106218], [plant#1106254, product#1106255, storageLocId#1106218, max(calculationDateTime#1106211) AS max_calc_datetime#1106256]
(2044) Join
Arguments: Inner, ((((plant#1106144 <=> plant#1106254) AND (product#1106145 <=> product#1106255)) AND (storageLocId#1106108 <=> storageLocId#1106218)) AND (calculationDateTime#1106101 <=> max_calc_datetime#1106256))
(2045) Project
Arguments: [plant#1106144, product#1106145, storageLocId#1106108, calculationDateTime#1106101, quantity#1106110]
(2046) Aggregate
Arguments: [product#1106145, plant#1106144], [product#1106145, plant#1106144, sum(quantity#1106110) AS quantitySum#1106257, min(calculationDateTime#1106101) AS minCalculationDateTime#1106258]
(2047) Project
Arguments: [product#1106145, plant#1106144, quantitySum#1106257, minCalculationDateTime#1106258, round(quantitySum#1106257, 0) AS roundedQuantitySum#1106259]
(2048) Join
Arguments: LeftOuter, ((plant#1106006 = plant#1106144) AND (product#1106005 = product#1106145))
(2049) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, outboundUnit#1106035, roundedQuantitySum#1106259, minCalculationDateTime#1106258]
(2050) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, outboundUnit#1106035, roundedQuantitySum#1106259, minCalculationDateTime#1106258, CASE WHEN isnotnull(minCalculationDateTime#1106258) THEN minCalculationDateTime#1106258 ELSE orderDateTime#1106007 END AS stockDatetime#1106260]
(2051) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, outboundUnit#1106035, roundedQuantitySum#1106259, minCalculationDateTime#1106258, stockDatetime#1106260, CASE WHEN isnotnull(roundedQuantitySum#1106259) THEN array(roundedQuantitySum#1106259) ELSE array(0.0) END AS stockBatchQuantities#1106261]
(2052) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, outboundUnit#1106035, roundedQuantitySum#1106259, minCalculationDateTime#1106258, stockDatetime#1106260, stockBatchQuantities#1106261, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1106262]
(2053) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, outboundUnit#1106035, roundedQuantitySum#1106259, stockDatetime#1106260, stockBatchQuantities#1106261, stockBatchShelfLifeEndDatetimes#1106262]
(2054) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, outboundUnit#1106035, stockDatetime#1106260, stockBatchQuantities#1106261, stockBatchShelfLifeEndDatetimes#1106262]
(2055) LogicalRelation
Arguments: parquet, [product#1106263, plant#1106264, orderDateTime#1106265, planningStartDateTime#1106266], false
(2056) RepartitionByExpression
Arguments: [product#1106263, plant#1106264], 37
(2057) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265]
(2058) LogicalRelation
Arguments: parquet, [systemId#1106267, internalUUID#1106268, plant#1106269, product#1106270, blockedForReplenishmentStartingFrom#1106271, productionAspect#1106272, salesPlant#1106273, listing#1106274, sourceOfSupplyCategory#1106275], false
(2059) Repartition
Arguments: 37, true
(2060) Project
Arguments: [systemId#1106267, internalUUID#1106268, plant#1106269, product#1106270, blockedForReplenishmentStartingFrom#1106271, productionAspect#1106272, salesPlant#1106273, listing#1106274, sourceOfSupplyCategory#1106275, struct(systemId, systemId#1106267, internalUUID, internalUUID#1106268, plant, plant#1106269, product, product#1106270, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1106271, productionAspect, productionAspect#1106272, salesPlant, salesPlant#1106273, listing, listing#1106274, sourceOfSupplyCategory, sourceOfSupplyCategory#1106275) AS productPlant#1106276]
(2061) Project
Arguments: [productPlant#1106276]
(2062) Join
Arguments: LeftOuter, ((product#1106263 <=> productPlant#1106276.product.internalRefUUID) AND (plant#1106264 <=> productPlant#1106276.plant.internalRefUUID))
(2063) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276]
(2064) LogicalRelation
Arguments: parquet, [systemId#1106277, internalUUID#1106278, id#1106279, displayId#1106280, name#1106281, baseUnitOfMeasure#1106282, unitOfMeasures#1106283, unitOfMeasureConversions#1106284, productionAspect#1106285, salesAspect#1106286, procurementAspect#1106287, productGroup#1106288], false
(2065) Repartition
Arguments: 37, true
(2066) Join
Arguments: LeftOuter, (product#1106263 = internalUUID#1106278)
(2067) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, systemId#1106277, internalUUID#1106278, id#1106279, displayId#1106280, name#1106281, baseUnitOfMeasure#1106282, unitOfMeasures#1106283, unitOfMeasureConversions#1106284, productionAspect#1106285, salesAspect#1106286, procurementAspect#1106287, productGroup#1106288, filter(unitOfMeasureConversions#1106284, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1106276.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1106276.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1106282.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1106282.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1106289]
(2068) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106289.quantityNumerator), true, [quantityNumerator#1106290]
(2069) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, systemId#1106277, internalUUID#1106278, id#1106279, displayId#1106280, name#1106281, baseUnitOfMeasure#1106282, unitOfMeasures#1106283, unitOfMeasureConversions#1106284, productionAspect#1106285, salesAspect#1106286, procurementAspect#1106287, productGroup#1106288, filteredUnitOfMeasureConversions#1106289, quantityNumerator#1106290]
(2070) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106289.quantityDenominator), true, [quantityDenominator#1106291]
(2071) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, systemId#1106277, internalUUID#1106278, id#1106279, displayId#1106280, name#1106281, baseUnitOfMeasure#1106282, unitOfMeasures#1106283, unitOfMeasureConversions#1106284, productionAspect#1106285, salesAspect#1106286, procurementAspect#1106287, productGroup#1106288, filteredUnitOfMeasureConversions#1106289, quantityNumerator#1106290, quantityDenominator#1106291]
(2072) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, systemId#1106277, internalUUID#1106278, id#1106279, displayId#1106280, name#1106281, baseUnitOfMeasure#1106282, unitOfMeasures#1106283, unitOfMeasureConversions#1106284, productionAspect#1106285, salesAspect#1106286, procurementAspect#1106287, productGroup#1106288, filteredUnitOfMeasureConversions#1106289, quantityNumerator#1106290, quantityDenominator#1106291, (cast(quantityNumerator#1106290 as double) / cast(quantityDenominator#1106291 as double)) AS outboundUnit#1106292]
(2073) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, systemId#1106277, internalUUID#1106278, id#1106279, displayId#1106280, name#1106281, baseUnitOfMeasure#1106282, unitOfMeasures#1106283, unitOfMeasureConversions#1106284, productionAspect#1106285, salesAspect#1106286, procurementAspect#1106287, productGroup#1106288, filteredUnitOfMeasureConversions#1106289, quantityNumerator#1106290, quantityDenominator#1106291, CASE WHEN (isnull(outboundUnit#1106292) OR (outboundUnit#1106292 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1106292 END AS outboundUnit#1106293]
(2074) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, outboundUnit#1106293]
(2075) LogicalRelation
Arguments: parquet, [systemId#1106294, internalUUID#1106295, product#1106296, plant#1106297, calculationDateTime#1106298, stockQuantities#1106299], false
(2076) Repartition
Arguments: 37, true
(2077) LogicalRelation
Arguments: parquet, [marketUnit#1106300, description#1106301, articleHierarchy#1106302, defaultCurrency#1106303, responsibilities#1106304, replenishmentTypes#1106305, distributionCenters#1106306, assignedArticleHierarchyNodes#1106307, minOrderQtySetting#1106308, listingCheck#1106309, odsSelection#1106310, demandProfiles#1106311, constraintProfiles#1106312, optimizationProfiles#1106313, orderGroupSplitProfiles#1106314, supplierMinimumProfiles#1106315, multipleRestrictionProfiles#1106316, preferredUomSource#1106317, handlingOfUnfulfilledDemands#1106318, negligibleQuantitiesThreshold#1106319, eventtype#1106320], false
(2078) Repartition
Arguments: 37, true
(2079) Filter
Arguments: (marketUnit#1106300 <=> AUTO_ALL_ProdLoc)
(2080) Project
Arguments: [marketUnit#1106300, description#1106301, articleHierarchy#1106302, defaultCurrency#1106303, responsibilities#1106304, replenishmentTypes#1106305, distributionCenters#1106306, assignedArticleHierarchyNodes#1106307, minOrderQtySetting#1106308, listingCheck#1106309, odsSelection#1106310, demandProfiles#1106311, constraintProfiles#1106312, optimizationProfiles#1106313, orderGroupSplitProfiles#1106314, supplierMinimumProfiles#1106315, multipleRestrictionProfiles#1106316, preferredUomSource#1106317, handlingOfUnfulfilledDemands#1106318, negligibleQuantitiesThreshold#1106319, eventtype#1106320]
(2081) Project
Arguments: [distributionCenters#1106306]
(2082) Generate
Arguments: explode(distributionCenters#1106306), false, [distributionCenters#1106321]
(2083) Project
Arguments: [distributionCenters#1106321]
(2084) Generate
Arguments: explode(distributionCenters#1106321.storageLocations), false, [storageLocations#1106322]
(2085) Project
Arguments: [distributionCenters#1106321.id AS plantId#1106323, distributionCenters#1106321.internalRefUUID AS plantUuid#1106324, storageLocations#1106322]
(2086) Project
Arguments: [plantId#1106323, plantUuid#1106324, storageLocations#1106322.id AS storageLocId#1106325, storageLocations#1106322.internalRefUUID AS storageLocUuid#1106326]
(2087) LogicalRelation
Arguments: parquet, [product#1106327, plant#1106328, orderDateTime#1106329, planningStartDateTime#1106330], false
(2088) RepartitionByExpression
Arguments: [product#1106327, plant#1106328], 37
(2089) Project
Arguments: [product#1106327, plant#1106328, orderDateTime#1106329]
(2090) LogicalRelation
Arguments: parquet, [systemId#1106331, internalUUID#1106332, plant#1106333, product#1106334, blockedForReplenishmentStartingFrom#1106335, productionAspect#1106336, salesPlant#1106337, listing#1106338, sourceOfSupplyCategory#1106339], false
(2091) Repartition
Arguments: 37, true
(2092) Project
Arguments: [systemId#1106331, internalUUID#1106332, plant#1106333, product#1106334, blockedForReplenishmentStartingFrom#1106335, productionAspect#1106336, salesPlant#1106337, listing#1106338, sourceOfSupplyCategory#1106339, struct(systemId, systemId#1106331, internalUUID, internalUUID#1106332, plant, plant#1106333, product, product#1106334, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1106335, productionAspect, productionAspect#1106336, salesPlant, salesPlant#1106337, listing, listing#1106338, sourceOfSupplyCategory, sourceOfSupplyCategory#1106339) AS productPlant#1106340]
(2093) Project
Arguments: [productPlant#1106340]
(2094) Join
Arguments: LeftOuter, ((product#1106327 <=> productPlant#1106340.product.internalRefUUID) AND (plant#1106328 <=> productPlant#1106340.plant.internalRefUUID))
(2095) Project
Arguments: [product#1106327, plant#1106328, orderDateTime#1106329, productPlant#1106340]
(2096) LogicalRelation
Arguments: parquet, [systemId#1106341, internalUUID#1106342, id#1106343, displayId#1106344, name#1106345, baseUnitOfMeasure#1106346, unitOfMeasures#1106347, unitOfMeasureConversions#1106348, productionAspect#1106349, salesAspect#1106350, procurementAspect#1106351, productGroup#1106352], false
(2097) Repartition
Arguments: 37, true
(2098) Join
Arguments: LeftOuter, (product#1106327 = internalUUID#1106342)
(2099) Project
Arguments: [product#1106327, plant#1106328, orderDateTime#1106329, productPlant#1106340, systemId#1106341, internalUUID#1106342, id#1106343, displayId#1106344, name#1106345, baseUnitOfMeasure#1106346, unitOfMeasures#1106347, unitOfMeasureConversions#1106348, productionAspect#1106349, salesAspect#1106350, procurementAspect#1106351, productGroup#1106352, filter(unitOfMeasureConversions#1106348, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1106340.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1106340.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1106346.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1106346.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1106353]
(2100) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106353.quantityNumerator), true, [quantityNumerator#1106354]
(2101) Project
Arguments: [product#1106327, plant#1106328, orderDateTime#1106329, productPlant#1106340, systemId#1106341, internalUUID#1106342, id#1106343, displayId#1106344, name#1106345, baseUnitOfMeasure#1106346, unitOfMeasures#1106347, unitOfMeasureConversions#1106348, productionAspect#1106349, salesAspect#1106350, procurementAspect#1106351, productGroup#1106352, filteredUnitOfMeasureConversions#1106353, quantityNumerator#1106354]
(2102) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106353.quantityDenominator), true, [quantityDenominator#1106355]
(2103) Project
Arguments: [product#1106327, plant#1106328, orderDateTime#1106329, productPlant#1106340, systemId#1106341, internalUUID#1106342, id#1106343, displayId#1106344, name#1106345, baseUnitOfMeasure#1106346, unitOfMeasures#1106347, unitOfMeasureConversions#1106348, productionAspect#1106349, salesAspect#1106350, procurementAspect#1106351, productGroup#1106352, filteredUnitOfMeasureConversions#1106353, quantityNumerator#1106354, quantityDenominator#1106355]
(2104) Project
Arguments: [product#1106327, plant#1106328, orderDateTime#1106329, productPlant#1106340, systemId#1106341, internalUUID#1106342, id#1106343, displayId#1106344, name#1106345, baseUnitOfMeasure#1106346, unitOfMeasures#1106347, unitOfMeasureConversions#1106348, productionAspect#1106349, salesAspect#1106350, procurementAspect#1106351, productGroup#1106352, filteredUnitOfMeasureConversions#1106353, quantityNumerator#1106354, quantityDenominator#1106355, (cast(quantityNumerator#1106354 as double) / cast(quantityDenominator#1106355 as double)) AS outboundUnit#1106356]
(2105) Project
Arguments: [product#1106327, plant#1106328, orderDateTime#1106329, productPlant#1106340, systemId#1106341, internalUUID#1106342, id#1106343, displayId#1106344, name#1106345, baseUnitOfMeasure#1106346, unitOfMeasures#1106347, unitOfMeasureConversions#1106348, productionAspect#1106349, salesAspect#1106350, procurementAspect#1106351, productGroup#1106352, filteredUnitOfMeasureConversions#1106353, quantityNumerator#1106354, quantityDenominator#1106355, CASE WHEN (isnull(outboundUnit#1106356) OR (outboundUnit#1106356 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1106356 END AS outboundUnit#1106357]
(2106) Project
Arguments: [product#1106327, plant#1106328, orderDateTime#1106329, productPlant#1106340, outboundUnit#1106357]
(2107) Project
Arguments: [plant#1106328]
(2108) Deduplicate
Arguments: [plant#1106328]
(2109) Join
Arguments: Inner, (plantUuid#1106324 = plant#1106328)
(2110) Project
Arguments: [plantId#1106323, plantUuid#1106324, storageLocId#1106325, storageLocUuid#1106326]
(2111) Join
Arguments: Inner, (plant#1106297.internalRefUUID <=> plantUuid#1106324)
(2112) Generate
Arguments: explode(filter(stockQuantities#1106299, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1106326) AND (lambda x#1101337.storageLocation.Id = storageLocId#1106325)), lambda x#1101337, false))), false, [stockQuantity#1106358]
(2113) Project
Arguments: [systemId#1106294, internalUUID#1106295, product#1106296, plant#1106297, calculationDateTime#1106298, stockQuantities#1106299, plantId#1106323, plantUuid#1106324, storageLocId#1106325, storageLocUuid#1106326, stockQuantity#1106358]
(2114) Aggregate
Arguments: [plantUuid#1106324, internalUUID#1106295, plant#1106297, product#1106296, systemId#1106294], [plantUuid#1106324, internalUUID#1106295, plant#1106297, product#1106296, systemId#1106294, first(calculationDateTime#1106298, false) AS calculationDateTime#1106359, collect_list(stockQuantity#1106358, 0, 0) AS stockQuantities#1106360]
(2115) Project
Arguments: [systemId#1106294, internalUUID#1106295, product#1106296, plant#1106297, calculationDateTime#1106359, stockQuantities#1106360]
(2116) Generate
Arguments: explode(stockQuantities#1106360), false, [stockQuantity#1106361]
(2117) Project
Arguments: [systemId#1106294, internalUUID#1106295, product#1106296, plant#1106297, calculationDateTime#1106359, stockQuantities#1106360, stockQuantity#1106361]
(2118) Project
Arguments: [plant#1106297.id AS plant#1106362, plant#1106297.internalRefUUID AS plantUuid#1106363, product#1106296.id AS product#1106364, product#1106296.internalRefUUID AS productUuid#1106365, calculationDateTime#1106359, stockQuantity#1106361.storagelocation.id AS storageLocId#1106366, stockQuantity#1106361.storagelocation.internalRefUUID AS storageLocUuid#1106367, stockQuantity#1106361.quantity.measure AS quantity#1106368, stockQuantity#1106361.specialStockIndicator.code AS specialStockIndicator#1106369, stockQuantity#1106361.stockType.code AS stockType#1106370]
(2119) Filter
Arguments: ((specialStockIndicator#1106369 = ) AND (stockType#1106370 = 01))
(2120) LogicalRelation
Arguments: parquet, [product#1106371, plant#1106372, orderDateTime#1106373, planningStartDateTime#1106374], false
(2121) RepartitionByExpression
Arguments: [product#1106371, plant#1106372], 37
(2122) Project
Arguments: [product#1106371, plant#1106372, orderDateTime#1106373]
(2123) LogicalRelation
Arguments: parquet, [systemId#1106375, internalUUID#1106376, plant#1106377, product#1106378, blockedForReplenishmentStartingFrom#1106379, productionAspect#1106380, salesPlant#1106381, listing#1106382, sourceOfSupplyCategory#1106383], false
(2124) Repartition
Arguments: 37, true
(2125) Project
Arguments: [systemId#1106375, internalUUID#1106376, plant#1106377, product#1106378, blockedForReplenishmentStartingFrom#1106379, productionAspect#1106380, salesPlant#1106381, listing#1106382, sourceOfSupplyCategory#1106383, struct(systemId, systemId#1106375, internalUUID, internalUUID#1106376, plant, plant#1106377, product, product#1106378, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1106379, productionAspect, productionAspect#1106380, salesPlant, salesPlant#1106381, listing, listing#1106382, sourceOfSupplyCategory, sourceOfSupplyCategory#1106383) AS productPlant#1106384]
(2126) Project
Arguments: [productPlant#1106384]
(2127) Join
Arguments: LeftOuter, ((product#1106371 <=> productPlant#1106384.product.internalRefUUID) AND (plant#1106372 <=> productPlant#1106384.plant.internalRefUUID))
(2128) Project
Arguments: [product#1106371, plant#1106372, orderDateTime#1106373, productPlant#1106384]
(2129) LogicalRelation
Arguments: parquet, [systemId#1106385, internalUUID#1106386, id#1106387, displayId#1106388, name#1106389, baseUnitOfMeasure#1106390, unitOfMeasures#1106391, unitOfMeasureConversions#1106392, productionAspect#1106393, salesAspect#1106394, procurementAspect#1106395, productGroup#1106396], false
(2130) Repartition
Arguments: 37, true
(2131) Join
Arguments: LeftOuter, (product#1106371 = internalUUID#1106386)
(2132) Project
Arguments: [product#1106371, plant#1106372, orderDateTime#1106373, productPlant#1106384, systemId#1106385, internalUUID#1106386, id#1106387, displayId#1106388, name#1106389, baseUnitOfMeasure#1106390, unitOfMeasures#1106391, unitOfMeasureConversions#1106392, productionAspect#1106393, salesAspect#1106394, procurementAspect#1106395, productGroup#1106396, filter(unitOfMeasureConversions#1106392, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1106384.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1106384.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1106390.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1106390.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1106397]
(2133) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106397.quantityNumerator), true, [quantityNumerator#1106398]
(2134) Project
Arguments: [product#1106371, plant#1106372, orderDateTime#1106373, productPlant#1106384, systemId#1106385, internalUUID#1106386, id#1106387, displayId#1106388, name#1106389, baseUnitOfMeasure#1106390, unitOfMeasures#1106391, unitOfMeasureConversions#1106392, productionAspect#1106393, salesAspect#1106394, procurementAspect#1106395, productGroup#1106396, filteredUnitOfMeasureConversions#1106397, quantityNumerator#1106398]
(2135) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106397.quantityDenominator), true, [quantityDenominator#1106399]
(2136) Project
Arguments: [product#1106371, plant#1106372, orderDateTime#1106373, productPlant#1106384, systemId#1106385, internalUUID#1106386, id#1106387, displayId#1106388, name#1106389, baseUnitOfMeasure#1106390, unitOfMeasures#1106391, unitOfMeasureConversions#1106392, productionAspect#1106393, salesAspect#1106394, procurementAspect#1106395, productGroup#1106396, filteredUnitOfMeasureConversions#1106397, quantityNumerator#1106398, quantityDenominator#1106399]
(2137) Project
Arguments: [product#1106371, plant#1106372, orderDateTime#1106373, productPlant#1106384, systemId#1106385, internalUUID#1106386, id#1106387, displayId#1106388, name#1106389, baseUnitOfMeasure#1106390, unitOfMeasures#1106391, unitOfMeasureConversions#1106392, productionAspect#1106393, salesAspect#1106394, procurementAspect#1106395, productGroup#1106396, filteredUnitOfMeasureConversions#1106397, quantityNumerator#1106398, quantityDenominator#1106399, (cast(quantityNumerator#1106398 as double) / cast(quantityDenominator#1106399 as double)) AS outboundUnit#1106400]
(2138) Project
Arguments: [product#1106371, plant#1106372, orderDateTime#1106373, productPlant#1106384, systemId#1106385, internalUUID#1106386, id#1106387, displayId#1106388, name#1106389, baseUnitOfMeasure#1106390, unitOfMeasures#1106391, unitOfMeasureConversions#1106392, productionAspect#1106393, salesAspect#1106394, procurementAspect#1106395, productGroup#1106396, filteredUnitOfMeasureConversions#1106397, quantityNumerator#1106398, quantityDenominator#1106399, CASE WHEN (isnull(outboundUnit#1106400) OR (outboundUnit#1106400 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1106400 END AS outboundUnit#1106401]
(2139) Project
Arguments: [product#1106371, plant#1106372, orderDateTime#1106373, productPlant#1106384, outboundUnit#1106401]
(2140) Join
Arguments: Inner, ((plantUuid#1106363 = plant#1106372) AND (productUuid#1106365 = product#1106371))
(2141) Filter
Arguments: (calculationDateTime#1106359 <= orderDateTime#1106373)
(2142) Project
Arguments: [plantUuid#1106363 AS plant#1106402, productUuid#1106365 AS product#1106403, storageLocId#1106366, calculationDateTime#1106359, quantity#1106368]
(2143) LogicalRelation
Arguments: parquet, [systemId#1106404, internalUUID#1106405, product#1106406, plant#1106407, calculationDateTime#1106408, stockQuantities#1106409], false
(2144) Repartition
Arguments: 37, true
(2145) LogicalRelation
Arguments: parquet, [marketUnit#1106410, description#1106411, articleHierarchy#1106412, defaultCurrency#1106413, responsibilities#1106414, replenishmentTypes#1106415, distributionCenters#1106416, assignedArticleHierarchyNodes#1106417, minOrderQtySetting#1106418, listingCheck#1106419, odsSelection#1106420, demandProfiles#1106421, constraintProfiles#1106422, optimizationProfiles#1106423, orderGroupSplitProfiles#1106424, supplierMinimumProfiles#1106425, multipleRestrictionProfiles#1106426, preferredUomSource#1106427, handlingOfUnfulfilledDemands#1106428, negligibleQuantitiesThreshold#1106429, eventtype#1106430], false
(2146) Repartition
Arguments: 37, true
(2147) Filter
Arguments: (marketUnit#1106410 <=> AUTO_ALL_ProdLoc)
(2148) Project
Arguments: [marketUnit#1106410, description#1106411, articleHierarchy#1106412, defaultCurrency#1106413, responsibilities#1106414, replenishmentTypes#1106415, distributionCenters#1106416, assignedArticleHierarchyNodes#1106417, minOrderQtySetting#1106418, listingCheck#1106419, odsSelection#1106420, demandProfiles#1106421, constraintProfiles#1106422, optimizationProfiles#1106423, orderGroupSplitProfiles#1106424, supplierMinimumProfiles#1106425, multipleRestrictionProfiles#1106426, preferredUomSource#1106427, handlingOfUnfulfilledDemands#1106428, negligibleQuantitiesThreshold#1106429, eventtype#1106430]
(2149) Project
Arguments: [distributionCenters#1106416]
(2150) Generate
Arguments: explode(distributionCenters#1106416), false, [distributionCenters#1106431]
(2151) Project
Arguments: [distributionCenters#1106431]
(2152) Generate
Arguments: explode(distributionCenters#1106431.storageLocations), false, [storageLocations#1106432]
(2153) Project
Arguments: [distributionCenters#1106431.id AS plantId#1106433, distributionCenters#1106431.internalRefUUID AS plantUuid#1106434, storageLocations#1106432]
(2154) Project
Arguments: [plantId#1106433, plantUuid#1106434, storageLocations#1106432.id AS storageLocId#1106435, storageLocations#1106432.internalRefUUID AS storageLocUuid#1106436]
(2155) LogicalRelation
Arguments: parquet, [product#1106437, plant#1106438, orderDateTime#1106439, planningStartDateTime#1106440], false
(2156) RepartitionByExpression
Arguments: [product#1106437, plant#1106438], 37
(2157) Project
Arguments: [product#1106437, plant#1106438, orderDateTime#1106439]
(2158) LogicalRelation
Arguments: parquet, [systemId#1106441, internalUUID#1106442, plant#1106443, product#1106444, blockedForReplenishmentStartingFrom#1106445, productionAspect#1106446, salesPlant#1106447, listing#1106448, sourceOfSupplyCategory#1106449], false
(2159) Repartition
Arguments: 37, true
(2160) Project
Arguments: [systemId#1106441, internalUUID#1106442, plant#1106443, product#1106444, blockedForReplenishmentStartingFrom#1106445, productionAspect#1106446, salesPlant#1106447, listing#1106448, sourceOfSupplyCategory#1106449, struct(systemId, systemId#1106441, internalUUID, internalUUID#1106442, plant, plant#1106443, product, product#1106444, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1106445, productionAspect, productionAspect#1106446, salesPlant, salesPlant#1106447, listing, listing#1106448, sourceOfSupplyCategory, sourceOfSupplyCategory#1106449) AS productPlant#1106450]
(2161) Project
Arguments: [productPlant#1106450]
(2162) Join
Arguments: LeftOuter, ((product#1106437 <=> productPlant#1106450.product.internalRefUUID) AND (plant#1106438 <=> productPlant#1106450.plant.internalRefUUID))
(2163) Project
Arguments: [product#1106437, plant#1106438, orderDateTime#1106439, productPlant#1106450]
(2164) LogicalRelation
Arguments: parquet, [systemId#1106451, internalUUID#1106452, id#1106453, displayId#1106454, name#1106455, baseUnitOfMeasure#1106456, unitOfMeasures#1106457, unitOfMeasureConversions#1106458, productionAspect#1106459, salesAspect#1106460, procurementAspect#1106461, productGroup#1106462], false
(2165) Repartition
Arguments: 37, true
(2166) Join
Arguments: LeftOuter, (product#1106437 = internalUUID#1106452)
(2167) Project
Arguments: [product#1106437, plant#1106438, orderDateTime#1106439, productPlant#1106450, systemId#1106451, internalUUID#1106452, id#1106453, displayId#1106454, name#1106455, baseUnitOfMeasure#1106456, unitOfMeasures#1106457, unitOfMeasureConversions#1106458, productionAspect#1106459, salesAspect#1106460, procurementAspect#1106461, productGroup#1106462, filter(unitOfMeasureConversions#1106458, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1106450.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1106450.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1106456.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1106456.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1106463]
(2168) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106463.quantityNumerator), true, [quantityNumerator#1106464]
(2169) Project
Arguments: [product#1106437, plant#1106438, orderDateTime#1106439, productPlant#1106450, systemId#1106451, internalUUID#1106452, id#1106453, displayId#1106454, name#1106455, baseUnitOfMeasure#1106456, unitOfMeasures#1106457, unitOfMeasureConversions#1106458, productionAspect#1106459, salesAspect#1106460, procurementAspect#1106461, productGroup#1106462, filteredUnitOfMeasureConversions#1106463, quantityNumerator#1106464]
(2170) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106463.quantityDenominator), true, [quantityDenominator#1106465]
(2171) Project
Arguments: [product#1106437, plant#1106438, orderDateTime#1106439, productPlant#1106450, systemId#1106451, internalUUID#1106452, id#1106453, displayId#1106454, name#1106455, baseUnitOfMeasure#1106456, unitOfMeasures#1106457, unitOfMeasureConversions#1106458, productionAspect#1106459, salesAspect#1106460, procurementAspect#1106461, productGroup#1106462, filteredUnitOfMeasureConversions#1106463, quantityNumerator#1106464, quantityDenominator#1106465]
(2172) Project
Arguments: [product#1106437, plant#1106438, orderDateTime#1106439, productPlant#1106450, systemId#1106451, internalUUID#1106452, id#1106453, displayId#1106454, name#1106455, baseUnitOfMeasure#1106456, unitOfMeasures#1106457, unitOfMeasureConversions#1106458, productionAspect#1106459, salesAspect#1106460, procurementAspect#1106461, productGroup#1106462, filteredUnitOfMeasureConversions#1106463, quantityNumerator#1106464, quantityDenominator#1106465, (cast(quantityNumerator#1106464 as double) / cast(quantityDenominator#1106465 as double)) AS outboundUnit#1106466]
(2173) Project
Arguments: [product#1106437, plant#1106438, orderDateTime#1106439, productPlant#1106450, systemId#1106451, internalUUID#1106452, id#1106453, displayId#1106454, name#1106455, baseUnitOfMeasure#1106456, unitOfMeasures#1106457, unitOfMeasureConversions#1106458, productionAspect#1106459, salesAspect#1106460, procurementAspect#1106461, productGroup#1106462, filteredUnitOfMeasureConversions#1106463, quantityNumerator#1106464, quantityDenominator#1106465, CASE WHEN (isnull(outboundUnit#1106466) OR (outboundUnit#1106466 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1106466 END AS outboundUnit#1106467]
(2174) Project
Arguments: [product#1106437, plant#1106438, orderDateTime#1106439, productPlant#1106450, outboundUnit#1106467]
(2175) Project
Arguments: [plant#1106438]
(2176) Deduplicate
Arguments: [plant#1106438]
(2177) Join
Arguments: Inner, (plantUuid#1106434 = plant#1106438)
(2178) Project
Arguments: [plantId#1106433, plantUuid#1106434, storageLocId#1106435, storageLocUuid#1106436]
(2179) Join
Arguments: Inner, (plant#1106407.internalRefUUID <=> plantUuid#1106434)
(2180) Generate
Arguments: explode(filter(stockQuantities#1106409, lambdafunction(((lambda x#1101337.storageLocation.internalRefUuid = storageLocUuid#1106436) AND (lambda x#1101337.storageLocation.Id = storageLocId#1106435)), lambda x#1101337, false))), false, [stockQuantity#1106468]
(2181) Project
Arguments: [systemId#1106404, internalUUID#1106405, product#1106406, plant#1106407, calculationDateTime#1106408, stockQuantities#1106409, plantId#1106433, plantUuid#1106434, storageLocId#1106435, storageLocUuid#1106436, stockQuantity#1106468]
(2182) Aggregate
Arguments: [plantUuid#1106434, internalUUID#1106405, plant#1106407, product#1106406, systemId#1106404], [plantUuid#1106434, internalUUID#1106405, plant#1106407, product#1106406, systemId#1106404, first(calculationDateTime#1106408, false) AS calculationDateTime#1106469, collect_list(stockQuantity#1106468, 0, 0) AS stockQuantities#1106470]
(2183) Project
Arguments: [systemId#1106404, internalUUID#1106405, product#1106406, plant#1106407, calculationDateTime#1106469, stockQuantities#1106470]
(2184) Generate
Arguments: explode(stockQuantities#1106470), false, [stockQuantity#1106471]
(2185) Project
Arguments: [systemId#1106404, internalUUID#1106405, product#1106406, plant#1106407, calculationDateTime#1106469, stockQuantities#1106470, stockQuantity#1106471]
(2186) Project
Arguments: [plant#1106407.id AS plant#1106472, plant#1106407.internalRefUUID AS plantUuid#1106473, product#1106406.id AS product#1106474, product#1106406.internalRefUUID AS productUuid#1106475, calculationDateTime#1106469, stockQuantity#1106471.storagelocation.id AS storageLocId#1106476, stockQuantity#1106471.storagelocation.internalRefUUID AS storageLocUuid#1106477, stockQuantity#1106471.quantity.measure AS quantity#1106478, stockQuantity#1106471.specialStockIndicator.code AS specialStockIndicator#1106479, stockQuantity#1106471.stockType.code AS stockType#1106480]
(2187) Filter
Arguments: ((specialStockIndicator#1106479 = ) AND (stockType#1106480 = 01))
(2188) LogicalRelation
Arguments: parquet, [product#1106481, plant#1106482, orderDateTime#1106483, planningStartDateTime#1106484], false
(2189) RepartitionByExpression
Arguments: [product#1106481, plant#1106482], 37
(2190) Project
Arguments: [product#1106481, plant#1106482, orderDateTime#1106483]
(2191) LogicalRelation
Arguments: parquet, [systemId#1106485, internalUUID#1106486, plant#1106487, product#1106488, blockedForReplenishmentStartingFrom#1106489, productionAspect#1106490, salesPlant#1106491, listing#1106492, sourceOfSupplyCategory#1106493], false
(2192) Repartition
Arguments: 37, true
(2193) Project
Arguments: [systemId#1106485, internalUUID#1106486, plant#1106487, product#1106488, blockedForReplenishmentStartingFrom#1106489, productionAspect#1106490, salesPlant#1106491, listing#1106492, sourceOfSupplyCategory#1106493, struct(systemId, systemId#1106485, internalUUID, internalUUID#1106486, plant, plant#1106487, product, product#1106488, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1106489, productionAspect, productionAspect#1106490, salesPlant, salesPlant#1106491, listing, listing#1106492, sourceOfSupplyCategory, sourceOfSupplyCategory#1106493) AS productPlant#1106494]
(2194) Project
Arguments: [productPlant#1106494]
(2195) Join
Arguments: LeftOuter, ((product#1106481 <=> productPlant#1106494.product.internalRefUUID) AND (plant#1106482 <=> productPlant#1106494.plant.internalRefUUID))
(2196) Project
Arguments: [product#1106481, plant#1106482, orderDateTime#1106483, productPlant#1106494]
(2197) LogicalRelation
Arguments: parquet, [systemId#1106495, internalUUID#1106496, id#1106497, displayId#1106498, name#1106499, baseUnitOfMeasure#1106500, unitOfMeasures#1106501, unitOfMeasureConversions#1106502, productionAspect#1106503, salesAspect#1106504, procurementAspect#1106505, productGroup#1106506], false
(2198) Repartition
Arguments: 37, true
(2199) Join
Arguments: LeftOuter, (product#1106481 = internalUUID#1106496)
(2200) Project
Arguments: [product#1106481, plant#1106482, orderDateTime#1106483, productPlant#1106494, systemId#1106495, internalUUID#1106496, id#1106497, displayId#1106498, name#1106499, baseUnitOfMeasure#1106500, unitOfMeasures#1106501, unitOfMeasureConversions#1106502, productionAspect#1106503, salesAspect#1106504, procurementAspect#1106505, productGroup#1106506, filter(unitOfMeasureConversions#1106502, lambdafunction((((lambda u#1101207.measurementUnit1.code = productPlant#1106494.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1101207.measurementUnit1.internalRefUUID = productPlant#1106494.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1101207.measurementUnit2.code = baseUnitOfMeasure#1106500.code) AND (lambda u#1101207.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1106500.internalRefUUID))), lambda u#1101207, false)) AS filteredUnitOfMeasureConversions#1106507]
(2201) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106507.quantityNumerator), true, [quantityNumerator#1106508]
(2202) Project
Arguments: [product#1106481, plant#1106482, orderDateTime#1106483, productPlant#1106494, systemId#1106495, internalUUID#1106496, id#1106497, displayId#1106498, name#1106499, baseUnitOfMeasure#1106500, unitOfMeasures#1106501, unitOfMeasureConversions#1106502, productionAspect#1106503, salesAspect#1106504, procurementAspect#1106505, productGroup#1106506, filteredUnitOfMeasureConversions#1106507, quantityNumerator#1106508]
(2203) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1106507.quantityDenominator), true, [quantityDenominator#1106509]
(2204) Project
Arguments: [product#1106481, plant#1106482, orderDateTime#1106483, productPlant#1106494, systemId#1106495, internalUUID#1106496, id#1106497, displayId#1106498, name#1106499, baseUnitOfMeasure#1106500, unitOfMeasures#1106501, unitOfMeasureConversions#1106502, productionAspect#1106503, salesAspect#1106504, procurementAspect#1106505, productGroup#1106506, filteredUnitOfMeasureConversions#1106507, quantityNumerator#1106508, quantityDenominator#1106509]
(2205) Project
Arguments: [product#1106481, plant#1106482, orderDateTime#1106483, productPlant#1106494, systemId#1106495, internalUUID#1106496, id#1106497, displayId#1106498, name#1106499, baseUnitOfMeasure#1106500, unitOfMeasures#1106501, unitOfMeasureConversions#1106502, productionAspect#1106503, salesAspect#1106504, procurementAspect#1106505, productGroup#1106506, filteredUnitOfMeasureConversions#1106507, quantityNumerator#1106508, quantityDenominator#1106509, (cast(quantityNumerator#1106508 as double) / cast(quantityDenominator#1106509 as double)) AS outboundUnit#1106510]
(2206) Project
Arguments: [product#1106481, plant#1106482, orderDateTime#1106483, productPlant#1106494, systemId#1106495, internalUUID#1106496, id#1106497, displayId#1106498, name#1106499, baseUnitOfMeasure#1106500, unitOfMeasures#1106501, unitOfMeasureConversions#1106502, productionAspect#1106503, salesAspect#1106504, procurementAspect#1106505, productGroup#1106506, filteredUnitOfMeasureConversions#1106507, quantityNumerator#1106508, quantityDenominator#1106509, CASE WHEN (isnull(outboundUnit#1106510) OR (outboundUnit#1106510 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1106510 END AS outboundUnit#1106511]
(2207) Project
Arguments: [product#1106481, plant#1106482, orderDateTime#1106483, productPlant#1106494, outboundUnit#1106511]
(2208) Join
Arguments: Inner, ((plantUuid#1106473 = plant#1106482) AND (productUuid#1106475 = product#1106481))
(2209) Filter
Arguments: (calculationDateTime#1106469 <= orderDateTime#1106483)
(2210) Project
Arguments: [plantUuid#1106473 AS plant#1106512, productUuid#1106475 AS product#1106513, storageLocId#1106476, calculationDateTime#1106469, quantity#1106478]
(2211) Aggregate
Arguments: [plant#1106512, product#1106513, storageLocId#1106476], [plant#1106512, product#1106513, storageLocId#1106476, max(calculationDateTime#1106469) AS max_calc_datetime#1106514]
(2212) Join
Arguments: Inner, ((((plant#1106402 <=> plant#1106512) AND (product#1106403 <=> product#1106513)) AND (storageLocId#1106366 <=> storageLocId#1106476)) AND (calculationDateTime#1106359 <=> max_calc_datetime#1106514))
(2213) Project
Arguments: [plant#1106402, product#1106403, storageLocId#1106366, calculationDateTime#1106359, quantity#1106368]
(2214) Aggregate
Arguments: [product#1106403, plant#1106402], [product#1106403, plant#1106402, sum(quantity#1106368) AS quantitySum#1106515, min(calculationDateTime#1106359) AS minCalculationDateTime#1106516]
(2215) Project
Arguments: [product#1106403, plant#1106402, quantitySum#1106515, minCalculationDateTime#1106516, round(quantitySum#1106515, 0) AS roundedQuantitySum#1106517]
(2216) Join
Arguments: LeftOuter, ((plant#1106264 = plant#1106402) AND (product#1106263 = product#1106403))
(2217) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, outboundUnit#1106293, roundedQuantitySum#1106517, minCalculationDateTime#1106516]
(2218) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, outboundUnit#1106293, roundedQuantitySum#1106517, minCalculationDateTime#1106516, CASE WHEN isnotnull(minCalculationDateTime#1106516) THEN minCalculationDateTime#1106516 ELSE orderDateTime#1106265 END AS stockDatetime#1106518]
(2219) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, outboundUnit#1106293, roundedQuantitySum#1106517, minCalculationDateTime#1106516, stockDatetime#1106518, CASE WHEN isnotnull(roundedQuantitySum#1106517) THEN array(roundedQuantitySum#1106517) ELSE array(0.0) END AS stockBatchQuantities#1106519]
(2220) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, outboundUnit#1106293, roundedQuantitySum#1106517, minCalculationDateTime#1106516, stockDatetime#1106518, stockBatchQuantities#1106519, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1106520]
(2221) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, outboundUnit#1106293, roundedQuantitySum#1106517, stockDatetime#1106518, stockBatchQuantities#1106519, stockBatchShelfLifeEndDatetimes#1106520]
(2222) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, outboundUnit#1106293, stockDatetime#1106518, stockBatchQuantities#1106519, stockBatchShelfLifeEndDatetimes#1106520]
(2223) LogicalRelation
Arguments: parquet, [product#1106521, plant#1106522, demandChannel#1106523, demandStream#1106524, considerVariance#1106525, demandTimeBuckets#1106526, demandPointInTimeStart#1106527, demandPointInTimeEnd#1106528, demandPointInTime#1106529], false
(2224) Join
Arguments: LeftOuter, ((plant#1106522 <=> plant#1106264) AND (product#1106521 <=> product#1106263))
(2225) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, outboundUnit#1106293, stockDatetime#1106518, stockBatchQuantities#1106519, stockBatchShelfLifeEndDatetimes#1106520, product#1106521, plant#1106522, demandChannel#1106523, demandStream#1106524, considerVariance#1106525, demandTimeBuckets#1106526, demandPointInTimeStart#1106527, demandPointInTimeEnd#1106528, demandPointInTime#1106529, CASE WHEN isnotnull(product#1106521) THEN struct(demandChannel, demandChannel#1106523, demandStream, demandStream#1106524, considerVariance, considerVariance#1106525, demandTimeBuckets, demandTimeBuckets#1106526, demandPointInTimeStart, demandPointInTimeStart#1106527, demandPointInTimeEnd, demandPointInTimeEnd#1106528, demandPointInTime, demandPointInTime#1106529) 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#1106530]
(2226) Aggregate
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, outboundUnit#1106293, stockDatetime#1106518, stockBatchQuantities#1106519, stockBatchShelfLifeEndDatetimes#1106520], [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, outboundUnit#1106293, stockDatetime#1106518, stockBatchQuantities#1106519, stockBatchShelfLifeEndDatetimes#1106520, collect_list(rawDemands#1106530, 0, 0) AS rawDemands#1106531]
(2227) SubqueryAlias
Arguments: wl
(2228) LogicalRelation
Arguments: parquet, [systemId#1106532, internalUUID#1106533, id#1106534, displayId#1106535, name#1106536, category#1106537, companyCode#1106538, address#1106539, mainDistributionChain#1106540, mainPurchasingOrganization#1106541, validPurchasingOrganizations#1106542, productGroup#1106543], false
(2229) Repartition
Arguments: 37, true
(2230) Project
Arguments: [systemId#1106532, internalUUID#1106533, id#1106534, displayId#1106535, name#1106536, category#1106537, companyCode#1106538, address#1106539, mainDistributionChain#1106540, mainPurchasingOrganization#1106541, validPurchasingOrganizations#1106542, productGroup#1106543, address#1106539.timezone.code AS timezonecode#1106544]
(2231) Join
Arguments: LeftOuter, (plant#1106264 <=> internalUUID#1106533)
(2232) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, outboundUnit#1106293, stockDatetime#1106518, stockBatchQuantities#1106519, stockBatchShelfLifeEndDatetimes#1106520, rawDemands#1106531, systemId#1106532, internalUUID#1106533, id#1106534, displayId#1106535, name#1106536, category#1106537, companyCode#1106538, address#1106539, mainDistributionChain#1106540, mainPurchasingOrganization#1106541, validPurchasingOrganizations#1106542, productGroup#1106543, CASE WHEN isnotnull(timezonecode#1106544) THEN timezonecode#1106544 ELSE UTC END AS timezonecode#1106545]
(2233) Project
Arguments: [product#1106263, plant#1106264, orderDateTime#1106265, productPlant#1106276, outboundUnit#1106293, stockDatetime#1106518, stockBatchQuantities#1106519, stockBatchShelfLifeEndDatetimes#1106520, rawDemands#1106531, timezonecode#1106545]
(2234) DeserializeToObject
Arguments: createexternalrow(invoke(product#1106263.toString()), invoke(plant#1106264.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1106265)), if (isnull(productPlant#1106276)) null else createexternalrow(invoke(productPlant#1106276.systemId.toString()), invoke(productPlant#1106276.internalUUID.toString()), if (isnull(productPlant#1106276.plant)) null else createexternalrow(invoke(productPlant#1106276.plant.internalRefUUID.toString()), invoke(productPlant#1106276.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1106276.product)) null else createexternalrow(invoke(productPlant#1106276.product.internalRefUUID.toString()), invoke(productPlant#1106276.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1106276.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1106276.productionAspect)) null else createexternalrow(if (isnull(productPlant#1106276.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1106276.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1106276.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1106276.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#1106276.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1106276.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1106276.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1106276.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1106276.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1106276.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1106276.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1106276.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1106276.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1106276.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1106276.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1106276.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1106276.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1106276.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#1106276.salesPlant)) null else createexternalrow(if (isnull(productPlant#1106276.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1106276.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1106276.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, 87159), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87159).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#1106276.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1106276.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1106276.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1106276.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#1106293)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1106518)), mapobjects(lambdavariable(MapObject, DoubleType, true, 87160), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 87160) as double))), stockBatchQuantities#1106519, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 87161), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 87161) as timestamp)))), stockBatchShelfLifeEndDatetimes#1106520, 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, 87162), 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, 87162))) 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, 87162).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, 87162).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, 87162).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87163).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, 87162).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, 87162).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, 87162).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 87164).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, 87162).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#1106531, Some(class scala.collection.mutable.ArraySeq)), invoke(timezonecode#1106545.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#1102685: org.apache.spark.sql.Row
(2235) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801fc3d98@51e4e5d1, 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#1102690: 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#1106546, 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#1106547, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87150), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87150), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87151), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87151), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87152), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87152), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87153), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87153), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 87154), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87154), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87149), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#1106548, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87156), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87156), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87157), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87157), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87158), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87158), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 87155), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#1106549]
(2237) Join
Arguments: LeftOuter, ((plant#1106547 <=> plant#1106006) AND (product#1106546 <=> product#1106005))
(2238) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, outboundUnit#1106035, stockDatetime#1106260, stockBatchQuantities#1106261, stockBatchShelfLifeEndDatetimes#1106262, plant#1106547, dayBucketDemands#1106548, pointInTimeDemands#1106549]
(2239) Project
Arguments: [product#1106005, plant#1106006, orderDateTime#1106007, productPlant#1106018, outboundUnit#1106035, stockDatetime#1106260, stockBatchQuantities#1106261, stockBatchShelfLifeEndDatetimes#1106262, dayBucketDemands#1106548, pointInTimeDemands#1106549]
(2240) LocalRelation
Arguments: <empty>, [systemId#1106550, internalUUID#1106551, id#1106552, isMarkedForDeletion#1106553, supplier#1106554, status#1106555, items#1106556]
(2241) Generate
Arguments: explode(items#1106556), false, [item#1106557]
(2242) Project
Arguments: [id#1106552, internalUUID#1106551, isMarkedForDeletion#1106553, supplier#1106554.internalRefUUID AS supplierUuid#1106558, item#1106557]
(2243) Filter
Arguments: (((NOT isMarkedForDeletion#1106553 AND NOT item#1106557.deletionIndicator) AND NOT item#1106557.completeIndicator) AND NOT item#1106557.returnIndicator)
(2244) Project
Arguments: [id#1106552, internalUUID#1106551, supplierUuid#1106558, item#1106557.plant.internalRefUUID AS plant#1106559, item#1106557.product.internalRefUUID AS product#1106560, item#1106557.storageLocation.internalRefUUID AS storageLocUuid#1106561, item#1106557.quantityUnit.code AS quantityUom#1106562, item#1106557.quantityUnit.internalRefUUID AS quantityUomUuid#1106563, item#1106557.quantityNumerator AS quantityNumerator#1106564, item#1106557.quantityDenominator AS quantityDenominator#1106565, item#1106557.scheduleLines AS scheduleLines#1106566, item#1106557.confirmations AS confirmations#1106567]
(2245) Join
Arguments: Inner, ((product#1106005 <=> product#1106560) AND (plant#1106006 <=> supplierUuid#1106558))
(2246) Project
Arguments: [id#1106552, internalUUID#1106551, supplierUuid#1106558, plant#1106559, product#1106560, storageLocUuid#1106561, quantityUom#1106562, quantityUomUuid#1106563, quantityNumerator#1106564, quantityDenominator#1106565, scheduleLines#1106566, confirmations#1106567, stockDatetime#1106260, plant#1106006]
(2247) Project
Arguments: [id#1106552, internalUUID#1106551, supplierUuid#1106558, product#1106560, storageLocUuid#1106561, quantityUom#1106562, quantityUomUuid#1106563, quantityNumerator#1106564, quantityDenominator#1106565, scheduleLines#1106566, confirmations#1106567, stockDatetime#1106260, plant#1106006]
(2248) Project
Arguments: [id#1106552, internalUUID#1106551, supplierUuid#1106558, product#1106560, storageLocUuid#1106561, quantityUom#1106562, quantityUomUuid#1106563, quantityNumerator#1106564, quantityDenominator#1106565, scheduleLines#1106566, confirmations#1106567, stockDatetime#1106260, plant#1106006, filter(transform(filter(transform(scheduleLines#1106566, lambdafunction(struct(openQty, (greatest((lambda x_164#1103131.quantity - coalesce(lambda x_164#1103131.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_164#1103131.productAvailabilityDateTime, lambda x_164#1103131.deliveryAt)), lambda x_164#1103131, false)), lambdafunction((lambda x_165#1103132.availabilityDatetime < stockDatetime#1106260), lambda x_165#1103132, false)), lambdafunction(struct(documentId, id#1106552, documentUuid, internalUUID#1106551, openQty, lambda x_166#1103133.openQty, openQtyInBaseUnit, ((lambda x_166#1103133.openQty * quantityNumerator#1106564) / quantityDenominator#1106565), qtyUom, quantityUom#1106562, qtyUomUuid, quantityUomUuid#1106563, availabilityDatetime, lambda x_166#1103133.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_166#1103133, false)), lambdafunction(NOT (lambda x_167#1103134.openQty = 0.0), lambda x_167#1103134, false)) AS openGoodsMovements#1106568]
(2249) Aggregate
Arguments: [product#1106560, plant#1106006], [product#1106560, plant#1106006, flatten(collect_list(openGoodsMovements#1106568, 0, 0)) AS openGoodsMovements#1106569]
(2250) Filter
Arguments: (array_size(openGoodsMovements#1106569) > 0)
(2251) Union
Arguments: false, false
(2252) Aggregate
Arguments: [product#1105993, plant#1105992], [product#1105993, plant#1105992, flatten(collect_list(openGoodsMovements#1106004, 0, 0)) AS openGoodsMovements#1106570]
(2253) Join
Arguments: LeftOuter, ((product#1104834 = product#1105993) AND (plant#1104835 = plant#1105992))
(2254) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, stockBatchShelfLifeEndDatetimes#1105091, dayBucketDemands#1105377, pointInTimeDemands#1105378, openGoodsMovements#1106570]
(2255) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, stockBatchShelfLifeEndDatetimes#1105091, dayBucketDemands#1105377, pointInTimeDemands#1105378, coalesce(openGoodsMovements#1106570.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#1106571, coalesce(openGoodsMovements#1106570.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#1106572, coalesce(openGoodsMovements#1106570.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#1106573]
(2256) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, stockBatchShelfLifeEndDatetimes#1105091, dayBucketDemands#1105377, pointInTimeDemands#1105378, openGoodsMovementQuantities#1106571, openGoodsMovementAvailabilityDatetimes#1106572, openGoodsMovementShelfLifeEndDatetimes#1106573, 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#1106574]
(2257) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, stockBatchShelfLifeEndDatetimes#1105091, dayBucketDemands#1105377, pointInTimeDemands#1105378, openGoodsMovementQuantities#1106571, openGoodsMovementAvailabilityDatetimes#1106572, openGoodsMovementShelfLifeEndDatetimes#1106573, configuration#1106574, productPlant#1104847.listing AS listing#1104776]
(2258) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, stockBatchShelfLifeEndDatetimes#1105091, dayBucketDemands#1105377, pointInTimeDemands#1105378, openGoodsMovementQuantities#1106571, openGoodsMovementAvailabilityDatetimes#1106572, openGoodsMovementShelfLifeEndDatetimes#1106573, configuration#1106574, CASE WHEN isnotnull(listing#1104776) THEN listing#1104776 ELSE cast(array() as array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>) END AS listing#1104778]
(2259) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, stockBatchShelfLifeEndDatetimes#1105091, dayBucketDemands#1105377, pointInTimeDemands#1105378, openGoodsMovementQuantities#1106571, openGoodsMovementAvailabilityDatetimes#1106572, openGoodsMovementShelfLifeEndDatetimes#1106573, configuration#1106574, filter(listing#1104778, lambdafunction((lambda listing#1104780.isListed = true), lambda listing#1104780, false)) AS listing#1104779]
(2260) Project
Arguments: [product#1104834, plant#1104835, orderDateTime#1104836, productPlant#1104847, outboundUnit#1104864, stockDatetime#1105089, stockBatchQuantities#1105090, stockBatchShelfLifeEndDatetimes#1105091, dayBucketDemands#1105377, pointInTimeDemands#1105378, openGoodsMovementQuantities#1106571, openGoodsMovementAvailabilityDatetimes#1106572, openGoodsMovementShelfLifeEndDatetimes#1106573, configuration#1106574, array_sort(listing#1104779, lambdafunction(if ((isnull(lambda left#1104782) AND isnull(lambda right#1104783))) 0 else if (isnull(lambda left#1104782)) 1 else if (isnull(lambda right#1104783)) -1 else if ((lambda left#1104782 < lambda right#1104783)) -1 else if ((lambda left#1104782 > lambda right#1104783)) 1 else 0, lambda left#1104782, lambda right#1104783, false), false) AS listing#1104781]
(2261) DeserializeToObject
Arguments: createexternalrow(invoke(product#1104834.toString()), invoke(plant#1104835.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1104836)), if (isnull(productPlant#1104847)) null else createexternalrow(invoke(productPlant#1104847.systemId.toString()), invoke(productPlant#1104847.internalUUID.toString()), if (isnull(productPlant#1104847.plant)) null else createexternalrow(invoke(productPlant#1104847.plant.internalRefUUID.toString()), invoke(productPlant#1104847.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1104847.product)) null else createexternalrow(invoke(productPlant#1104847.product.internalRefUUID.toString()), invoke(productPlant#1104847.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1104847.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1104847.productionAspect)) null else createexternalrow(if (isnull(productPlant#1104847.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1104847.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1104847.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#1104847.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1104847.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1104847.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1104847.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1104847.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1104847.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1104847.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1104847.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1104847.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1104847.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1104847.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#1104847.salesPlant)) null else createexternalrow(if (isnull(productPlant#1104847.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1104847.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1104847.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, 87344), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87344))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87344).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87344).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87344).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#1104847.listing, Some(class scala.collection.mutable.ArraySeq)), if (isnull(productPlant#1104847.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1104847.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1104847.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#1104864)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1105089)), mapobjects(lambdavariable(MapObject, DoubleType, true, 87345), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 87345) as double))), stockBatchQuantities#1105090, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 87346), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 87346) as timestamp)))), stockBatchShelfLifeEndDatetimes#1105091, 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, 87347), 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, 87347))) 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, 87347).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, 87347).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, 87347).considerVariance)), mapobjects(lambdavariable(MapObject, DoubleType, false, 87348), assertnotnull(static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, false, 87348) 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, 87347).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 87349), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 87349) 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, 87347).demandVariances, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 87350), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 87350) 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, 87347).anchorDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StringType, false, 87351), assertnotnull(invoke(cast(lambdavariable(MapObject, StringType, false, 87351) 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, 87347).anchorWeekdays, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, IntegerType, false, 87352), assertnotnull(static_invoke(java.lang.Integer.valueOf(cast(lambdavariable(MapObject, IntegerType, false, 87352) 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, 87347).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#1105377, 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, 87353), 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, 87353))) 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, 87353).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, 87353).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, 87353).considerVariance)), mapobjects(lambdavariable(MapObject, TimestampType, false, 87354), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 87354) 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, 87353).demandDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, false, 87355), assertnotnull(static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, false, 87355) 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, 87353).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 87356), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 87356) 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, 87353).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, 87353).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, 87353).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#1105378, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 87357), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 87357) as double))), openGoodsMovementQuantities#1106571, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, 87358), static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, true, 87358) as timestamp))), openGoodsMovementAvailabilityDatetimes#1106572, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 87359), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 87359) as timestamp)))), openGoodsMovementShelfLifeEndDatetimes#1106573, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 87360), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 87360))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 87360).configurationValidityDatetime)), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 87360).configurationName.toString()), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 87360).configurationValue.toString()), StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false))), configuration#1106574, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87361), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87361))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87361).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87361).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 87361).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), listing#1104781, 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#1104814: 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#1104821: 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#1104828, 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#1104829, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87340), static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87340), 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#1104830, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87341), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87341), 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#1104831, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87342), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87342), 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#1104832, 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, 87343), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 87343), 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#1104833]
(2264) Join
Arguments: LeftOuter, ((product#1101131 = product#1104828) AND (plant#1101132 = plant#1104829))
(2265) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, configuration#1104637, timeDependentSettingsName#1104830, timeDependentSettingsStartDatetime#1104831, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
(2266) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, configuration#1104637, CASE WHEN isnotnull(timeDependentSettingsName#1104830) THEN timeDependentSettingsName#1104830 ELSE cast(array() as array<string>) END AS timeDependentSettingsName#1106699, timeDependentSettingsStartDatetime#1104831, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
(2267) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, configuration#1104637, timeDependentSettingsName#1106699, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#1104831) THEN timeDependentSettingsStartDatetime#1104831 ELSE cast(array() as array<timestamp>) END AS timeDependentSettingsStartDatetime#1106700, timeDependentSettingsEndDatetime#1104832, timeDependentSettingsValue#1104833]
(2268) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, configuration#1104637, timeDependentSettingsName#1106699, timeDependentSettingsStartDatetime#1106700, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#1104832) THEN timeDependentSettingsEndDatetime#1104832 ELSE cast(array() as array<timestamp>) END AS timeDependentSettingsEndDatetime#1106701, timeDependentSettingsValue#1104833]
(2269) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, productPlant#1101168, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, configuration#1104637, timeDependentSettingsName#1106699, timeDependentSettingsStartDatetime#1106700, timeDependentSettingsEndDatetime#1106701, CASE WHEN isnotnull(timeDependentSettingsValue#1104833) THEN timeDependentSettingsValue#1104833 ELSE cast(array() as array<double>) END AS timeDependentSettingsValue#1106702]
(2270) Project
Arguments: [product#1101131, plant#1101132, orderDateTime#1101133, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, configuration#1104637, timeDependentSettingsName#1106699, timeDependentSettingsStartDatetime#1106700, timeDependentSettingsEndDatetime#1106701, timeDependentSettingsValue#1106702]
(2271) Project
Arguments: [product#1101131, plant#1101132, outboundUnit#1101219, stockDatetime#1101579, stockBatchQuantities#1101580, stockBatchShelfLifeEndDatetimes#1101581, dayBucketDemands#1102697, pointInTimeDemands#1102698, openGoodsMovementQuantities#1104344, openGoodsMovementAvailabilityDatetimes#1104345, openGoodsMovementShelfLifeEndDatetimes#1104346, configuration#1104637, timeDependentSettingsName#1106699, timeDependentSettingsStartDatetime#1106700, timeDependentSettingsEndDatetime#1106701, timeDependentSettingsValue#1106702]