== Physical Plan ==
Execute SaveIntoDataSourceCommand (1)
+- SaveIntoDataSourceCommand (2)
+- Project (2674)
+- Project (2673)
+- Project (2672)
+- Project (2671)
+- Project (2670)
+- Project (2669)
+- Project (2668)
+- Project (2667)
+- Join (2666)
:- Project (1330)
: +- Project (1329)
: +- Project (1328)
: +- Join (1327)
: :- Project (419)
: : +- Project (418)
: : +- Join (417)
: : :- Project (205)
: : : +- Project (204)
: : : +- Project (203)
: : : +- Project (202)
: : : +- Project (201)
: : : +- Project (200)
: : : +- Join (199)
: : : :- Project (29)
: : : : +- Project (28)
: : : : +- Project (27)
: : : : +- Project (26)
: : : : +- Generate (25)
: : : : +- Project (24)
: : : : +- Generate (23)
: : : : +- Project (22)
: : : : +- Join (21)
: : : : :- Project (18)
: : : : : +- Project (17)
: : : : : +- Join (16)
: : : : : :- SubqueryAlias (12)
: : : : : : +- Project (11)
: : : : : : +- Join (10)
: : : : : : :- Project (5)
: : : : : : : +- RepartitionByExpression (4)
: : : : : : : +- LogicalRelation (3)
: : : : : : +- Project (9)
: : : : : : +- Project (8)
: : : : : : +- Repartition (7)
: : : : : : +- LogicalRelation (6)
: : : : : +- Project (15)
: : : : : +- Repartition (14)
: : : : : +- LogicalRelation (13)
: : : : +- Repartition (20)
: : : : +- LogicalRelation (19)
: : : +- Project (198)
: : : +- Aggregate (197)
: : : +- Project (196)
: : : +- Join (195)
: : : :- Project (111)
: : : : +- Filter (110)
: : : : +- Join (109)
: : : : :- Filter (81)
: : : : : +- Project (80)
: : : : : +- Project (79)
: : : : : +- Generate (78)
: : : : : +- Project (77)
: : : : : +- Aggregate (76)
: : : : : +- Project (75)
: : : : : +- Generate (74)
: : : : : +- Join (73)
: : : : : :- Repartition (31)
: : : : : : +- LogicalRelation (30)
: : : : : +- Project (72)
: : : : : +- Join (71)
: : : : : :- Project (41)
: : : : : : +- Project (40)
: : : : : : +- Generate (39)
: : : : : : +- Project (38)
: : : : : : +- Generate (37)
: : : : : : +- Project (36)
: : : : : : +- Project (35)
: : : : : : +- Filter (34)
: : : : : : +- Repartition (33)
: : : : : : +- LogicalRelation (32)
: : : : : +- Deduplicate (70)
: : : : : +- Project (69)
: : : : : +- Project (68)
: : : : : +- Project (67)
: : : : : +- Project (66)
: : : : : +- Project (65)
: : : : : +- Generate (64)
: : : : : +- Project (63)
: : : : : +- Generate (62)
: : : : : +- Project (61)
: : : : : +- Join (60)
: : : : : :- Project (57)
: : : : : : +- Project (56)
: : : : : : +- Join (55)
: : : : : : :- SubqueryAlias (51)
: : : : : : : +- Project (50)
: : : : : : : +- Join (49)
: : : : : : : :- Project (44)
: : : : : : : : +- RepartitionByExpression (43)
: : : : : : : : +- LogicalRelation (42)
: : : : : : : +- Project (48)
: : : : : : : +- Project (47)
: : : : : : : +- Repartition (46)
: : : : : : : +- LogicalRelation (45)
: : : : : : +- Project (54)
: : : : : : +- Repartition (53)
: : : : : : +- LogicalRelation (52)
: : : : : +- Repartition (59)
: : : : : +- LogicalRelation (58)
: : : : +- Project (108)
: : : : +- Project (107)
: : : : +- Project (106)
: : : : +- Project (105)
: : : : +- Generate (104)
: : : : +- Project (103)
: : : : +- Generate (102)
: : : : +- Project (101)
: : : : +- Join (100)
: : : : :- Project (97)
: : : : : +- Project (96)
: : : : : +- Join (95)
: : : : : :- SubqueryAlias (91)
: : : : : : +- Project (90)
: : : : : : +- Join (89)
: : : : : : :- Project (84)
: : : : : : : +- RepartitionByExpression (83)
: : : : : : : +- LogicalRelation (82)
: : : : : : +- Project (88)
: : : : : : +- Project (87)
: : : : : : +- Repartition (86)
: : : : : : +- LogicalRelation (85)
: : : : : +- Project (94)
: : : : : +- Repartition (93)
: : : : : +- LogicalRelation (92)
: : : : +- Repartition (99)
: : : : +- LogicalRelation (98)
: : : +- Aggregate (194)
: : : +- Project (193)
: : : +- Filter (192)
: : : +- Join (191)
: : : :- Filter (163)
: : : : +- Project (162)
: : : : +- Project (161)
: : : : +- Generate (160)
: : : : +- Project (159)
: : : : +- Aggregate (158)
: : : : +- Project (157)
: : : : +- Generate (156)
: : : : +- Join (155)
: : : : :- Repartition (113)
: : : : : +- LogicalRelation (112)
: : : : +- Project (154)
: : : : +- Join (153)
: : : : :- Project (123)
: : : : : +- Project (122)
: : : : : +- Generate (121)
: : : : : +- Project (120)
: : : : : +- Generate (119)
: : : : : +- Project (118)
: : : : : +- Project (117)
: : : : : +- Filter (116)
: : : : : +- Repartition (115)
: : : : : +- LogicalRelation (114)
: : : : +- Deduplicate (152)
: : : : +- Project (151)
: : : : +- Project (150)
: : : : +- Project (149)
: : : : +- Project (148)
: : : : +- Project (147)
: : : : +- Generate (146)
: : : : +- Project (145)
: : : : +- Generate (144)
: : : : +- Project (143)
: : : : +- Join (142)
: : : : :- Project (139)
: : : : : +- Project (138)
: : : : : +- Join (137)
: : : : : :- SubqueryAlias (133)
: : : : : : +- Project (132)
: : : : : : +- Join (131)
: : : : : : :- Project (126)
: : : : : : : +- RepartitionByExpression (125)
: : : : : : : +- LogicalRelation (124)
: : : : : : +- Project (130)
: : : : : : +- Project (129)
: : : : : : +- Repartition (128)
: : : : : : +- LogicalRelation (127)
: : : : : +- Project (136)
: : : : : +- Repartition (135)
: : : : : +- LogicalRelation (134)
: : : : +- Repartition (141)
: : : : +- LogicalRelation (140)
: : : +- Project (190)
: : : +- Project (189)
: : : +- Project (188)
: : : +- Project (187)
: : : +- Generate (186)
: : : +- Project (185)
: : : +- Generate (184)
: : : +- Project (183)
: : : +- Join (182)
: : : :- Project (179)
: : : : +- Project (178)
: : : : +- Join (177)
: : : : :- SubqueryAlias (173)
: : : : : +- Project (172)
: : : : : +- Join (171)
: : : : : :- Project (166)
: : : : : : +- RepartitionByExpression (165)
: : : : : : +- LogicalRelation (164)
: : : : : +- Project (170)
: : : : : +- Project (169)
: : : : : +- Repartition (168)
: : : : : +- LogicalRelation (167)
: : : : +- Project (176)
: : : : +- Repartition (175)
: : : : +- LogicalRelation (174)
: : : +- Repartition (181)
: : : +- LogicalRelation (180)
: : +- SerializeFromObject (416)
: : +- MapElements (415)
: : +- DeserializeToObject (414)
: : +- Aggregate (413)
: : +- Project (412)
: : +- Project (411)
: : +- Join (410)
: : :- Project (408)
: : : +- Project (407)
: : : +- Project (406)
: : : +- Project (405)
: : : +- Project (404)
: : : +- Project (403)
: : : +- Join (402)
: : : :- Project (232)
: : : : +- Project (231)
: : : : +- Project (230)
: : : : +- Project (229)
: : : : +- Generate (228)
: : : : +- Project (227)
: : : : +- Generate (226)
: : : : +- Project (225)
: : : : +- Join (224)
: : : : :- Project (221)
: : : : : +- Project (220)
: : : : : +- Join (219)
: : : : : :- SubqueryAlias (215)
: : : : : : +- Project (214)
: : : : : : +- Join (213)
: : : : : : :- Project (208)
: : : : : : : +- RepartitionByExpression (207)
: : : : : : : +- LogicalRelation (206)
: : : : : : +- Project (212)
: : : : : : +- Project (211)
: : : : : : +- Repartition (210)
: : : : : : +- LogicalRelation (209)
: : : : : +- Project (218)
: : : : : +- Repartition (217)
: : : : : +- LogicalRelation (216)
: : : : +- Repartition (223)
: : : : +- LogicalRelation (222)
: : : +- Project (401)
: : : +- Aggregate (400)
: : : +- Project (399)
: : : +- Join (398)
: : : :- Project (314)
: : : : +- Filter (313)
: : : : +- Join (312)
: : : : :- Filter (284)
: : : : : +- Project (283)
: : : : : +- Project (282)
: : : : : +- Generate (281)
: : : : : +- Project (280)
: : : : : +- Aggregate (279)
: : : : : +- Project (278)
: : : : : +- Generate (277)
: : : : : +- Join (276)
: : : : : :- Repartition (234)
: : : : : : +- LogicalRelation (233)
: : : : : +- Project (275)
: : : : : +- Join (274)
: : : : : :- Project (244)
: : : : : : +- Project (243)
: : : : : : +- Generate (242)
: : : : : : +- Project (241)
: : : : : : +- Generate (240)
: : : : : : +- Project (239)
: : : : : : +- Project (238)
: : : : : : +- Filter (237)
: : : : : : +- Repartition (236)
: : : : : : +- LogicalRelation (235)
: : : : : +- Deduplicate (273)
: : : : : +- Project (272)
: : : : : +- Project (271)
: : : : : +- Project (270)
: : : : : +- Project (269)
: : : : : +- Project (268)
: : : : : +- Generate (267)
: : : : : +- Project (266)
: : : : : +- Generate (265)
: : : : : +- Project (264)
: : : : : +- Join (263)
: : : : : :- Project (260)
: : : : : : +- Project (259)
: : : : : : +- Join (258)
: : : : : : :- SubqueryAlias (254)
: : : : : : : +- Project (253)
: : : : : : : +- Join (252)
: : : : : : : :- Project (247)
: : : : : : : : +- RepartitionByExpression (246)
: : : : : : : : +- LogicalRelation (245)
: : : : : : : +- Project (251)
: : : : : : : +- Project (250)
: : : : : : : +- Repartition (249)
: : : : : : : +- LogicalRelation (248)
: : : : : : +- Project (257)
: : : : : : +- Repartition (256)
: : : : : : +- LogicalRelation (255)
: : : : : +- Repartition (262)
: : : : : +- LogicalRelation (261)
: : : : +- Project (311)
: : : : +- Project (310)
: : : : +- Project (309)
: : : : +- Project (308)
: : : : +- Generate (307)
: : : : +- Project (306)
: : : : +- Generate (305)
: : : : +- Project (304)
: : : : +- Join (303)
: : : : :- Project (300)
: : : : : +- Project (299)
: : : : : +- Join (298)
: : : : : :- SubqueryAlias (294)
: : : : : : +- Project (293)
: : : : : : +- Join (292)
: : : : : : :- Project (287)
: : : : : : : +- RepartitionByExpression (286)
: : : : : : : +- LogicalRelation (285)
: : : : : : +- Project (291)
: : : : : : +- Project (290)
: : : : : : +- Repartition (289)
: : : : : : +- LogicalRelation (288)
: : : : : +- Project (297)
: : : : : +- Repartition (296)
: : : : : +- LogicalRelation (295)
: : : : +- Repartition (302)
: : : : +- LogicalRelation (301)
: : : +- Aggregate (397)
: : : +- Project (396)
: : : +- Filter (395)
: : : +- Join (394)
: : : :- Filter (366)
: : : : +- Project (365)
: : : : +- Project (364)
: : : : +- Generate (363)
: : : : +- Project (362)
: : : : +- Aggregate (361)
: : : : +- Project (360)
: : : : +- Generate (359)
: : : : +- Join (358)
: : : : :- Repartition (316)
: : : : : +- LogicalRelation (315)
: : : : +- Project (357)
: : : : +- Join (356)
: : : : :- Project (326)
: : : : : +- Project (325)
: : : : : +- Generate (324)
: : : : : +- Project (323)
: : : : : +- Generate (322)
: : : : : +- Project (321)
: : : : : +- Project (320)
: : : : : +- Filter (319)
: : : : : +- Repartition (318)
: : : : : +- LogicalRelation (317)
: : : : +- Deduplicate (355)
: : : : +- Project (354)
: : : : +- Project (353)
: : : : +- Project (352)
: : : : +- Project (351)
: : : : +- Project (350)
: : : : +- Generate (349)
: : : : +- Project (348)
: : : : +- Generate (347)
: : : : +- Project (346)
: : : : +- Join (345)
: : : : :- Project (342)
: : : : : +- Project (341)
: : : : : +- Join (340)
: : : : : :- SubqueryAlias (336)
: : : : : : +- Project (335)
: : : : : : +- Join (334)
: : : : : : :- Project (329)
: : : : : : : +- RepartitionByExpression (328)
: : : : : : : +- LogicalRelation (327)
: : : : : : +- Project (333)
: : : : : : +- Project (332)
: : : : : : +- Repartition (331)
: : : : : : +- LogicalRelation (330)
: : : : : +- Project (339)
: : : : : +- Repartition (338)
: : : : : +- LogicalRelation (337)
: : : : +- Repartition (344)
: : : : +- LogicalRelation (343)
: : : +- Project (393)
: : : +- Project (392)
: : : +- Project (391)
: : : +- Project (390)
: : : +- Generate (389)
: : : +- Project (388)
: : : +- Generate (387)
: : : +- Project (386)
: : : +- Join (385)
: : : :- Project (382)
: : : : +- Project (381)
: : : : +- Join (380)
: : : : :- SubqueryAlias (376)
: : : : : +- Project (375)
: : : : : +- Join (374)
: : : : : :- Project (369)
: : : : : : +- RepartitionByExpression (368)
: : : : : : +- LogicalRelation (367)
: : : : : +- Project (373)
: : : : : +- Project (372)
: : : : : +- Repartition (371)
: : : : : +- LogicalRelation (370)
: : : : +- Project (379)
: : : : +- Repartition (378)
: : : : +- LogicalRelation (377)
: : : +- Repartition (384)
: : : +- LogicalRelation (383)
: : +- LogicalRelation (409)
: +- Aggregate (1326)
: +- Union (1325)
: :- Filter (895)
: : +- Aggregate (894)
: : +- Project (893)
: : +- Project (892)
: : +- Window (891)
: : +- Project (890)
: : +- Project (889)
: : +- Project (888)
: : +- Join (887)
: : :- Project (880)
: : : +- Join (879)
: : : :- Project (836)
: : : : +- Project (835)
: : : : +- Join (834)
: : : : :- Project (622)
: : : : : +- Project (621)
: : : : : +- Project (620)
: : : : : +- Project (619)
: : : : : +- Project (618)
: : : : : +- Project (617)
: : : : : +- Join (616)
: : : : : :- Project (446)
: : : : : : +- Project (445)
: : : : : : +- Project (444)
: : : : : : +- Project (443)
: : : : : : +- Generate (442)
: : : : : : +- Project (441)
: : : : : : +- Generate (440)
: : : : : : +- Project (439)
: : : : : : +- Join (438)
: : : : : : :- Project (435)
: : : : : : : +- Project (434)
: : : : : : : +- Join (433)
: : : : : : : :- SubqueryAlias (429)
: : : : : : : : +- Project (428)
: : : : : : : : +- Join (427)
: : : : : : : : :- Project (422)
: : : : : : : : : +- RepartitionByExpression (421)
: : : : : : : : : +- LogicalRelation (420)
: : : : : : : : +- Project (426)
: : : : : : : : +- Project (425)
: : : : : : : : +- Repartition (424)
: : : : : : : : +- LogicalRelation (423)
: : : : : : : +- Project (432)
: : : : : : : +- Repartition (431)
: : : : : : : +- LogicalRelation (430)
: : : : : : +- Repartition (437)
: : : : : : +- LogicalRelation (436)
: : : : : +- Project (615)
: : : : : +- Aggregate (614)
: : : : : +- Project (613)
: : : : : +- Join (612)
: : : : : :- Project (528)
: : : : : : +- Filter (527)
: : : : : : +- Join (526)
: : : : : : :- Filter (498)
: : : : : : : +- Project (497)
: : : : : : : +- Project (496)
: : : : : : : +- Generate (495)
: : : : : : : +- Project (494)
: : : : : : : +- Aggregate (493)
: : : : : : : +- Project (492)
: : : : : : : +- Generate (491)
: : : : : : : +- Join (490)
: : : : : : : :- Repartition (448)
: : : : : : : : +- LogicalRelation (447)
: : : : : : : +- Project (489)
: : : : : : : +- Join (488)
: : : : : : : :- Project (458)
: : : : : : : : +- Project (457)
: : : : : : : : +- Generate (456)
: : : : : : : : +- Project (455)
: : : : : : : : +- Generate (454)
: : : : : : : : +- Project (453)
: : : : : : : : +- Project (452)
: : : : : : : : +- Filter (451)
: : : : : : : : +- Repartition (450)
: : : : : : : : +- LogicalRelation (449)
: : : : : : : +- Deduplicate (487)
: : : : : : : +- Project (486)
: : : : : : : +- Project (485)
: : : : : : : +- Project (484)
: : : : : : : +- Project (483)
: : : : : : : +- Project (482)
: : : : : : : +- Generate (481)
: : : : : : : +- Project (480)
: : : : : : : +- Generate (479)
: : : : : : : +- Project (478)
: : : : : : : +- Join (477)
: : : : : : : :- Project (474)
: : : : : : : : +- Project (473)
: : : : : : : : +- Join (472)
: : : : : : : : :- SubqueryAlias (468)
: : : : : : : : : +- Project (467)
: : : : : : : : : +- Join (466)
: : : : : : : : : :- Project (461)
: : : : : : : : : : +- RepartitionByExpression (460)
: : : : : : : : : : +- LogicalRelation (459)
: : : : : : : : : +- Project (465)
: : : : : : : : : +- Project (464)
: : : : : : : : : +- Repartition (463)
: : : : : : : : : +- LogicalRelation (462)
: : : : : : : : +- Project (471)
: : : : : : : : +- Repartition (470)
: : : : : : : : +- LogicalRelation (469)
: : : : : : : +- Repartition (476)
: : : : : : : +- LogicalRelation (475)
: : : : : : +- Project (525)
: : : : : : +- Project (524)
: : : : : : +- Project (523)
: : : : : : +- Project (522)
: : : : : : +- Generate (521)
: : : : : : +- Project (520)
: : : : : : +- Generate (519)
: : : : : : +- Project (518)
: : : : : : +- Join (517)
: : : : : : :- Project (514)
: : : : : : : +- Project (513)
: : : : : : : +- Join (512)
: : : : : : : :- SubqueryAlias (508)
: : : : : : : : +- Project (507)
: : : : : : : : +- Join (506)
: : : : : : : : :- Project (501)
: : : : : : : : : +- RepartitionByExpression (500)
: : : : : : : : : +- LogicalRelation (499)
: : : : : : : : +- Project (505)
: : : : : : : : +- Project (504)
: : : : : : : : +- Repartition (503)
: : : : : : : : +- LogicalRelation (502)
: : : : : : : +- Project (511)
: : : : : : : +- Repartition (510)
: : : : : : : +- LogicalRelation (509)
: : : : : : +- Repartition (516)
: : : : : : +- LogicalRelation (515)
: : : : : +- Aggregate (611)
: : : : : +- Project (610)
: : : : : +- Filter (609)
: : : : : +- Join (608)
: : : : : :- Filter (580)
: : : : : : +- Project (579)
: : : : : : +- Project (578)
: : : : : : +- Generate (577)
: : : : : : +- Project (576)
: : : : : : +- Aggregate (575)
: : : : : : +- Project (574)
: : : : : : +- Generate (573)
: : : : : : +- Join (572)
: : : : : : :- Repartition (530)
: : : : : : : +- LogicalRelation (529)
: : : : : : +- Project (571)
: : : : : : +- Join (570)
: : : : : : :- Project (540)
: : : : : : : +- Project (539)
: : : : : : : +- Generate (538)
: : : : : : : +- Project (537)
: : : : : : : +- Generate (536)
: : : : : : : +- Project (535)
: : : : : : : +- Project (534)
: : : : : : : +- Filter (533)
: : : : : : : +- Repartition (532)
: : : : : : : +- LogicalRelation (531)
: : : : : : +- Deduplicate (569)
: : : : : : +- Project (568)
: : : : : : +- Project (567)
: : : : : : +- Project (566)
: : : : : : +- Project (565)
: : : : : : +- Project (564)
: : : : : : +- Generate (563)
: : : : : : +- Project (562)
: : : : : : +- Generate (561)
: : : : : : +- Project (560)
: : : : : : +- Join (559)
: : : : : : :- Project (556)
: : : : : : : +- Project (555)
: : : : : : : +- Join (554)
: : : : : : : :- SubqueryAlias (550)
: : : : : : : : +- Project (549)
: : : : : : : : +- Join (548)
: : : : : : : : :- Project (543)
: : : : : : : : : +- RepartitionByExpression (542)
: : : : : : : : : +- LogicalRelation (541)
: : : : : : : : +- Project (547)
: : : : : : : : +- Project (546)
: : : : : : : : +- Repartition (545)
: : : : : : : : +- LogicalRelation (544)
: : : : : : : +- Project (553)
: : : : : : : +- Repartition (552)
: : : : : : : +- LogicalRelation (551)
: : : : : : +- Repartition (558)
: : : : : : +- LogicalRelation (557)
: : : : : +- Project (607)
: : : : : +- Project (606)
: : : : : +- Project (605)
: : : : : +- Project (604)
: : : : : +- Generate (603)
: : : : : +- Project (602)
: : : : : +- Generate (601)
: : : : : +- Project (600)
: : : : : +- Join (599)
: : : : : :- Project (596)
: : : : : : +- Project (595)
: : : : : : +- Join (594)
: : : : : : :- SubqueryAlias (590)
: : : : : : : +- Project (589)
: : : : : : : +- Join (588)
: : : : : : : :- Project (583)
: : : : : : : : +- RepartitionByExpression (582)
: : : : : : : : +- LogicalRelation (581)
: : : : : : : +- Project (587)
: : : : : : : +- Project (586)
: : : : : : : +- Repartition (585)
: : : : : : : +- LogicalRelation (584)
: : : : : : +- Project (593)
: : : : : : +- Repartition (592)
: : : : : : +- LogicalRelation (591)
: : : : : +- Repartition (598)
: : : : : +- LogicalRelation (597)
: : : : +- SerializeFromObject (833)
: : : : +- MapElements (832)
: : : : +- DeserializeToObject (831)
: : : : +- Aggregate (830)
: : : : +- Project (829)
: : : : +- Project (828)
: : : : +- Join (827)
: : : : :- Project (825)
: : : : : +- Project (824)
: : : : : +- Project (823)
: : : : : +- Project (822)
: : : : : +- Project (821)
: : : : : +- Project (820)
: : : : : +- Join (819)
: : : : : :- Project (649)
: : : : : : +- Project (648)
: : : : : : +- Project (647)
: : : : : : +- Project (646)
: : : : : : +- Generate (645)
: : : : : : +- Project (644)
: : : : : : +- Generate (643)
: : : : : : +- Project (642)
: : : : : : +- Join (641)
: : : : : : :- Project (638)
: : : : : : : +- Project (637)
: : : : : : : +- Join (636)
: : : : : : : :- SubqueryAlias (632)
: : : : : : : : +- Project (631)
: : : : : : : : +- Join (630)
: : : : : : : : :- Project (625)
: : : : : : : : : +- RepartitionByExpression (624)
: : : : : : : : : +- LogicalRelation (623)
: : : : : : : : +- Project (629)
: : : : : : : : +- Project (628)
: : : : : : : : +- Repartition (627)
: : : : : : : : +- LogicalRelation (626)
: : : : : : : +- Project (635)
: : : : : : : +- Repartition (634)
: : : : : : : +- LogicalRelation (633)
: : : : : : +- Repartition (640)
: : : : : : +- LogicalRelation (639)
: : : : : +- Project (818)
: : : : : +- Aggregate (817)
: : : : : +- Project (816)
: : : : : +- Join (815)
: : : : : :- Project (731)
: : : : : : +- Filter (730)
: : : : : : +- Join (729)
: : : : : : :- Filter (701)
: : : : : : : +- Project (700)
: : : : : : : +- Project (699)
: : : : : : : +- Generate (698)
: : : : : : : +- Project (697)
: : : : : : : +- Aggregate (696)
: : : : : : : +- Project (695)
: : : : : : : +- Generate (694)
: : : : : : : +- Join (693)
: : : : : : : :- Repartition (651)
: : : : : : : : +- LogicalRelation (650)
: : : : : : : +- Project (692)
: : : : : : : +- Join (691)
: : : : : : : :- Project (661)
: : : : : : : : +- Project (660)
: : : : : : : : +- Generate (659)
: : : : : : : : +- Project (658)
: : : : : : : : +- Generate (657)
: : : : : : : : +- Project (656)
: : : : : : : : +- Project (655)
: : : : : : : : +- Filter (654)
: : : : : : : : +- Repartition (653)
: : : : : : : : +- LogicalRelation (652)
: : : : : : : +- Deduplicate (690)
: : : : : : : +- Project (689)
: : : : : : : +- Project (688)
: : : : : : : +- Project (687)
: : : : : : : +- Project (686)
: : : : : : : +- Project (685)
: : : : : : : +- Generate (684)
: : : : : : : +- Project (683)
: : : : : : : +- Generate (682)
: : : : : : : +- Project (681)
: : : : : : : +- Join (680)
: : : : : : : :- Project (677)
: : : : : : : : +- Project (676)
: : : : : : : : +- Join (675)
: : : : : : : : :- SubqueryAlias (671)
: : : : : : : : : +- Project (670)
: : : : : : : : : +- Join (669)
: : : : : : : : : :- Project (664)
: : : : : : : : : : +- RepartitionByExpression (663)
: : : : : : : : : : +- LogicalRelation (662)
: : : : : : : : : +- Project (668)
: : : : : : : : : +- Project (667)
: : : : : : : : : +- Repartition (666)
: : : : : : : : : +- LogicalRelation (665)
: : : : : : : : +- Project (674)
: : : : : : : : +- Repartition (673)
: : : : : : : : +- LogicalRelation (672)
: : : : : : : +- Repartition (679)
: : : : : : : +- LogicalRelation (678)
: : : : : : +- Project (728)
: : : : : : +- Project (727)
: : : : : : +- Project (726)
: : : : : : +- Project (725)
: : : : : : +- Generate (724)
: : : : : : +- Project (723)
: : : : : : +- Generate (722)
: : : : : : +- Project (721)
: : : : : : +- Join (720)
: : : : : : :- Project (717)
: : : : : : : +- Project (716)
: : : : : : : +- Join (715)
: : : : : : : :- SubqueryAlias (711)
: : : : : : : : +- Project (710)
: : : : : : : : +- Join (709)
: : : : : : : : :- Project (704)
: : : : : : : : : +- RepartitionByExpression (703)
: : : : : : : : : +- LogicalRelation (702)
: : : : : : : : +- Project (708)
: : : : : : : : +- Project (707)
: : : : : : : : +- Repartition (706)
: : : : : : : : +- LogicalRelation (705)
: : : : : : : +- Project (714)
: : : : : : : +- Repartition (713)
: : : : : : : +- LogicalRelation (712)
: : : : : : +- Repartition (719)
: : : : : : +- LogicalRelation (718)
: : : : : +- Aggregate (814)
: : : : : +- Project (813)
: : : : : +- Filter (812)
: : : : : +- Join (811)
: : : : : :- Filter (783)
: : : : : : +- Project (782)
: : : : : : +- Project (781)
: : : : : : +- Generate (780)
: : : : : : +- Project (779)
: : : : : : +- Aggregate (778)
: : : : : : +- Project (777)
: : : : : : +- Generate (776)
: : : : : : +- Join (775)
: : : : : : :- Repartition (733)
: : : : : : : +- LogicalRelation (732)
: : : : : : +- Project (774)
: : : : : : +- Join (773)
: : : : : : :- Project (743)
: : : : : : : +- Project (742)
: : : : : : : +- Generate (741)
: : : : : : : +- Project (740)
: : : : : : : +- Generate (739)
: : : : : : : +- Project (738)
: : : : : : : +- Project (737)
: : : : : : : +- Filter (736)
: : : : : : : +- Repartition (735)
: : : : : : : +- LogicalRelation (734)
: : : : : : +- Deduplicate (772)
: : : : : : +- Project (771)
: : : : : : +- Project (770)
: : : : : : +- Project (769)
: : : : : : +- Project (768)
: : : : : : +- Project (767)
: : : : : : +- Generate (766)
: : : : : : +- Project (765)
: : : : : : +- Generate (764)
: : : : : : +- Project (763)
: : : : : : +- Join (762)
: : : : : : :- Project (759)
: : : : : : : +- Project (758)
: : : : : : : +- Join (757)
: : : : : : : :- SubqueryAlias (753)
: : : : : : : : +- Project (752)
: : : : : : : : +- Join (751)
: : : : : : : : :- Project (746)
: : : : : : : : : +- RepartitionByExpression (745)
: : : : : : : : : +- LogicalRelation (744)
: : : : : : : : +- Project (750)
: : : : : : : : +- Project (749)
: : : : : : : : +- Repartition (748)
: : : : : : : : +- LogicalRelation (747)
: : : : : : : +- Project (756)
: : : : : : : +- Repartition (755)
: : : : : : : +- LogicalRelation (754)
: : : : : : +- Repartition (761)
: : : : : : +- LogicalRelation (760)
: : : : : +- Project (810)
: : : : : +- Project (809)
: : : : : +- Project (808)
: : : : : +- Project (807)
: : : : : +- Generate (806)
: : : : : +- Project (805)
: : : : : +- Generate (804)
: : : : : +- Project (803)
: : : : : +- Join (802)
: : : : : :- Project (799)
: : : : : : +- Project (798)
: : : : : : +- Join (797)
: : : : : : :- SubqueryAlias (793)
: : : : : : : +- Project (792)
: : : : : : : +- Join (791)
: : : : : : : :- Project (786)
: : : : : : : : +- RepartitionByExpression (785)
: : : : : : : : +- LogicalRelation (784)
: : : : : : : +- Project (790)
: : : : : : : +- Project (789)
: : : : : : : +- Repartition (788)
: : : : : : : +- LogicalRelation (787)
: : : : : : +- Project (796)
: : : : : : +- Repartition (795)
: : : : : : +- LogicalRelation (794)
: : : : : +- Repartition (801)
: : : : : +- LogicalRelation (800)
: : : : +- LogicalRelation (826)
: : : +- Project (878)
: : : +- Project (877)
: : : +- Join (876)
: : : :- Project (846)
: : : : +- Project (845)
: : : : +- Generate (844)
: : : : +- Project (843)
: : : : +- Generate (842)
: : : : +- Project (841)
: : : : +- Project (840)
: : : : +- Filter (839)
: : : : +- Repartition (838)
: : : : +- LogicalRelation (837)
: : : +- Deduplicate (875)
: : : +- Project (874)
: : : +- Project (873)
: : : +- Project (872)
: : : +- Project (871)
: : : +- Project (870)
: : : +- Generate (869)
: : : +- Project (868)
: : : +- Generate (867)
: : : +- Project (866)
: : : +- Join (865)
: : : :- Project (862)
: : : : +- Project (861)
: : : : +- Join (860)
: : : : :- SubqueryAlias (856)
: : : : : +- Project (855)
: : : : : +- Join (854)
: : : : : :- Project (849)
: : : : : : +- RepartitionByExpression (848)
: : : : : : +- LogicalRelation (847)
: : : : : +- Project (853)
: : : : : +- Project (852)
: : : : : +- Repartition (851)
: : : : : +- LogicalRelation (850)
: : : : +- Project (859)
: : : : +- Repartition (858)
: : : : +- LogicalRelation (857)
: : : +- Repartition (864)
: : : +- LogicalRelation (863)
: : +- Project (886)
: : +- Filter (885)
: : +- Project (884)
: : +- Generate (883)
: : +- Repartition (882)
: : +- LogicalRelation (881)
: +- Filter (1324)
: +- Aggregate (1323)
: +- Project (1322)
: +- Project (1321)
: +- Project (1320)
: +- Join (1319)
: :- Project (1312)
: : +- Project (1311)
: : +- Join (1310)
: : :- Project (1098)
: : : +- Project (1097)
: : : +- Project (1096)
: : : +- Project (1095)
: : : +- Project (1094)
: : : +- Project (1093)
: : : +- Join (1092)
: : : :- Project (922)
: : : : +- Project (921)
: : : : +- Project (920)
: : : : +- Project (919)
: : : : +- Generate (918)
: : : : +- Project (917)
: : : : +- Generate (916)
: : : : +- Project (915)
: : : : +- Join (914)
: : : : :- Project (911)
: : : : : +- Project (910)
: : : : : +- Join (909)
: : : : : :- SubqueryAlias (905)
: : : : : : +- Project (904)
: : : : : : +- Join (903)
: : : : : : :- Project (898)
: : : : : : : +- RepartitionByExpression (897)
: : : : : : : +- LogicalRelation (896)
: : : : : : +- Project (902)
: : : : : : +- Project (901)
: : : : : : +- Repartition (900)
: : : : : : +- LogicalRelation (899)
: : : : : +- Project (908)
: : : : : +- Repartition (907)
: : : : : +- LogicalRelation (906)
: : : : +- Repartition (913)
: : : : +- LogicalRelation (912)
: : : +- Project (1091)
: : : +- Aggregate (1090)
: : : +- Project (1089)
: : : +- Join (1088)
: : : :- Project (1004)
: : : : +- Filter (1003)
: : : : +- Join (1002)
: : : : :- Filter (974)
: : : : : +- Project (973)
: : : : : +- Project (972)
: : : : : +- Generate (971)
: : : : : +- Project (970)
: : : : : +- Aggregate (969)
: : : : : +- Project (968)
: : : : : +- Generate (967)
: : : : : +- Join (966)
: : : : : :- Repartition (924)
: : : : : : +- LogicalRelation (923)
: : : : : +- Project (965)
: : : : : +- Join (964)
: : : : : :- Project (934)
: : : : : : +- Project (933)
: : : : : : +- Generate (932)
: : : : : : +- Project (931)
: : : : : : +- Generate (930)
: : : : : : +- Project (929)
: : : : : : +- Project (928)
: : : : : : +- Filter (927)
: : : : : : +- Repartition (926)
: : : : : : +- LogicalRelation (925)
: : : : : +- Deduplicate (963)
: : : : : +- Project (962)
: : : : : +- Project (961)
: : : : : +- Project (960)
: : : : : +- Project (959)
: : : : : +- Project (958)
: : : : : +- Generate (957)
: : : : : +- Project (956)
: : : : : +- Generate (955)
: : : : : +- Project (954)
: : : : : +- Join (953)
: : : : : :- Project (950)
: : : : : : +- Project (949)
: : : : : : +- Join (948)
: : : : : : :- SubqueryAlias (944)
: : : : : : : +- Project (943)
: : : : : : : +- Join (942)
: : : : : : : :- Project (937)
: : : : : : : : +- RepartitionByExpression (936)
: : : : : : : : +- LogicalRelation (935)
: : : : : : : +- Project (941)
: : : : : : : +- Project (940)
: : : : : : : +- Repartition (939)
: : : : : : : +- LogicalRelation (938)
: : : : : : +- Project (947)
: : : : : : +- Repartition (946)
: : : : : : +- LogicalRelation (945)
: : : : : +- Repartition (952)
: : : : : +- LogicalRelation (951)
: : : : +- Project (1001)
: : : : +- Project (1000)
: : : : +- Project (999)
: : : : +- Project (998)
: : : : +- Generate (997)
: : : : +- Project (996)
: : : : +- Generate (995)
: : : : +- Project (994)
: : : : +- Join (993)
: : : : :- Project (990)
: : : : : +- Project (989)
: : : : : +- Join (988)
: : : : : :- SubqueryAlias (984)
: : : : : : +- Project (983)
: : : : : : +- Join (982)
: : : : : : :- Project (977)
: : : : : : : +- RepartitionByExpression (976)
: : : : : : : +- LogicalRelation (975)
: : : : : : +- Project (981)
: : : : : : +- Project (980)
: : : : : : +- Repartition (979)
: : : : : : +- LogicalRelation (978)
: : : : : +- Project (987)
: : : : : +- Repartition (986)
: : : : : +- LogicalRelation (985)
: : : : +- Repartition (992)
: : : : +- LogicalRelation (991)
: : : +- Aggregate (1087)
: : : +- Project (1086)
: : : +- Filter (1085)
: : : +- Join (1084)
: : : :- Filter (1056)
: : : : +- Project (1055)
: : : : +- Project (1054)
: : : : +- Generate (1053)
: : : : +- Project (1052)
: : : : +- Aggregate (1051)
: : : : +- Project (1050)
: : : : +- Generate (1049)
: : : : +- Join (1048)
: : : : :- Repartition (1006)
: : : : : +- LogicalRelation (1005)
: : : : +- Project (1047)
: : : : +- Join (1046)
: : : : :- Project (1016)
: : : : : +- Project (1015)
: : : : : +- Generate (1014)
: : : : : +- Project (1013)
: : : : : +- Generate (1012)
: : : : : +- Project (1011)
: : : : : +- Project (1010)
: : : : : +- Filter (1009)
: : : : : +- Repartition (1008)
: : : : : +- LogicalRelation (1007)
: : : : +- Deduplicate (1045)
: : : : +- Project (1044)
: : : : +- Project (1043)
: : : : +- Project (1042)
: : : : +- Project (1041)
: : : : +- Project (1040)
: : : : +- Generate (1039)
: : : : +- Project (1038)
: : : : +- Generate (1037)
: : : : +- Project (1036)
: : : : +- Join (1035)
: : : : :- Project (1032)
: : : : : +- Project (1031)
: : : : : +- Join (1030)
: : : : : :- SubqueryAlias (1026)
: : : : : : +- Project (1025)
: : : : : : +- Join (1024)
: : : : : : :- Project (1019)
: : : : : : : +- RepartitionByExpression (1018)
: : : : : : : +- LogicalRelation (1017)
: : : : : : +- Project (1023)
: : : : : : +- Project (1022)
: : : : : : +- Repartition (1021)
: : : : : : +- LogicalRelation (1020)
: : : : : +- Project (1029)
: : : : : +- Repartition (1028)
: : : : : +- LogicalRelation (1027)
: : : : +- Repartition (1034)
: : : : +- LogicalRelation (1033)
: : : +- Project (1083)
: : : +- Project (1082)
: : : +- Project (1081)
: : : +- Project (1080)
: : : +- Generate (1079)
: : : +- Project (1078)
: : : +- Generate (1077)
: : : +- Project (1076)
: : : +- Join (1075)
: : : :- Project (1072)
: : : : +- Project (1071)
: : : : +- Join (1070)
: : : : :- SubqueryAlias (1066)
: : : : : +- Project (1065)
: : : : : +- Join (1064)
: : : : : :- Project (1059)
: : : : : : +- RepartitionByExpression (1058)
: : : : : : +- LogicalRelation (1057)
: : : : : +- Project (1063)
: : : : : +- Project (1062)
: : : : : +- Repartition (1061)
: : : : : +- LogicalRelation (1060)
: : : : +- Project (1069)
: : : : +- Repartition (1068)
: : : : +- LogicalRelation (1067)
: : : +- Repartition (1074)
: : : +- LogicalRelation (1073)
: : +- SerializeFromObject (1309)
: : +- MapElements (1308)
: : +- DeserializeToObject (1307)
: : +- Aggregate (1306)
: : +- Project (1305)
: : +- Project (1304)
: : +- Join (1303)
: : :- Project (1301)
: : : +- Project (1300)
: : : +- Project (1299)
: : : +- Project (1298)
: : : +- Project (1297)
: : : +- Project (1296)
: : : +- Join (1295)
: : : :- Project (1125)
: : : : +- Project (1124)
: : : : +- Project (1123)
: : : : +- Project (1122)
: : : : +- Generate (1121)
: : : : +- Project (1120)
: : : : +- Generate (1119)
: : : : +- Project (1118)
: : : : +- Join (1117)
: : : : :- Project (1114)
: : : : : +- Project (1113)
: : : : : +- Join (1112)
: : : : : :- SubqueryAlias (1108)
: : : : : : +- Project (1107)
: : : : : : +- Join (1106)
: : : : : : :- Project (1101)
: : : : : : : +- RepartitionByExpression (1100)
: : : : : : : +- LogicalRelation (1099)
: : : : : : +- Project (1105)
: : : : : : +- Project (1104)
: : : : : : +- Repartition (1103)
: : : : : : +- LogicalRelation (1102)
: : : : : +- Project (1111)
: : : : : +- Repartition (1110)
: : : : : +- LogicalRelation (1109)
: : : : +- Repartition (1116)
: : : : +- LogicalRelation (1115)
: : : +- Project (1294)
: : : +- Aggregate (1293)
: : : +- Project (1292)
: : : +- Join (1291)
: : : :- Project (1207)
: : : : +- Filter (1206)
: : : : +- Join (1205)
: : : : :- Filter (1177)
: : : : : +- Project (1176)
: : : : : +- Project (1175)
: : : : : +- Generate (1174)
: : : : : +- Project (1173)
: : : : : +- Aggregate (1172)
: : : : : +- Project (1171)
: : : : : +- Generate (1170)
: : : : : +- Join (1169)
: : : : : :- Repartition (1127)
: : : : : : +- LogicalRelation (1126)
: : : : : +- Project (1168)
: : : : : +- Join (1167)
: : : : : :- Project (1137)
: : : : : : +- Project (1136)
: : : : : : +- Generate (1135)
: : : : : : +- Project (1134)
: : : : : : +- Generate (1133)
: : : : : : +- Project (1132)
: : : : : : +- Project (1131)
: : : : : : +- Filter (1130)
: : : : : : +- Repartition (1129)
: : : : : : +- LogicalRelation (1128)
: : : : : +- Deduplicate (1166)
: : : : : +- Project (1165)
: : : : : +- Project (1164)
: : : : : +- Project (1163)
: : : : : +- Project (1162)
: : : : : +- Project (1161)
: : : : : +- Generate (1160)
: : : : : +- Project (1159)
: : : : : +- Generate (1158)
: : : : : +- Project (1157)
: : : : : +- Join (1156)
: : : : : :- Project (1153)
: : : : : : +- Project (1152)
: : : : : : +- Join (1151)
: : : : : : :- SubqueryAlias (1147)
: : : : : : : +- Project (1146)
: : : : : : : +- Join (1145)
: : : : : : : :- Project (1140)
: : : : : : : : +- RepartitionByExpression (1139)
: : : : : : : : +- LogicalRelation (1138)
: : : : : : : +- Project (1144)
: : : : : : : +- Project (1143)
: : : : : : : +- Repartition (1142)
: : : : : : : +- LogicalRelation (1141)
: : : : : : +- Project (1150)
: : : : : : +- Repartition (1149)
: : : : : : +- LogicalRelation (1148)
: : : : : +- Repartition (1155)
: : : : : +- LogicalRelation (1154)
: : : : +- Project (1204)
: : : : +- Project (1203)
: : : : +- Project (1202)
: : : : +- Project (1201)
: : : : +- Generate (1200)
: : : : +- Project (1199)
: : : : +- Generate (1198)
: : : : +- Project (1197)
: : : : +- Join (1196)
: : : : :- Project (1193)
: : : : : +- Project (1192)
: : : : : +- Join (1191)
: : : : : :- SubqueryAlias (1187)
: : : : : : +- Project (1186)
: : : : : : +- Join (1185)
: : : : : : :- Project (1180)
: : : : : : : +- RepartitionByExpression (1179)
: : : : : : : +- LogicalRelation (1178)
: : : : : : +- Project (1184)
: : : : : : +- Project (1183)
: : : : : : +- Repartition (1182)
: : : : : : +- LogicalRelation (1181)
: : : : : +- Project (1190)
: : : : : +- Repartition (1189)
: : : : : +- LogicalRelation (1188)
: : : : +- Repartition (1195)
: : : : +- LogicalRelation (1194)
: : : +- Aggregate (1290)
: : : +- Project (1289)
: : : +- Filter (1288)
: : : +- Join (1287)
: : : :- Filter (1259)
: : : : +- Project (1258)
: : : : +- Project (1257)
: : : : +- Generate (1256)
: : : : +- Project (1255)
: : : : +- Aggregate (1254)
: : : : +- Project (1253)
: : : : +- Generate (1252)
: : : : +- Join (1251)
: : : : :- Repartition (1209)
: : : : : +- LogicalRelation (1208)
: : : : +- Project (1250)
: : : : +- Join (1249)
: : : : :- Project (1219)
: : : : : +- Project (1218)
: : : : : +- Generate (1217)
: : : : : +- Project (1216)
: : : : : +- Generate (1215)
: : : : : +- Project (1214)
: : : : : +- Project (1213)
: : : : : +- Filter (1212)
: : : : : +- Repartition (1211)
: : : : : +- LogicalRelation (1210)
: : : : +- Deduplicate (1248)
: : : : +- Project (1247)
: : : : +- Project (1246)
: : : : +- Project (1245)
: : : : +- Project (1244)
: : : : +- Project (1243)
: : : : +- Generate (1242)
: : : : +- Project (1241)
: : : : +- Generate (1240)
: : : : +- Project (1239)
: : : : +- Join (1238)
: : : : :- Project (1235)
: : : : : +- Project (1234)
: : : : : +- Join (1233)
: : : : : :- SubqueryAlias (1229)
: : : : : : +- Project (1228)
: : : : : : +- Join (1227)
: : : : : : :- Project (1222)
: : : : : : : +- RepartitionByExpression (1221)
: : : : : : : +- LogicalRelation (1220)
: : : : : : +- Project (1226)
: : : : : : +- Project (1225)
: : : : : : +- Repartition (1224)
: : : : : : +- LogicalRelation (1223)
: : : : : +- Project (1232)
: : : : : +- Repartition (1231)
: : : : : +- LogicalRelation (1230)
: : : : +- Repartition (1237)
: : : : +- LogicalRelation (1236)
: : : +- Project (1286)
: : : +- Project (1285)
: : : +- Project (1284)
: : : +- Project (1283)
: : : +- Generate (1282)
: : : +- Project (1281)
: : : +- Generate (1280)
: : : +- Project (1279)
: : : +- Join (1278)
: : : :- Project (1275)
: : : : +- Project (1274)
: : : : +- Join (1273)
: : : : :- SubqueryAlias (1269)
: : : : : +- Project (1268)
: : : : : +- Join (1267)
: : : : : :- Project (1262)
: : : : : : +- RepartitionByExpression (1261)
: : : : : : +- LogicalRelation (1260)
: : : : : +- Project (1266)
: : : : : +- Project (1265)
: : : : : +- Repartition (1264)
: : : : : +- LogicalRelation (1263)
: : : : +- Project (1272)
: : : : +- Repartition (1271)
: : : : +- LogicalRelation (1270)
: : : +- Repartition (1277)
: : : +- LogicalRelation (1276)
: : +- LogicalRelation (1302)
: +- Project (1318)
: +- Filter (1317)
: +- Project (1316)
: +- Generate (1315)
: +- Repartition (1314)
: +- LogicalRelation (1313)
+- SerializeFromObject (2665)
+- MapElements (2664)
+- DeserializeToObject (2663)
+- Project (2662)
+- Project (2661)
+- Project (2660)
+- Project (2659)
+- Project (2658)
+- Project (2657)
+- Project (2656)
+- Join (2655)
:- Project (1747)
: +- Project (1746)
: +- Join (1745)
: :- Project (1533)
: : +- Project (1532)
: : +- Project (1531)
: : +- Project (1530)
: : +- Project (1529)
: : +- Project (1528)
: : +- Join (1527)
: : :- Project (1357)
: : : +- Project (1356)
: : : +- Project (1355)
: : : +- Project (1354)
: : : +- Generate (1353)
: : : +- Project (1352)
: : : +- Generate (1351)
: : : +- Project (1350)
: : : +- Join (1349)
: : : :- Project (1346)
: : : : +- Project (1345)
: : : : +- Join (1344)
: : : : :- SubqueryAlias (1340)
: : : : : +- Project (1339)
: : : : : +- Join (1338)
: : : : : :- Project (1333)
: : : : : : +- RepartitionByExpression (1332)
: : : : : : +- LogicalRelation (1331)
: : : : : +- Project (1337)
: : : : : +- Project (1336)
: : : : : +- Repartition (1335)
: : : : : +- LogicalRelation (1334)
: : : : +- Project (1343)
: : : : +- Repartition (1342)
: : : : +- LogicalRelation (1341)
: : : +- Repartition (1348)
: : : +- LogicalRelation (1347)
: : +- Project (1526)
: : +- Aggregate (1525)
: : +- Project (1524)
: : +- Join (1523)
: : :- Project (1439)
: : : +- Filter (1438)
: : : +- Join (1437)
: : : :- Filter (1409)
: : : : +- Project (1408)
: : : : +- Project (1407)
: : : : +- Generate (1406)
: : : : +- Project (1405)
: : : : +- Aggregate (1404)
: : : : +- Project (1403)
: : : : +- Generate (1402)
: : : : +- Join (1401)
: : : : :- Repartition (1359)
: : : : : +- LogicalRelation (1358)
: : : : +- Project (1400)
: : : : +- Join (1399)
: : : : :- Project (1369)
: : : : : +- Project (1368)
: : : : : +- Generate (1367)
: : : : : +- Project (1366)
: : : : : +- Generate (1365)
: : : : : +- Project (1364)
: : : : : +- Project (1363)
: : : : : +- Filter (1362)
: : : : : +- Repartition (1361)
: : : : : +- LogicalRelation (1360)
: : : : +- Deduplicate (1398)
: : : : +- Project (1397)
: : : : +- Project (1396)
: : : : +- Project (1395)
: : : : +- Project (1394)
: : : : +- Project (1393)
: : : : +- Generate (1392)
: : : : +- Project (1391)
: : : : +- Generate (1390)
: : : : +- Project (1389)
: : : : +- Join (1388)
: : : : :- Project (1385)
: : : : : +- Project (1384)
: : : : : +- Join (1383)
: : : : : :- SubqueryAlias (1379)
: : : : : : +- Project (1378)
: : : : : : +- Join (1377)
: : : : : : :- Project (1372)
: : : : : : : +- RepartitionByExpression (1371)
: : : : : : : +- LogicalRelation (1370)
: : : : : : +- Project (1376)
: : : : : : +- Project (1375)
: : : : : : +- Repartition (1374)
: : : : : : +- LogicalRelation (1373)
: : : : : +- Project (1382)
: : : : : +- Repartition (1381)
: : : : : +- LogicalRelation (1380)
: : : : +- Repartition (1387)
: : : : +- LogicalRelation (1386)
: : : +- Project (1436)
: : : +- Project (1435)
: : : +- Project (1434)
: : : +- Project (1433)
: : : +- Generate (1432)
: : : +- Project (1431)
: : : +- Generate (1430)
: : : +- Project (1429)
: : : +- Join (1428)
: : : :- Project (1425)
: : : : +- Project (1424)
: : : : +- Join (1423)
: : : : :- SubqueryAlias (1419)
: : : : : +- Project (1418)
: : : : : +- Join (1417)
: : : : : :- Project (1412)
: : : : : : +- RepartitionByExpression (1411)
: : : : : : +- LogicalRelation (1410)
: : : : : +- Project (1416)
: : : : : +- Project (1415)
: : : : : +- Repartition (1414)
: : : : : +- LogicalRelation (1413)
: : : : +- Project (1422)
: : : : +- Repartition (1421)
: : : : +- LogicalRelation (1420)
: : : +- Repartition (1427)
: : : +- LogicalRelation (1426)
: : +- Aggregate (1522)
: : +- Project (1521)
: : +- Filter (1520)
: : +- Join (1519)
: : :- Filter (1491)
: : : +- Project (1490)
: : : +- Project (1489)
: : : +- Generate (1488)
: : : +- Project (1487)
: : : +- Aggregate (1486)
: : : +- Project (1485)
: : : +- Generate (1484)
: : : +- Join (1483)
: : : :- Repartition (1441)
: : : : +- LogicalRelation (1440)
: : : +- Project (1482)
: : : +- Join (1481)
: : : :- Project (1451)
: : : : +- Project (1450)
: : : : +- Generate (1449)
: : : : +- Project (1448)
: : : : +- Generate (1447)
: : : : +- Project (1446)
: : : : +- Project (1445)
: : : : +- Filter (1444)
: : : : +- Repartition (1443)
: : : : +- LogicalRelation (1442)
: : : +- Deduplicate (1480)
: : : +- Project (1479)
: : : +- Project (1478)
: : : +- Project (1477)
: : : +- Project (1476)
: : : +- Project (1475)
: : : +- Generate (1474)
: : : +- Project (1473)
: : : +- Generate (1472)
: : : +- Project (1471)
: : : +- Join (1470)
: : : :- Project (1467)
: : : : +- Project (1466)
: : : : +- Join (1465)
: : : : :- SubqueryAlias (1461)
: : : : : +- Project (1460)
: : : : : +- Join (1459)
: : : : : :- Project (1454)
: : : : : : +- RepartitionByExpression (1453)
: : : : : : +- LogicalRelation (1452)
: : : : : +- Project (1458)
: : : : : +- Project (1457)
: : : : : +- Repartition (1456)
: : : : : +- LogicalRelation (1455)
: : : : +- Project (1464)
: : : : +- Repartition (1463)
: : : : +- LogicalRelation (1462)
: : : +- Repartition (1469)
: : : +- LogicalRelation (1468)
: : +- Project (1518)
: : +- Project (1517)
: : +- Project (1516)
: : +- Project (1515)
: : +- Generate (1514)
: : +- Project (1513)
: : +- Generate (1512)
: : +- Project (1511)
: : +- Join (1510)
: : :- Project (1507)
: : : +- Project (1506)
: : : +- Join (1505)
: : : :- SubqueryAlias (1501)
: : : : +- Project (1500)
: : : : +- Join (1499)
: : : : :- Project (1494)
: : : : : +- RepartitionByExpression (1493)
: : : : : +- LogicalRelation (1492)
: : : : +- Project (1498)
: : : : +- Project (1497)
: : : : +- Repartition (1496)
: : : : +- LogicalRelation (1495)
: : : +- Project (1504)
: : : +- Repartition (1503)
: : : +- LogicalRelation (1502)
: : +- Repartition (1509)
: : +- LogicalRelation (1508)
: +- SerializeFromObject (1744)
: +- MapElements (1743)
: +- DeserializeToObject (1742)
: +- Aggregate (1741)
: +- Project (1740)
: +- Project (1739)
: +- Join (1738)
: :- Project (1736)
: : +- Project (1735)
: : +- Project (1734)
: : +- Project (1733)
: : +- Project (1732)
: : +- Project (1731)
: : +- Join (1730)
: : :- Project (1560)
: : : +- Project (1559)
: : : +- Project (1558)
: : : +- Project (1557)
: : : +- Generate (1556)
: : : +- Project (1555)
: : : +- Generate (1554)
: : : +- Project (1553)
: : : +- Join (1552)
: : : :- Project (1549)
: : : : +- Project (1548)
: : : : +- Join (1547)
: : : : :- SubqueryAlias (1543)
: : : : : +- Project (1542)
: : : : : +- Join (1541)
: : : : : :- Project (1536)
: : : : : : +- RepartitionByExpression (1535)
: : : : : : +- LogicalRelation (1534)
: : : : : +- Project (1540)
: : : : : +- Project (1539)
: : : : : +- Repartition (1538)
: : : : : +- LogicalRelation (1537)
: : : : +- Project (1546)
: : : : +- Repartition (1545)
: : : : +- LogicalRelation (1544)
: : : +- Repartition (1551)
: : : +- LogicalRelation (1550)
: : +- Project (1729)
: : +- Aggregate (1728)
: : +- Project (1727)
: : +- Join (1726)
: : :- Project (1642)
: : : +- Filter (1641)
: : : +- Join (1640)
: : : :- Filter (1612)
: : : : +- Project (1611)
: : : : +- Project (1610)
: : : : +- Generate (1609)
: : : : +- Project (1608)
: : : : +- Aggregate (1607)
: : : : +- Project (1606)
: : : : +- Generate (1605)
: : : : +- Join (1604)
: : : : :- Repartition (1562)
: : : : : +- LogicalRelation (1561)
: : : : +- Project (1603)
: : : : +- Join (1602)
: : : : :- Project (1572)
: : : : : +- Project (1571)
: : : : : +- Generate (1570)
: : : : : +- Project (1569)
: : : : : +- Generate (1568)
: : : : : +- Project (1567)
: : : : : +- Project (1566)
: : : : : +- Filter (1565)
: : : : : +- Repartition (1564)
: : : : : +- LogicalRelation (1563)
: : : : +- Deduplicate (1601)
: : : : +- Project (1600)
: : : : +- Project (1599)
: : : : +- Project (1598)
: : : : +- Project (1597)
: : : : +- Project (1596)
: : : : +- Generate (1595)
: : : : +- Project (1594)
: : : : +- Generate (1593)
: : : : +- Project (1592)
: : : : +- Join (1591)
: : : : :- Project (1588)
: : : : : +- Project (1587)
: : : : : +- Join (1586)
: : : : : :- SubqueryAlias (1582)
: : : : : : +- Project (1581)
: : : : : : +- Join (1580)
: : : : : : :- Project (1575)
: : : : : : : +- RepartitionByExpression (1574)
: : : : : : : +- LogicalRelation (1573)
: : : : : : +- Project (1579)
: : : : : : +- Project (1578)
: : : : : : +- Repartition (1577)
: : : : : : +- LogicalRelation (1576)
: : : : : +- Project (1585)
: : : : : +- Repartition (1584)
: : : : : +- LogicalRelation (1583)
: : : : +- Repartition (1590)
: : : : +- LogicalRelation (1589)
: : : +- Project (1639)
: : : +- Project (1638)
: : : +- Project (1637)
: : : +- Project (1636)
: : : +- Generate (1635)
: : : +- Project (1634)
: : : +- Generate (1633)
: : : +- Project (1632)
: : : +- Join (1631)
: : : :- Project (1628)
: : : : +- Project (1627)
: : : : +- Join (1626)
: : : : :- SubqueryAlias (1622)
: : : : : +- Project (1621)
: : : : : +- Join (1620)
: : : : : :- Project (1615)
: : : : : : +- RepartitionByExpression (1614)
: : : : : : +- LogicalRelation (1613)
: : : : : +- Project (1619)
: : : : : +- Project (1618)
: : : : : +- Repartition (1617)
: : : : : +- LogicalRelation (1616)
: : : : +- Project (1625)
: : : : +- Repartition (1624)
: : : : +- LogicalRelation (1623)
: : : +- Repartition (1630)
: : : +- LogicalRelation (1629)
: : +- Aggregate (1725)
: : +- Project (1724)
: : +- Filter (1723)
: : +- Join (1722)
: : :- Filter (1694)
: : : +- Project (1693)
: : : +- Project (1692)
: : : +- Generate (1691)
: : : +- Project (1690)
: : : +- Aggregate (1689)
: : : +- Project (1688)
: : : +- Generate (1687)
: : : +- Join (1686)
: : : :- Repartition (1644)
: : : : +- LogicalRelation (1643)
: : : +- Project (1685)
: : : +- Join (1684)
: : : :- Project (1654)
: : : : +- Project (1653)
: : : : +- Generate (1652)
: : : : +- Project (1651)
: : : : +- Generate (1650)
: : : : +- Project (1649)
: : : : +- Project (1648)
: : : : +- Filter (1647)
: : : : +- Repartition (1646)
: : : : +- LogicalRelation (1645)
: : : +- Deduplicate (1683)
: : : +- Project (1682)
: : : +- Project (1681)
: : : +- Project (1680)
: : : +- Project (1679)
: : : +- Project (1678)
: : : +- Generate (1677)
: : : +- Project (1676)
: : : +- Generate (1675)
: : : +- Project (1674)
: : : +- Join (1673)
: : : :- Project (1670)
: : : : +- Project (1669)
: : : : +- Join (1668)
: : : : :- SubqueryAlias (1664)
: : : : : +- Project (1663)
: : : : : +- Join (1662)
: : : : : :- Project (1657)
: : : : : : +- RepartitionByExpression (1656)
: : : : : : +- LogicalRelation (1655)
: : : : : +- Project (1661)
: : : : : +- Project (1660)
: : : : : +- Repartition (1659)
: : : : : +- LogicalRelation (1658)
: : : : +- Project (1667)
: : : : +- Repartition (1666)
: : : : +- LogicalRelation (1665)
: : : +- Repartition (1672)
: : : +- LogicalRelation (1671)
: : +- Project (1721)
: : +- Project (1720)
: : +- Project (1719)
: : +- Project (1718)
: : +- Generate (1717)
: : +- Project (1716)
: : +- Generate (1715)
: : +- Project (1714)
: : +- Join (1713)
: : :- Project (1710)
: : : +- Project (1709)
: : : +- Join (1708)
: : : :- SubqueryAlias (1704)
: : : : +- Project (1703)
: : : : +- Join (1702)
: : : : :- Project (1697)
: : : : : +- RepartitionByExpression (1696)
: : : : : +- LogicalRelation (1695)
: : : : +- Project (1701)
: : : : +- Project (1700)
: : : : +- Repartition (1699)
: : : : +- LogicalRelation (1698)
: : : +- Project (1707)
: : : +- Repartition (1706)
: : : +- LogicalRelation (1705)
: : +- Repartition (1712)
: : +- LogicalRelation (1711)
: +- LogicalRelation (1737)
+- Aggregate (2654)
+- Union (2653)
:- Filter (2223)
: +- Aggregate (2222)
: +- Project (2221)
: +- Project (2220)
: +- Window (2219)
: +- Project (2218)
: +- Project (2217)
: +- Project (2216)
: +- Join (2215)
: :- Project (2208)
: : +- Join (2207)
: : :- Project (2164)
: : : +- Project (2163)
: : : +- Join (2162)
: : : :- Project (1950)
: : : : +- Project (1949)
: : : : +- Project (1948)
: : : : +- Project (1947)
: : : : +- Project (1946)
: : : : +- Project (1945)
: : : : +- Join (1944)
: : : : :- Project (1774)
: : : : : +- Project (1773)
: : : : : +- Project (1772)
: : : : : +- Project (1771)
: : : : : +- Generate (1770)
: : : : : +- Project (1769)
: : : : : +- Generate (1768)
: : : : : +- Project (1767)
: : : : : +- Join (1766)
: : : : : :- Project (1763)
: : : : : : +- Project (1762)
: : : : : : +- Join (1761)
: : : : : : :- SubqueryAlias (1757)
: : : : : : : +- Project (1756)
: : : : : : : +- Join (1755)
: : : : : : : :- Project (1750)
: : : : : : : : +- RepartitionByExpression (1749)
: : : : : : : : +- LogicalRelation (1748)
: : : : : : : +- Project (1754)
: : : : : : : +- Project (1753)
: : : : : : : +- Repartition (1752)
: : : : : : : +- LogicalRelation (1751)
: : : : : : +- Project (1760)
: : : : : : +- Repartition (1759)
: : : : : : +- LogicalRelation (1758)
: : : : : +- Repartition (1765)
: : : : : +- LogicalRelation (1764)
: : : : +- Project (1943)
: : : : +- Aggregate (1942)
: : : : +- Project (1941)
: : : : +- Join (1940)
: : : : :- Project (1856)
: : : : : +- Filter (1855)
: : : : : +- Join (1854)
: : : : : :- Filter (1826)
: : : : : : +- Project (1825)
: : : : : : +- Project (1824)
: : : : : : +- Generate (1823)
: : : : : : +- Project (1822)
: : : : : : +- Aggregate (1821)
: : : : : : +- Project (1820)
: : : : : : +- Generate (1819)
: : : : : : +- Join (1818)
: : : : : : :- Repartition (1776)
: : : : : : : +- LogicalRelation (1775)
: : : : : : +- Project (1817)
: : : : : : +- Join (1816)
: : : : : : :- Project (1786)
: : : : : : : +- Project (1785)
: : : : : : : +- Generate (1784)
: : : : : : : +- Project (1783)
: : : : : : : +- Generate (1782)
: : : : : : : +- Project (1781)
: : : : : : : +- Project (1780)
: : : : : : : +- Filter (1779)
: : : : : : : +- Repartition (1778)
: : : : : : : +- LogicalRelation (1777)
: : : : : : +- Deduplicate (1815)
: : : : : : +- Project (1814)
: : : : : : +- Project (1813)
: : : : : : +- Project (1812)
: : : : : : +- Project (1811)
: : : : : : +- Project (1810)
: : : : : : +- Generate (1809)
: : : : : : +- Project (1808)
: : : : : : +- Generate (1807)
: : : : : : +- Project (1806)
: : : : : : +- Join (1805)
: : : : : : :- Project (1802)
: : : : : : : +- Project (1801)
: : : : : : : +- Join (1800)
: : : : : : : :- SubqueryAlias (1796)
: : : : : : : : +- Project (1795)
: : : : : : : : +- Join (1794)
: : : : : : : : :- Project (1789)
: : : : : : : : : +- RepartitionByExpression (1788)
: : : : : : : : : +- LogicalRelation (1787)
: : : : : : : : +- Project (1793)
: : : : : : : : +- Project (1792)
: : : : : : : : +- Repartition (1791)
: : : : : : : : +- LogicalRelation (1790)
: : : : : : : +- Project (1799)
: : : : : : : +- Repartition (1798)
: : : : : : : +- LogicalRelation (1797)
: : : : : : +- Repartition (1804)
: : : : : : +- LogicalRelation (1803)
: : : : : +- Project (1853)
: : : : : +- Project (1852)
: : : : : +- Project (1851)
: : : : : +- Project (1850)
: : : : : +- Generate (1849)
: : : : : +- Project (1848)
: : : : : +- Generate (1847)
: : : : : +- Project (1846)
: : : : : +- Join (1845)
: : : : : :- Project (1842)
: : : : : : +- Project (1841)
: : : : : : +- Join (1840)
: : : : : : :- SubqueryAlias (1836)
: : : : : : : +- Project (1835)
: : : : : : : +- Join (1834)
: : : : : : : :- Project (1829)
: : : : : : : : +- RepartitionByExpression (1828)
: : : : : : : : +- LogicalRelation (1827)
: : : : : : : +- Project (1833)
: : : : : : : +- Project (1832)
: : : : : : : +- Repartition (1831)
: : : : : : : +- LogicalRelation (1830)
: : : : : : +- Project (1839)
: : : : : : +- Repartition (1838)
: : : : : : +- LogicalRelation (1837)
: : : : : +- Repartition (1844)
: : : : : +- LogicalRelation (1843)
: : : : +- Aggregate (1939)
: : : : +- Project (1938)
: : : : +- Filter (1937)
: : : : +- Join (1936)
: : : : :- Filter (1908)
: : : : : +- Project (1907)
: : : : : +- Project (1906)
: : : : : +- Generate (1905)
: : : : : +- Project (1904)
: : : : : +- Aggregate (1903)
: : : : : +- Project (1902)
: : : : : +- Generate (1901)
: : : : : +- Join (1900)
: : : : : :- Repartition (1858)
: : : : : : +- LogicalRelation (1857)
: : : : : +- Project (1899)
: : : : : +- Join (1898)
: : : : : :- Project (1868)
: : : : : : +- Project (1867)
: : : : : : +- Generate (1866)
: : : : : : +- Project (1865)
: : : : : : +- Generate (1864)
: : : : : : +- Project (1863)
: : : : : : +- Project (1862)
: : : : : : +- Filter (1861)
: : : : : : +- Repartition (1860)
: : : : : : +- LogicalRelation (1859)
: : : : : +- Deduplicate (1897)
: : : : : +- Project (1896)
: : : : : +- Project (1895)
: : : : : +- Project (1894)
: : : : : +- Project (1893)
: : : : : +- Project (1892)
: : : : : +- Generate (1891)
: : : : : +- Project (1890)
: : : : : +- Generate (1889)
: : : : : +- Project (1888)
: : : : : +- Join (1887)
: : : : : :- Project (1884)
: : : : : : +- Project (1883)
: : : : : : +- Join (1882)
: : : : : : :- SubqueryAlias (1878)
: : : : : : : +- Project (1877)
: : : : : : : +- Join (1876)
: : : : : : : :- Project (1871)
: : : : : : : : +- RepartitionByExpression (1870)
: : : : : : : : +- LogicalRelation (1869)
: : : : : : : +- Project (1875)
: : : : : : : +- Project (1874)
: : : : : : : +- Repartition (1873)
: : : : : : : +- LogicalRelation (1872)
: : : : : : +- Project (1881)
: : : : : : +- Repartition (1880)
: : : : : : +- LogicalRelation (1879)
: : : : : +- Repartition (1886)
: : : : : +- LogicalRelation (1885)
: : : : +- Project (1935)
: : : : +- Project (1934)
: : : : +- Project (1933)
: : : : +- Project (1932)
: : : : +- Generate (1931)
: : : : +- Project (1930)
: : : : +- Generate (1929)
: : : : +- Project (1928)
: : : : +- Join (1927)
: : : : :- Project (1924)
: : : : : +- Project (1923)
: : : : : +- Join (1922)
: : : : : :- SubqueryAlias (1918)
: : : : : : +- Project (1917)
: : : : : : +- Join (1916)
: : : : : : :- Project (1911)
: : : : : : : +- RepartitionByExpression (1910)
: : : : : : : +- LogicalRelation (1909)
: : : : : : +- Project (1915)
: : : : : : +- Project (1914)
: : : : : : +- Repartition (1913)
: : : : : : +- LogicalRelation (1912)
: : : : : +- Project (1921)
: : : : : +- Repartition (1920)
: : : : : +- LogicalRelation (1919)
: : : : +- Repartition (1926)
: : : : +- LogicalRelation (1925)
: : : +- SerializeFromObject (2161)
: : : +- MapElements (2160)
: : : +- DeserializeToObject (2159)
: : : +- Aggregate (2158)
: : : +- Project (2157)
: : : +- Project (2156)
: : : +- Join (2155)
: : : :- Project (2153)
: : : : +- Project (2152)
: : : : +- Project (2151)
: : : : +- Project (2150)
: : : : +- Project (2149)
: : : : +- Project (2148)
: : : : +- Join (2147)
: : : : :- Project (1977)
: : : : : +- Project (1976)
: : : : : +- Project (1975)
: : : : : +- Project (1974)
: : : : : +- Generate (1973)
: : : : : +- Project (1972)
: : : : : +- Generate (1971)
: : : : : +- Project (1970)
: : : : : +- Join (1969)
: : : : : :- Project (1966)
: : : : : : +- Project (1965)
: : : : : : +- Join (1964)
: : : : : : :- SubqueryAlias (1960)
: : : : : : : +- Project (1959)
: : : : : : : +- Join (1958)
: : : : : : : :- Project (1953)
: : : : : : : : +- RepartitionByExpression (1952)
: : : : : : : : +- LogicalRelation (1951)
: : : : : : : +- Project (1957)
: : : : : : : +- Project (1956)
: : : : : : : +- Repartition (1955)
: : : : : : : +- LogicalRelation (1954)
: : : : : : +- Project (1963)
: : : : : : +- Repartition (1962)
: : : : : : +- LogicalRelation (1961)
: : : : : +- Repartition (1968)
: : : : : +- LogicalRelation (1967)
: : : : +- Project (2146)
: : : : +- Aggregate (2145)
: : : : +- Project (2144)
: : : : +- Join (2143)
: : : : :- Project (2059)
: : : : : +- Filter (2058)
: : : : : +- Join (2057)
: : : : : :- Filter (2029)
: : : : : : +- Project (2028)
: : : : : : +- Project (2027)
: : : : : : +- Generate (2026)
: : : : : : +- Project (2025)
: : : : : : +- Aggregate (2024)
: : : : : : +- Project (2023)
: : : : : : +- Generate (2022)
: : : : : : +- Join (2021)
: : : : : : :- Repartition (1979)
: : : : : : : +- LogicalRelation (1978)
: : : : : : +- Project (2020)
: : : : : : +- Join (2019)
: : : : : : :- Project (1989)
: : : : : : : +- Project (1988)
: : : : : : : +- Generate (1987)
: : : : : : : +- Project (1986)
: : : : : : : +- Generate (1985)
: : : : : : : +- Project (1984)
: : : : : : : +- Project (1983)
: : : : : : : +- Filter (1982)
: : : : : : : +- Repartition (1981)
: : : : : : : +- LogicalRelation (1980)
: : : : : : +- Deduplicate (2018)
: : : : : : +- Project (2017)
: : : : : : +- Project (2016)
: : : : : : +- Project (2015)
: : : : : : +- Project (2014)
: : : : : : +- Project (2013)
: : : : : : +- Generate (2012)
: : : : : : +- Project (2011)
: : : : : : +- Generate (2010)
: : : : : : +- Project (2009)
: : : : : : +- Join (2008)
: : : : : : :- Project (2005)
: : : : : : : +- Project (2004)
: : : : : : : +- Join (2003)
: : : : : : : :- SubqueryAlias (1999)
: : : : : : : : +- Project (1998)
: : : : : : : : +- Join (1997)
: : : : : : : : :- Project (1992)
: : : : : : : : : +- RepartitionByExpression (1991)
: : : : : : : : : +- LogicalRelation (1990)
: : : : : : : : +- Project (1996)
: : : : : : : : +- Project (1995)
: : : : : : : : +- Repartition (1994)
: : : : : : : : +- LogicalRelation (1993)
: : : : : : : +- Project (2002)
: : : : : : : +- Repartition (2001)
: : : : : : : +- LogicalRelation (2000)
: : : : : : +- Repartition (2007)
: : : : : : +- LogicalRelation (2006)
: : : : : +- Project (2056)
: : : : : +- Project (2055)
: : : : : +- Project (2054)
: : : : : +- Project (2053)
: : : : : +- Generate (2052)
: : : : : +- Project (2051)
: : : : : +- Generate (2050)
: : : : : +- Project (2049)
: : : : : +- Join (2048)
: : : : : :- Project (2045)
: : : : : : +- Project (2044)
: : : : : : +- Join (2043)
: : : : : : :- SubqueryAlias (2039)
: : : : : : : +- Project (2038)
: : : : : : : +- Join (2037)
: : : : : : : :- Project (2032)
: : : : : : : : +- RepartitionByExpression (2031)
: : : : : : : : +- LogicalRelation (2030)
: : : : : : : +- Project (2036)
: : : : : : : +- Project (2035)
: : : : : : : +- Repartition (2034)
: : : : : : : +- LogicalRelation (2033)
: : : : : : +- Project (2042)
: : : : : : +- Repartition (2041)
: : : : : : +- LogicalRelation (2040)
: : : : : +- Repartition (2047)
: : : : : +- LogicalRelation (2046)
: : : : +- Aggregate (2142)
: : : : +- Project (2141)
: : : : +- Filter (2140)
: : : : +- Join (2139)
: : : : :- Filter (2111)
: : : : : +- Project (2110)
: : : : : +- Project (2109)
: : : : : +- Generate (2108)
: : : : : +- Project (2107)
: : : : : +- Aggregate (2106)
: : : : : +- Project (2105)
: : : : : +- Generate (2104)
: : : : : +- Join (2103)
: : : : : :- Repartition (2061)
: : : : : : +- LogicalRelation (2060)
: : : : : +- Project (2102)
: : : : : +- Join (2101)
: : : : : :- Project (2071)
: : : : : : +- Project (2070)
: : : : : : +- Generate (2069)
: : : : : : +- Project (2068)
: : : : : : +- Generate (2067)
: : : : : : +- Project (2066)
: : : : : : +- Project (2065)
: : : : : : +- Filter (2064)
: : : : : : +- Repartition (2063)
: : : : : : +- LogicalRelation (2062)
: : : : : +- Deduplicate (2100)
: : : : : +- Project (2099)
: : : : : +- Project (2098)
: : : : : +- Project (2097)
: : : : : +- Project (2096)
: : : : : +- Project (2095)
: : : : : +- Generate (2094)
: : : : : +- Project (2093)
: : : : : +- Generate (2092)
: : : : : +- Project (2091)
: : : : : +- Join (2090)
: : : : : :- Project (2087)
: : : : : : +- Project (2086)
: : : : : : +- Join (2085)
: : : : : : :- SubqueryAlias (2081)
: : : : : : : +- Project (2080)
: : : : : : : +- Join (2079)
: : : : : : : :- Project (2074)
: : : : : : : : +- RepartitionByExpression (2073)
: : : : : : : : +- LogicalRelation (2072)
: : : : : : : +- Project (2078)
: : : : : : : +- Project (2077)
: : : : : : : +- Repartition (2076)
: : : : : : : +- LogicalRelation (2075)
: : : : : : +- Project (2084)
: : : : : : +- Repartition (2083)
: : : : : : +- LogicalRelation (2082)
: : : : : +- Repartition (2089)
: : : : : +- LogicalRelation (2088)
: : : : +- Project (2138)
: : : : +- Project (2137)
: : : : +- Project (2136)
: : : : +- Project (2135)
: : : : +- Generate (2134)
: : : : +- Project (2133)
: : : : +- Generate (2132)
: : : : +- Project (2131)
: : : : +- Join (2130)
: : : : :- Project (2127)
: : : : : +- Project (2126)
: : : : : +- Join (2125)
: : : : : :- SubqueryAlias (2121)
: : : : : : +- Project (2120)
: : : : : : +- Join (2119)
: : : : : : :- Project (2114)
: : : : : : : +- RepartitionByExpression (2113)
: : : : : : : +- LogicalRelation (2112)
: : : : : : +- Project (2118)
: : : : : : +- Project (2117)
: : : : : : +- Repartition (2116)
: : : : : : +- LogicalRelation (2115)
: : : : : +- Project (2124)
: : : : : +- Repartition (2123)
: : : : : +- LogicalRelation (2122)
: : : : +- Repartition (2129)
: : : : +- LogicalRelation (2128)
: : : +- LogicalRelation (2154)
: : +- Project (2206)
: : +- Project (2205)
: : +- Join (2204)
: : :- Project (2174)
: : : +- Project (2173)
: : : +- Generate (2172)
: : : +- Project (2171)
: : : +- Generate (2170)
: : : +- Project (2169)
: : : +- Project (2168)
: : : +- Filter (2167)
: : : +- Repartition (2166)
: : : +- LogicalRelation (2165)
: : +- Deduplicate (2203)
: : +- Project (2202)
: : +- Project (2201)
: : +- Project (2200)
: : +- Project (2199)
: : +- Project (2198)
: : +- Generate (2197)
: : +- Project (2196)
: : +- Generate (2195)
: : +- Project (2194)
: : +- Join (2193)
: : :- Project (2190)
: : : +- Project (2189)
: : : +- Join (2188)
: : : :- SubqueryAlias (2184)
: : : : +- Project (2183)
: : : : +- Join (2182)
: : : : :- Project (2177)
: : : : : +- RepartitionByExpression (2176)
: : : : : +- LogicalRelation (2175)
: : : : +- Project (2181)
: : : : +- Project (2180)
: : : : +- Repartition (2179)
: : : : +- LogicalRelation (2178)
: : : +- Project (2187)
: : : +- Repartition (2186)
: : : +- LogicalRelation (2185)
: : +- Repartition (2192)
: : +- LogicalRelation (2191)
: +- Project (2214)
: +- Filter (2213)
: +- Project (2212)
: +- Generate (2211)
: +- Repartition (2210)
: +- LogicalRelation (2209)
+- Filter (2652)
+- Aggregate (2651)
+- Project (2650)
+- Project (2649)
+- Project (2648)
+- Join (2647)
:- Project (2640)
: +- Project (2639)
: +- Join (2638)
: :- Project (2426)
: : +- Project (2425)
: : +- Project (2424)
: : +- Project (2423)
: : +- Project (2422)
: : +- Project (2421)
: : +- Join (2420)
: : :- Project (2250)
: : : +- Project (2249)
: : : +- Project (2248)
: : : +- Project (2247)
: : : +- Generate (2246)
: : : +- Project (2245)
: : : +- Generate (2244)
: : : +- Project (2243)
: : : +- Join (2242)
: : : :- Project (2239)
: : : : +- Project (2238)
: : : : +- Join (2237)
: : : : :- SubqueryAlias (2233)
: : : : : +- Project (2232)
: : : : : +- Join (2231)
: : : : : :- Project (2226)
: : : : : : +- RepartitionByExpression (2225)
: : : : : : +- LogicalRelation (2224)
: : : : : +- Project (2230)
: : : : : +- Project (2229)
: : : : : +- Repartition (2228)
: : : : : +- LogicalRelation (2227)
: : : : +- Project (2236)
: : : : +- Repartition (2235)
: : : : +- LogicalRelation (2234)
: : : +- Repartition (2241)
: : : +- LogicalRelation (2240)
: : +- Project (2419)
: : +- Aggregate (2418)
: : +- Project (2417)
: : +- Join (2416)
: : :- Project (2332)
: : : +- Filter (2331)
: : : +- Join (2330)
: : : :- Filter (2302)
: : : : +- Project (2301)
: : : : +- Project (2300)
: : : : +- Generate (2299)
: : : : +- Project (2298)
: : : : +- Aggregate (2297)
: : : : +- Project (2296)
: : : : +- Generate (2295)
: : : : +- Join (2294)
: : : : :- Repartition (2252)
: : : : : +- LogicalRelation (2251)
: : : : +- Project (2293)
: : : : +- Join (2292)
: : : : :- Project (2262)
: : : : : +- Project (2261)
: : : : : +- Generate (2260)
: : : : : +- Project (2259)
: : : : : +- Generate (2258)
: : : : : +- Project (2257)
: : : : : +- Project (2256)
: : : : : +- Filter (2255)
: : : : : +- Repartition (2254)
: : : : : +- LogicalRelation (2253)
: : : : +- Deduplicate (2291)
: : : : +- Project (2290)
: : : : +- Project (2289)
: : : : +- Project (2288)
: : : : +- Project (2287)
: : : : +- Project (2286)
: : : : +- Generate (2285)
: : : : +- Project (2284)
: : : : +- Generate (2283)
: : : : +- Project (2282)
: : : : +- Join (2281)
: : : : :- Project (2278)
: : : : : +- Project (2277)
: : : : : +- Join (2276)
: : : : : :- SubqueryAlias (2272)
: : : : : : +- Project (2271)
: : : : : : +- Join (2270)
: : : : : : :- Project (2265)
: : : : : : : +- RepartitionByExpression (2264)
: : : : : : : +- LogicalRelation (2263)
: : : : : : +- Project (2269)
: : : : : : +- Project (2268)
: : : : : : +- Repartition (2267)
: : : : : : +- LogicalRelation (2266)
: : : : : +- Project (2275)
: : : : : +- Repartition (2274)
: : : : : +- LogicalRelation (2273)
: : : : +- Repartition (2280)
: : : : +- LogicalRelation (2279)
: : : +- Project (2329)
: : : +- Project (2328)
: : : +- Project (2327)
: : : +- Project (2326)
: : : +- Generate (2325)
: : : +- Project (2324)
: : : +- Generate (2323)
: : : +- Project (2322)
: : : +- Join (2321)
: : : :- Project (2318)
: : : : +- Project (2317)
: : : : +- Join (2316)
: : : : :- SubqueryAlias (2312)
: : : : : +- Project (2311)
: : : : : +- Join (2310)
: : : : : :- Project (2305)
: : : : : : +- RepartitionByExpression (2304)
: : : : : : +- LogicalRelation (2303)
: : : : : +- Project (2309)
: : : : : +- Project (2308)
: : : : : +- Repartition (2307)
: : : : : +- LogicalRelation (2306)
: : : : +- Project (2315)
: : : : +- Repartition (2314)
: : : : +- LogicalRelation (2313)
: : : +- Repartition (2320)
: : : +- LogicalRelation (2319)
: : +- Aggregate (2415)
: : +- Project (2414)
: : +- Filter (2413)
: : +- Join (2412)
: : :- Filter (2384)
: : : +- Project (2383)
: : : +- Project (2382)
: : : +- Generate (2381)
: : : +- Project (2380)
: : : +- Aggregate (2379)
: : : +- Project (2378)
: : : +- Generate (2377)
: : : +- Join (2376)
: : : :- Repartition (2334)
: : : : +- LogicalRelation (2333)
: : : +- Project (2375)
: : : +- Join (2374)
: : : :- Project (2344)
: : : : +- Project (2343)
: : : : +- Generate (2342)
: : : : +- Project (2341)
: : : : +- Generate (2340)
: : : : +- Project (2339)
: : : : +- Project (2338)
: : : : +- Filter (2337)
: : : : +- Repartition (2336)
: : : : +- LogicalRelation (2335)
: : : +- Deduplicate (2373)
: : : +- Project (2372)
: : : +- Project (2371)
: : : +- Project (2370)
: : : +- Project (2369)
: : : +- Project (2368)
: : : +- Generate (2367)
: : : +- Project (2366)
: : : +- Generate (2365)
: : : +- Project (2364)
: : : +- Join (2363)
: : : :- Project (2360)
: : : : +- Project (2359)
: : : : +- Join (2358)
: : : : :- SubqueryAlias (2354)
: : : : : +- Project (2353)
: : : : : +- Join (2352)
: : : : : :- Project (2347)
: : : : : : +- RepartitionByExpression (2346)
: : : : : : +- LogicalRelation (2345)
: : : : : +- Project (2351)
: : : : : +- Project (2350)
: : : : : +- Repartition (2349)
: : : : : +- LogicalRelation (2348)
: : : : +- Project (2357)
: : : : +- Repartition (2356)
: : : : +- LogicalRelation (2355)
: : : +- Repartition (2362)
: : : +- LogicalRelation (2361)
: : +- Project (2411)
: : +- Project (2410)
: : +- Project (2409)
: : +- Project (2408)
: : +- Generate (2407)
: : +- Project (2406)
: : +- Generate (2405)
: : +- Project (2404)
: : +- Join (2403)
: : :- Project (2400)
: : : +- Project (2399)
: : : +- Join (2398)
: : : :- SubqueryAlias (2394)
: : : : +- Project (2393)
: : : : +- Join (2392)
: : : : :- Project (2387)
: : : : : +- RepartitionByExpression (2386)
: : : : : +- LogicalRelation (2385)
: : : : +- Project (2391)
: : : : +- Project (2390)
: : : : +- Repartition (2389)
: : : : +- LogicalRelation (2388)
: : : +- Project (2397)
: : : +- Repartition (2396)
: : : +- LogicalRelation (2395)
: : +- Repartition (2402)
: : +- LogicalRelation (2401)
: +- SerializeFromObject (2637)
: +- MapElements (2636)
: +- DeserializeToObject (2635)
: +- Aggregate (2634)
: +- Project (2633)
: +- Project (2632)
: +- Join (2631)
: :- Project (2629)
: : +- Project (2628)
: : +- Project (2627)
: : +- Project (2626)
: : +- Project (2625)
: : +- Project (2624)
: : +- Join (2623)
: : :- Project (2453)
: : : +- Project (2452)
: : : +- Project (2451)
: : : +- Project (2450)
: : : +- Generate (2449)
: : : +- Project (2448)
: : : +- Generate (2447)
: : : +- Project (2446)
: : : +- Join (2445)
: : : :- Project (2442)
: : : : +- Project (2441)
: : : : +- Join (2440)
: : : : :- SubqueryAlias (2436)
: : : : : +- Project (2435)
: : : : : +- Join (2434)
: : : : : :- Project (2429)
: : : : : : +- RepartitionByExpression (2428)
: : : : : : +- LogicalRelation (2427)
: : : : : +- Project (2433)
: : : : : +- Project (2432)
: : : : : +- Repartition (2431)
: : : : : +- LogicalRelation (2430)
: : : : +- Project (2439)
: : : : +- Repartition (2438)
: : : : +- LogicalRelation (2437)
: : : +- Repartition (2444)
: : : +- LogicalRelation (2443)
: : +- Project (2622)
: : +- Aggregate (2621)
: : +- Project (2620)
: : +- Join (2619)
: : :- Project (2535)
: : : +- Filter (2534)
: : : +- Join (2533)
: : : :- Filter (2505)
: : : : +- Project (2504)
: : : : +- Project (2503)
: : : : +- Generate (2502)
: : : : +- Project (2501)
: : : : +- Aggregate (2500)
: : : : +- Project (2499)
: : : : +- Generate (2498)
: : : : +- Join (2497)
: : : : :- Repartition (2455)
: : : : : +- LogicalRelation (2454)
: : : : +- Project (2496)
: : : : +- Join (2495)
: : : : :- Project (2465)
: : : : : +- Project (2464)
: : : : : +- Generate (2463)
: : : : : +- Project (2462)
: : : : : +- Generate (2461)
: : : : : +- Project (2460)
: : : : : +- Project (2459)
: : : : : +- Filter (2458)
: : : : : +- Repartition (2457)
: : : : : +- LogicalRelation (2456)
: : : : +- Deduplicate (2494)
: : : : +- Project (2493)
: : : : +- Project (2492)
: : : : +- Project (2491)
: : : : +- Project (2490)
: : : : +- Project (2489)
: : : : +- Generate (2488)
: : : : +- Project (2487)
: : : : +- Generate (2486)
: : : : +- Project (2485)
: : : : +- Join (2484)
: : : : :- Project (2481)
: : : : : +- Project (2480)
: : : : : +- Join (2479)
: : : : : :- SubqueryAlias (2475)
: : : : : : +- Project (2474)
: : : : : : +- Join (2473)
: : : : : : :- Project (2468)
: : : : : : : +- RepartitionByExpression (2467)
: : : : : : : +- LogicalRelation (2466)
: : : : : : +- Project (2472)
: : : : : : +- Project (2471)
: : : : : : +- Repartition (2470)
: : : : : : +- LogicalRelation (2469)
: : : : : +- Project (2478)
: : : : : +- Repartition (2477)
: : : : : +- LogicalRelation (2476)
: : : : +- Repartition (2483)
: : : : +- LogicalRelation (2482)
: : : +- Project (2532)
: : : +- Project (2531)
: : : +- Project (2530)
: : : +- Project (2529)
: : : +- Generate (2528)
: : : +- Project (2527)
: : : +- Generate (2526)
: : : +- Project (2525)
: : : +- Join (2524)
: : : :- Project (2521)
: : : : +- Project (2520)
: : : : +- Join (2519)
: : : : :- SubqueryAlias (2515)
: : : : : +- Project (2514)
: : : : : +- Join (2513)
: : : : : :- Project (2508)
: : : : : : +- RepartitionByExpression (2507)
: : : : : : +- LogicalRelation (2506)
: : : : : +- Project (2512)
: : : : : +- Project (2511)
: : : : : +- Repartition (2510)
: : : : : +- LogicalRelation (2509)
: : : : +- Project (2518)
: : : : +- Repartition (2517)
: : : : +- LogicalRelation (2516)
: : : +- Repartition (2523)
: : : +- LogicalRelation (2522)
: : +- Aggregate (2618)
: : +- Project (2617)
: : +- Filter (2616)
: : +- Join (2615)
: : :- Filter (2587)
: : : +- Project (2586)
: : : +- Project (2585)
: : : +- Generate (2584)
: : : +- Project (2583)
: : : +- Aggregate (2582)
: : : +- Project (2581)
: : : +- Generate (2580)
: : : +- Join (2579)
: : : :- Repartition (2537)
: : : : +- LogicalRelation (2536)
: : : +- Project (2578)
: : : +- Join (2577)
: : : :- Project (2547)
: : : : +- Project (2546)
: : : : +- Generate (2545)
: : : : +- Project (2544)
: : : : +- Generate (2543)
: : : : +- Project (2542)
: : : : +- Project (2541)
: : : : +- Filter (2540)
: : : : +- Repartition (2539)
: : : : +- LogicalRelation (2538)
: : : +- Deduplicate (2576)
: : : +- Project (2575)
: : : +- Project (2574)
: : : +- Project (2573)
: : : +- Project (2572)
: : : +- Project (2571)
: : : +- Generate (2570)
: : : +- Project (2569)
: : : +- Generate (2568)
: : : +- Project (2567)
: : : +- Join (2566)
: : : :- Project (2563)
: : : : +- Project (2562)
: : : : +- Join (2561)
: : : : :- SubqueryAlias (2557)
: : : : : +- Project (2556)
: : : : : +- Join (2555)
: : : : : :- Project (2550)
: : : : : : +- RepartitionByExpression (2549)
: : : : : : +- LogicalRelation (2548)
: : : : : +- Project (2554)
: : : : : +- Project (2553)
: : : : : +- Repartition (2552)
: : : : : +- LogicalRelation (2551)
: : : : +- Project (2560)
: : : : +- Repartition (2559)
: : : : +- LogicalRelation (2558)
: : : +- Repartition (2565)
: : : +- LogicalRelation (2564)
: : +- Project (2614)
: : +- Project (2613)
: : +- Project (2612)
: : +- Project (2611)
: : +- Generate (2610)
: : +- Project (2609)
: : +- Generate (2608)
: : +- Project (2607)
: : +- Join (2606)
: : :- Project (2603)
: : : +- Project (2602)
: : : +- Join (2601)
: : : :- SubqueryAlias (2597)
: : : : +- Project (2596)
: : : : +- Join (2595)
: : : : :- Project (2590)
: : : : : +- RepartitionByExpression (2589)
: : : : : +- LogicalRelation (2588)
: : : : +- Project (2594)
: : : : +- Project (2593)
: : : : +- Repartition (2592)
: : : : +- LogicalRelation (2591)
: : : +- Project (2600)
: : : +- Repartition (2599)
: : : +- LogicalRelation (2598)
: : +- Repartition (2605)
: : +- LogicalRelation (2604)
: +- LogicalRelation (2630)
+- Project (2646)
+- Filter (2645)
+- Project (2644)
+- Generate (2643)
+- Repartition (2642)
+- LogicalRelation (2641)
(1) Execute SaveIntoDataSourceCommand
Output: []
(2) SaveIntoDataSourceCommand
Arguments: org.apache.spark.sql.delta.sources.DeltaDataSource@1ff01d1a, [path=hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-quantity-kpi-service/internal/data-snapshot/10000000005/0_1_10000000005], Overwrite
(3) LogicalRelation
Arguments: parquet, [product#25911, plant#25912, orderDateTime#25913, planningStartDateTime#25914], false
(4) RepartitionByExpression
Arguments: [product#25911, plant#25912], 10
(5) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913]
(6) LogicalRelation
Arguments: parquet, [systemId#25916, internalUUID#25917, plant#25918, product#25919, blockedForReplenishmentStartingFrom#25920, productionAspect#25921, salesPlant#25922, listing#25923], false
(7) Repartition
Arguments: 10, true
(8) Project
Arguments: [systemId#25916, internalUUID#25917, plant#25918, product#25919, blockedForReplenishmentStartingFrom#25920, productionAspect#25921, salesPlant#25922, listing#25923, struct(systemId, systemId#25916, internalUUID, internalUUID#25917, plant, plant#25918, product, product#25919, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#25920, productionAspect, productionAspect#25921, salesPlant, salesPlant#25922, listing, listing#25923) AS productPlant#25925]
(9) Project
Arguments: [productPlant#25925]
(10) Join
Arguments: LeftOuter, ((product#25911 <=> productPlant#25925.product.internalRefUUID) AND (plant#25912 <=> productPlant#25925.plant.internalRefUUID))
(11) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925]
(12) SubqueryAlias
Arguments: wl
(13) LogicalRelation
Arguments: parquet, [systemId#25928, internalUUID#25929, id#25930, displayId#25931, name#25932, category#25933, companyCode#25934, address#25935, mainDistributionChain#25936, mainPurchasingOrganization#25937, validPurchasingOrganizations#25938, productGroup#25939], false
(14) Repartition
Arguments: 10, true
(15) Project
Arguments: [internalUUID#25929, address#25935.timeZone.code AS timezonecode#25940]
(16) Join
Arguments: LeftOuter, (plant#25912 <=> internalUUID#25929)
(17) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, internalUUID#25929, CASE WHEN isnotnull(timezonecode#25940) THEN timezonecode#25940 ELSE UTC END AS timezonecode#25943]
(18) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943]
(19) LogicalRelation
Arguments: parquet, [systemId#25944, internalUUID#25945, id#25946, displayId#25947, name#25948, baseUnitOfMeasure#25949, unitOfMeasures#25950, unitOfMeasureConversions#25951, productionAspect#25952, salesAspect#25953, procurementAspect#25954, productGroup#25955], false
(20) Repartition
Arguments: 10, true
(21) Join
Arguments: LeftOuter, (product#25911 = internalUUID#25945)
(22) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, systemId#25944, internalUUID#25945, id#25946, displayId#25947, name#25948, baseUnitOfMeasure#25949, unitOfMeasures#25950, unitOfMeasureConversions#25951, productionAspect#25952, salesAspect#25953, procurementAspect#25954, productGroup#25955, filter(unitOfMeasureConversions#25951, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#25925.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#25925.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#25949.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#25949.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#25957]
(23) Generate
Arguments: explode(filteredUnitOfMeasureConversions#25957.quantityNumerator), true, [quantityNumerator#25965]
(24) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, systemId#25944, internalUUID#25945, id#25946, displayId#25947, name#25948, baseUnitOfMeasure#25949, unitOfMeasures#25950, unitOfMeasureConversions#25951, productionAspect#25952, salesAspect#25953, procurementAspect#25954, productGroup#25955, filteredUnitOfMeasureConversions#25957, quantityNumerator#25965]
(25) Generate
Arguments: explode(filteredUnitOfMeasureConversions#25957.quantityDenominator), true, [quantityDenominator#25968]
(26) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, systemId#25944, internalUUID#25945, id#25946, displayId#25947, name#25948, baseUnitOfMeasure#25949, unitOfMeasures#25950, unitOfMeasureConversions#25951, productionAspect#25952, salesAspect#25953, procurementAspect#25954, productGroup#25955, filteredUnitOfMeasureConversions#25957, quantityNumerator#25965, quantityDenominator#25968]
(27) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, systemId#25944, internalUUID#25945, id#25946, displayId#25947, name#25948, baseUnitOfMeasure#25949, unitOfMeasures#25950, unitOfMeasureConversions#25951, productionAspect#25952, salesAspect#25953, procurementAspect#25954, productGroup#25955, filteredUnitOfMeasureConversions#25957, quantityNumerator#25965, quantityDenominator#25968, (cast(quantityNumerator#25965 as double) / cast(quantityDenominator#25968 as double)) AS outboundUnit#25969]
(28) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, systemId#25944, internalUUID#25945, id#25946, displayId#25947, name#25948, baseUnitOfMeasure#25949, unitOfMeasures#25950, unitOfMeasureConversions#25951, productionAspect#25952, salesAspect#25953, procurementAspect#25954, productGroup#25955, filteredUnitOfMeasureConversions#25957, quantityNumerator#25965, quantityDenominator#25968, CASE WHEN (isnull(outboundUnit#25969) OR (outboundUnit#25969 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#25969 END AS outboundUnit#25970]
(29) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970]
(30) LogicalRelation
Arguments: parquet, [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012], false
(31) Repartition
Arguments: 10, true
(32) LogicalRelation
Arguments: parquet, [marketUnit#25971, description#25972, articleHierarchy#25973, defaultCurrency#25974, responsibilities#25975, replenishmentTypes#25976, distributionCenters#25977, assignedArticleHierarchyNodes#25978, minOrderQtySetting#25979, minOrderQtySettingInternal#25980, listingCheck#25981, odsSelection#25982, demandProfiles#25983, constraintProfiles#25984, optimizationProfiles#25985, orderGroupSplitProfiles#25986, supplierMinimumProfiles#25987, multipleRestrictionProfiles#25988, preferredUomSource#25989, handlingOfUnfulfilledDemands#25990, negligibleQuantitiesThreshold#25991, eventtype#25992], false
(33) Repartition
Arguments: 10, true
(34) Filter
Arguments: (marketUnit#25971 <=> DIP_1691)
(35) Project
Arguments: [marketUnit#25971, description#25972, articleHierarchy#25973, defaultCurrency#25974, responsibilities#25975, replenishmentTypes#25976, distributionCenters#25977, assignedArticleHierarchyNodes#25978, minOrderQtySetting#25979, minOrderQtySettingInternal#25980, listingCheck#25981, odsSelection#25982, demandProfiles#25983, constraintProfiles#25984, optimizationProfiles#25985, orderGroupSplitProfiles#25986, supplierMinimumProfiles#25987, multipleRestrictionProfiles#25988, preferredUomSource#25989, handlingOfUnfulfilledDemands#25990, negligibleQuantitiesThreshold#25991, eventtype#25992]
(36) Project
Arguments: [distributionCenters#25977]
(37) Generate
Arguments: explode(distributionCenters#25977), false, [distributionCenters#25995]
(38) Project
Arguments: [distributionCenters#25995]
(39) Generate
Arguments: explode(distributionCenters#25995.storageLocations), false, [storageLocations#26002]
(40) Project
Arguments: [distributionCenters#25995.id AS plantId#25996, distributionCenters#25995.internalRefUUID AS plantUuid#25997, storageLocations#26002]
(41) Project
Arguments: [plantId#25996, plantUuid#25997, storageLocations#26002.id AS storageLocId#26003, storageLocations#26002.internalRefUUID AS storageLocUuid#26004]
(42) LogicalRelation
Arguments: parquet, [product#26267, plant#26268, orderDateTime#26269, planningStartDateTime#26270], false
(43) RepartitionByExpression
Arguments: [product#26267, plant#26268], 10
(44) Project
Arguments: [product#26267, plant#26268, orderDateTime#26269]
(45) LogicalRelation
Arguments: parquet, [systemId#26271, internalUUID#26272, plant#26273, product#26274, blockedForReplenishmentStartingFrom#26275, productionAspect#26276, salesPlant#26277, listing#26278], false
(46) Repartition
Arguments: 10, true
(47) Project
Arguments: [systemId#26271, internalUUID#26272, plant#26273, product#26274, blockedForReplenishmentStartingFrom#26275, productionAspect#26276, salesPlant#26277, listing#26278, struct(systemId, systemId#26271, internalUUID, internalUUID#26272, plant, plant#26273, product, product#26274, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26275, productionAspect, productionAspect#26276, salesPlant, salesPlant#26277, listing, listing#26278) AS productPlant#26279]
(48) Project
Arguments: [productPlant#26279]
(49) Join
Arguments: LeftOuter, ((product#26267 <=> productPlant#26279.product.internalRefUUID) AND (plant#26268 <=> productPlant#26279.plant.internalRefUUID))
(50) Project
Arguments: [product#26267, plant#26268, orderDateTime#26269, productPlant#26279]
(51) SubqueryAlias
Arguments: wl
(52) LogicalRelation
Arguments: parquet, [systemId#26280, internalUUID#26281, id#26282, displayId#26283, name#26284, category#26285, companyCode#26286, address#26287, mainDistributionChain#26288, mainPurchasingOrganization#26289, validPurchasingOrganizations#26290, productGroup#26291], false
(53) Repartition
Arguments: 10, true
(54) Project
Arguments: [internalUUID#26281, address#26287.timeZone.code AS timezonecode#26292]
(55) Join
Arguments: LeftOuter, (plant#26268 <=> internalUUID#26281)
(56) Project
Arguments: [product#26267, plant#26268, orderDateTime#26269, productPlant#26279, internalUUID#26281, CASE WHEN isnotnull(timezonecode#26292) THEN timezonecode#26292 ELSE UTC END AS timezonecode#26293]
(57) Project
Arguments: [product#26267, plant#26268, orderDateTime#26269, productPlant#26279, timezonecode#26293]
(58) LogicalRelation
Arguments: parquet, [systemId#26294, internalUUID#26295, id#26296, displayId#26297, name#26298, baseUnitOfMeasure#26299, unitOfMeasures#26300, unitOfMeasureConversions#26301, productionAspect#26302, salesAspect#26303, procurementAspect#26304, productGroup#26305], false
(59) Repartition
Arguments: 10, true
(60) Join
Arguments: LeftOuter, (product#26267 = internalUUID#26295)
(61) Project
Arguments: [product#26267, plant#26268, orderDateTime#26269, productPlant#26279, timezonecode#26293, systemId#26294, internalUUID#26295, id#26296, displayId#26297, name#26298, baseUnitOfMeasure#26299, unitOfMeasures#26300, unitOfMeasureConversions#26301, productionAspect#26302, salesAspect#26303, procurementAspect#26304, productGroup#26305, filter(unitOfMeasureConversions#26301, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26279.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26279.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26299.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26299.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26306]
(62) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26306.quantityNumerator), true, [quantityNumerator#26307]
(63) Project
Arguments: [product#26267, plant#26268, orderDateTime#26269, productPlant#26279, timezonecode#26293, systemId#26294, internalUUID#26295, id#26296, displayId#26297, name#26298, baseUnitOfMeasure#26299, unitOfMeasures#26300, unitOfMeasureConversions#26301, productionAspect#26302, salesAspect#26303, procurementAspect#26304, productGroup#26305, filteredUnitOfMeasureConversions#26306, quantityNumerator#26307]
(64) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26306.quantityDenominator), true, [quantityDenominator#26308]
(65) Project
Arguments: [product#26267, plant#26268, orderDateTime#26269, productPlant#26279, timezonecode#26293, systemId#26294, internalUUID#26295, id#26296, displayId#26297, name#26298, baseUnitOfMeasure#26299, unitOfMeasures#26300, unitOfMeasureConversions#26301, productionAspect#26302, salesAspect#26303, procurementAspect#26304, productGroup#26305, filteredUnitOfMeasureConversions#26306, quantityNumerator#26307, quantityDenominator#26308]
(66) Project
Arguments: [product#26267, plant#26268, orderDateTime#26269, productPlant#26279, timezonecode#26293, systemId#26294, internalUUID#26295, id#26296, displayId#26297, name#26298, baseUnitOfMeasure#26299, unitOfMeasures#26300, unitOfMeasureConversions#26301, productionAspect#26302, salesAspect#26303, procurementAspect#26304, productGroup#26305, filteredUnitOfMeasureConversions#26306, quantityNumerator#26307, quantityDenominator#26308, (cast(quantityNumerator#26307 as double) / cast(quantityDenominator#26308 as double)) AS outboundUnit#26309]
(67) Project
Arguments: [product#26267, plant#26268, orderDateTime#26269, productPlant#26279, timezonecode#26293, systemId#26294, internalUUID#26295, id#26296, displayId#26297, name#26298, baseUnitOfMeasure#26299, unitOfMeasures#26300, unitOfMeasureConversions#26301, productionAspect#26302, salesAspect#26303, procurementAspect#26304, productGroup#26305, filteredUnitOfMeasureConversions#26306, quantityNumerator#26307, quantityDenominator#26308, CASE WHEN (isnull(outboundUnit#26309) OR (outboundUnit#26309 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#26309 END AS outboundUnit#26310]
(68) Project
Arguments: [product#26267, plant#26268, orderDateTime#26269, productPlant#26279, timezonecode#26293, outboundUnit#26310]
(69) Project
Arguments: [plant#26268]
(70) Deduplicate
Arguments: [plant#26268]
(71) Join
Arguments: Inner, (plantUuid#25997 = plant#26268)
(72) Project
Arguments: [plantId#25996, plantUuid#25997, storageLocId#26003, storageLocUuid#26004]
(73) Join
Arguments: Inner, (plant#26010.internalRefUUID <=> plantUuid#25997)
(74) Generate
Arguments: explode(filter(stockQuantities#26012, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26004) AND (lambda x#26016.storageLocation.Id = storageLocId#26003)), lambda x#26016, false))), false, [stockQuantity#26017]
(75) Project
Arguments: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26011, stockQuantities#26012, plantId#25996, plantUuid#25997, storageLocId#26003, storageLocUuid#26004, stockQuantity#26017]
(76) Aggregate
Arguments: [plantUuid#25997, internalUUID#26008, plant#26010, product#26009, systemId#26007], [plantUuid#25997, internalUUID#26008, plant#26010, product#26009, systemId#26007, first(calculationDateTime#26011, false) AS calculationDateTime#26018, collect_list(stockQuantity#26017, 0, 0) AS stockQuantities#26019]
(77) Project
Arguments: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26018, stockQuantities#26019]
(78) Generate
Arguments: explode(stockQuantities#26019), false, [stockQuantity#26034]
(79) Project
Arguments: [systemId#26007, internalUUID#26008, product#26009, plant#26010, calculationDateTime#26018, stockQuantities#26019, stockQuantity#26034]
(80) Project
Arguments: [plant#26010.id AS plant#26035, plant#26010.internalRefUUID AS plantUuid#26036, product#26009.id AS product#26037, product#26009.internalRefUUID AS productUuid#26038, calculationDateTime#26018, stockQuantity#26034.storagelocation.id AS storageLocId#26039, stockQuantity#26034.storagelocation.internalRefUUID AS storageLocUuid#26040, stockQuantity#26034.quantity.measure AS quantity#26041, stockQuantity#26034.specialStockIndicator.code AS specialStockIndicator#26042, stockQuantity#26034.stockType.code AS stockType#26043]
(81) Filter
Arguments: ((specialStockIndicator#26042 = ) AND (stockType#26043 = 01))
(82) LogicalRelation
Arguments: parquet, [product#26053, plant#26054, orderDateTime#26055, planningStartDateTime#26056], false
(83) RepartitionByExpression
Arguments: [product#26053, plant#26054], 10
(84) Project
Arguments: [product#26053, plant#26054, orderDateTime#26055]
(85) LogicalRelation
Arguments: parquet, [systemId#26057, internalUUID#26058, plant#26059, product#26060, blockedForReplenishmentStartingFrom#26061, productionAspect#26062, salesPlant#26063, listing#26064], false
(86) Repartition
Arguments: 10, true
(87) Project
Arguments: [systemId#26057, internalUUID#26058, plant#26059, product#26060, blockedForReplenishmentStartingFrom#26061, productionAspect#26062, salesPlant#26063, listing#26064, struct(systemId, systemId#26057, internalUUID, internalUUID#26058, plant, plant#26059, product, product#26060, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26061, productionAspect, productionAspect#26062, salesPlant, salesPlant#26063, listing, listing#26064) AS productPlant#26065]
(88) Project
Arguments: [productPlant#26065]
(89) Join
Arguments: LeftOuter, ((product#26053 <=> productPlant#26065.product.internalRefUUID) AND (plant#26054 <=> productPlant#26065.plant.internalRefUUID))
(90) Project
Arguments: [product#26053, plant#26054, orderDateTime#26055, productPlant#26065]
(91) SubqueryAlias
Arguments: wl
(92) LogicalRelation
Arguments: parquet, [systemId#26066, internalUUID#26067, id#26068, displayId#26069, name#26070, category#26071, companyCode#26072, address#26073, mainDistributionChain#26074, mainPurchasingOrganization#26075, validPurchasingOrganizations#26076, productGroup#26077], false
(93) Repartition
Arguments: 10, true
(94) Project
Arguments: [internalUUID#26067, address#26073.timeZone.code AS timezonecode#26078]
(95) Join
Arguments: LeftOuter, (plant#26054 <=> internalUUID#26067)
(96) Project
Arguments: [product#26053, plant#26054, orderDateTime#26055, productPlant#26065, internalUUID#26067, CASE WHEN isnotnull(timezonecode#26078) THEN timezonecode#26078 ELSE UTC END AS timezonecode#26079]
(97) Project
Arguments: [product#26053, plant#26054, orderDateTime#26055, productPlant#26065, timezonecode#26079]
(98) LogicalRelation
Arguments: parquet, [systemId#26080, internalUUID#26081, id#26082, displayId#26083, name#26084, baseUnitOfMeasure#26085, unitOfMeasures#26086, unitOfMeasureConversions#26087, productionAspect#26088, salesAspect#26089, procurementAspect#26090, productGroup#26091], false
(99) Repartition
Arguments: 10, true
(100) Join
Arguments: LeftOuter, (product#26053 = internalUUID#26081)
(101) Project
Arguments: [product#26053, plant#26054, orderDateTime#26055, productPlant#26065, timezonecode#26079, systemId#26080, internalUUID#26081, id#26082, displayId#26083, name#26084, baseUnitOfMeasure#26085, unitOfMeasures#26086, unitOfMeasureConversions#26087, productionAspect#26088, salesAspect#26089, procurementAspect#26090, productGroup#26091, filter(unitOfMeasureConversions#26087, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26065.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26065.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26085.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26085.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26092]
(102) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26092.quantityNumerator), true, [quantityNumerator#26093]
(103) Project
Arguments: [product#26053, plant#26054, orderDateTime#26055, productPlant#26065, timezonecode#26079, systemId#26080, internalUUID#26081, id#26082, displayId#26083, name#26084, baseUnitOfMeasure#26085, unitOfMeasures#26086, unitOfMeasureConversions#26087, productionAspect#26088, salesAspect#26089, procurementAspect#26090, productGroup#26091, filteredUnitOfMeasureConversions#26092, quantityNumerator#26093]
(104) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26092.quantityDenominator), true, [quantityDenominator#26094]
(105) Project
Arguments: [product#26053, plant#26054, orderDateTime#26055, productPlant#26065, timezonecode#26079, systemId#26080, internalUUID#26081, id#26082, displayId#26083, name#26084, baseUnitOfMeasure#26085, unitOfMeasures#26086, unitOfMeasureConversions#26087, productionAspect#26088, salesAspect#26089, procurementAspect#26090, productGroup#26091, filteredUnitOfMeasureConversions#26092, quantityNumerator#26093, quantityDenominator#26094]
(106) Project
Arguments: [product#26053, plant#26054, orderDateTime#26055, productPlant#26065, timezonecode#26079, systemId#26080, internalUUID#26081, id#26082, displayId#26083, name#26084, baseUnitOfMeasure#26085, unitOfMeasures#26086, unitOfMeasureConversions#26087, productionAspect#26088, salesAspect#26089, procurementAspect#26090, productGroup#26091, filteredUnitOfMeasureConversions#26092, quantityNumerator#26093, quantityDenominator#26094, (cast(quantityNumerator#26093 as double) / cast(quantityDenominator#26094 as double)) AS outboundUnit#26095]
(107) Project
Arguments: [product#26053, plant#26054, orderDateTime#26055, productPlant#26065, timezonecode#26079, systemId#26080, internalUUID#26081, id#26082, displayId#26083, name#26084, baseUnitOfMeasure#26085, unitOfMeasures#26086, unitOfMeasureConversions#26087, productionAspect#26088, salesAspect#26089, procurementAspect#26090, productGroup#26091, filteredUnitOfMeasureConversions#26092, quantityNumerator#26093, quantityDenominator#26094, CASE WHEN (isnull(outboundUnit#26095) OR (outboundUnit#26095 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#26095 END AS outboundUnit#26096]
(108) Project
Arguments: [product#26053, plant#26054, orderDateTime#26055, productPlant#26065, timezonecode#26079, outboundUnit#26096]
(109) Join
Arguments: Inner, ((plantUuid#26036 = plant#26054) AND (productUuid#26038 = product#26053))
(110) Filter
Arguments: (calculationDateTime#26018 <= orderDateTime#26055)
(111) Project
Arguments: [plantUuid#26036 AS plant#26101, productUuid#26038 AS product#26102, storageLocId#26039, calculationDateTime#26018, quantity#26041]
(112) LogicalRelation
Arguments: parquet, [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, stockQuantities#26115], false
(113) Repartition
Arguments: 10, true
(114) LogicalRelation
Arguments: parquet, [marketUnit#26116, description#26117, articleHierarchy#26118, defaultCurrency#26119, responsibilities#26120, replenishmentTypes#26121, distributionCenters#26122, assignedArticleHierarchyNodes#26123, minOrderQtySetting#26124, minOrderQtySettingInternal#26125, listingCheck#26126, odsSelection#26127, demandProfiles#26128, constraintProfiles#26129, optimizationProfiles#26130, orderGroupSplitProfiles#26131, supplierMinimumProfiles#26132, multipleRestrictionProfiles#26133, preferredUomSource#26134, handlingOfUnfulfilledDemands#26135, negligibleQuantitiesThreshold#26136, eventtype#26137], false
(115) Repartition
Arguments: 10, true
(116) Filter
Arguments: (marketUnit#26116 <=> DIP_1691)
(117) Project
Arguments: [marketUnit#26116, description#26117, articleHierarchy#26118, defaultCurrency#26119, responsibilities#26120, replenishmentTypes#26121, distributionCenters#26122, assignedArticleHierarchyNodes#26123, minOrderQtySetting#26124, minOrderQtySettingInternal#26125, listingCheck#26126, odsSelection#26127, demandProfiles#26128, constraintProfiles#26129, optimizationProfiles#26130, orderGroupSplitProfiles#26131, supplierMinimumProfiles#26132, multipleRestrictionProfiles#26133, preferredUomSource#26134, handlingOfUnfulfilledDemands#26135, negligibleQuantitiesThreshold#26136, eventtype#26137]
(118) Project
Arguments: [distributionCenters#26122]
(119) Generate
Arguments: explode(distributionCenters#26122), false, [distributionCenters#26138]
(120) Project
Arguments: [distributionCenters#26138]
(121) Generate
Arguments: explode(distributionCenters#26138.storageLocations), false, [storageLocations#26139]
(122) Project
Arguments: [distributionCenters#26138.id AS plantId#26140, distributionCenters#26138.internalRefUUID AS plantUuid#26141, storageLocations#26139]
(123) Project
Arguments: [plantId#26140, plantUuid#26141, storageLocations#26139.id AS storageLocId#26142, storageLocations#26139.internalRefUUID AS storageLocUuid#26143]
(124) LogicalRelation
Arguments: parquet, [product#26144, plant#26145, orderDateTime#26146, planningStartDateTime#26147], false
(125) RepartitionByExpression
Arguments: [product#26144, plant#26145], 10
(126) Project
Arguments: [product#26144, plant#26145, orderDateTime#26146]
(127) LogicalRelation
Arguments: parquet, [systemId#26148, internalUUID#26149, plant#26150, product#26151, blockedForReplenishmentStartingFrom#26152, productionAspect#26153, salesPlant#26154, listing#26155], false
(128) Repartition
Arguments: 10, true
(129) Project
Arguments: [systemId#26148, internalUUID#26149, plant#26150, product#26151, blockedForReplenishmentStartingFrom#26152, productionAspect#26153, salesPlant#26154, listing#26155, struct(systemId, systemId#26148, internalUUID, internalUUID#26149, plant, plant#26150, product, product#26151, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26152, productionAspect, productionAspect#26153, salesPlant, salesPlant#26154, listing, listing#26155) AS productPlant#26156]
(130) Project
Arguments: [productPlant#26156]
(131) Join
Arguments: LeftOuter, ((product#26144 <=> productPlant#26156.product.internalRefUUID) AND (plant#26145 <=> productPlant#26156.plant.internalRefUUID))
(132) Project
Arguments: [product#26144, plant#26145, orderDateTime#26146, productPlant#26156]
(133) SubqueryAlias
Arguments: wl
(134) LogicalRelation
Arguments: parquet, [systemId#26157, internalUUID#26158, id#26159, displayId#26160, name#26161, category#26162, companyCode#26163, address#26164, mainDistributionChain#26165, mainPurchasingOrganization#26166, validPurchasingOrganizations#26167, productGroup#26168], false
(135) Repartition
Arguments: 10, true
(136) Project
Arguments: [internalUUID#26158, address#26164.timeZone.code AS timezonecode#26169]
(137) Join
Arguments: LeftOuter, (plant#26145 <=> internalUUID#26158)
(138) Project
Arguments: [product#26144, plant#26145, orderDateTime#26146, productPlant#26156, internalUUID#26158, CASE WHEN isnotnull(timezonecode#26169) THEN timezonecode#26169 ELSE UTC END AS timezonecode#26170]
(139) Project
Arguments: [product#26144, plant#26145, orderDateTime#26146, productPlant#26156, timezonecode#26170]
(140) LogicalRelation
Arguments: parquet, [systemId#26171, internalUUID#26172, id#26173, displayId#26174, name#26175, baseUnitOfMeasure#26176, unitOfMeasures#26177, unitOfMeasureConversions#26178, productionAspect#26179, salesAspect#26180, procurementAspect#26181, productGroup#26182], false
(141) Repartition
Arguments: 10, true
(142) Join
Arguments: LeftOuter, (product#26144 = internalUUID#26172)
(143) Project
Arguments: [product#26144, plant#26145, orderDateTime#26146, productPlant#26156, timezonecode#26170, systemId#26171, internalUUID#26172, id#26173, displayId#26174, name#26175, baseUnitOfMeasure#26176, unitOfMeasures#26177, unitOfMeasureConversions#26178, productionAspect#26179, salesAspect#26180, procurementAspect#26181, productGroup#26182, filter(unitOfMeasureConversions#26178, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26156.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26156.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26176.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26176.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26183]
(144) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26183.quantityNumerator), true, [quantityNumerator#26184]
(145) Project
Arguments: [product#26144, plant#26145, orderDateTime#26146, productPlant#26156, timezonecode#26170, systemId#26171, internalUUID#26172, id#26173, displayId#26174, name#26175, baseUnitOfMeasure#26176, unitOfMeasures#26177, unitOfMeasureConversions#26178, productionAspect#26179, salesAspect#26180, procurementAspect#26181, productGroup#26182, filteredUnitOfMeasureConversions#26183, quantityNumerator#26184]
(146) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26183.quantityDenominator), true, [quantityDenominator#26185]
(147) Project
Arguments: [product#26144, plant#26145, orderDateTime#26146, productPlant#26156, timezonecode#26170, systemId#26171, internalUUID#26172, id#26173, displayId#26174, name#26175, baseUnitOfMeasure#26176, unitOfMeasures#26177, unitOfMeasureConversions#26178, productionAspect#26179, salesAspect#26180, procurementAspect#26181, productGroup#26182, filteredUnitOfMeasureConversions#26183, quantityNumerator#26184, quantityDenominator#26185]
(148) Project
Arguments: [product#26144, plant#26145, orderDateTime#26146, productPlant#26156, timezonecode#26170, systemId#26171, internalUUID#26172, id#26173, displayId#26174, name#26175, baseUnitOfMeasure#26176, unitOfMeasures#26177, unitOfMeasureConversions#26178, productionAspect#26179, salesAspect#26180, procurementAspect#26181, productGroup#26182, filteredUnitOfMeasureConversions#26183, quantityNumerator#26184, quantityDenominator#26185, (cast(quantityNumerator#26184 as double) / cast(quantityDenominator#26185 as double)) AS outboundUnit#26186]
(149) Project
Arguments: [product#26144, plant#26145, orderDateTime#26146, productPlant#26156, timezonecode#26170, systemId#26171, internalUUID#26172, id#26173, displayId#26174, name#26175, baseUnitOfMeasure#26176, unitOfMeasures#26177, unitOfMeasureConversions#26178, productionAspect#26179, salesAspect#26180, procurementAspect#26181, productGroup#26182, filteredUnitOfMeasureConversions#26183, quantityNumerator#26184, quantityDenominator#26185, CASE WHEN (isnull(outboundUnit#26186) OR (outboundUnit#26186 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#26186 END AS outboundUnit#26187]
(150) Project
Arguments: [product#26144, plant#26145, orderDateTime#26146, productPlant#26156, timezonecode#26170, outboundUnit#26187]
(151) Project
Arguments: [plant#26145]
(152) Deduplicate
Arguments: [plant#26145]
(153) Join
Arguments: Inner, (plantUuid#26141 = plant#26145)
(154) Project
Arguments: [plantId#26140, plantUuid#26141, storageLocId#26142, storageLocUuid#26143]
(155) Join
Arguments: Inner, (plant#26113.internalRefUUID <=> plantUuid#26141)
(156) Generate
Arguments: explode(filter(stockQuantities#26115, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26143) AND (lambda x#26016.storageLocation.Id = storageLocId#26142)), lambda x#26016, false))), false, [stockQuantity#26188]
(157) Project
Arguments: [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26114, stockQuantities#26115, plantId#26140, plantUuid#26141, storageLocId#26142, storageLocUuid#26143, stockQuantity#26188]
(158) Aggregate
Arguments: [plantUuid#26141, internalUUID#26111, plant#26113, product#26112, systemId#26110], [plantUuid#26141, internalUUID#26111, plant#26113, product#26112, systemId#26110, first(calculationDateTime#26114, false) AS calculationDateTime#26189, collect_list(stockQuantity#26188, 0, 0) AS stockQuantities#26190]
(159) Project
Arguments: [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26189, stockQuantities#26190]
(160) Generate
Arguments: explode(stockQuantities#26190), false, [stockQuantity#26191]
(161) Project
Arguments: [systemId#26110, internalUUID#26111, product#26112, plant#26113, calculationDateTime#26189, stockQuantities#26190, stockQuantity#26191]
(162) Project
Arguments: [plant#26113.id AS plant#26192, plant#26113.internalRefUUID AS plantUuid#26193, product#26112.id AS product#26194, product#26112.internalRefUUID AS productUuid#26195, calculationDateTime#26189, stockQuantity#26191.storagelocation.id AS storageLocId#26196, stockQuantity#26191.storagelocation.internalRefUUID AS storageLocUuid#26197, stockQuantity#26191.quantity.measure AS quantity#26198, stockQuantity#26191.specialStockIndicator.code AS specialStockIndicator#26199, stockQuantity#26191.stockType.code AS stockType#26200]
(163) Filter
Arguments: ((specialStockIndicator#26199 = ) AND (stockType#26200 = 01))
(164) LogicalRelation
Arguments: parquet, [product#26201, plant#26202, orderDateTime#26203, planningStartDateTime#26204], false
(165) RepartitionByExpression
Arguments: [product#26201, plant#26202], 10
(166) Project
Arguments: [product#26201, plant#26202, orderDateTime#26203]
(167) LogicalRelation
Arguments: parquet, [systemId#26205, internalUUID#26206, plant#26207, product#26208, blockedForReplenishmentStartingFrom#26209, productionAspect#26210, salesPlant#26211, listing#26212], false
(168) Repartition
Arguments: 10, true
(169) Project
Arguments: [systemId#26205, internalUUID#26206, plant#26207, product#26208, blockedForReplenishmentStartingFrom#26209, productionAspect#26210, salesPlant#26211, listing#26212, struct(systemId, systemId#26205, internalUUID, internalUUID#26206, plant, plant#26207, product, product#26208, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26209, productionAspect, productionAspect#26210, salesPlant, salesPlant#26211, listing, listing#26212) AS productPlant#26213]
(170) Project
Arguments: [productPlant#26213]
(171) Join
Arguments: LeftOuter, ((product#26201 <=> productPlant#26213.product.internalRefUUID) AND (plant#26202 <=> productPlant#26213.plant.internalRefUUID))
(172) Project
Arguments: [product#26201, plant#26202, orderDateTime#26203, productPlant#26213]
(173) SubqueryAlias
Arguments: wl
(174) LogicalRelation
Arguments: parquet, [systemId#26214, internalUUID#26215, id#26216, displayId#26217, name#26218, category#26219, companyCode#26220, address#26221, mainDistributionChain#26222, mainPurchasingOrganization#26223, validPurchasingOrganizations#26224, productGroup#26225], false
(175) Repartition
Arguments: 10, true
(176) Project
Arguments: [internalUUID#26215, address#26221.timeZone.code AS timezonecode#26226]
(177) Join
Arguments: LeftOuter, (plant#26202 <=> internalUUID#26215)
(178) Project
Arguments: [product#26201, plant#26202, orderDateTime#26203, productPlant#26213, internalUUID#26215, CASE WHEN isnotnull(timezonecode#26226) THEN timezonecode#26226 ELSE UTC END AS timezonecode#26227]
(179) Project
Arguments: [product#26201, plant#26202, orderDateTime#26203, productPlant#26213, timezonecode#26227]
(180) LogicalRelation
Arguments: parquet, [systemId#26228, internalUUID#26229, id#26230, displayId#26231, name#26232, baseUnitOfMeasure#26233, unitOfMeasures#26234, unitOfMeasureConversions#26235, productionAspect#26236, salesAspect#26237, procurementAspect#26238, productGroup#26239], false
(181) Repartition
Arguments: 10, true
(182) Join
Arguments: LeftOuter, (product#26201 = internalUUID#26229)
(183) Project
Arguments: [product#26201, plant#26202, orderDateTime#26203, productPlant#26213, timezonecode#26227, systemId#26228, internalUUID#26229, id#26230, displayId#26231, name#26232, baseUnitOfMeasure#26233, unitOfMeasures#26234, unitOfMeasureConversions#26235, productionAspect#26236, salesAspect#26237, procurementAspect#26238, productGroup#26239, filter(unitOfMeasureConversions#26235, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26213.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26213.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26233.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26233.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26240]
(184) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26240.quantityNumerator), true, [quantityNumerator#26241]
(185) Project
Arguments: [product#26201, plant#26202, orderDateTime#26203, productPlant#26213, timezonecode#26227, systemId#26228, internalUUID#26229, id#26230, displayId#26231, name#26232, baseUnitOfMeasure#26233, unitOfMeasures#26234, unitOfMeasureConversions#26235, productionAspect#26236, salesAspect#26237, procurementAspect#26238, productGroup#26239, filteredUnitOfMeasureConversions#26240, quantityNumerator#26241]
(186) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26240.quantityDenominator), true, [quantityDenominator#26242]
(187) Project
Arguments: [product#26201, plant#26202, orderDateTime#26203, productPlant#26213, timezonecode#26227, systemId#26228, internalUUID#26229, id#26230, displayId#26231, name#26232, baseUnitOfMeasure#26233, unitOfMeasures#26234, unitOfMeasureConversions#26235, productionAspect#26236, salesAspect#26237, procurementAspect#26238, productGroup#26239, filteredUnitOfMeasureConversions#26240, quantityNumerator#26241, quantityDenominator#26242]
(188) Project
Arguments: [product#26201, plant#26202, orderDateTime#26203, productPlant#26213, timezonecode#26227, systemId#26228, internalUUID#26229, id#26230, displayId#26231, name#26232, baseUnitOfMeasure#26233, unitOfMeasures#26234, unitOfMeasureConversions#26235, productionAspect#26236, salesAspect#26237, procurementAspect#26238, productGroup#26239, filteredUnitOfMeasureConversions#26240, quantityNumerator#26241, quantityDenominator#26242, (cast(quantityNumerator#26241 as double) / cast(quantityDenominator#26242 as double)) AS outboundUnit#26243]
(189) Project
Arguments: [product#26201, plant#26202, orderDateTime#26203, productPlant#26213, timezonecode#26227, systemId#26228, internalUUID#26229, id#26230, displayId#26231, name#26232, baseUnitOfMeasure#26233, unitOfMeasures#26234, unitOfMeasureConversions#26235, productionAspect#26236, salesAspect#26237, procurementAspect#26238, productGroup#26239, filteredUnitOfMeasureConversions#26240, quantityNumerator#26241, quantityDenominator#26242, CASE WHEN (isnull(outboundUnit#26243) OR (outboundUnit#26243 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#26243 END AS outboundUnit#26244]
(190) Project
Arguments: [product#26201, plant#26202, orderDateTime#26203, productPlant#26213, timezonecode#26227, outboundUnit#26244]
(191) Join
Arguments: Inner, ((plantUuid#26193 = plant#26202) AND (productUuid#26195 = product#26201))
(192) Filter
Arguments: (calculationDateTime#26189 <= orderDateTime#26203)
(193) Project
Arguments: [plantUuid#26193 AS plant#26245, productUuid#26195 AS product#26246, storageLocId#26196, calculationDateTime#26189, quantity#26198]
(194) Aggregate
Arguments: [plant#26245, product#26246, storageLocId#26196], [plant#26245, product#26246, storageLocId#26196, max(calculationDateTime#26189) AS max_calc_datetime#26103]
(195) Join
Arguments: Inner, ((((plant#26101 <=> plant#26245) AND (product#26102 <=> product#26246)) AND (storageLocId#26039 <=> storageLocId#26196)) AND (calculationDateTime#26018 <=> max_calc_datetime#26103))
(196) Project
Arguments: [plant#26101, product#26102, storageLocId#26039, calculationDateTime#26018, quantity#26041]
(197) Aggregate
Arguments: [product#26102, plant#26101], [product#26102, plant#26101, sum(quantity#26041) AS quantitySum#26257, min(calculationDateTime#26018) AS minCalculationDateTime#26258]
(198) Project
Arguments: [product#26102, plant#26101, quantitySum#26257, minCalculationDateTime#26258, round(quantitySum#26257, 0) AS roundedQuantitySum#26266]
(199) Join
Arguments: LeftOuter, ((plant#25912 = plant#26101) AND (product#25911 = product#26102))
(200) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, roundedQuantitySum#26266, minCalculationDateTime#26258]
(201) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, roundedQuantitySum#26266, minCalculationDateTime#26258, CASE WHEN isnotnull(minCalculationDateTime#26258) THEN minCalculationDateTime#26258 ELSE orderDateTime#25913 END AS stockDatetime#26315]
(202) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, roundedQuantitySum#26266, minCalculationDateTime#26258, stockDatetime#26315, CASE WHEN isnotnull(roundedQuantitySum#26266) THEN array(roundedQuantitySum#26266) ELSE array(0.0) END AS stockBatchQuantities#26316]
(203) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, roundedQuantitySum#26266, minCalculationDateTime#26258, stockDatetime#26315, stockBatchQuantities#26316, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#26317]
(204) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, roundedQuantitySum#26266, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317]
(205) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317]
(206) LogicalRelation
Arguments: parquet, [product#26392, plant#26393, orderDateTime#26394, planningStartDateTime#26395], false
(207) RepartitionByExpression
Arguments: [product#26392, plant#26393], 10
(208) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394]
(209) LogicalRelation
Arguments: parquet, [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403], false
(210) Repartition
Arguments: 10, true
(211) Project
Arguments: [systemId#26396, internalUUID#26397, plant#26398, product#26399, blockedForReplenishmentStartingFrom#26400, productionAspect#26401, salesPlant#26402, listing#26403, struct(systemId, systemId#26396, internalUUID, internalUUID#26397, plant, plant#26398, product, product#26399, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26400, productionAspect, productionAspect#26401, salesPlant, salesPlant#26402, listing, listing#26403) AS productPlant#26404]
(212) Project
Arguments: [productPlant#26404]
(213) Join
Arguments: LeftOuter, ((product#26392 <=> productPlant#26404.product.internalRefUUID) AND (plant#26393 <=> productPlant#26404.plant.internalRefUUID))
(214) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404]
(215) SubqueryAlias
Arguments: wl
(216) LogicalRelation
Arguments: parquet, [systemId#26405, internalUUID#26406, id#26407, displayId#26408, name#26409, category#26410, companyCode#26411, address#26412, mainDistributionChain#26413, mainPurchasingOrganization#26414, validPurchasingOrganizations#26415, productGroup#26416], false
(217) Repartition
Arguments: 10, true
(218) Project
Arguments: [internalUUID#26406, address#26412.timeZone.code AS timezonecode#26417]
(219) Join
Arguments: LeftOuter, (plant#26393 <=> internalUUID#26406)
(220) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, internalUUID#26406, CASE WHEN isnotnull(timezonecode#26417) THEN timezonecode#26417 ELSE UTC END AS timezonecode#26418]
(221) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418]
(222) LogicalRelation
Arguments: parquet, [systemId#26419, internalUUID#26420, id#26421, displayId#26422, name#26423, baseUnitOfMeasure#26424, unitOfMeasures#26425, unitOfMeasureConversions#26426, productionAspect#26427, salesAspect#26428, procurementAspect#26429, productGroup#26430], false
(223) Repartition
Arguments: 10, true
(224) Join
Arguments: LeftOuter, (product#26392 = internalUUID#26420)
(225) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, systemId#26419, internalUUID#26420, id#26421, displayId#26422, name#26423, baseUnitOfMeasure#26424, unitOfMeasures#26425, unitOfMeasureConversions#26426, productionAspect#26427, salesAspect#26428, procurementAspect#26429, productGroup#26430, filter(unitOfMeasureConversions#26426, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26424.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26424.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26431]
(226) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26431.quantityNumerator), true, [quantityNumerator#26432]
(227) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, systemId#26419, internalUUID#26420, id#26421, displayId#26422, name#26423, baseUnitOfMeasure#26424, unitOfMeasures#26425, unitOfMeasureConversions#26426, productionAspect#26427, salesAspect#26428, procurementAspect#26429, productGroup#26430, filteredUnitOfMeasureConversions#26431, quantityNumerator#26432]
(228) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26431.quantityDenominator), true, [quantityDenominator#26433]
(229) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, systemId#26419, internalUUID#26420, id#26421, displayId#26422, name#26423, baseUnitOfMeasure#26424, unitOfMeasures#26425, unitOfMeasureConversions#26426, productionAspect#26427, salesAspect#26428, procurementAspect#26429, productGroup#26430, filteredUnitOfMeasureConversions#26431, quantityNumerator#26432, quantityDenominator#26433]
(230) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, systemId#26419, internalUUID#26420, id#26421, displayId#26422, name#26423, baseUnitOfMeasure#26424, unitOfMeasures#26425, unitOfMeasureConversions#26426, productionAspect#26427, salesAspect#26428, procurementAspect#26429, productGroup#26430, filteredUnitOfMeasureConversions#26431, quantityNumerator#26432, quantityDenominator#26433, (cast(quantityNumerator#26432 as double) / cast(quantityDenominator#26433 as double)) AS outboundUnit#26434]
(231) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, systemId#26419, internalUUID#26420, id#26421, displayId#26422, name#26423, baseUnitOfMeasure#26424, unitOfMeasures#26425, unitOfMeasureConversions#26426, productionAspect#26427, salesAspect#26428, procurementAspect#26429, productGroup#26430, filteredUnitOfMeasureConversions#26431, quantityNumerator#26432, quantityDenominator#26433, CASE WHEN (isnull(outboundUnit#26434) OR (outboundUnit#26434 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#26434 END AS outboundUnit#26435]
(232) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435]
(233) LogicalRelation
Arguments: parquet, [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441], false
(234) Repartition
Arguments: 10, true
(235) LogicalRelation
Arguments: parquet, [marketUnit#26442, description#26443, articleHierarchy#26444, defaultCurrency#26445, responsibilities#26446, replenishmentTypes#26447, distributionCenters#26448, assignedArticleHierarchyNodes#26449, minOrderQtySetting#26450, minOrderQtySettingInternal#26451, listingCheck#26452, odsSelection#26453, demandProfiles#26454, constraintProfiles#26455, optimizationProfiles#26456, orderGroupSplitProfiles#26457, supplierMinimumProfiles#26458, multipleRestrictionProfiles#26459, preferredUomSource#26460, handlingOfUnfulfilledDemands#26461, negligibleQuantitiesThreshold#26462, eventtype#26463], false
(236) Repartition
Arguments: 10, true
(237) Filter
Arguments: (marketUnit#26442 <=> DIP_1691)
(238) Project
Arguments: [marketUnit#26442, description#26443, articleHierarchy#26444, defaultCurrency#26445, responsibilities#26446, replenishmentTypes#26447, distributionCenters#26448, assignedArticleHierarchyNodes#26449, minOrderQtySetting#26450, minOrderQtySettingInternal#26451, listingCheck#26452, odsSelection#26453, demandProfiles#26454, constraintProfiles#26455, optimizationProfiles#26456, orderGroupSplitProfiles#26457, supplierMinimumProfiles#26458, multipleRestrictionProfiles#26459, preferredUomSource#26460, handlingOfUnfulfilledDemands#26461, negligibleQuantitiesThreshold#26462, eventtype#26463]
(239) Project
Arguments: [distributionCenters#26448]
(240) Generate
Arguments: explode(distributionCenters#26448), false, [distributionCenters#26464]
(241) Project
Arguments: [distributionCenters#26464]
(242) Generate
Arguments: explode(distributionCenters#26464.storageLocations), false, [storageLocations#26465]
(243) Project
Arguments: [distributionCenters#26464.id AS plantId#26466, distributionCenters#26464.internalRefUUID AS plantUuid#26467, storageLocations#26465]
(244) Project
Arguments: [plantId#26466, plantUuid#26467, storageLocations#26465.id AS storageLocId#26468, storageLocations#26465.internalRefUUID AS storageLocUuid#26469]
(245) LogicalRelation
Arguments: parquet, [product#26470, plant#26471, orderDateTime#26472, planningStartDateTime#26473], false
(246) RepartitionByExpression
Arguments: [product#26470, plant#26471], 10
(247) Project
Arguments: [product#26470, plant#26471, orderDateTime#26472]
(248) LogicalRelation
Arguments: parquet, [systemId#26474, internalUUID#26475, plant#26476, product#26477, blockedForReplenishmentStartingFrom#26478, productionAspect#26479, salesPlant#26480, listing#26481], false
(249) Repartition
Arguments: 10, true
(250) Project
Arguments: [systemId#26474, internalUUID#26475, plant#26476, product#26477, blockedForReplenishmentStartingFrom#26478, productionAspect#26479, salesPlant#26480, listing#26481, struct(systemId, systemId#26474, internalUUID, internalUUID#26475, plant, plant#26476, product, product#26477, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26478, productionAspect, productionAspect#26479, salesPlant, salesPlant#26480, listing, listing#26481) AS productPlant#26482]
(251) Project
Arguments: [productPlant#26482]
(252) Join
Arguments: LeftOuter, ((product#26470 <=> productPlant#26482.product.internalRefUUID) AND (plant#26471 <=> productPlant#26482.plant.internalRefUUID))
(253) Project
Arguments: [product#26470, plant#26471, orderDateTime#26472, productPlant#26482]
(254) SubqueryAlias
Arguments: wl
(255) LogicalRelation
Arguments: parquet, [systemId#26483, internalUUID#26484, id#26485, displayId#26486, name#26487, category#26488, companyCode#26489, address#26490, mainDistributionChain#26491, mainPurchasingOrganization#26492, validPurchasingOrganizations#26493, productGroup#26494], false
(256) Repartition
Arguments: 10, true
(257) Project
Arguments: [internalUUID#26484, address#26490.timeZone.code AS timezonecode#26495]
(258) Join
Arguments: LeftOuter, (plant#26471 <=> internalUUID#26484)
(259) Project
Arguments: [product#26470, plant#26471, orderDateTime#26472, productPlant#26482, internalUUID#26484, CASE WHEN isnotnull(timezonecode#26495) THEN timezonecode#26495 ELSE UTC END AS timezonecode#26496]
(260) Project
Arguments: [product#26470, plant#26471, orderDateTime#26472, productPlant#26482, timezonecode#26496]
(261) LogicalRelation
Arguments: parquet, [systemId#26497, internalUUID#26498, id#26499, displayId#26500, name#26501, baseUnitOfMeasure#26502, unitOfMeasures#26503, unitOfMeasureConversions#26504, productionAspect#26505, salesAspect#26506, procurementAspect#26507, productGroup#26508], false
(262) Repartition
Arguments: 10, true
(263) Join
Arguments: LeftOuter, (product#26470 = internalUUID#26498)
(264) Project
Arguments: [product#26470, plant#26471, orderDateTime#26472, productPlant#26482, timezonecode#26496, systemId#26497, internalUUID#26498, id#26499, displayId#26500, name#26501, baseUnitOfMeasure#26502, unitOfMeasures#26503, unitOfMeasureConversions#26504, productionAspect#26505, salesAspect#26506, procurementAspect#26507, productGroup#26508, filter(unitOfMeasureConversions#26504, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26482.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26482.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26502.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26502.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26509]
(265) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26509.quantityNumerator), true, [quantityNumerator#26510]
(266) Project
Arguments: [product#26470, plant#26471, orderDateTime#26472, productPlant#26482, timezonecode#26496, systemId#26497, internalUUID#26498, id#26499, displayId#26500, name#26501, baseUnitOfMeasure#26502, unitOfMeasures#26503, unitOfMeasureConversions#26504, productionAspect#26505, salesAspect#26506, procurementAspect#26507, productGroup#26508, filteredUnitOfMeasureConversions#26509, quantityNumerator#26510]
(267) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26509.quantityDenominator), true, [quantityDenominator#26511]
(268) Project
Arguments: [product#26470, plant#26471, orderDateTime#26472, productPlant#26482, timezonecode#26496, systemId#26497, internalUUID#26498, id#26499, displayId#26500, name#26501, baseUnitOfMeasure#26502, unitOfMeasures#26503, unitOfMeasureConversions#26504, productionAspect#26505, salesAspect#26506, procurementAspect#26507, productGroup#26508, filteredUnitOfMeasureConversions#26509, quantityNumerator#26510, quantityDenominator#26511]
(269) Project
Arguments: [product#26470, plant#26471, orderDateTime#26472, productPlant#26482, timezonecode#26496, systemId#26497, internalUUID#26498, id#26499, displayId#26500, name#26501, baseUnitOfMeasure#26502, unitOfMeasures#26503, unitOfMeasureConversions#26504, productionAspect#26505, salesAspect#26506, procurementAspect#26507, productGroup#26508, filteredUnitOfMeasureConversions#26509, quantityNumerator#26510, quantityDenominator#26511, (cast(quantityNumerator#26510 as double) / cast(quantityDenominator#26511 as double)) AS outboundUnit#26512]
(270) Project
Arguments: [product#26470, plant#26471, orderDateTime#26472, productPlant#26482, timezonecode#26496, systemId#26497, internalUUID#26498, id#26499, displayId#26500, name#26501, baseUnitOfMeasure#26502, unitOfMeasures#26503, unitOfMeasureConversions#26504, productionAspect#26505, salesAspect#26506, procurementAspect#26507, productGroup#26508, filteredUnitOfMeasureConversions#26509, quantityNumerator#26510, quantityDenominator#26511, CASE WHEN (isnull(outboundUnit#26512) OR (outboundUnit#26512 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#26512 END AS outboundUnit#26513]
(271) Project
Arguments: [product#26470, plant#26471, orderDateTime#26472, productPlant#26482, timezonecode#26496, outboundUnit#26513]
(272) Project
Arguments: [plant#26471]
(273) Deduplicate
Arguments: [plant#26471]
(274) Join
Arguments: Inner, (plantUuid#26467 = plant#26471)
(275) Project
Arguments: [plantId#26466, plantUuid#26467, storageLocId#26468, storageLocUuid#26469]
(276) Join
Arguments: Inner, (plant#26439.internalRefUUID <=> plantUuid#26467)
(277) Generate
Arguments: explode(filter(stockQuantities#26441, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26469) AND (lambda x#26016.storageLocation.Id = storageLocId#26468)), lambda x#26016, false))), false, [stockQuantity#26514]
(278) Project
Arguments: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26440, stockQuantities#26441, plantId#26466, plantUuid#26467, storageLocId#26468, storageLocUuid#26469, stockQuantity#26514]
(279) Aggregate
Arguments: [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436], [plantUuid#26467, internalUUID#26437, plant#26439, product#26438, systemId#26436, first(calculationDateTime#26440, false) AS calculationDateTime#26515, collect_list(stockQuantity#26514, 0, 0) AS stockQuantities#26516]
(280) Project
Arguments: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26515, stockQuantities#26516]
(281) Generate
Arguments: explode(stockQuantities#26516), false, [stockQuantity#26517]
(282) Project
Arguments: [systemId#26436, internalUUID#26437, product#26438, plant#26439, calculationDateTime#26515, stockQuantities#26516, stockQuantity#26517]
(283) Project
Arguments: [plant#26439.id AS plant#26518, plant#26439.internalRefUUID AS plantUuid#26519, product#26438.id AS product#26520, product#26438.internalRefUUID AS productUuid#26521, calculationDateTime#26515, stockQuantity#26517.storagelocation.id AS storageLocId#26522, stockQuantity#26517.storagelocation.internalRefUUID AS storageLocUuid#26523, stockQuantity#26517.quantity.measure AS quantity#26524, stockQuantity#26517.specialStockIndicator.code AS specialStockIndicator#26525, stockQuantity#26517.stockType.code AS stockType#26526]
(284) Filter
Arguments: ((specialStockIndicator#26525 = ) AND (stockType#26526 = 01))
(285) LogicalRelation
Arguments: parquet, [product#26527, plant#26528, orderDateTime#26529, planningStartDateTime#26530], false
(286) RepartitionByExpression
Arguments: [product#26527, plant#26528], 10
(287) Project
Arguments: [product#26527, plant#26528, orderDateTime#26529]
(288) LogicalRelation
Arguments: parquet, [systemId#26531, internalUUID#26532, plant#26533, product#26534, blockedForReplenishmentStartingFrom#26535, productionAspect#26536, salesPlant#26537, listing#26538], false
(289) Repartition
Arguments: 10, true
(290) Project
Arguments: [systemId#26531, internalUUID#26532, plant#26533, product#26534, blockedForReplenishmentStartingFrom#26535, productionAspect#26536, salesPlant#26537, listing#26538, struct(systemId, systemId#26531, internalUUID, internalUUID#26532, plant, plant#26533, product, product#26534, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26535, productionAspect, productionAspect#26536, salesPlant, salesPlant#26537, listing, listing#26538) AS productPlant#26539]
(291) Project
Arguments: [productPlant#26539]
(292) Join
Arguments: LeftOuter, ((product#26527 <=> productPlant#26539.product.internalRefUUID) AND (plant#26528 <=> productPlant#26539.plant.internalRefUUID))
(293) Project
Arguments: [product#26527, plant#26528, orderDateTime#26529, productPlant#26539]
(294) SubqueryAlias
Arguments: wl
(295) LogicalRelation
Arguments: parquet, [systemId#26540, internalUUID#26541, id#26542, displayId#26543, name#26544, category#26545, companyCode#26546, address#26547, mainDistributionChain#26548, mainPurchasingOrganization#26549, validPurchasingOrganizations#26550, productGroup#26551], false
(296) Repartition
Arguments: 10, true
(297) Project
Arguments: [internalUUID#26541, address#26547.timeZone.code AS timezonecode#26552]
(298) Join
Arguments: LeftOuter, (plant#26528 <=> internalUUID#26541)
(299) Project
Arguments: [product#26527, plant#26528, orderDateTime#26529, productPlant#26539, internalUUID#26541, CASE WHEN isnotnull(timezonecode#26552) THEN timezonecode#26552 ELSE UTC END AS timezonecode#26553]
(300) Project
Arguments: [product#26527, plant#26528, orderDateTime#26529, productPlant#26539, timezonecode#26553]
(301) LogicalRelation
Arguments: parquet, [systemId#26554, internalUUID#26555, id#26556, displayId#26557, name#26558, baseUnitOfMeasure#26559, unitOfMeasures#26560, unitOfMeasureConversions#26561, productionAspect#26562, salesAspect#26563, procurementAspect#26564, productGroup#26565], false
(302) Repartition
Arguments: 10, true
(303) Join
Arguments: LeftOuter, (product#26527 = internalUUID#26555)
(304) Project
Arguments: [product#26527, plant#26528, orderDateTime#26529, productPlant#26539, timezonecode#26553, systemId#26554, internalUUID#26555, id#26556, displayId#26557, name#26558, baseUnitOfMeasure#26559, unitOfMeasures#26560, unitOfMeasureConversions#26561, productionAspect#26562, salesAspect#26563, procurementAspect#26564, productGroup#26565, filter(unitOfMeasureConversions#26561, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26539.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26539.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26559.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26559.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26566]
(305) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26566.quantityNumerator), true, [quantityNumerator#26567]
(306) Project
Arguments: [product#26527, plant#26528, orderDateTime#26529, productPlant#26539, timezonecode#26553, systemId#26554, internalUUID#26555, id#26556, displayId#26557, name#26558, baseUnitOfMeasure#26559, unitOfMeasures#26560, unitOfMeasureConversions#26561, productionAspect#26562, salesAspect#26563, procurementAspect#26564, productGroup#26565, filteredUnitOfMeasureConversions#26566, quantityNumerator#26567]
(307) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26566.quantityDenominator), true, [quantityDenominator#26568]
(308) Project
Arguments: [product#26527, plant#26528, orderDateTime#26529, productPlant#26539, timezonecode#26553, systemId#26554, internalUUID#26555, id#26556, displayId#26557, name#26558, baseUnitOfMeasure#26559, unitOfMeasures#26560, unitOfMeasureConversions#26561, productionAspect#26562, salesAspect#26563, procurementAspect#26564, productGroup#26565, filteredUnitOfMeasureConversions#26566, quantityNumerator#26567, quantityDenominator#26568]
(309) Project
Arguments: [product#26527, plant#26528, orderDateTime#26529, productPlant#26539, timezonecode#26553, systemId#26554, internalUUID#26555, id#26556, displayId#26557, name#26558, baseUnitOfMeasure#26559, unitOfMeasures#26560, unitOfMeasureConversions#26561, productionAspect#26562, salesAspect#26563, procurementAspect#26564, productGroup#26565, filteredUnitOfMeasureConversions#26566, quantityNumerator#26567, quantityDenominator#26568, (cast(quantityNumerator#26567 as double) / cast(quantityDenominator#26568 as double)) AS outboundUnit#26569]
(310) Project
Arguments: [product#26527, plant#26528, orderDateTime#26529, productPlant#26539, timezonecode#26553, systemId#26554, internalUUID#26555, id#26556, displayId#26557, name#26558, baseUnitOfMeasure#26559, unitOfMeasures#26560, unitOfMeasureConversions#26561, productionAspect#26562, salesAspect#26563, procurementAspect#26564, productGroup#26565, filteredUnitOfMeasureConversions#26566, quantityNumerator#26567, quantityDenominator#26568, CASE WHEN (isnull(outboundUnit#26569) OR (outboundUnit#26569 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#26569 END AS outboundUnit#26570]
(311) Project
Arguments: [product#26527, plant#26528, orderDateTime#26529, productPlant#26539, timezonecode#26553, outboundUnit#26570]
(312) Join
Arguments: Inner, ((plantUuid#26519 = plant#26528) AND (productUuid#26521 = product#26527))
(313) Filter
Arguments: (calculationDateTime#26515 <= orderDateTime#26529)
(314) Project
Arguments: [plantUuid#26519 AS plant#26571, productUuid#26521 AS product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524]
(315) LogicalRelation
Arguments: parquet, [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578], false
(316) Repartition
Arguments: 10, true
(317) LogicalRelation
Arguments: parquet, [marketUnit#26579, description#26580, articleHierarchy#26581, defaultCurrency#26582, responsibilities#26583, replenishmentTypes#26584, distributionCenters#26585, assignedArticleHierarchyNodes#26586, minOrderQtySetting#26587, minOrderQtySettingInternal#26588, listingCheck#26589, odsSelection#26590, demandProfiles#26591, constraintProfiles#26592, optimizationProfiles#26593, orderGroupSplitProfiles#26594, supplierMinimumProfiles#26595, multipleRestrictionProfiles#26596, preferredUomSource#26597, handlingOfUnfulfilledDemands#26598, negligibleQuantitiesThreshold#26599, eventtype#26600], false
(318) Repartition
Arguments: 10, true
(319) Filter
Arguments: (marketUnit#26579 <=> DIP_1691)
(320) Project
Arguments: [marketUnit#26579, description#26580, articleHierarchy#26581, defaultCurrency#26582, responsibilities#26583, replenishmentTypes#26584, distributionCenters#26585, assignedArticleHierarchyNodes#26586, minOrderQtySetting#26587, minOrderQtySettingInternal#26588, listingCheck#26589, odsSelection#26590, demandProfiles#26591, constraintProfiles#26592, optimizationProfiles#26593, orderGroupSplitProfiles#26594, supplierMinimumProfiles#26595, multipleRestrictionProfiles#26596, preferredUomSource#26597, handlingOfUnfulfilledDemands#26598, negligibleQuantitiesThreshold#26599, eventtype#26600]
(321) Project
Arguments: [distributionCenters#26585]
(322) Generate
Arguments: explode(distributionCenters#26585), false, [distributionCenters#26601]
(323) Project
Arguments: [distributionCenters#26601]
(324) Generate
Arguments: explode(distributionCenters#26601.storageLocations), false, [storageLocations#26602]
(325) Project
Arguments: [distributionCenters#26601.id AS plantId#26603, distributionCenters#26601.internalRefUUID AS plantUuid#26604, storageLocations#26602]
(326) Project
Arguments: [plantId#26603, plantUuid#26604, storageLocations#26602.id AS storageLocId#26605, storageLocations#26602.internalRefUUID AS storageLocUuid#26606]
(327) LogicalRelation
Arguments: parquet, [product#26607, plant#26608, orderDateTime#26609, planningStartDateTime#26610], false
(328) RepartitionByExpression
Arguments: [product#26607, plant#26608], 10
(329) Project
Arguments: [product#26607, plant#26608, orderDateTime#26609]
(330) LogicalRelation
Arguments: parquet, [systemId#26611, internalUUID#26612, plant#26613, product#26614, blockedForReplenishmentStartingFrom#26615, productionAspect#26616, salesPlant#26617, listing#26618], false
(331) Repartition
Arguments: 10, true
(332) Project
Arguments: [systemId#26611, internalUUID#26612, plant#26613, product#26614, blockedForReplenishmentStartingFrom#26615, productionAspect#26616, salesPlant#26617, listing#26618, struct(systemId, systemId#26611, internalUUID, internalUUID#26612, plant, plant#26613, product, product#26614, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26615, productionAspect, productionAspect#26616, salesPlant, salesPlant#26617, listing, listing#26618) AS productPlant#26619]
(333) Project
Arguments: [productPlant#26619]
(334) Join
Arguments: LeftOuter, ((product#26607 <=> productPlant#26619.product.internalRefUUID) AND (plant#26608 <=> productPlant#26619.plant.internalRefUUID))
(335) Project
Arguments: [product#26607, plant#26608, orderDateTime#26609, productPlant#26619]
(336) SubqueryAlias
Arguments: wl
(337) LogicalRelation
Arguments: parquet, [systemId#26620, internalUUID#26621, id#26622, displayId#26623, name#26624, category#26625, companyCode#26626, address#26627, mainDistributionChain#26628, mainPurchasingOrganization#26629, validPurchasingOrganizations#26630, productGroup#26631], false
(338) Repartition
Arguments: 10, true
(339) Project
Arguments: [internalUUID#26621, address#26627.timeZone.code AS timezonecode#26632]
(340) Join
Arguments: LeftOuter, (plant#26608 <=> internalUUID#26621)
(341) Project
Arguments: [product#26607, plant#26608, orderDateTime#26609, productPlant#26619, internalUUID#26621, CASE WHEN isnotnull(timezonecode#26632) THEN timezonecode#26632 ELSE UTC END AS timezonecode#26633]
(342) Project
Arguments: [product#26607, plant#26608, orderDateTime#26609, productPlant#26619, timezonecode#26633]
(343) LogicalRelation
Arguments: parquet, [systemId#26634, internalUUID#26635, id#26636, displayId#26637, name#26638, baseUnitOfMeasure#26639, unitOfMeasures#26640, unitOfMeasureConversions#26641, productionAspect#26642, salesAspect#26643, procurementAspect#26644, productGroup#26645], false
(344) Repartition
Arguments: 10, true
(345) Join
Arguments: LeftOuter, (product#26607 = internalUUID#26635)
(346) Project
Arguments: [product#26607, plant#26608, orderDateTime#26609, productPlant#26619, timezonecode#26633, systemId#26634, internalUUID#26635, id#26636, displayId#26637, name#26638, baseUnitOfMeasure#26639, unitOfMeasures#26640, unitOfMeasureConversions#26641, productionAspect#26642, salesAspect#26643, procurementAspect#26644, productGroup#26645, filter(unitOfMeasureConversions#26641, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26619.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26619.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26639.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26639.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26646]
(347) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26646.quantityNumerator), true, [quantityNumerator#26647]
(348) Project
Arguments: [product#26607, plant#26608, orderDateTime#26609, productPlant#26619, timezonecode#26633, systemId#26634, internalUUID#26635, id#26636, displayId#26637, name#26638, baseUnitOfMeasure#26639, unitOfMeasures#26640, unitOfMeasureConversions#26641, productionAspect#26642, salesAspect#26643, procurementAspect#26644, productGroup#26645, filteredUnitOfMeasureConversions#26646, quantityNumerator#26647]
(349) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26646.quantityDenominator), true, [quantityDenominator#26648]
(350) Project
Arguments: [product#26607, plant#26608, orderDateTime#26609, productPlant#26619, timezonecode#26633, systemId#26634, internalUUID#26635, id#26636, displayId#26637, name#26638, baseUnitOfMeasure#26639, unitOfMeasures#26640, unitOfMeasureConversions#26641, productionAspect#26642, salesAspect#26643, procurementAspect#26644, productGroup#26645, filteredUnitOfMeasureConversions#26646, quantityNumerator#26647, quantityDenominator#26648]
(351) Project
Arguments: [product#26607, plant#26608, orderDateTime#26609, productPlant#26619, timezonecode#26633, systemId#26634, internalUUID#26635, id#26636, displayId#26637, name#26638, baseUnitOfMeasure#26639, unitOfMeasures#26640, unitOfMeasureConversions#26641, productionAspect#26642, salesAspect#26643, procurementAspect#26644, productGroup#26645, filteredUnitOfMeasureConversions#26646, quantityNumerator#26647, quantityDenominator#26648, (cast(quantityNumerator#26647 as double) / cast(quantityDenominator#26648 as double)) AS outboundUnit#26649]
(352) Project
Arguments: [product#26607, plant#26608, orderDateTime#26609, productPlant#26619, timezonecode#26633, systemId#26634, internalUUID#26635, id#26636, displayId#26637, name#26638, baseUnitOfMeasure#26639, unitOfMeasures#26640, unitOfMeasureConversions#26641, productionAspect#26642, salesAspect#26643, procurementAspect#26644, productGroup#26645, filteredUnitOfMeasureConversions#26646, quantityNumerator#26647, quantityDenominator#26648, CASE WHEN (isnull(outboundUnit#26649) OR (outboundUnit#26649 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#26649 END AS outboundUnit#26650]
(353) Project
Arguments: [product#26607, plant#26608, orderDateTime#26609, productPlant#26619, timezonecode#26633, outboundUnit#26650]
(354) Project
Arguments: [plant#26608]
(355) Deduplicate
Arguments: [plant#26608]
(356) Join
Arguments: Inner, (plantUuid#26604 = plant#26608)
(357) Project
Arguments: [plantId#26603, plantUuid#26604, storageLocId#26605, storageLocUuid#26606]
(358) Join
Arguments: Inner, (plant#26576.internalRefUUID <=> plantUuid#26604)
(359) Generate
Arguments: explode(filter(stockQuantities#26578, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#26606) AND (lambda x#26016.storageLocation.Id = storageLocId#26605)), lambda x#26016, false))), false, [stockQuantity#26651]
(360) Project
Arguments: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26577, stockQuantities#26578, plantId#26603, plantUuid#26604, storageLocId#26605, storageLocUuid#26606, stockQuantity#26651]
(361) Aggregate
Arguments: [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573], [plantUuid#26604, internalUUID#26574, plant#26576, product#26575, systemId#26573, first(calculationDateTime#26577, false) AS calculationDateTime#26652, collect_list(stockQuantity#26651, 0, 0) AS stockQuantities#26653]
(362) Project
Arguments: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26652, stockQuantities#26653]
(363) Generate
Arguments: explode(stockQuantities#26653), false, [stockQuantity#26654]
(364) Project
Arguments: [systemId#26573, internalUUID#26574, product#26575, plant#26576, calculationDateTime#26652, stockQuantities#26653, stockQuantity#26654]
(365) Project
Arguments: [plant#26576.id AS plant#26655, plant#26576.internalRefUUID AS plantUuid#26656, product#26575.id AS product#26657, product#26575.internalRefUUID AS productUuid#26658, calculationDateTime#26652, stockQuantity#26654.storagelocation.id AS storageLocId#26659, stockQuantity#26654.storagelocation.internalRefUUID AS storageLocUuid#26660, stockQuantity#26654.quantity.measure AS quantity#26661, stockQuantity#26654.specialStockIndicator.code AS specialStockIndicator#26662, stockQuantity#26654.stockType.code AS stockType#26663]
(366) Filter
Arguments: ((specialStockIndicator#26662 = ) AND (stockType#26663 = 01))
(367) LogicalRelation
Arguments: parquet, [product#26664, plant#26665, orderDateTime#26666, planningStartDateTime#26667], false
(368) RepartitionByExpression
Arguments: [product#26664, plant#26665], 10
(369) Project
Arguments: [product#26664, plant#26665, orderDateTime#26666]
(370) LogicalRelation
Arguments: parquet, [systemId#26668, internalUUID#26669, plant#26670, product#26671, blockedForReplenishmentStartingFrom#26672, productionAspect#26673, salesPlant#26674, listing#26675], false
(371) Repartition
Arguments: 10, true
(372) Project
Arguments: [systemId#26668, internalUUID#26669, plant#26670, product#26671, blockedForReplenishmentStartingFrom#26672, productionAspect#26673, salesPlant#26674, listing#26675, struct(systemId, systemId#26668, internalUUID, internalUUID#26669, plant, plant#26670, product, product#26671, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26672, productionAspect, productionAspect#26673, salesPlant, salesPlant#26674, listing, listing#26675) AS productPlant#26676]
(373) Project
Arguments: [productPlant#26676]
(374) Join
Arguments: LeftOuter, ((product#26664 <=> productPlant#26676.product.internalRefUUID) AND (plant#26665 <=> productPlant#26676.plant.internalRefUUID))
(375) Project
Arguments: [product#26664, plant#26665, orderDateTime#26666, productPlant#26676]
(376) SubqueryAlias
Arguments: wl
(377) LogicalRelation
Arguments: parquet, [systemId#26677, internalUUID#26678, id#26679, displayId#26680, name#26681, category#26682, companyCode#26683, address#26684, mainDistributionChain#26685, mainPurchasingOrganization#26686, validPurchasingOrganizations#26687, productGroup#26688], false
(378) Repartition
Arguments: 10, true
(379) Project
Arguments: [internalUUID#26678, address#26684.timeZone.code AS timezonecode#26689]
(380) Join
Arguments: LeftOuter, (plant#26665 <=> internalUUID#26678)
(381) Project
Arguments: [product#26664, plant#26665, orderDateTime#26666, productPlant#26676, internalUUID#26678, CASE WHEN isnotnull(timezonecode#26689) THEN timezonecode#26689 ELSE UTC END AS timezonecode#26690]
(382) Project
Arguments: [product#26664, plant#26665, orderDateTime#26666, productPlant#26676, timezonecode#26690]
(383) LogicalRelation
Arguments: parquet, [systemId#26691, internalUUID#26692, id#26693, displayId#26694, name#26695, baseUnitOfMeasure#26696, unitOfMeasures#26697, unitOfMeasureConversions#26698, productionAspect#26699, salesAspect#26700, procurementAspect#26701, productGroup#26702], false
(384) Repartition
Arguments: 10, true
(385) Join
Arguments: LeftOuter, (product#26664 = internalUUID#26692)
(386) Project
Arguments: [product#26664, plant#26665, orderDateTime#26666, productPlant#26676, timezonecode#26690, systemId#26691, internalUUID#26692, id#26693, displayId#26694, name#26695, baseUnitOfMeasure#26696, unitOfMeasures#26697, unitOfMeasureConversions#26698, productionAspect#26699, salesAspect#26700, procurementAspect#26701, productGroup#26702, filter(unitOfMeasureConversions#26698, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26676.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26676.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26696.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26696.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26703]
(387) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26703.quantityNumerator), true, [quantityNumerator#26704]
(388) Project
Arguments: [product#26664, plant#26665, orderDateTime#26666, productPlant#26676, timezonecode#26690, systemId#26691, internalUUID#26692, id#26693, displayId#26694, name#26695, baseUnitOfMeasure#26696, unitOfMeasures#26697, unitOfMeasureConversions#26698, productionAspect#26699, salesAspect#26700, procurementAspect#26701, productGroup#26702, filteredUnitOfMeasureConversions#26703, quantityNumerator#26704]
(389) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26703.quantityDenominator), true, [quantityDenominator#26705]
(390) Project
Arguments: [product#26664, plant#26665, orderDateTime#26666, productPlant#26676, timezonecode#26690, systemId#26691, internalUUID#26692, id#26693, displayId#26694, name#26695, baseUnitOfMeasure#26696, unitOfMeasures#26697, unitOfMeasureConversions#26698, productionAspect#26699, salesAspect#26700, procurementAspect#26701, productGroup#26702, filteredUnitOfMeasureConversions#26703, quantityNumerator#26704, quantityDenominator#26705]
(391) Project
Arguments: [product#26664, plant#26665, orderDateTime#26666, productPlant#26676, timezonecode#26690, systemId#26691, internalUUID#26692, id#26693, displayId#26694, name#26695, baseUnitOfMeasure#26696, unitOfMeasures#26697, unitOfMeasureConversions#26698, productionAspect#26699, salesAspect#26700, procurementAspect#26701, productGroup#26702, filteredUnitOfMeasureConversions#26703, quantityNumerator#26704, quantityDenominator#26705, (cast(quantityNumerator#26704 as double) / cast(quantityDenominator#26705 as double)) AS outboundUnit#26706]
(392) Project
Arguments: [product#26664, plant#26665, orderDateTime#26666, productPlant#26676, timezonecode#26690, systemId#26691, internalUUID#26692, id#26693, displayId#26694, name#26695, baseUnitOfMeasure#26696, unitOfMeasures#26697, unitOfMeasureConversions#26698, productionAspect#26699, salesAspect#26700, procurementAspect#26701, productGroup#26702, filteredUnitOfMeasureConversions#26703, quantityNumerator#26704, quantityDenominator#26705, CASE WHEN (isnull(outboundUnit#26706) OR (outboundUnit#26706 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#26706 END AS outboundUnit#26707]
(393) Project
Arguments: [product#26664, plant#26665, orderDateTime#26666, productPlant#26676, timezonecode#26690, outboundUnit#26707]
(394) Join
Arguments: Inner, ((plantUuid#26656 = plant#26665) AND (productUuid#26658 = product#26664))
(395) Filter
Arguments: (calculationDateTime#26652 <= orderDateTime#26666)
(396) Project
Arguments: [plantUuid#26656 AS plant#26708, productUuid#26658 AS product#26709, storageLocId#26659, calculationDateTime#26652, quantity#26661]
(397) Aggregate
Arguments: [plant#26708, product#26709, storageLocId#26659], [plant#26708, product#26709, storageLocId#26659, max(calculationDateTime#26652) AS max_calc_datetime#26710]
(398) Join
Arguments: Inner, ((((plant#26571 <=> plant#26708) AND (product#26572 <=> product#26709)) AND (storageLocId#26522 <=> storageLocId#26659)) AND (calculationDateTime#26515 <=> max_calc_datetime#26710))
(399) Project
Arguments: [plant#26571, product#26572, storageLocId#26522, calculationDateTime#26515, quantity#26524]
(400) Aggregate
Arguments: [product#26572, plant#26571], [product#26572, plant#26571, sum(quantity#26524) AS quantitySum#26711, min(calculationDateTime#26515) AS minCalculationDateTime#26712]
(401) Project
Arguments: [product#26572, plant#26571, quantitySum#26711, minCalculationDateTime#26712, round(quantitySum#26711, 0) AS roundedQuantitySum#26713]
(402) Join
Arguments: LeftOuter, ((plant#26393 = plant#26571) AND (product#26392 = product#26572))
(403) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, roundedQuantitySum#26713, minCalculationDateTime#26712]
(404) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, roundedQuantitySum#26713, minCalculationDateTime#26712, CASE WHEN isnotnull(minCalculationDateTime#26712) THEN minCalculationDateTime#26712 ELSE orderDateTime#26394 END AS stockDatetime#26714]
(405) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, roundedQuantitySum#26713, minCalculationDateTime#26712, stockDatetime#26714, CASE WHEN isnotnull(roundedQuantitySum#26713) THEN array(roundedQuantitySum#26713) ELSE array(0.0) END AS stockBatchQuantities#26715]
(406) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, roundedQuantitySum#26713, minCalculationDateTime#26712, stockDatetime#26714, stockBatchQuantities#26715, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#26716]
(407) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, roundedQuantitySum#26713, stockDatetime#26714, stockBatchQuantities#26715, stockBatchShelfLifeEndDatetimes#26716]
(408) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, stockBatchShelfLifeEndDatetimes#26716]
(409) LogicalRelation
Arguments: parquet, [product#26318, plant#26319, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326], false
(410) Join
Arguments: LeftOuter, ((product#26392 = product#26318) AND (plant#26393 = plant#26319))
(411) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, stockBatchShelfLifeEndDatetimes#26716, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326, product#26318, plant#26319]
(412) Project
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, stockBatchShelfLifeEndDatetimes#26716, demandChannel#26320, demandStream#26321, considerVariance#26322, demandTimeBuckets#26323, demandPointInTimeStart#26324, demandPointInTimeEnd#26325, demandPointInTime#26326, CASE WHEN isnotnull(product#26318) THEN struct(demandChannel, demandChannel#26320, demandStream, demandStream#26321, considerVariance, considerVariance#26322, demandTimeBuckets, demandTimeBuckets#26323, demandPointInTimeStart, demandPointInTimeStart#26324, demandPointInTimeEnd, demandPointInTimeEnd#26325, demandPointInTime, demandPointInTime#26326) 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#26338]
(413) Aggregate
Arguments: [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, stockBatchShelfLifeEndDatetimes#26716], [product#26392, plant#26393, orderDateTime#26394, productPlant#26404, timezonecode#26418, outboundUnit#26435, stockDatetime#26714, stockBatchQuantities#26715, stockBatchShelfLifeEndDatetimes#26716, collect_list(rawDemands#26338, 0, 0) AS rawDemands#26339]
(414) DeserializeToObject
Arguments: createexternalrow(invoke(product#26392.toString()), invoke(plant#26393.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#26394)), if (isnull(productPlant#26404)) null else createexternalrow(invoke(productPlant#26404.systemId.toString()), invoke(productPlant#26404.internalUUID.toString()), if (isnull(productPlant#26404.plant)) null else createexternalrow(invoke(productPlant#26404.plant.internalRefUUID.toString()), invoke(productPlant#26404.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#26404.product)) null else createexternalrow(invoke(productPlant#26404.product.internalRefUUID.toString()), invoke(productPlant#26404.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#26404.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#26404.productionAspect)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#26404.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#26404.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#26404.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#26404.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#26404.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#26404.salesPlant)) null else createexternalrow(if (isnull(productPlant#26404.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#26404.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#26404.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, 3800), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#26404.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#26418.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#26435)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#26714)), mapobjects(lambdavariable(MapObject, DoubleType, true, 3801), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 3801) as double))), stockBatchQuantities#26715, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 3802), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 3802) as timestamp)))), stockBatchShelfLifeEndDatetimes#26716, 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, 3803), 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, 3803))) 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, 3803).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, 3803).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, 3803).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).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, 3803).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, 3803).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, 3803).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).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, 3803).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#26339, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#26378: org.apache.spark.sql.Row
(415) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, interface org.apache.spark.sql.Row, [StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)], obj#26383: org.apache.spark.sql.Row
(416) SerializeFromObject
Arguments: [if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 0, product), StringType, ObjectType(class java.lang.String)))) AS product#26388, 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#26389, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3791), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3791), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3792), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3792), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3793), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3793), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3794), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3794), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3795), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3795), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#26390, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3797), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3797), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3798), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3798), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3799), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3799), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#26391]
(417) Join
Arguments: LeftOuter, ((plant#26389 <=> plant#25912) AND (product#26388 <=> product#25911))
(418) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, plant#26389, dayBucketDemands#26390, pointInTimeDemands#26391]
(419) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391]
(420) LogicalRelation
Arguments: parquet, [product#29873, plant#29874, orderDateTime#29875, planningStartDateTime#29876], false
(421) RepartitionByExpression
Arguments: [product#29873, plant#29874], 10
(422) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875]
(423) LogicalRelation
Arguments: parquet, [systemId#29877, internalUUID#29878, plant#29879, product#29880, blockedForReplenishmentStartingFrom#29881, productionAspect#29882, salesPlant#29883, listing#29884], false
(424) Repartition
Arguments: 10, true
(425) Project
Arguments: [systemId#29877, internalUUID#29878, plant#29879, product#29880, blockedForReplenishmentStartingFrom#29881, productionAspect#29882, salesPlant#29883, listing#29884, struct(systemId, systemId#29877, internalUUID, internalUUID#29878, plant, plant#29879, product, product#29880, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#29881, productionAspect, productionAspect#29882, salesPlant, salesPlant#29883, listing, listing#29884) AS productPlant#29885]
(426) Project
Arguments: [productPlant#29885]
(427) Join
Arguments: LeftOuter, ((product#29873 <=> productPlant#29885.product.internalRefUUID) AND (plant#29874 <=> productPlant#29885.plant.internalRefUUID))
(428) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885]
(429) SubqueryAlias
Arguments: wl
(430) LogicalRelation
Arguments: parquet, [systemId#29886, internalUUID#29887, id#29888, displayId#29889, name#29890, category#29891, companyCode#29892, address#29893, mainDistributionChain#29894, mainPurchasingOrganization#29895, validPurchasingOrganizations#29896, productGroup#29897], false
(431) Repartition
Arguments: 10, true
(432) Project
Arguments: [internalUUID#29887, address#29893.timeZone.code AS timezonecode#29898]
(433) Join
Arguments: LeftOuter, (plant#29874 <=> internalUUID#29887)
(434) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, internalUUID#29887, CASE WHEN isnotnull(timezonecode#29898) THEN timezonecode#29898 ELSE UTC END AS timezonecode#29899]
(435) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899]
(436) LogicalRelation
Arguments: parquet, [systemId#29900, internalUUID#29901, id#29902, displayId#29903, name#29904, baseUnitOfMeasure#29905, unitOfMeasures#29906, unitOfMeasureConversions#29907, productionAspect#29908, salesAspect#29909, procurementAspect#29910, productGroup#29911], false
(437) Repartition
Arguments: 10, true
(438) Join
Arguments: LeftOuter, (product#29873 = internalUUID#29901)
(439) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, systemId#29900, internalUUID#29901, id#29902, displayId#29903, name#29904, baseUnitOfMeasure#29905, unitOfMeasures#29906, unitOfMeasureConversions#29907, productionAspect#29908, salesAspect#29909, procurementAspect#29910, productGroup#29911, filter(unitOfMeasureConversions#29907, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#29885.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#29885.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29905.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29905.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29912]
(440) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29912.quantityNumerator), true, [quantityNumerator#29913]
(441) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, systemId#29900, internalUUID#29901, id#29902, displayId#29903, name#29904, baseUnitOfMeasure#29905, unitOfMeasures#29906, unitOfMeasureConversions#29907, productionAspect#29908, salesAspect#29909, procurementAspect#29910, productGroup#29911, filteredUnitOfMeasureConversions#29912, quantityNumerator#29913]
(442) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29912.quantityDenominator), true, [quantityDenominator#29914]
(443) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, systemId#29900, internalUUID#29901, id#29902, displayId#29903, name#29904, baseUnitOfMeasure#29905, unitOfMeasures#29906, unitOfMeasureConversions#29907, productionAspect#29908, salesAspect#29909, procurementAspect#29910, productGroup#29911, filteredUnitOfMeasureConversions#29912, quantityNumerator#29913, quantityDenominator#29914]
(444) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, systemId#29900, internalUUID#29901, id#29902, displayId#29903, name#29904, baseUnitOfMeasure#29905, unitOfMeasures#29906, unitOfMeasureConversions#29907, productionAspect#29908, salesAspect#29909, procurementAspect#29910, productGroup#29911, filteredUnitOfMeasureConversions#29912, quantityNumerator#29913, quantityDenominator#29914, (cast(quantityNumerator#29913 as double) / cast(quantityDenominator#29914 as double)) AS outboundUnit#29915]
(445) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, systemId#29900, internalUUID#29901, id#29902, displayId#29903, name#29904, baseUnitOfMeasure#29905, unitOfMeasures#29906, unitOfMeasureConversions#29907, productionAspect#29908, salesAspect#29909, procurementAspect#29910, productGroup#29911, filteredUnitOfMeasureConversions#29912, quantityNumerator#29913, quantityDenominator#29914, CASE WHEN (isnull(outboundUnit#29915) OR (outboundUnit#29915 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#29915 END AS outboundUnit#29916]
(446) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, outboundUnit#29916]
(447) LogicalRelation
Arguments: parquet, [systemId#29917, internalUUID#29918, product#29919, plant#29920, calculationDateTime#29921, stockQuantities#29922], false
(448) Repartition
Arguments: 10, true
(449) LogicalRelation
Arguments: parquet, [marketUnit#29923, description#29924, articleHierarchy#29925, defaultCurrency#29926, responsibilities#29927, replenishmentTypes#29928, distributionCenters#29929, assignedArticleHierarchyNodes#29930, minOrderQtySetting#29931, minOrderQtySettingInternal#29932, listingCheck#29933, odsSelection#29934, demandProfiles#29935, constraintProfiles#29936, optimizationProfiles#29937, orderGroupSplitProfiles#29938, supplierMinimumProfiles#29939, multipleRestrictionProfiles#29940, preferredUomSource#29941, handlingOfUnfulfilledDemands#29942, negligibleQuantitiesThreshold#29943, eventtype#29944], false
(450) Repartition
Arguments: 10, true
(451) Filter
Arguments: (marketUnit#29923 <=> DIP_1691)
(452) Project
Arguments: [marketUnit#29923, description#29924, articleHierarchy#29925, defaultCurrency#29926, responsibilities#29927, replenishmentTypes#29928, distributionCenters#29929, assignedArticleHierarchyNodes#29930, minOrderQtySetting#29931, minOrderQtySettingInternal#29932, listingCheck#29933, odsSelection#29934, demandProfiles#29935, constraintProfiles#29936, optimizationProfiles#29937, orderGroupSplitProfiles#29938, supplierMinimumProfiles#29939, multipleRestrictionProfiles#29940, preferredUomSource#29941, handlingOfUnfulfilledDemands#29942, negligibleQuantitiesThreshold#29943, eventtype#29944]
(453) Project
Arguments: [distributionCenters#29929]
(454) Generate
Arguments: explode(distributionCenters#29929), false, [distributionCenters#29945]
(455) Project
Arguments: [distributionCenters#29945]
(456) Generate
Arguments: explode(distributionCenters#29945.storageLocations), false, [storageLocations#29946]
(457) Project
Arguments: [distributionCenters#29945.id AS plantId#29947, distributionCenters#29945.internalRefUUID AS plantUuid#29948, storageLocations#29946]
(458) Project
Arguments: [plantId#29947, plantUuid#29948, storageLocations#29946.id AS storageLocId#29949, storageLocations#29946.internalRefUUID AS storageLocUuid#29950]
(459) LogicalRelation
Arguments: parquet, [product#29951, plant#29952, orderDateTime#29953, planningStartDateTime#29954], false
(460) RepartitionByExpression
Arguments: [product#29951, plant#29952], 10
(461) Project
Arguments: [product#29951, plant#29952, orderDateTime#29953]
(462) LogicalRelation
Arguments: parquet, [systemId#29955, internalUUID#29956, plant#29957, product#29958, blockedForReplenishmentStartingFrom#29959, productionAspect#29960, salesPlant#29961, listing#29962], false
(463) Repartition
Arguments: 10, true
(464) Project
Arguments: [systemId#29955, internalUUID#29956, plant#29957, product#29958, blockedForReplenishmentStartingFrom#29959, productionAspect#29960, salesPlant#29961, listing#29962, struct(systemId, systemId#29955, internalUUID, internalUUID#29956, plant, plant#29957, product, product#29958, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#29959, productionAspect, productionAspect#29960, salesPlant, salesPlant#29961, listing, listing#29962) AS productPlant#29963]
(465) Project
Arguments: [productPlant#29963]
(466) Join
Arguments: LeftOuter, ((product#29951 <=> productPlant#29963.product.internalRefUUID) AND (plant#29952 <=> productPlant#29963.plant.internalRefUUID))
(467) Project
Arguments: [product#29951, plant#29952, orderDateTime#29953, productPlant#29963]
(468) SubqueryAlias
Arguments: wl
(469) LogicalRelation
Arguments: parquet, [systemId#29964, internalUUID#29965, id#29966, displayId#29967, name#29968, category#29969, companyCode#29970, address#29971, mainDistributionChain#29972, mainPurchasingOrganization#29973, validPurchasingOrganizations#29974, productGroup#29975], false
(470) Repartition
Arguments: 10, true
(471) Project
Arguments: [internalUUID#29965, address#29971.timeZone.code AS timezonecode#29976]
(472) Join
Arguments: LeftOuter, (plant#29952 <=> internalUUID#29965)
(473) Project
Arguments: [product#29951, plant#29952, orderDateTime#29953, productPlant#29963, internalUUID#29965, CASE WHEN isnotnull(timezonecode#29976) THEN timezonecode#29976 ELSE UTC END AS timezonecode#29977]
(474) Project
Arguments: [product#29951, plant#29952, orderDateTime#29953, productPlant#29963, timezonecode#29977]
(475) LogicalRelation
Arguments: parquet, [systemId#29978, internalUUID#29979, id#29980, displayId#29981, name#29982, baseUnitOfMeasure#29983, unitOfMeasures#29984, unitOfMeasureConversions#29985, productionAspect#29986, salesAspect#29987, procurementAspect#29988, productGroup#29989], false
(476) Repartition
Arguments: 10, true
(477) Join
Arguments: LeftOuter, (product#29951 = internalUUID#29979)
(478) Project
Arguments: [product#29951, plant#29952, orderDateTime#29953, productPlant#29963, timezonecode#29977, systemId#29978, internalUUID#29979, id#29980, displayId#29981, name#29982, baseUnitOfMeasure#29983, unitOfMeasures#29984, unitOfMeasureConversions#29985, productionAspect#29986, salesAspect#29987, procurementAspect#29988, productGroup#29989, filter(unitOfMeasureConversions#29985, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#29963.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#29963.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29983.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29983.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29990]
(479) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29990.quantityNumerator), true, [quantityNumerator#29991]
(480) Project
Arguments: [product#29951, plant#29952, orderDateTime#29953, productPlant#29963, timezonecode#29977, systemId#29978, internalUUID#29979, id#29980, displayId#29981, name#29982, baseUnitOfMeasure#29983, unitOfMeasures#29984, unitOfMeasureConversions#29985, productionAspect#29986, salesAspect#29987, procurementAspect#29988, productGroup#29989, filteredUnitOfMeasureConversions#29990, quantityNumerator#29991]
(481) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29990.quantityDenominator), true, [quantityDenominator#29992]
(482) Project
Arguments: [product#29951, plant#29952, orderDateTime#29953, productPlant#29963, timezonecode#29977, systemId#29978, internalUUID#29979, id#29980, displayId#29981, name#29982, baseUnitOfMeasure#29983, unitOfMeasures#29984, unitOfMeasureConversions#29985, productionAspect#29986, salesAspect#29987, procurementAspect#29988, productGroup#29989, filteredUnitOfMeasureConversions#29990, quantityNumerator#29991, quantityDenominator#29992]
(483) Project
Arguments: [product#29951, plant#29952, orderDateTime#29953, productPlant#29963, timezonecode#29977, systemId#29978, internalUUID#29979, id#29980, displayId#29981, name#29982, baseUnitOfMeasure#29983, unitOfMeasures#29984, unitOfMeasureConversions#29985, productionAspect#29986, salesAspect#29987, procurementAspect#29988, productGroup#29989, filteredUnitOfMeasureConversions#29990, quantityNumerator#29991, quantityDenominator#29992, (cast(quantityNumerator#29991 as double) / cast(quantityDenominator#29992 as double)) AS outboundUnit#29993]
(484) Project
Arguments: [product#29951, plant#29952, orderDateTime#29953, productPlant#29963, timezonecode#29977, systemId#29978, internalUUID#29979, id#29980, displayId#29981, name#29982, baseUnitOfMeasure#29983, unitOfMeasures#29984, unitOfMeasureConversions#29985, productionAspect#29986, salesAspect#29987, procurementAspect#29988, productGroup#29989, filteredUnitOfMeasureConversions#29990, quantityNumerator#29991, quantityDenominator#29992, CASE WHEN (isnull(outboundUnit#29993) OR (outboundUnit#29993 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#29993 END AS outboundUnit#29994]
(485) Project
Arguments: [product#29951, plant#29952, orderDateTime#29953, productPlant#29963, timezonecode#29977, outboundUnit#29994]
(486) Project
Arguments: [plant#29952]
(487) Deduplicate
Arguments: [plant#29952]
(488) Join
Arguments: Inner, (plantUuid#29948 = plant#29952)
(489) Project
Arguments: [plantId#29947, plantUuid#29948, storageLocId#29949, storageLocUuid#29950]
(490) Join
Arguments: Inner, (plant#29920.internalRefUUID <=> plantUuid#29948)
(491) Generate
Arguments: explode(filter(stockQuantities#29922, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#29950) AND (lambda x#26016.storageLocation.Id = storageLocId#29949)), lambda x#26016, false))), false, [stockQuantity#29995]
(492) Project
Arguments: [systemId#29917, internalUUID#29918, product#29919, plant#29920, calculationDateTime#29921, stockQuantities#29922, plantId#29947, plantUuid#29948, storageLocId#29949, storageLocUuid#29950, stockQuantity#29995]
(493) Aggregate
Arguments: [plantUuid#29948, internalUUID#29918, plant#29920, product#29919, systemId#29917], [plantUuid#29948, internalUUID#29918, plant#29920, product#29919, systemId#29917, first(calculationDateTime#29921, false) AS calculationDateTime#29996, collect_list(stockQuantity#29995, 0, 0) AS stockQuantities#29997]
(494) Project
Arguments: [systemId#29917, internalUUID#29918, product#29919, plant#29920, calculationDateTime#29996, stockQuantities#29997]
(495) Generate
Arguments: explode(stockQuantities#29997), false, [stockQuantity#29998]
(496) Project
Arguments: [systemId#29917, internalUUID#29918, product#29919, plant#29920, calculationDateTime#29996, stockQuantities#29997, stockQuantity#29998]
(497) Project
Arguments: [plant#29920.id AS plant#29999, plant#29920.internalRefUUID AS plantUuid#30000, product#29919.id AS product#30001, product#29919.internalRefUUID AS productUuid#30002, calculationDateTime#29996, stockQuantity#29998.storagelocation.id AS storageLocId#30003, stockQuantity#29998.storagelocation.internalRefUUID AS storageLocUuid#30004, stockQuantity#29998.quantity.measure AS quantity#30005, stockQuantity#29998.specialStockIndicator.code AS specialStockIndicator#30006, stockQuantity#29998.stockType.code AS stockType#30007]
(498) Filter
Arguments: ((specialStockIndicator#30006 = ) AND (stockType#30007 = 01))
(499) LogicalRelation
Arguments: parquet, [product#30008, plant#30009, orderDateTime#30010, planningStartDateTime#30011], false
(500) RepartitionByExpression
Arguments: [product#30008, plant#30009], 10
(501) Project
Arguments: [product#30008, plant#30009, orderDateTime#30010]
(502) LogicalRelation
Arguments: parquet, [systemId#30012, internalUUID#30013, plant#30014, product#30015, blockedForReplenishmentStartingFrom#30016, productionAspect#30017, salesPlant#30018, listing#30019], false
(503) Repartition
Arguments: 10, true
(504) Project
Arguments: [systemId#30012, internalUUID#30013, plant#30014, product#30015, blockedForReplenishmentStartingFrom#30016, productionAspect#30017, salesPlant#30018, listing#30019, struct(systemId, systemId#30012, internalUUID, internalUUID#30013, plant, plant#30014, product, product#30015, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#30016, productionAspect, productionAspect#30017, salesPlant, salesPlant#30018, listing, listing#30019) AS productPlant#30020]
(505) Project
Arguments: [productPlant#30020]
(506) Join
Arguments: LeftOuter, ((product#30008 <=> productPlant#30020.product.internalRefUUID) AND (plant#30009 <=> productPlant#30020.plant.internalRefUUID))
(507) Project
Arguments: [product#30008, plant#30009, orderDateTime#30010, productPlant#30020]
(508) SubqueryAlias
Arguments: wl
(509) LogicalRelation
Arguments: parquet, [systemId#30021, internalUUID#30022, id#30023, displayId#30024, name#30025, category#30026, companyCode#30027, address#30028, mainDistributionChain#30029, mainPurchasingOrganization#30030, validPurchasingOrganizations#30031, productGroup#30032], false
(510) Repartition
Arguments: 10, true
(511) Project
Arguments: [internalUUID#30022, address#30028.timeZone.code AS timezonecode#30033]
(512) Join
Arguments: LeftOuter, (plant#30009 <=> internalUUID#30022)
(513) Project
Arguments: [product#30008, plant#30009, orderDateTime#30010, productPlant#30020, internalUUID#30022, CASE WHEN isnotnull(timezonecode#30033) THEN timezonecode#30033 ELSE UTC END AS timezonecode#30034]
(514) Project
Arguments: [product#30008, plant#30009, orderDateTime#30010, productPlant#30020, timezonecode#30034]
(515) LogicalRelation
Arguments: parquet, [systemId#30035, internalUUID#30036, id#30037, displayId#30038, name#30039, baseUnitOfMeasure#30040, unitOfMeasures#30041, unitOfMeasureConversions#30042, productionAspect#30043, salesAspect#30044, procurementAspect#30045, productGroup#30046], false
(516) Repartition
Arguments: 10, true
(517) Join
Arguments: LeftOuter, (product#30008 = internalUUID#30036)
(518) Project
Arguments: [product#30008, plant#30009, orderDateTime#30010, productPlant#30020, timezonecode#30034, systemId#30035, internalUUID#30036, id#30037, displayId#30038, name#30039, baseUnitOfMeasure#30040, unitOfMeasures#30041, unitOfMeasureConversions#30042, productionAspect#30043, salesAspect#30044, procurementAspect#30045, productGroup#30046, filter(unitOfMeasureConversions#30042, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#30020.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#30020.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#30040.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#30040.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#30047]
(519) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30047.quantityNumerator), true, [quantityNumerator#30048]
(520) Project
Arguments: [product#30008, plant#30009, orderDateTime#30010, productPlant#30020, timezonecode#30034, systemId#30035, internalUUID#30036, id#30037, displayId#30038, name#30039, baseUnitOfMeasure#30040, unitOfMeasures#30041, unitOfMeasureConversions#30042, productionAspect#30043, salesAspect#30044, procurementAspect#30045, productGroup#30046, filteredUnitOfMeasureConversions#30047, quantityNumerator#30048]
(521) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30047.quantityDenominator), true, [quantityDenominator#30049]
(522) Project
Arguments: [product#30008, plant#30009, orderDateTime#30010, productPlant#30020, timezonecode#30034, systemId#30035, internalUUID#30036, id#30037, displayId#30038, name#30039, baseUnitOfMeasure#30040, unitOfMeasures#30041, unitOfMeasureConversions#30042, productionAspect#30043, salesAspect#30044, procurementAspect#30045, productGroup#30046, filteredUnitOfMeasureConversions#30047, quantityNumerator#30048, quantityDenominator#30049]
(523) Project
Arguments: [product#30008, plant#30009, orderDateTime#30010, productPlant#30020, timezonecode#30034, systemId#30035, internalUUID#30036, id#30037, displayId#30038, name#30039, baseUnitOfMeasure#30040, unitOfMeasures#30041, unitOfMeasureConversions#30042, productionAspect#30043, salesAspect#30044, procurementAspect#30045, productGroup#30046, filteredUnitOfMeasureConversions#30047, quantityNumerator#30048, quantityDenominator#30049, (cast(quantityNumerator#30048 as double) / cast(quantityDenominator#30049 as double)) AS outboundUnit#30050]
(524) Project
Arguments: [product#30008, plant#30009, orderDateTime#30010, productPlant#30020, timezonecode#30034, systemId#30035, internalUUID#30036, id#30037, displayId#30038, name#30039, baseUnitOfMeasure#30040, unitOfMeasures#30041, unitOfMeasureConversions#30042, productionAspect#30043, salesAspect#30044, procurementAspect#30045, productGroup#30046, filteredUnitOfMeasureConversions#30047, quantityNumerator#30048, quantityDenominator#30049, CASE WHEN (isnull(outboundUnit#30050) OR (outboundUnit#30050 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#30050 END AS outboundUnit#30051]
(525) Project
Arguments: [product#30008, plant#30009, orderDateTime#30010, productPlant#30020, timezonecode#30034, outboundUnit#30051]
(526) Join
Arguments: Inner, ((plantUuid#30000 = plant#30009) AND (productUuid#30002 = product#30008))
(527) Filter
Arguments: (calculationDateTime#29996 <= orderDateTime#30010)
(528) Project
Arguments: [plantUuid#30000 AS plant#30052, productUuid#30002 AS product#30053, storageLocId#30003, calculationDateTime#29996, quantity#30005]
(529) LogicalRelation
Arguments: parquet, [systemId#30054, internalUUID#30055, product#30056, plant#30057, calculationDateTime#30058, stockQuantities#30059], false
(530) Repartition
Arguments: 10, true
(531) LogicalRelation
Arguments: parquet, [marketUnit#30060, description#30061, articleHierarchy#30062, defaultCurrency#30063, responsibilities#30064, replenishmentTypes#30065, distributionCenters#30066, assignedArticleHierarchyNodes#30067, minOrderQtySetting#30068, minOrderQtySettingInternal#30069, listingCheck#30070, odsSelection#30071, demandProfiles#30072, constraintProfiles#30073, optimizationProfiles#30074, orderGroupSplitProfiles#30075, supplierMinimumProfiles#30076, multipleRestrictionProfiles#30077, preferredUomSource#30078, handlingOfUnfulfilledDemands#30079, negligibleQuantitiesThreshold#30080, eventtype#30081], false
(532) Repartition
Arguments: 10, true
(533) Filter
Arguments: (marketUnit#30060 <=> DIP_1691)
(534) Project
Arguments: [marketUnit#30060, description#30061, articleHierarchy#30062, defaultCurrency#30063, responsibilities#30064, replenishmentTypes#30065, distributionCenters#30066, assignedArticleHierarchyNodes#30067, minOrderQtySetting#30068, minOrderQtySettingInternal#30069, listingCheck#30070, odsSelection#30071, demandProfiles#30072, constraintProfiles#30073, optimizationProfiles#30074, orderGroupSplitProfiles#30075, supplierMinimumProfiles#30076, multipleRestrictionProfiles#30077, preferredUomSource#30078, handlingOfUnfulfilledDemands#30079, negligibleQuantitiesThreshold#30080, eventtype#30081]
(535) Project
Arguments: [distributionCenters#30066]
(536) Generate
Arguments: explode(distributionCenters#30066), false, [distributionCenters#30082]
(537) Project
Arguments: [distributionCenters#30082]
(538) Generate
Arguments: explode(distributionCenters#30082.storageLocations), false, [storageLocations#30083]
(539) Project
Arguments: [distributionCenters#30082.id AS plantId#30084, distributionCenters#30082.internalRefUUID AS plantUuid#30085, storageLocations#30083]
(540) Project
Arguments: [plantId#30084, plantUuid#30085, storageLocations#30083.id AS storageLocId#30086, storageLocations#30083.internalRefUUID AS storageLocUuid#30087]
(541) LogicalRelation
Arguments: parquet, [product#30088, plant#30089, orderDateTime#30090, planningStartDateTime#30091], false
(542) RepartitionByExpression
Arguments: [product#30088, plant#30089], 10
(543) Project
Arguments: [product#30088, plant#30089, orderDateTime#30090]
(544) LogicalRelation
Arguments: parquet, [systemId#30092, internalUUID#30093, plant#30094, product#30095, blockedForReplenishmentStartingFrom#30096, productionAspect#30097, salesPlant#30098, listing#30099], false
(545) Repartition
Arguments: 10, true
(546) Project
Arguments: [systemId#30092, internalUUID#30093, plant#30094, product#30095, blockedForReplenishmentStartingFrom#30096, productionAspect#30097, salesPlant#30098, listing#30099, struct(systemId, systemId#30092, internalUUID, internalUUID#30093, plant, plant#30094, product, product#30095, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#30096, productionAspect, productionAspect#30097, salesPlant, salesPlant#30098, listing, listing#30099) AS productPlant#30100]
(547) Project
Arguments: [productPlant#30100]
(548) Join
Arguments: LeftOuter, ((product#30088 <=> productPlant#30100.product.internalRefUUID) AND (plant#30089 <=> productPlant#30100.plant.internalRefUUID))
(549) Project
Arguments: [product#30088, plant#30089, orderDateTime#30090, productPlant#30100]
(550) SubqueryAlias
Arguments: wl
(551) LogicalRelation
Arguments: parquet, [systemId#30101, internalUUID#30102, id#30103, displayId#30104, name#30105, category#30106, companyCode#30107, address#30108, mainDistributionChain#30109, mainPurchasingOrganization#30110, validPurchasingOrganizations#30111, productGroup#30112], false
(552) Repartition
Arguments: 10, true
(553) Project
Arguments: [internalUUID#30102, address#30108.timeZone.code AS timezonecode#30113]
(554) Join
Arguments: LeftOuter, (plant#30089 <=> internalUUID#30102)
(555) Project
Arguments: [product#30088, plant#30089, orderDateTime#30090, productPlant#30100, internalUUID#30102, CASE WHEN isnotnull(timezonecode#30113) THEN timezonecode#30113 ELSE UTC END AS timezonecode#30114]
(556) Project
Arguments: [product#30088, plant#30089, orderDateTime#30090, productPlant#30100, timezonecode#30114]
(557) LogicalRelation
Arguments: parquet, [systemId#30115, internalUUID#30116, id#30117, displayId#30118, name#30119, baseUnitOfMeasure#30120, unitOfMeasures#30121, unitOfMeasureConversions#30122, productionAspect#30123, salesAspect#30124, procurementAspect#30125, productGroup#30126], false
(558) Repartition
Arguments: 10, true
(559) Join
Arguments: LeftOuter, (product#30088 = internalUUID#30116)
(560) Project
Arguments: [product#30088, plant#30089, orderDateTime#30090, productPlant#30100, timezonecode#30114, systemId#30115, internalUUID#30116, id#30117, displayId#30118, name#30119, baseUnitOfMeasure#30120, unitOfMeasures#30121, unitOfMeasureConversions#30122, productionAspect#30123, salesAspect#30124, procurementAspect#30125, productGroup#30126, filter(unitOfMeasureConversions#30122, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#30100.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#30100.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#30120.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#30120.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#30127]
(561) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30127.quantityNumerator), true, [quantityNumerator#30128]
(562) Project
Arguments: [product#30088, plant#30089, orderDateTime#30090, productPlant#30100, timezonecode#30114, systemId#30115, internalUUID#30116, id#30117, displayId#30118, name#30119, baseUnitOfMeasure#30120, unitOfMeasures#30121, unitOfMeasureConversions#30122, productionAspect#30123, salesAspect#30124, procurementAspect#30125, productGroup#30126, filteredUnitOfMeasureConversions#30127, quantityNumerator#30128]
(563) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30127.quantityDenominator), true, [quantityDenominator#30129]
(564) Project
Arguments: [product#30088, plant#30089, orderDateTime#30090, productPlant#30100, timezonecode#30114, systemId#30115, internalUUID#30116, id#30117, displayId#30118, name#30119, baseUnitOfMeasure#30120, unitOfMeasures#30121, unitOfMeasureConversions#30122, productionAspect#30123, salesAspect#30124, procurementAspect#30125, productGroup#30126, filteredUnitOfMeasureConversions#30127, quantityNumerator#30128, quantityDenominator#30129]
(565) Project
Arguments: [product#30088, plant#30089, orderDateTime#30090, productPlant#30100, timezonecode#30114, systemId#30115, internalUUID#30116, id#30117, displayId#30118, name#30119, baseUnitOfMeasure#30120, unitOfMeasures#30121, unitOfMeasureConversions#30122, productionAspect#30123, salesAspect#30124, procurementAspect#30125, productGroup#30126, filteredUnitOfMeasureConversions#30127, quantityNumerator#30128, quantityDenominator#30129, (cast(quantityNumerator#30128 as double) / cast(quantityDenominator#30129 as double)) AS outboundUnit#30130]
(566) Project
Arguments: [product#30088, plant#30089, orderDateTime#30090, productPlant#30100, timezonecode#30114, systemId#30115, internalUUID#30116, id#30117, displayId#30118, name#30119, baseUnitOfMeasure#30120, unitOfMeasures#30121, unitOfMeasureConversions#30122, productionAspect#30123, salesAspect#30124, procurementAspect#30125, productGroup#30126, filteredUnitOfMeasureConversions#30127, quantityNumerator#30128, quantityDenominator#30129, CASE WHEN (isnull(outboundUnit#30130) OR (outboundUnit#30130 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#30130 END AS outboundUnit#30131]
(567) Project
Arguments: [product#30088, plant#30089, orderDateTime#30090, productPlant#30100, timezonecode#30114, outboundUnit#30131]
(568) Project
Arguments: [plant#30089]
(569) Deduplicate
Arguments: [plant#30089]
(570) Join
Arguments: Inner, (plantUuid#30085 = plant#30089)
(571) Project
Arguments: [plantId#30084, plantUuid#30085, storageLocId#30086, storageLocUuid#30087]
(572) Join
Arguments: Inner, (plant#30057.internalRefUUID <=> plantUuid#30085)
(573) Generate
Arguments: explode(filter(stockQuantities#30059, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#30087) AND (lambda x#26016.storageLocation.Id = storageLocId#30086)), lambda x#26016, false))), false, [stockQuantity#30132]
(574) Project
Arguments: [systemId#30054, internalUUID#30055, product#30056, plant#30057, calculationDateTime#30058, stockQuantities#30059, plantId#30084, plantUuid#30085, storageLocId#30086, storageLocUuid#30087, stockQuantity#30132]
(575) Aggregate
Arguments: [plantUuid#30085, internalUUID#30055, plant#30057, product#30056, systemId#30054], [plantUuid#30085, internalUUID#30055, plant#30057, product#30056, systemId#30054, first(calculationDateTime#30058, false) AS calculationDateTime#30133, collect_list(stockQuantity#30132, 0, 0) AS stockQuantities#30134]
(576) Project
Arguments: [systemId#30054, internalUUID#30055, product#30056, plant#30057, calculationDateTime#30133, stockQuantities#30134]
(577) Generate
Arguments: explode(stockQuantities#30134), false, [stockQuantity#30135]
(578) Project
Arguments: [systemId#30054, internalUUID#30055, product#30056, plant#30057, calculationDateTime#30133, stockQuantities#30134, stockQuantity#30135]
(579) Project
Arguments: [plant#30057.id AS plant#30136, plant#30057.internalRefUUID AS plantUuid#30137, product#30056.id AS product#30138, product#30056.internalRefUUID AS productUuid#30139, calculationDateTime#30133, stockQuantity#30135.storagelocation.id AS storageLocId#30140, stockQuantity#30135.storagelocation.internalRefUUID AS storageLocUuid#30141, stockQuantity#30135.quantity.measure AS quantity#30142, stockQuantity#30135.specialStockIndicator.code AS specialStockIndicator#30143, stockQuantity#30135.stockType.code AS stockType#30144]
(580) Filter
Arguments: ((specialStockIndicator#30143 = ) AND (stockType#30144 = 01))
(581) LogicalRelation
Arguments: parquet, [product#30145, plant#30146, orderDateTime#30147, planningStartDateTime#30148], false
(582) RepartitionByExpression
Arguments: [product#30145, plant#30146], 10
(583) Project
Arguments: [product#30145, plant#30146, orderDateTime#30147]
(584) LogicalRelation
Arguments: parquet, [systemId#30149, internalUUID#30150, plant#30151, product#30152, blockedForReplenishmentStartingFrom#30153, productionAspect#30154, salesPlant#30155, listing#30156], false
(585) Repartition
Arguments: 10, true
(586) Project
Arguments: [systemId#30149, internalUUID#30150, plant#30151, product#30152, blockedForReplenishmentStartingFrom#30153, productionAspect#30154, salesPlant#30155, listing#30156, struct(systemId, systemId#30149, internalUUID, internalUUID#30150, plant, plant#30151, product, product#30152, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#30153, productionAspect, productionAspect#30154, salesPlant, salesPlant#30155, listing, listing#30156) AS productPlant#30157]
(587) Project
Arguments: [productPlant#30157]
(588) Join
Arguments: LeftOuter, ((product#30145 <=> productPlant#30157.product.internalRefUUID) AND (plant#30146 <=> productPlant#30157.plant.internalRefUUID))
(589) Project
Arguments: [product#30145, plant#30146, orderDateTime#30147, productPlant#30157]
(590) SubqueryAlias
Arguments: wl
(591) LogicalRelation
Arguments: parquet, [systemId#30158, internalUUID#30159, id#30160, displayId#30161, name#30162, category#30163, companyCode#30164, address#30165, mainDistributionChain#30166, mainPurchasingOrganization#30167, validPurchasingOrganizations#30168, productGroup#30169], false
(592) Repartition
Arguments: 10, true
(593) Project
Arguments: [internalUUID#30159, address#30165.timeZone.code AS timezonecode#30170]
(594) Join
Arguments: LeftOuter, (plant#30146 <=> internalUUID#30159)
(595) Project
Arguments: [product#30145, plant#30146, orderDateTime#30147, productPlant#30157, internalUUID#30159, CASE WHEN isnotnull(timezonecode#30170) THEN timezonecode#30170 ELSE UTC END AS timezonecode#30171]
(596) Project
Arguments: [product#30145, plant#30146, orderDateTime#30147, productPlant#30157, timezonecode#30171]
(597) LogicalRelation
Arguments: parquet, [systemId#30172, internalUUID#30173, id#30174, displayId#30175, name#30176, baseUnitOfMeasure#30177, unitOfMeasures#30178, unitOfMeasureConversions#30179, productionAspect#30180, salesAspect#30181, procurementAspect#30182, productGroup#30183], false
(598) Repartition
Arguments: 10, true
(599) Join
Arguments: LeftOuter, (product#30145 = internalUUID#30173)
(600) Project
Arguments: [product#30145, plant#30146, orderDateTime#30147, productPlant#30157, timezonecode#30171, systemId#30172, internalUUID#30173, id#30174, displayId#30175, name#30176, baseUnitOfMeasure#30177, unitOfMeasures#30178, unitOfMeasureConversions#30179, productionAspect#30180, salesAspect#30181, procurementAspect#30182, productGroup#30183, filter(unitOfMeasureConversions#30179, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#30157.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#30157.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#30177.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#30177.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#30184]
(601) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30184.quantityNumerator), true, [quantityNumerator#30185]
(602) Project
Arguments: [product#30145, plant#30146, orderDateTime#30147, productPlant#30157, timezonecode#30171, systemId#30172, internalUUID#30173, id#30174, displayId#30175, name#30176, baseUnitOfMeasure#30177, unitOfMeasures#30178, unitOfMeasureConversions#30179, productionAspect#30180, salesAspect#30181, procurementAspect#30182, productGroup#30183, filteredUnitOfMeasureConversions#30184, quantityNumerator#30185]
(603) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30184.quantityDenominator), true, [quantityDenominator#30186]
(604) Project
Arguments: [product#30145, plant#30146, orderDateTime#30147, productPlant#30157, timezonecode#30171, systemId#30172, internalUUID#30173, id#30174, displayId#30175, name#30176, baseUnitOfMeasure#30177, unitOfMeasures#30178, unitOfMeasureConversions#30179, productionAspect#30180, salesAspect#30181, procurementAspect#30182, productGroup#30183, filteredUnitOfMeasureConversions#30184, quantityNumerator#30185, quantityDenominator#30186]
(605) Project
Arguments: [product#30145, plant#30146, orderDateTime#30147, productPlant#30157, timezonecode#30171, systemId#30172, internalUUID#30173, id#30174, displayId#30175, name#30176, baseUnitOfMeasure#30177, unitOfMeasures#30178, unitOfMeasureConversions#30179, productionAspect#30180, salesAspect#30181, procurementAspect#30182, productGroup#30183, filteredUnitOfMeasureConversions#30184, quantityNumerator#30185, quantityDenominator#30186, (cast(quantityNumerator#30185 as double) / cast(quantityDenominator#30186 as double)) AS outboundUnit#30187]
(606) Project
Arguments: [product#30145, plant#30146, orderDateTime#30147, productPlant#30157, timezonecode#30171, systemId#30172, internalUUID#30173, id#30174, displayId#30175, name#30176, baseUnitOfMeasure#30177, unitOfMeasures#30178, unitOfMeasureConversions#30179, productionAspect#30180, salesAspect#30181, procurementAspect#30182, productGroup#30183, filteredUnitOfMeasureConversions#30184, quantityNumerator#30185, quantityDenominator#30186, CASE WHEN (isnull(outboundUnit#30187) OR (outboundUnit#30187 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#30187 END AS outboundUnit#30188]
(607) Project
Arguments: [product#30145, plant#30146, orderDateTime#30147, productPlant#30157, timezonecode#30171, outboundUnit#30188]
(608) Join
Arguments: Inner, ((plantUuid#30137 = plant#30146) AND (productUuid#30139 = product#30145))
(609) Filter
Arguments: (calculationDateTime#30133 <= orderDateTime#30147)
(610) Project
Arguments: [plantUuid#30137 AS plant#30189, productUuid#30139 AS product#30190, storageLocId#30140, calculationDateTime#30133, quantity#30142]
(611) Aggregate
Arguments: [plant#30189, product#30190, storageLocId#30140], [plant#30189, product#30190, storageLocId#30140, max(calculationDateTime#30133) AS max_calc_datetime#30191]
(612) Join
Arguments: Inner, ((((plant#30052 <=> plant#30189) AND (product#30053 <=> product#30190)) AND (storageLocId#30003 <=> storageLocId#30140)) AND (calculationDateTime#29996 <=> max_calc_datetime#30191))
(613) Project
Arguments: [plant#30052, product#30053, storageLocId#30003, calculationDateTime#29996, quantity#30005]
(614) Aggregate
Arguments: [product#30053, plant#30052], [product#30053, plant#30052, sum(quantity#30005) AS quantitySum#30192, min(calculationDateTime#29996) AS minCalculationDateTime#30193]
(615) Project
Arguments: [product#30053, plant#30052, quantitySum#30192, minCalculationDateTime#30193, round(quantitySum#30192, 0) AS roundedQuantitySum#30194]
(616) Join
Arguments: LeftOuter, ((plant#29874 = plant#30052) AND (product#29873 = product#30053))
(617) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, outboundUnit#29916, roundedQuantitySum#30194, minCalculationDateTime#30193]
(618) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, outboundUnit#29916, roundedQuantitySum#30194, minCalculationDateTime#30193, CASE WHEN isnotnull(minCalculationDateTime#30193) THEN minCalculationDateTime#30193 ELSE orderDateTime#29875 END AS stockDatetime#30195]
(619) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, outboundUnit#29916, roundedQuantitySum#30194, minCalculationDateTime#30193, stockDatetime#30195, CASE WHEN isnotnull(roundedQuantitySum#30194) THEN array(roundedQuantitySum#30194) ELSE array(0.0) END AS stockBatchQuantities#30196]
(620) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, outboundUnit#29916, roundedQuantitySum#30194, minCalculationDateTime#30193, stockDatetime#30195, stockBatchQuantities#30196, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#30197]
(621) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, outboundUnit#29916, roundedQuantitySum#30194, stockDatetime#30195, stockBatchQuantities#30196, stockBatchShelfLifeEndDatetimes#30197]
(622) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, outboundUnit#29916, stockDatetime#30195, stockBatchQuantities#30196, stockBatchShelfLifeEndDatetimes#30197]
(623) LogicalRelation
Arguments: parquet, [product#30198, plant#30199, orderDateTime#30200, planningStartDateTime#30201], false
(624) RepartitionByExpression
Arguments: [product#30198, plant#30199], 10
(625) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200]
(626) LogicalRelation
Arguments: parquet, [systemId#30202, internalUUID#30203, plant#30204, product#30205, blockedForReplenishmentStartingFrom#30206, productionAspect#30207, salesPlant#30208, listing#30209], false
(627) Repartition
Arguments: 10, true
(628) Project
Arguments: [systemId#30202, internalUUID#30203, plant#30204, product#30205, blockedForReplenishmentStartingFrom#30206, productionAspect#30207, salesPlant#30208, listing#30209, struct(systemId, systemId#30202, internalUUID, internalUUID#30203, plant, plant#30204, product, product#30205, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#30206, productionAspect, productionAspect#30207, salesPlant, salesPlant#30208, listing, listing#30209) AS productPlant#30210]
(629) Project
Arguments: [productPlant#30210]
(630) Join
Arguments: LeftOuter, ((product#30198 <=> productPlant#30210.product.internalRefUUID) AND (plant#30199 <=> productPlant#30210.plant.internalRefUUID))
(631) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210]
(632) SubqueryAlias
Arguments: wl
(633) LogicalRelation
Arguments: parquet, [systemId#30211, internalUUID#30212, id#30213, displayId#30214, name#30215, category#30216, companyCode#30217, address#30218, mainDistributionChain#30219, mainPurchasingOrganization#30220, validPurchasingOrganizations#30221, productGroup#30222], false
(634) Repartition
Arguments: 10, true
(635) Project
Arguments: [internalUUID#30212, address#30218.timeZone.code AS timezonecode#30223]
(636) Join
Arguments: LeftOuter, (plant#30199 <=> internalUUID#30212)
(637) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, internalUUID#30212, CASE WHEN isnotnull(timezonecode#30223) THEN timezonecode#30223 ELSE UTC END AS timezonecode#30224]
(638) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224]
(639) LogicalRelation
Arguments: parquet, [systemId#30225, internalUUID#30226, id#30227, displayId#30228, name#30229, baseUnitOfMeasure#30230, unitOfMeasures#30231, unitOfMeasureConversions#30232, productionAspect#30233, salesAspect#30234, procurementAspect#30235, productGroup#30236], false
(640) Repartition
Arguments: 10, true
(641) Join
Arguments: LeftOuter, (product#30198 = internalUUID#30226)
(642) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, systemId#30225, internalUUID#30226, id#30227, displayId#30228, name#30229, baseUnitOfMeasure#30230, unitOfMeasures#30231, unitOfMeasureConversions#30232, productionAspect#30233, salesAspect#30234, procurementAspect#30235, productGroup#30236, filter(unitOfMeasureConversions#30232, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#30210.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#30210.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#30230.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#30230.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#30237]
(643) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30237.quantityNumerator), true, [quantityNumerator#30238]
(644) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, systemId#30225, internalUUID#30226, id#30227, displayId#30228, name#30229, baseUnitOfMeasure#30230, unitOfMeasures#30231, unitOfMeasureConversions#30232, productionAspect#30233, salesAspect#30234, procurementAspect#30235, productGroup#30236, filteredUnitOfMeasureConversions#30237, quantityNumerator#30238]
(645) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30237.quantityDenominator), true, [quantityDenominator#30239]
(646) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, systemId#30225, internalUUID#30226, id#30227, displayId#30228, name#30229, baseUnitOfMeasure#30230, unitOfMeasures#30231, unitOfMeasureConversions#30232, productionAspect#30233, salesAspect#30234, procurementAspect#30235, productGroup#30236, filteredUnitOfMeasureConversions#30237, quantityNumerator#30238, quantityDenominator#30239]
(647) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, systemId#30225, internalUUID#30226, id#30227, displayId#30228, name#30229, baseUnitOfMeasure#30230, unitOfMeasures#30231, unitOfMeasureConversions#30232, productionAspect#30233, salesAspect#30234, procurementAspect#30235, productGroup#30236, filteredUnitOfMeasureConversions#30237, quantityNumerator#30238, quantityDenominator#30239, (cast(quantityNumerator#30238 as double) / cast(quantityDenominator#30239 as double)) AS outboundUnit#30240]
(648) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, systemId#30225, internalUUID#30226, id#30227, displayId#30228, name#30229, baseUnitOfMeasure#30230, unitOfMeasures#30231, unitOfMeasureConversions#30232, productionAspect#30233, salesAspect#30234, procurementAspect#30235, productGroup#30236, filteredUnitOfMeasureConversions#30237, quantityNumerator#30238, quantityDenominator#30239, CASE WHEN (isnull(outboundUnit#30240) OR (outboundUnit#30240 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#30240 END AS outboundUnit#30241]
(649) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, outboundUnit#30241]
(650) LogicalRelation
Arguments: parquet, [systemId#30242, internalUUID#30243, product#30244, plant#30245, calculationDateTime#30246, stockQuantities#30247], false
(651) Repartition
Arguments: 10, true
(652) LogicalRelation
Arguments: parquet, [marketUnit#30248, description#30249, articleHierarchy#30250, defaultCurrency#30251, responsibilities#30252, replenishmentTypes#30253, distributionCenters#30254, assignedArticleHierarchyNodes#30255, minOrderQtySetting#30256, minOrderQtySettingInternal#30257, listingCheck#30258, odsSelection#30259, demandProfiles#30260, constraintProfiles#30261, optimizationProfiles#30262, orderGroupSplitProfiles#30263, supplierMinimumProfiles#30264, multipleRestrictionProfiles#30265, preferredUomSource#30266, handlingOfUnfulfilledDemands#30267, negligibleQuantitiesThreshold#30268, eventtype#30269], false
(653) Repartition
Arguments: 10, true
(654) Filter
Arguments: (marketUnit#30248 <=> DIP_1691)
(655) Project
Arguments: [marketUnit#30248, description#30249, articleHierarchy#30250, defaultCurrency#30251, responsibilities#30252, replenishmentTypes#30253, distributionCenters#30254, assignedArticleHierarchyNodes#30255, minOrderQtySetting#30256, minOrderQtySettingInternal#30257, listingCheck#30258, odsSelection#30259, demandProfiles#30260, constraintProfiles#30261, optimizationProfiles#30262, orderGroupSplitProfiles#30263, supplierMinimumProfiles#30264, multipleRestrictionProfiles#30265, preferredUomSource#30266, handlingOfUnfulfilledDemands#30267, negligibleQuantitiesThreshold#30268, eventtype#30269]
(656) Project
Arguments: [distributionCenters#30254]
(657) Generate
Arguments: explode(distributionCenters#30254), false, [distributionCenters#30270]
(658) Project
Arguments: [distributionCenters#30270]
(659) Generate
Arguments: explode(distributionCenters#30270.storageLocations), false, [storageLocations#30271]
(660) Project
Arguments: [distributionCenters#30270.id AS plantId#30272, distributionCenters#30270.internalRefUUID AS plantUuid#30273, storageLocations#30271]
(661) Project
Arguments: [plantId#30272, plantUuid#30273, storageLocations#30271.id AS storageLocId#30274, storageLocations#30271.internalRefUUID AS storageLocUuid#30275]
(662) LogicalRelation
Arguments: parquet, [product#30276, plant#30277, orderDateTime#30278, planningStartDateTime#30279], false
(663) RepartitionByExpression
Arguments: [product#30276, plant#30277], 10
(664) Project
Arguments: [product#30276, plant#30277, orderDateTime#30278]
(665) LogicalRelation
Arguments: parquet, [systemId#30280, internalUUID#30281, plant#30282, product#30283, blockedForReplenishmentStartingFrom#30284, productionAspect#30285, salesPlant#30286, listing#30287], false
(666) Repartition
Arguments: 10, true
(667) Project
Arguments: [systemId#30280, internalUUID#30281, plant#30282, product#30283, blockedForReplenishmentStartingFrom#30284, productionAspect#30285, salesPlant#30286, listing#30287, struct(systemId, systemId#30280, internalUUID, internalUUID#30281, plant, plant#30282, product, product#30283, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#30284, productionAspect, productionAspect#30285, salesPlant, salesPlant#30286, listing, listing#30287) AS productPlant#30288]
(668) Project
Arguments: [productPlant#30288]
(669) Join
Arguments: LeftOuter, ((product#30276 <=> productPlant#30288.product.internalRefUUID) AND (plant#30277 <=> productPlant#30288.plant.internalRefUUID))
(670) Project
Arguments: [product#30276, plant#30277, orderDateTime#30278, productPlant#30288]
(671) SubqueryAlias
Arguments: wl
(672) LogicalRelation
Arguments: parquet, [systemId#30289, internalUUID#30290, id#30291, displayId#30292, name#30293, category#30294, companyCode#30295, address#30296, mainDistributionChain#30297, mainPurchasingOrganization#30298, validPurchasingOrganizations#30299, productGroup#30300], false
(673) Repartition
Arguments: 10, true
(674) Project
Arguments: [internalUUID#30290, address#30296.timeZone.code AS timezonecode#30301]
(675) Join
Arguments: LeftOuter, (plant#30277 <=> internalUUID#30290)
(676) Project
Arguments: [product#30276, plant#30277, orderDateTime#30278, productPlant#30288, internalUUID#30290, CASE WHEN isnotnull(timezonecode#30301) THEN timezonecode#30301 ELSE UTC END AS timezonecode#30302]
(677) Project
Arguments: [product#30276, plant#30277, orderDateTime#30278, productPlant#30288, timezonecode#30302]
(678) LogicalRelation
Arguments: parquet, [systemId#30303, internalUUID#30304, id#30305, displayId#30306, name#30307, baseUnitOfMeasure#30308, unitOfMeasures#30309, unitOfMeasureConversions#30310, productionAspect#30311, salesAspect#30312, procurementAspect#30313, productGroup#30314], false
(679) Repartition
Arguments: 10, true
(680) Join
Arguments: LeftOuter, (product#30276 = internalUUID#30304)
(681) Project
Arguments: [product#30276, plant#30277, orderDateTime#30278, productPlant#30288, timezonecode#30302, systemId#30303, internalUUID#30304, id#30305, displayId#30306, name#30307, baseUnitOfMeasure#30308, unitOfMeasures#30309, unitOfMeasureConversions#30310, productionAspect#30311, salesAspect#30312, procurementAspect#30313, productGroup#30314, filter(unitOfMeasureConversions#30310, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#30288.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#30288.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#30308.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#30308.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#30315]
(682) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30315.quantityNumerator), true, [quantityNumerator#30316]
(683) Project
Arguments: [product#30276, plant#30277, orderDateTime#30278, productPlant#30288, timezonecode#30302, systemId#30303, internalUUID#30304, id#30305, displayId#30306, name#30307, baseUnitOfMeasure#30308, unitOfMeasures#30309, unitOfMeasureConversions#30310, productionAspect#30311, salesAspect#30312, procurementAspect#30313, productGroup#30314, filteredUnitOfMeasureConversions#30315, quantityNumerator#30316]
(684) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30315.quantityDenominator), true, [quantityDenominator#30317]
(685) Project
Arguments: [product#30276, plant#30277, orderDateTime#30278, productPlant#30288, timezonecode#30302, systemId#30303, internalUUID#30304, id#30305, displayId#30306, name#30307, baseUnitOfMeasure#30308, unitOfMeasures#30309, unitOfMeasureConversions#30310, productionAspect#30311, salesAspect#30312, procurementAspect#30313, productGroup#30314, filteredUnitOfMeasureConversions#30315, quantityNumerator#30316, quantityDenominator#30317]
(686) Project
Arguments: [product#30276, plant#30277, orderDateTime#30278, productPlant#30288, timezonecode#30302, systemId#30303, internalUUID#30304, id#30305, displayId#30306, name#30307, baseUnitOfMeasure#30308, unitOfMeasures#30309, unitOfMeasureConversions#30310, productionAspect#30311, salesAspect#30312, procurementAspect#30313, productGroup#30314, filteredUnitOfMeasureConversions#30315, quantityNumerator#30316, quantityDenominator#30317, (cast(quantityNumerator#30316 as double) / cast(quantityDenominator#30317 as double)) AS outboundUnit#30318]
(687) Project
Arguments: [product#30276, plant#30277, orderDateTime#30278, productPlant#30288, timezonecode#30302, systemId#30303, internalUUID#30304, id#30305, displayId#30306, name#30307, baseUnitOfMeasure#30308, unitOfMeasures#30309, unitOfMeasureConversions#30310, productionAspect#30311, salesAspect#30312, procurementAspect#30313, productGroup#30314, filteredUnitOfMeasureConversions#30315, quantityNumerator#30316, quantityDenominator#30317, CASE WHEN (isnull(outboundUnit#30318) OR (outboundUnit#30318 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#30318 END AS outboundUnit#30319]
(688) Project
Arguments: [product#30276, plant#30277, orderDateTime#30278, productPlant#30288, timezonecode#30302, outboundUnit#30319]
(689) Project
Arguments: [plant#30277]
(690) Deduplicate
Arguments: [plant#30277]
(691) Join
Arguments: Inner, (plantUuid#30273 = plant#30277)
(692) Project
Arguments: [plantId#30272, plantUuid#30273, storageLocId#30274, storageLocUuid#30275]
(693) Join
Arguments: Inner, (plant#30245.internalRefUUID <=> plantUuid#30273)
(694) Generate
Arguments: explode(filter(stockQuantities#30247, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#30275) AND (lambda x#26016.storageLocation.Id = storageLocId#30274)), lambda x#26016, false))), false, [stockQuantity#30320]
(695) Project
Arguments: [systemId#30242, internalUUID#30243, product#30244, plant#30245, calculationDateTime#30246, stockQuantities#30247, plantId#30272, plantUuid#30273, storageLocId#30274, storageLocUuid#30275, stockQuantity#30320]
(696) Aggregate
Arguments: [plantUuid#30273, internalUUID#30243, plant#30245, product#30244, systemId#30242], [plantUuid#30273, internalUUID#30243, plant#30245, product#30244, systemId#30242, first(calculationDateTime#30246, false) AS calculationDateTime#30321, collect_list(stockQuantity#30320, 0, 0) AS stockQuantities#30322]
(697) Project
Arguments: [systemId#30242, internalUUID#30243, product#30244, plant#30245, calculationDateTime#30321, stockQuantities#30322]
(698) Generate
Arguments: explode(stockQuantities#30322), false, [stockQuantity#30323]
(699) Project
Arguments: [systemId#30242, internalUUID#30243, product#30244, plant#30245, calculationDateTime#30321, stockQuantities#30322, stockQuantity#30323]
(700) Project
Arguments: [plant#30245.id AS plant#30324, plant#30245.internalRefUUID AS plantUuid#30325, product#30244.id AS product#30326, product#30244.internalRefUUID AS productUuid#30327, calculationDateTime#30321, stockQuantity#30323.storagelocation.id AS storageLocId#30328, stockQuantity#30323.storagelocation.internalRefUUID AS storageLocUuid#30329, stockQuantity#30323.quantity.measure AS quantity#30330, stockQuantity#30323.specialStockIndicator.code AS specialStockIndicator#30331, stockQuantity#30323.stockType.code AS stockType#30332]
(701) Filter
Arguments: ((specialStockIndicator#30331 = ) AND (stockType#30332 = 01))
(702) LogicalRelation
Arguments: parquet, [product#30333, plant#30334, orderDateTime#30335, planningStartDateTime#30336], false
(703) RepartitionByExpression
Arguments: [product#30333, plant#30334], 10
(704) Project
Arguments: [product#30333, plant#30334, orderDateTime#30335]
(705) LogicalRelation
Arguments: parquet, [systemId#30337, internalUUID#30338, plant#30339, product#30340, blockedForReplenishmentStartingFrom#30341, productionAspect#30342, salesPlant#30343, listing#30344], false
(706) Repartition
Arguments: 10, true
(707) Project
Arguments: [systemId#30337, internalUUID#30338, plant#30339, product#30340, blockedForReplenishmentStartingFrom#30341, productionAspect#30342, salesPlant#30343, listing#30344, struct(systemId, systemId#30337, internalUUID, internalUUID#30338, plant, plant#30339, product, product#30340, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#30341, productionAspect, productionAspect#30342, salesPlant, salesPlant#30343, listing, listing#30344) AS productPlant#30345]
(708) Project
Arguments: [productPlant#30345]
(709) Join
Arguments: LeftOuter, ((product#30333 <=> productPlant#30345.product.internalRefUUID) AND (plant#30334 <=> productPlant#30345.plant.internalRefUUID))
(710) Project
Arguments: [product#30333, plant#30334, orderDateTime#30335, productPlant#30345]
(711) SubqueryAlias
Arguments: wl
(712) LogicalRelation
Arguments: parquet, [systemId#30346, internalUUID#30347, id#30348, displayId#30349, name#30350, category#30351, companyCode#30352, address#30353, mainDistributionChain#30354, mainPurchasingOrganization#30355, validPurchasingOrganizations#30356, productGroup#30357], false
(713) Repartition
Arguments: 10, true
(714) Project
Arguments: [internalUUID#30347, address#30353.timeZone.code AS timezonecode#30358]
(715) Join
Arguments: LeftOuter, (plant#30334 <=> internalUUID#30347)
(716) Project
Arguments: [product#30333, plant#30334, orderDateTime#30335, productPlant#30345, internalUUID#30347, CASE WHEN isnotnull(timezonecode#30358) THEN timezonecode#30358 ELSE UTC END AS timezonecode#30359]
(717) Project
Arguments: [product#30333, plant#30334, orderDateTime#30335, productPlant#30345, timezonecode#30359]
(718) LogicalRelation
Arguments: parquet, [systemId#30360, internalUUID#30361, id#30362, displayId#30363, name#30364, baseUnitOfMeasure#30365, unitOfMeasures#30366, unitOfMeasureConversions#30367, productionAspect#30368, salesAspect#30369, procurementAspect#30370, productGroup#30371], false
(719) Repartition
Arguments: 10, true
(720) Join
Arguments: LeftOuter, (product#30333 = internalUUID#30361)
(721) Project
Arguments: [product#30333, plant#30334, orderDateTime#30335, productPlant#30345, timezonecode#30359, systemId#30360, internalUUID#30361, id#30362, displayId#30363, name#30364, baseUnitOfMeasure#30365, unitOfMeasures#30366, unitOfMeasureConversions#30367, productionAspect#30368, salesAspect#30369, procurementAspect#30370, productGroup#30371, filter(unitOfMeasureConversions#30367, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#30345.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#30345.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#30365.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#30365.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#30372]
(722) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30372.quantityNumerator), true, [quantityNumerator#30373]
(723) Project
Arguments: [product#30333, plant#30334, orderDateTime#30335, productPlant#30345, timezonecode#30359, systemId#30360, internalUUID#30361, id#30362, displayId#30363, name#30364, baseUnitOfMeasure#30365, unitOfMeasures#30366, unitOfMeasureConversions#30367, productionAspect#30368, salesAspect#30369, procurementAspect#30370, productGroup#30371, filteredUnitOfMeasureConversions#30372, quantityNumerator#30373]
(724) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30372.quantityDenominator), true, [quantityDenominator#30374]
(725) Project
Arguments: [product#30333, plant#30334, orderDateTime#30335, productPlant#30345, timezonecode#30359, systemId#30360, internalUUID#30361, id#30362, displayId#30363, name#30364, baseUnitOfMeasure#30365, unitOfMeasures#30366, unitOfMeasureConversions#30367, productionAspect#30368, salesAspect#30369, procurementAspect#30370, productGroup#30371, filteredUnitOfMeasureConversions#30372, quantityNumerator#30373, quantityDenominator#30374]
(726) Project
Arguments: [product#30333, plant#30334, orderDateTime#30335, productPlant#30345, timezonecode#30359, systemId#30360, internalUUID#30361, id#30362, displayId#30363, name#30364, baseUnitOfMeasure#30365, unitOfMeasures#30366, unitOfMeasureConversions#30367, productionAspect#30368, salesAspect#30369, procurementAspect#30370, productGroup#30371, filteredUnitOfMeasureConversions#30372, quantityNumerator#30373, quantityDenominator#30374, (cast(quantityNumerator#30373 as double) / cast(quantityDenominator#30374 as double)) AS outboundUnit#30375]
(727) Project
Arguments: [product#30333, plant#30334, orderDateTime#30335, productPlant#30345, timezonecode#30359, systemId#30360, internalUUID#30361, id#30362, displayId#30363, name#30364, baseUnitOfMeasure#30365, unitOfMeasures#30366, unitOfMeasureConversions#30367, productionAspect#30368, salesAspect#30369, procurementAspect#30370, productGroup#30371, filteredUnitOfMeasureConversions#30372, quantityNumerator#30373, quantityDenominator#30374, CASE WHEN (isnull(outboundUnit#30375) OR (outboundUnit#30375 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#30375 END AS outboundUnit#30376]
(728) Project
Arguments: [product#30333, plant#30334, orderDateTime#30335, productPlant#30345, timezonecode#30359, outboundUnit#30376]
(729) Join
Arguments: Inner, ((plantUuid#30325 = plant#30334) AND (productUuid#30327 = product#30333))
(730) Filter
Arguments: (calculationDateTime#30321 <= orderDateTime#30335)
(731) Project
Arguments: [plantUuid#30325 AS plant#30377, productUuid#30327 AS product#30378, storageLocId#30328, calculationDateTime#30321, quantity#30330]
(732) LogicalRelation
Arguments: parquet, [systemId#30379, internalUUID#30380, product#30381, plant#30382, calculationDateTime#30383, stockQuantities#30384], false
(733) Repartition
Arguments: 10, true
(734) LogicalRelation
Arguments: parquet, [marketUnit#30385, description#30386, articleHierarchy#30387, defaultCurrency#30388, responsibilities#30389, replenishmentTypes#30390, distributionCenters#30391, assignedArticleHierarchyNodes#30392, minOrderQtySetting#30393, minOrderQtySettingInternal#30394, listingCheck#30395, odsSelection#30396, demandProfiles#30397, constraintProfiles#30398, optimizationProfiles#30399, orderGroupSplitProfiles#30400, supplierMinimumProfiles#30401, multipleRestrictionProfiles#30402, preferredUomSource#30403, handlingOfUnfulfilledDemands#30404, negligibleQuantitiesThreshold#30405, eventtype#30406], false
(735) Repartition
Arguments: 10, true
(736) Filter
Arguments: (marketUnit#30385 <=> DIP_1691)
(737) Project
Arguments: [marketUnit#30385, description#30386, articleHierarchy#30387, defaultCurrency#30388, responsibilities#30389, replenishmentTypes#30390, distributionCenters#30391, assignedArticleHierarchyNodes#30392, minOrderQtySetting#30393, minOrderQtySettingInternal#30394, listingCheck#30395, odsSelection#30396, demandProfiles#30397, constraintProfiles#30398, optimizationProfiles#30399, orderGroupSplitProfiles#30400, supplierMinimumProfiles#30401, multipleRestrictionProfiles#30402, preferredUomSource#30403, handlingOfUnfulfilledDemands#30404, negligibleQuantitiesThreshold#30405, eventtype#30406]
(738) Project
Arguments: [distributionCenters#30391]
(739) Generate
Arguments: explode(distributionCenters#30391), false, [distributionCenters#30407]
(740) Project
Arguments: [distributionCenters#30407]
(741) Generate
Arguments: explode(distributionCenters#30407.storageLocations), false, [storageLocations#30408]
(742) Project
Arguments: [distributionCenters#30407.id AS plantId#30409, distributionCenters#30407.internalRefUUID AS plantUuid#30410, storageLocations#30408]
(743) Project
Arguments: [plantId#30409, plantUuid#30410, storageLocations#30408.id AS storageLocId#30411, storageLocations#30408.internalRefUUID AS storageLocUuid#30412]
(744) LogicalRelation
Arguments: parquet, [product#30413, plant#30414, orderDateTime#30415, planningStartDateTime#30416], false
(745) RepartitionByExpression
Arguments: [product#30413, plant#30414], 10
(746) Project
Arguments: [product#30413, plant#30414, orderDateTime#30415]
(747) LogicalRelation
Arguments: parquet, [systemId#30417, internalUUID#30418, plant#30419, product#30420, blockedForReplenishmentStartingFrom#30421, productionAspect#30422, salesPlant#30423, listing#30424], false
(748) Repartition
Arguments: 10, true
(749) Project
Arguments: [systemId#30417, internalUUID#30418, plant#30419, product#30420, blockedForReplenishmentStartingFrom#30421, productionAspect#30422, salesPlant#30423, listing#30424, struct(systemId, systemId#30417, internalUUID, internalUUID#30418, plant, plant#30419, product, product#30420, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#30421, productionAspect, productionAspect#30422, salesPlant, salesPlant#30423, listing, listing#30424) AS productPlant#30425]
(750) Project
Arguments: [productPlant#30425]
(751) Join
Arguments: LeftOuter, ((product#30413 <=> productPlant#30425.product.internalRefUUID) AND (plant#30414 <=> productPlant#30425.plant.internalRefUUID))
(752) Project
Arguments: [product#30413, plant#30414, orderDateTime#30415, productPlant#30425]
(753) SubqueryAlias
Arguments: wl
(754) LogicalRelation
Arguments: parquet, [systemId#30426, internalUUID#30427, id#30428, displayId#30429, name#30430, category#30431, companyCode#30432, address#30433, mainDistributionChain#30434, mainPurchasingOrganization#30435, validPurchasingOrganizations#30436, productGroup#30437], false
(755) Repartition
Arguments: 10, true
(756) Project
Arguments: [internalUUID#30427, address#30433.timeZone.code AS timezonecode#30438]
(757) Join
Arguments: LeftOuter, (plant#30414 <=> internalUUID#30427)
(758) Project
Arguments: [product#30413, plant#30414, orderDateTime#30415, productPlant#30425, internalUUID#30427, CASE WHEN isnotnull(timezonecode#30438) THEN timezonecode#30438 ELSE UTC END AS timezonecode#30439]
(759) Project
Arguments: [product#30413, plant#30414, orderDateTime#30415, productPlant#30425, timezonecode#30439]
(760) LogicalRelation
Arguments: parquet, [systemId#30440, internalUUID#30441, id#30442, displayId#30443, name#30444, baseUnitOfMeasure#30445, unitOfMeasures#30446, unitOfMeasureConversions#30447, productionAspect#30448, salesAspect#30449, procurementAspect#30450, productGroup#30451], false
(761) Repartition
Arguments: 10, true
(762) Join
Arguments: LeftOuter, (product#30413 = internalUUID#30441)
(763) Project
Arguments: [product#30413, plant#30414, orderDateTime#30415, productPlant#30425, timezonecode#30439, systemId#30440, internalUUID#30441, id#30442, displayId#30443, name#30444, baseUnitOfMeasure#30445, unitOfMeasures#30446, unitOfMeasureConversions#30447, productionAspect#30448, salesAspect#30449, procurementAspect#30450, productGroup#30451, filter(unitOfMeasureConversions#30447, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#30425.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#30425.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#30445.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#30445.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#30452]
(764) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30452.quantityNumerator), true, [quantityNumerator#30453]
(765) Project
Arguments: [product#30413, plant#30414, orderDateTime#30415, productPlant#30425, timezonecode#30439, systemId#30440, internalUUID#30441, id#30442, displayId#30443, name#30444, baseUnitOfMeasure#30445, unitOfMeasures#30446, unitOfMeasureConversions#30447, productionAspect#30448, salesAspect#30449, procurementAspect#30450, productGroup#30451, filteredUnitOfMeasureConversions#30452, quantityNumerator#30453]
(766) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30452.quantityDenominator), true, [quantityDenominator#30454]
(767) Project
Arguments: [product#30413, plant#30414, orderDateTime#30415, productPlant#30425, timezonecode#30439, systemId#30440, internalUUID#30441, id#30442, displayId#30443, name#30444, baseUnitOfMeasure#30445, unitOfMeasures#30446, unitOfMeasureConversions#30447, productionAspect#30448, salesAspect#30449, procurementAspect#30450, productGroup#30451, filteredUnitOfMeasureConversions#30452, quantityNumerator#30453, quantityDenominator#30454]
(768) Project
Arguments: [product#30413, plant#30414, orderDateTime#30415, productPlant#30425, timezonecode#30439, systemId#30440, internalUUID#30441, id#30442, displayId#30443, name#30444, baseUnitOfMeasure#30445, unitOfMeasures#30446, unitOfMeasureConversions#30447, productionAspect#30448, salesAspect#30449, procurementAspect#30450, productGroup#30451, filteredUnitOfMeasureConversions#30452, quantityNumerator#30453, quantityDenominator#30454, (cast(quantityNumerator#30453 as double) / cast(quantityDenominator#30454 as double)) AS outboundUnit#30455]
(769) Project
Arguments: [product#30413, plant#30414, orderDateTime#30415, productPlant#30425, timezonecode#30439, systemId#30440, internalUUID#30441, id#30442, displayId#30443, name#30444, baseUnitOfMeasure#30445, unitOfMeasures#30446, unitOfMeasureConversions#30447, productionAspect#30448, salesAspect#30449, procurementAspect#30450, productGroup#30451, filteredUnitOfMeasureConversions#30452, quantityNumerator#30453, quantityDenominator#30454, CASE WHEN (isnull(outboundUnit#30455) OR (outboundUnit#30455 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#30455 END AS outboundUnit#30456]
(770) Project
Arguments: [product#30413, plant#30414, orderDateTime#30415, productPlant#30425, timezonecode#30439, outboundUnit#30456]
(771) Project
Arguments: [plant#30414]
(772) Deduplicate
Arguments: [plant#30414]
(773) Join
Arguments: Inner, (plantUuid#30410 = plant#30414)
(774) Project
Arguments: [plantId#30409, plantUuid#30410, storageLocId#30411, storageLocUuid#30412]
(775) Join
Arguments: Inner, (plant#30382.internalRefUUID <=> plantUuid#30410)
(776) Generate
Arguments: explode(filter(stockQuantities#30384, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#30412) AND (lambda x#26016.storageLocation.Id = storageLocId#30411)), lambda x#26016, false))), false, [stockQuantity#30457]
(777) Project
Arguments: [systemId#30379, internalUUID#30380, product#30381, plant#30382, calculationDateTime#30383, stockQuantities#30384, plantId#30409, plantUuid#30410, storageLocId#30411, storageLocUuid#30412, stockQuantity#30457]
(778) Aggregate
Arguments: [plantUuid#30410, internalUUID#30380, plant#30382, product#30381, systemId#30379], [plantUuid#30410, internalUUID#30380, plant#30382, product#30381, systemId#30379, first(calculationDateTime#30383, false) AS calculationDateTime#30458, collect_list(stockQuantity#30457, 0, 0) AS stockQuantities#30459]
(779) Project
Arguments: [systemId#30379, internalUUID#30380, product#30381, plant#30382, calculationDateTime#30458, stockQuantities#30459]
(780) Generate
Arguments: explode(stockQuantities#30459), false, [stockQuantity#30460]
(781) Project
Arguments: [systemId#30379, internalUUID#30380, product#30381, plant#30382, calculationDateTime#30458, stockQuantities#30459, stockQuantity#30460]
(782) Project
Arguments: [plant#30382.id AS plant#30461, plant#30382.internalRefUUID AS plantUuid#30462, product#30381.id AS product#30463, product#30381.internalRefUUID AS productUuid#30464, calculationDateTime#30458, stockQuantity#30460.storagelocation.id AS storageLocId#30465, stockQuantity#30460.storagelocation.internalRefUUID AS storageLocUuid#30466, stockQuantity#30460.quantity.measure AS quantity#30467, stockQuantity#30460.specialStockIndicator.code AS specialStockIndicator#30468, stockQuantity#30460.stockType.code AS stockType#30469]
(783) Filter
Arguments: ((specialStockIndicator#30468 = ) AND (stockType#30469 = 01))
(784) LogicalRelation
Arguments: parquet, [product#30470, plant#30471, orderDateTime#30472, planningStartDateTime#30473], false
(785) RepartitionByExpression
Arguments: [product#30470, plant#30471], 10
(786) Project
Arguments: [product#30470, plant#30471, orderDateTime#30472]
(787) LogicalRelation
Arguments: parquet, [systemId#30474, internalUUID#30475, plant#30476, product#30477, blockedForReplenishmentStartingFrom#30478, productionAspect#30479, salesPlant#30480, listing#30481], false
(788) Repartition
Arguments: 10, true
(789) Project
Arguments: [systemId#30474, internalUUID#30475, plant#30476, product#30477, blockedForReplenishmentStartingFrom#30478, productionAspect#30479, salesPlant#30480, listing#30481, struct(systemId, systemId#30474, internalUUID, internalUUID#30475, plant, plant#30476, product, product#30477, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#30478, productionAspect, productionAspect#30479, salesPlant, salesPlant#30480, listing, listing#30481) AS productPlant#30482]
(790) Project
Arguments: [productPlant#30482]
(791) Join
Arguments: LeftOuter, ((product#30470 <=> productPlant#30482.product.internalRefUUID) AND (plant#30471 <=> productPlant#30482.plant.internalRefUUID))
(792) Project
Arguments: [product#30470, plant#30471, orderDateTime#30472, productPlant#30482]
(793) SubqueryAlias
Arguments: wl
(794) LogicalRelation
Arguments: parquet, [systemId#30483, internalUUID#30484, id#30485, displayId#30486, name#30487, category#30488, companyCode#30489, address#30490, mainDistributionChain#30491, mainPurchasingOrganization#30492, validPurchasingOrganizations#30493, productGroup#30494], false
(795) Repartition
Arguments: 10, true
(796) Project
Arguments: [internalUUID#30484, address#30490.timeZone.code AS timezonecode#30495]
(797) Join
Arguments: LeftOuter, (plant#30471 <=> internalUUID#30484)
(798) Project
Arguments: [product#30470, plant#30471, orderDateTime#30472, productPlant#30482, internalUUID#30484, CASE WHEN isnotnull(timezonecode#30495) THEN timezonecode#30495 ELSE UTC END AS timezonecode#30496]
(799) Project
Arguments: [product#30470, plant#30471, orderDateTime#30472, productPlant#30482, timezonecode#30496]
(800) LogicalRelation
Arguments: parquet, [systemId#30497, internalUUID#30498, id#30499, displayId#30500, name#30501, baseUnitOfMeasure#30502, unitOfMeasures#30503, unitOfMeasureConversions#30504, productionAspect#30505, salesAspect#30506, procurementAspect#30507, productGroup#30508], false
(801) Repartition
Arguments: 10, true
(802) Join
Arguments: LeftOuter, (product#30470 = internalUUID#30498)
(803) Project
Arguments: [product#30470, plant#30471, orderDateTime#30472, productPlant#30482, timezonecode#30496, systemId#30497, internalUUID#30498, id#30499, displayId#30500, name#30501, baseUnitOfMeasure#30502, unitOfMeasures#30503, unitOfMeasureConversions#30504, productionAspect#30505, salesAspect#30506, procurementAspect#30507, productGroup#30508, filter(unitOfMeasureConversions#30504, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#30482.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#30482.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#30502.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#30502.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#30509]
(804) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30509.quantityNumerator), true, [quantityNumerator#30510]
(805) Project
Arguments: [product#30470, plant#30471, orderDateTime#30472, productPlant#30482, timezonecode#30496, systemId#30497, internalUUID#30498, id#30499, displayId#30500, name#30501, baseUnitOfMeasure#30502, unitOfMeasures#30503, unitOfMeasureConversions#30504, productionAspect#30505, salesAspect#30506, procurementAspect#30507, productGroup#30508, filteredUnitOfMeasureConversions#30509, quantityNumerator#30510]
(806) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30509.quantityDenominator), true, [quantityDenominator#30511]
(807) Project
Arguments: [product#30470, plant#30471, orderDateTime#30472, productPlant#30482, timezonecode#30496, systemId#30497, internalUUID#30498, id#30499, displayId#30500, name#30501, baseUnitOfMeasure#30502, unitOfMeasures#30503, unitOfMeasureConversions#30504, productionAspect#30505, salesAspect#30506, procurementAspect#30507, productGroup#30508, filteredUnitOfMeasureConversions#30509, quantityNumerator#30510, quantityDenominator#30511]
(808) Project
Arguments: [product#30470, plant#30471, orderDateTime#30472, productPlant#30482, timezonecode#30496, systemId#30497, internalUUID#30498, id#30499, displayId#30500, name#30501, baseUnitOfMeasure#30502, unitOfMeasures#30503, unitOfMeasureConversions#30504, productionAspect#30505, salesAspect#30506, procurementAspect#30507, productGroup#30508, filteredUnitOfMeasureConversions#30509, quantityNumerator#30510, quantityDenominator#30511, (cast(quantityNumerator#30510 as double) / cast(quantityDenominator#30511 as double)) AS outboundUnit#30512]
(809) Project
Arguments: [product#30470, plant#30471, orderDateTime#30472, productPlant#30482, timezonecode#30496, systemId#30497, internalUUID#30498, id#30499, displayId#30500, name#30501, baseUnitOfMeasure#30502, unitOfMeasures#30503, unitOfMeasureConversions#30504, productionAspect#30505, salesAspect#30506, procurementAspect#30507, productGroup#30508, filteredUnitOfMeasureConversions#30509, quantityNumerator#30510, quantityDenominator#30511, CASE WHEN (isnull(outboundUnit#30512) OR (outboundUnit#30512 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#30512 END AS outboundUnit#30513]
(810) Project
Arguments: [product#30470, plant#30471, orderDateTime#30472, productPlant#30482, timezonecode#30496, outboundUnit#30513]
(811) Join
Arguments: Inner, ((plantUuid#30462 = plant#30471) AND (productUuid#30464 = product#30470))
(812) Filter
Arguments: (calculationDateTime#30458 <= orderDateTime#30472)
(813) Project
Arguments: [plantUuid#30462 AS plant#30514, productUuid#30464 AS product#30515, storageLocId#30465, calculationDateTime#30458, quantity#30467]
(814) Aggregate
Arguments: [plant#30514, product#30515, storageLocId#30465], [plant#30514, product#30515, storageLocId#30465, max(calculationDateTime#30458) AS max_calc_datetime#30516]
(815) Join
Arguments: Inner, ((((plant#30377 <=> plant#30514) AND (product#30378 <=> product#30515)) AND (storageLocId#30328 <=> storageLocId#30465)) AND (calculationDateTime#30321 <=> max_calc_datetime#30516))
(816) Project
Arguments: [plant#30377, product#30378, storageLocId#30328, calculationDateTime#30321, quantity#30330]
(817) Aggregate
Arguments: [product#30378, plant#30377], [product#30378, plant#30377, sum(quantity#30330) AS quantitySum#30517, min(calculationDateTime#30321) AS minCalculationDateTime#30518]
(818) Project
Arguments: [product#30378, plant#30377, quantitySum#30517, minCalculationDateTime#30518, round(quantitySum#30517, 0) AS roundedQuantitySum#30519]
(819) Join
Arguments: LeftOuter, ((plant#30199 = plant#30377) AND (product#30198 = product#30378))
(820) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, outboundUnit#30241, roundedQuantitySum#30519, minCalculationDateTime#30518]
(821) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, outboundUnit#30241, roundedQuantitySum#30519, minCalculationDateTime#30518, CASE WHEN isnotnull(minCalculationDateTime#30518) THEN minCalculationDateTime#30518 ELSE orderDateTime#30200 END AS stockDatetime#30520]
(822) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, outboundUnit#30241, roundedQuantitySum#30519, minCalculationDateTime#30518, stockDatetime#30520, CASE WHEN isnotnull(roundedQuantitySum#30519) THEN array(roundedQuantitySum#30519) ELSE array(0.0) END AS stockBatchQuantities#30521]
(823) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, outboundUnit#30241, roundedQuantitySum#30519, minCalculationDateTime#30518, stockDatetime#30520, stockBatchQuantities#30521, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#30522]
(824) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, outboundUnit#30241, roundedQuantitySum#30519, stockDatetime#30520, stockBatchQuantities#30521, stockBatchShelfLifeEndDatetimes#30522]
(825) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, outboundUnit#30241, stockDatetime#30520, stockBatchQuantities#30521, stockBatchShelfLifeEndDatetimes#30522]
(826) LogicalRelation
Arguments: parquet, [product#30523, plant#30524, demandChannel#30525, demandStream#30526, considerVariance#30527, demandTimeBuckets#30528, demandPointInTimeStart#30529, demandPointInTimeEnd#30530, demandPointInTime#30531], false
(827) Join
Arguments: LeftOuter, ((product#30198 = product#30523) AND (plant#30199 = plant#30524))
(828) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, outboundUnit#30241, stockDatetime#30520, stockBatchQuantities#30521, stockBatchShelfLifeEndDatetimes#30522, demandChannel#30525, demandStream#30526, considerVariance#30527, demandTimeBuckets#30528, demandPointInTimeStart#30529, demandPointInTimeEnd#30530, demandPointInTime#30531, product#30523, plant#30524]
(829) Project
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, outboundUnit#30241, stockDatetime#30520, stockBatchQuantities#30521, stockBatchShelfLifeEndDatetimes#30522, demandChannel#30525, demandStream#30526, considerVariance#30527, demandTimeBuckets#30528, demandPointInTimeStart#30529, demandPointInTimeEnd#30530, demandPointInTime#30531, CASE WHEN isnotnull(product#30523) THEN struct(demandChannel, demandChannel#30525, demandStream, demandStream#30526, considerVariance, considerVariance#30527, demandTimeBuckets, demandTimeBuckets#30528, demandPointInTimeStart, demandPointInTimeStart#30529, demandPointInTimeEnd, demandPointInTimeEnd#30530, demandPointInTime, demandPointInTime#30531) 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#30532]
(830) Aggregate
Arguments: [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, outboundUnit#30241, stockDatetime#30520, stockBatchQuantities#30521, stockBatchShelfLifeEndDatetimes#30522], [product#30198, plant#30199, orderDateTime#30200, productPlant#30210, timezonecode#30224, outboundUnit#30241, stockDatetime#30520, stockBatchQuantities#30521, stockBatchShelfLifeEndDatetimes#30522, collect_list(rawDemands#30532, 0, 0) AS rawDemands#30533]
(831) DeserializeToObject
Arguments: createexternalrow(invoke(product#30198.toString()), invoke(plant#30199.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#30200)), if (isnull(productPlant#30210)) null else createexternalrow(invoke(productPlant#30210.systemId.toString()), invoke(productPlant#30210.internalUUID.toString()), if (isnull(productPlant#30210.plant)) null else createexternalrow(invoke(productPlant#30210.plant.internalRefUUID.toString()), invoke(productPlant#30210.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#30210.product)) null else createexternalrow(invoke(productPlant#30210.product.internalRefUUID.toString()), invoke(productPlant#30210.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#30210.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#30210.productionAspect)) null else createexternalrow(if (isnull(productPlant#30210.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#30210.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#30210.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#30210.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#30210.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#30210.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#30210.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#30210.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#30210.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#30210.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#30210.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#30210.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#30210.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#30210.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#30210.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#30210.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#30210.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#30210.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#30210.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#30210.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#30210.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#30210.salesPlant)) null else createexternalrow(if (isnull(productPlant#30210.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#30210.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#30210.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, 3800), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#30210.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#30224.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#30241)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#30520)), mapobjects(lambdavariable(MapObject, DoubleType, true, 3801), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 3801) as double))), stockBatchQuantities#30521, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 3802), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 3802) as timestamp)))), stockBatchShelfLifeEndDatetimes#30522, 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, 3803), 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, 3803))) 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, 3803).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, 3803).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, 3803).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).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, 3803).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, 3803).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, 3803).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).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, 3803).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#30533, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#26378: org.apache.spark.sql.Row
(832) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, interface org.apache.spark.sql.Row, [StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)], obj#26383: org.apache.spark.sql.Row
(833) SerializeFromObject
Arguments: [if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(0))) null else static_invoke(UTF8String.fromString(validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true]), 0, product), StringType, ObjectType(class java.lang.String)))) AS product#30534, 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#30535, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3791), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3791), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3792), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3792), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3793), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3793), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3794), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3794), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3795), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3795), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#30536, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3797), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3797), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3798), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3798), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3799), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3799), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#30537]
(834) Join
Arguments: LeftOuter, ((plant#30535 <=> plant#29874) AND (product#30534 <=> product#29873))
(835) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, outboundUnit#29916, stockDatetime#30195, stockBatchQuantities#30196, stockBatchShelfLifeEndDatetimes#30197, plant#30535, dayBucketDemands#30536, pointInTimeDemands#30537]
(836) Project
Arguments: [product#29873, plant#29874, orderDateTime#29875, productPlant#29885, timezonecode#29899, outboundUnit#29916, stockDatetime#30195, stockBatchQuantities#30196, stockBatchShelfLifeEndDatetimes#30197, dayBucketDemands#30536, pointInTimeDemands#30537]
(837) LogicalRelation
Arguments: parquet, [marketUnit#26777, description#26778, articleHierarchy#26779, defaultCurrency#26780, responsibilities#26781, replenishmentTypes#26782, distributionCenters#26783, assignedArticleHierarchyNodes#26784, minOrderQtySetting#26785, minOrderQtySettingInternal#26786, listingCheck#26787, odsSelection#26788, demandProfiles#26789, constraintProfiles#26790, optimizationProfiles#26791, orderGroupSplitProfiles#26792, supplierMinimumProfiles#26793, multipleRestrictionProfiles#26794, preferredUomSource#26795, handlingOfUnfulfilledDemands#26796, negligibleQuantitiesThreshold#26797, eventtype#26798], false
(838) Repartition
Arguments: 10, true
(839) Filter
Arguments: (marketUnit#26777 <=> DIP_1691)
(840) Project
Arguments: [marketUnit#26777, description#26778, articleHierarchy#26779, defaultCurrency#26780, responsibilities#26781, replenishmentTypes#26782, distributionCenters#26783, assignedArticleHierarchyNodes#26784, minOrderQtySetting#26785, minOrderQtySettingInternal#26786, listingCheck#26787, odsSelection#26788, demandProfiles#26789, constraintProfiles#26790, optimizationProfiles#26791, orderGroupSplitProfiles#26792, supplierMinimumProfiles#26793, multipleRestrictionProfiles#26794, preferredUomSource#26795, handlingOfUnfulfilledDemands#26796, negligibleQuantitiesThreshold#26797, eventtype#26798]
(841) Project
Arguments: [distributionCenters#26783]
(842) Generate
Arguments: explode(distributionCenters#26783), false, [distributionCenters#26799]
(843) Project
Arguments: [distributionCenters#26799]
(844) Generate
Arguments: explode(distributionCenters#26799.storageLocations), false, [storageLocations#26800]
(845) Project
Arguments: [distributionCenters#26799.id AS plantId#26801, distributionCenters#26799.internalRefUUID AS plantUuid#26802, storageLocations#26800]
(846) Project
Arguments: [plantId#26801, plantUuid#26802, storageLocations#26800.id AS storageLocId#26803, storageLocations#26800.internalRefUUID AS storageLocUuid#26804]
(847) LogicalRelation
Arguments: parquet, [product#26805, plant#26806, orderDateTime#26807, planningStartDateTime#26808], false
(848) RepartitionByExpression
Arguments: [product#26805, plant#26806], 10
(849) Project
Arguments: [product#26805, plant#26806, orderDateTime#26807]
(850) LogicalRelation
Arguments: parquet, [systemId#26809, internalUUID#26810, plant#26811, product#26812, blockedForReplenishmentStartingFrom#26813, productionAspect#26814, salesPlant#26815, listing#26816], false
(851) Repartition
Arguments: 10, true
(852) Project
Arguments: [systemId#26809, internalUUID#26810, plant#26811, product#26812, blockedForReplenishmentStartingFrom#26813, productionAspect#26814, salesPlant#26815, listing#26816, struct(systemId, systemId#26809, internalUUID, internalUUID#26810, plant, plant#26811, product, product#26812, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#26813, productionAspect, productionAspect#26814, salesPlant, salesPlant#26815, listing, listing#26816) AS productPlant#26817]
(853) Project
Arguments: [productPlant#26817]
(854) Join
Arguments: LeftOuter, ((product#26805 <=> productPlant#26817.product.internalRefUUID) AND (plant#26806 <=> productPlant#26817.plant.internalRefUUID))
(855) Project
Arguments: [product#26805, plant#26806, orderDateTime#26807, productPlant#26817]
(856) SubqueryAlias
Arguments: wl
(857) LogicalRelation
Arguments: parquet, [systemId#26818, internalUUID#26819, id#26820, displayId#26821, name#26822, category#26823, companyCode#26824, address#26825, mainDistributionChain#26826, mainPurchasingOrganization#26827, validPurchasingOrganizations#26828, productGroup#26829], false
(858) Repartition
Arguments: 10, true
(859) Project
Arguments: [internalUUID#26819, address#26825.timeZone.code AS timezonecode#26830]
(860) Join
Arguments: LeftOuter, (plant#26806 <=> internalUUID#26819)
(861) Project
Arguments: [product#26805, plant#26806, orderDateTime#26807, productPlant#26817, internalUUID#26819, CASE WHEN isnotnull(timezonecode#26830) THEN timezonecode#26830 ELSE UTC END AS timezonecode#26831]
(862) Project
Arguments: [product#26805, plant#26806, orderDateTime#26807, productPlant#26817, timezonecode#26831]
(863) LogicalRelation
Arguments: parquet, [systemId#26832, internalUUID#26833, id#26834, displayId#26835, name#26836, baseUnitOfMeasure#26837, unitOfMeasures#26838, unitOfMeasureConversions#26839, productionAspect#26840, salesAspect#26841, procurementAspect#26842, productGroup#26843], false
(864) Repartition
Arguments: 10, true
(865) Join
Arguments: LeftOuter, (product#26805 = internalUUID#26833)
(866) Project
Arguments: [product#26805, plant#26806, orderDateTime#26807, productPlant#26817, timezonecode#26831, systemId#26832, internalUUID#26833, id#26834, displayId#26835, name#26836, baseUnitOfMeasure#26837, unitOfMeasures#26838, unitOfMeasureConversions#26839, productionAspect#26840, salesAspect#26841, procurementAspect#26842, productGroup#26843, filter(unitOfMeasureConversions#26839, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#26817.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#26817.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#26837.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#26837.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#26844]
(867) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26844.quantityNumerator), true, [quantityNumerator#26845]
(868) Project
Arguments: [product#26805, plant#26806, orderDateTime#26807, productPlant#26817, timezonecode#26831, systemId#26832, internalUUID#26833, id#26834, displayId#26835, name#26836, baseUnitOfMeasure#26837, unitOfMeasures#26838, unitOfMeasureConversions#26839, productionAspect#26840, salesAspect#26841, procurementAspect#26842, productGroup#26843, filteredUnitOfMeasureConversions#26844, quantityNumerator#26845]
(869) Generate
Arguments: explode(filteredUnitOfMeasureConversions#26844.quantityDenominator), true, [quantityDenominator#26846]
(870) Project
Arguments: [product#26805, plant#26806, orderDateTime#26807, productPlant#26817, timezonecode#26831, systemId#26832, internalUUID#26833, id#26834, displayId#26835, name#26836, baseUnitOfMeasure#26837, unitOfMeasures#26838, unitOfMeasureConversions#26839, productionAspect#26840, salesAspect#26841, procurementAspect#26842, productGroup#26843, filteredUnitOfMeasureConversions#26844, quantityNumerator#26845, quantityDenominator#26846]
(871) Project
Arguments: [product#26805, plant#26806, orderDateTime#26807, productPlant#26817, timezonecode#26831, systemId#26832, internalUUID#26833, id#26834, displayId#26835, name#26836, baseUnitOfMeasure#26837, unitOfMeasures#26838, unitOfMeasureConversions#26839, productionAspect#26840, salesAspect#26841, procurementAspect#26842, productGroup#26843, filteredUnitOfMeasureConversions#26844, quantityNumerator#26845, quantityDenominator#26846, (cast(quantityNumerator#26845 as double) / cast(quantityDenominator#26846 as double)) AS outboundUnit#26847]
(872) Project
Arguments: [product#26805, plant#26806, orderDateTime#26807, productPlant#26817, timezonecode#26831, systemId#26832, internalUUID#26833, id#26834, displayId#26835, name#26836, baseUnitOfMeasure#26837, unitOfMeasures#26838, unitOfMeasureConversions#26839, productionAspect#26840, salesAspect#26841, procurementAspect#26842, productGroup#26843, filteredUnitOfMeasureConversions#26844, quantityNumerator#26845, quantityDenominator#26846, CASE WHEN (isnull(outboundUnit#26847) OR (outboundUnit#26847 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#26847 END AS outboundUnit#26848]
(873) Project
Arguments: [product#26805, plant#26806, orderDateTime#26807, productPlant#26817, timezonecode#26831, outboundUnit#26848]
(874) Project
Arguments: [plant#26806]
(875) Deduplicate
Arguments: [plant#26806]
(876) Join
Arguments: Inner, (plantUuid#26802 = plant#26806)
(877) Project
Arguments: [plantId#26801, plantUuid#26802, storageLocId#26803, storageLocUuid#26804]
(878) Project
Arguments: [plantId#26801, plantUuid#26802 AS plant#26776, storageLocId#26803, storageLocUuid#26804]
(879) Join
Arguments: Inner, (plant#29874 = plant#26776)
(880) Project
Arguments: [plant#29874, product#29873, orderDateTime#29875, productPlant#29885, timezonecode#29899, outboundUnit#29916, stockDatetime#30195, stockBatchQuantities#30196, stockBatchShelfLifeEndDatetimes#30197, dayBucketDemands#30536, pointInTimeDemands#30537, plantId#26801, storageLocId#26803, storageLocUuid#26804, plant#26776]
(881) LogicalRelation
Arguments: parquet, [systemId#26741, internalUUID#26742, id#26743, displayId#26744, supplier#26745, type#26746, status#26747, isMarkedForDeletion#26748, items#26749], false
(882) Repartition
Arguments: 10, true
(883) Generate
Arguments: explode(items#26749), false, [item#26753]
(884) Project
Arguments: [id#26743, internalUUID#26742, isMarkedForDeletion#26748, supplier#26745.internalRefUUID AS supplierUuid#26750, item#26753]
(885) Filter
Arguments: (((NOT isMarkedForDeletion#26748 AND NOT item#26753.deletionIndicator) AND NOT item#26753.completeIndicator) AND NOT item#26753.returnIndicator)
(886) Project
Arguments: [id#26743, internalUUID#26742, supplierUuid#26750, item#26753.plant.internalRefUUID AS plant#26758, item#26753.product.internalRefUUID AS product#26759, item#26753.storageLocation.internalRefUUID AS storageLocUuid#26760, item#26753.quantityUnit.code AS quantityUom#26761, item#26753.quantityUnit.internalRefUUID AS quantityUomUuid#26762, item#26753.quantityNumerator AS quantityNumerator#26763, item#26753.quantityDenominator AS quantityDenominator#26764, item#26753.scheduleLines AS scheduleLines#26765, item#26753.confirmations AS confirmations#26766]
(887) Join
Arguments: Inner, (((product#29873 = product#26759) AND (plant#29874 = plant#26758)) AND (storageLocUuid#26804 = storageLocUuid#26760))
(888) Project
Arguments: [product#29873, plant#29874, storageLocUuid#26804, orderDateTime#29875, productPlant#29885, timezonecode#29899, outboundUnit#29916, stockDatetime#30195, stockBatchQuantities#30196, stockBatchShelfLifeEndDatetimes#30197, dayBucketDemands#30536, pointInTimeDemands#30537, plantId#26801, storageLocId#26803, id#26743, internalUUID#26742, supplierUuid#26750, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, product#26759, plant#26758, ... 2 more fields]
(889) Project
Arguments: [id#26743, internalUUID#26742, supplierUuid#26750, plant#26758, product#26759, storageLocUuid#26760, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, stockDatetime#30195, timezonecode#29899]
(890) Project
Arguments: [id#26743, internalUUID#26742, supplierUuid#26750, plant#26758, product#26759, storageLocUuid#26760, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, stockDatetime#30195, timezonecode#29899, array_size(filter(confirmations#26766, lambdafunction((((lambda x_12#27127.deletionIndicator = false) AND (lambda x_12#27127.isRelevantForConfirmation = true)) AND isnotnull(lambda x_12#27127.confirmedDeliveryAt)), lambda x_12#27127, false))) AS _w0#27134]
(891) Window
Arguments: [sum(_w0#27134) windowspecdefinition(internalUUID#26742, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#27135L], [internalUUID#26742]
(892) Project
Arguments: [id#26743, internalUUID#26742, supplierUuid#26750, plant#26758, product#26759, storageLocUuid#26760, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, stockDatetime#30195, timezonecode#29899, _w0#27134, _we0#27135L, filter(transform(CASE WHEN (_we0#27135L > cast(0 as bigint)) THEN transform(filter(confirmations#26766, lambdafunction((((lambda x_12#27128.deletionIndicator = false) AND (lambda x_12#27128.isRelevantForConfirmation = true)) AND isnotnull(lambda x_12#27128.confirmedDeliveryAt)), lambda x_12#27128, false)), lambdafunction(struct(openQty, greatest((lambda x_13#27131.confirmedQuantity - coalesce(lambda x_13#27131.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_13#27131.confirmedDeliveryAt), lambda x_13#27131, false)) ELSE transform(scheduleLines#26765, lambdafunction(struct(openQty, greatest((lambda x_11#27129.quantity - coalesce(lambda x_11#27129.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_11#27129.deliveryAt), lambda x_11#27129, false)) END, lambdafunction(struct(documentId, id#26743, documentUuid, internalUUID#26742, openQty, lambda x_14#27132.openQty, openQtyInBaseUnit, ((lambda x_14#27132.openQty * quantityNumerator#26763) / quantityDenominator#26764), qtyUom, quantityUom#26761, qtyUomUuid, quantityUomUuid#26762, availabilityDatetime, lambda x_14#27132.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_14#27132, false)), lambdafunction(NOT (lambda x_15#27133.openQty = 0.0), lambda x_15#27133, false)) AS openGoodsMovements#27126]
(893) Project
Arguments: [id#26743, internalUUID#26742, supplierUuid#26750, plant#26758, product#26759, storageLocUuid#26760, quantityUom#26761, quantityUomUuid#26762, quantityNumerator#26763, quantityDenominator#26764, scheduleLines#26765, confirmations#26766, stockDatetime#30195, timezonecode#29899, openGoodsMovements#27126]
(894) Aggregate
Arguments: [product#26759, plant#26758], [product#26759, plant#26758, flatten(collect_list(openGoodsMovements#27126, 0, 0)) AS openGoodsMovements#27136]
(895) Filter
Arguments: (array_size(openGoodsMovements#27136) > 0)
(896) LogicalRelation
Arguments: parquet, [product#29133, plant#29134, orderDateTime#29135, planningStartDateTime#29136], false
(897) RepartitionByExpression
Arguments: [product#29133, plant#29134], 10
(898) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135]
(899) LogicalRelation
Arguments: parquet, [systemId#29137, internalUUID#29138, plant#29139, product#29140, blockedForReplenishmentStartingFrom#29141, productionAspect#29142, salesPlant#29143, listing#29144], false
(900) Repartition
Arguments: 10, true
(901) Project
Arguments: [systemId#29137, internalUUID#29138, plant#29139, product#29140, blockedForReplenishmentStartingFrom#29141, productionAspect#29142, salesPlant#29143, listing#29144, struct(systemId, systemId#29137, internalUUID, internalUUID#29138, plant, plant#29139, product, product#29140, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#29141, productionAspect, productionAspect#29142, salesPlant, salesPlant#29143, listing, listing#29144) AS productPlant#29145]
(902) Project
Arguments: [productPlant#29145]
(903) Join
Arguments: LeftOuter, ((product#29133 <=> productPlant#29145.product.internalRefUUID) AND (plant#29134 <=> productPlant#29145.plant.internalRefUUID))
(904) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145]
(905) SubqueryAlias
Arguments: wl
(906) LogicalRelation
Arguments: parquet, [systemId#29146, internalUUID#29147, id#29148, displayId#29149, name#29150, category#29151, companyCode#29152, address#29153, mainDistributionChain#29154, mainPurchasingOrganization#29155, validPurchasingOrganizations#29156, productGroup#29157], false
(907) Repartition
Arguments: 10, true
(908) Project
Arguments: [internalUUID#29147, address#29153.timeZone.code AS timezonecode#29158]
(909) Join
Arguments: LeftOuter, (plant#29134 <=> internalUUID#29147)
(910) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, internalUUID#29147, CASE WHEN isnotnull(timezonecode#29158) THEN timezonecode#29158 ELSE UTC END AS timezonecode#29159]
(911) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159]
(912) LogicalRelation
Arguments: parquet, [systemId#29160, internalUUID#29161, id#29162, displayId#29163, name#29164, baseUnitOfMeasure#29165, unitOfMeasures#29166, unitOfMeasureConversions#29167, productionAspect#29168, salesAspect#29169, procurementAspect#29170, productGroup#29171], false
(913) Repartition
Arguments: 10, true
(914) Join
Arguments: LeftOuter, (product#29133 = internalUUID#29161)
(915) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, systemId#29160, internalUUID#29161, id#29162, displayId#29163, name#29164, baseUnitOfMeasure#29165, unitOfMeasures#29166, unitOfMeasureConversions#29167, productionAspect#29168, salesAspect#29169, procurementAspect#29170, productGroup#29171, filter(unitOfMeasureConversions#29167, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#29145.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#29145.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29165.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29165.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29172]
(916) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29172.quantityNumerator), true, [quantityNumerator#29173]
(917) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, systemId#29160, internalUUID#29161, id#29162, displayId#29163, name#29164, baseUnitOfMeasure#29165, unitOfMeasures#29166, unitOfMeasureConversions#29167, productionAspect#29168, salesAspect#29169, procurementAspect#29170, productGroup#29171, filteredUnitOfMeasureConversions#29172, quantityNumerator#29173]
(918) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29172.quantityDenominator), true, [quantityDenominator#29174]
(919) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, systemId#29160, internalUUID#29161, id#29162, displayId#29163, name#29164, baseUnitOfMeasure#29165, unitOfMeasures#29166, unitOfMeasureConversions#29167, productionAspect#29168, salesAspect#29169, procurementAspect#29170, productGroup#29171, filteredUnitOfMeasureConversions#29172, quantityNumerator#29173, quantityDenominator#29174]
(920) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, systemId#29160, internalUUID#29161, id#29162, displayId#29163, name#29164, baseUnitOfMeasure#29165, unitOfMeasures#29166, unitOfMeasureConversions#29167, productionAspect#29168, salesAspect#29169, procurementAspect#29170, productGroup#29171, filteredUnitOfMeasureConversions#29172, quantityNumerator#29173, quantityDenominator#29174, (cast(quantityNumerator#29173 as double) / cast(quantityDenominator#29174 as double)) AS outboundUnit#29175]
(921) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, systemId#29160, internalUUID#29161, id#29162, displayId#29163, name#29164, baseUnitOfMeasure#29165, unitOfMeasures#29166, unitOfMeasureConversions#29167, productionAspect#29168, salesAspect#29169, procurementAspect#29170, productGroup#29171, filteredUnitOfMeasureConversions#29172, quantityNumerator#29173, quantityDenominator#29174, CASE WHEN (isnull(outboundUnit#29175) OR (outboundUnit#29175 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#29175 END AS outboundUnit#29176]
(922) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, outboundUnit#29176]
(923) LogicalRelation
Arguments: parquet, [systemId#29177, internalUUID#29178, product#29179, plant#29180, calculationDateTime#29181, stockQuantities#29182], false
(924) Repartition
Arguments: 10, true
(925) LogicalRelation
Arguments: parquet, [marketUnit#29183, description#29184, articleHierarchy#29185, defaultCurrency#29186, responsibilities#29187, replenishmentTypes#29188, distributionCenters#29189, assignedArticleHierarchyNodes#29190, minOrderQtySetting#29191, minOrderQtySettingInternal#29192, listingCheck#29193, odsSelection#29194, demandProfiles#29195, constraintProfiles#29196, optimizationProfiles#29197, orderGroupSplitProfiles#29198, supplierMinimumProfiles#29199, multipleRestrictionProfiles#29200, preferredUomSource#29201, handlingOfUnfulfilledDemands#29202, negligibleQuantitiesThreshold#29203, eventtype#29204], false
(926) Repartition
Arguments: 10, true
(927) Filter
Arguments: (marketUnit#29183 <=> DIP_1691)
(928) Project
Arguments: [marketUnit#29183, description#29184, articleHierarchy#29185, defaultCurrency#29186, responsibilities#29187, replenishmentTypes#29188, distributionCenters#29189, assignedArticleHierarchyNodes#29190, minOrderQtySetting#29191, minOrderQtySettingInternal#29192, listingCheck#29193, odsSelection#29194, demandProfiles#29195, constraintProfiles#29196, optimizationProfiles#29197, orderGroupSplitProfiles#29198, supplierMinimumProfiles#29199, multipleRestrictionProfiles#29200, preferredUomSource#29201, handlingOfUnfulfilledDemands#29202, negligibleQuantitiesThreshold#29203, eventtype#29204]
(929) Project
Arguments: [distributionCenters#29189]
(930) Generate
Arguments: explode(distributionCenters#29189), false, [distributionCenters#29205]
(931) Project
Arguments: [distributionCenters#29205]
(932) Generate
Arguments: explode(distributionCenters#29205.storageLocations), false, [storageLocations#29206]
(933) Project
Arguments: [distributionCenters#29205.id AS plantId#29207, distributionCenters#29205.internalRefUUID AS plantUuid#29208, storageLocations#29206]
(934) Project
Arguments: [plantId#29207, plantUuid#29208, storageLocations#29206.id AS storageLocId#29209, storageLocations#29206.internalRefUUID AS storageLocUuid#29210]
(935) LogicalRelation
Arguments: parquet, [product#29211, plant#29212, orderDateTime#29213, planningStartDateTime#29214], false
(936) RepartitionByExpression
Arguments: [product#29211, plant#29212], 10
(937) Project
Arguments: [product#29211, plant#29212, orderDateTime#29213]
(938) LogicalRelation
Arguments: parquet, [systemId#29215, internalUUID#29216, plant#29217, product#29218, blockedForReplenishmentStartingFrom#29219, productionAspect#29220, salesPlant#29221, listing#29222], false
(939) Repartition
Arguments: 10, true
(940) Project
Arguments: [systemId#29215, internalUUID#29216, plant#29217, product#29218, blockedForReplenishmentStartingFrom#29219, productionAspect#29220, salesPlant#29221, listing#29222, struct(systemId, systemId#29215, internalUUID, internalUUID#29216, plant, plant#29217, product, product#29218, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#29219, productionAspect, productionAspect#29220, salesPlant, salesPlant#29221, listing, listing#29222) AS productPlant#29223]
(941) Project
Arguments: [productPlant#29223]
(942) Join
Arguments: LeftOuter, ((product#29211 <=> productPlant#29223.product.internalRefUUID) AND (plant#29212 <=> productPlant#29223.plant.internalRefUUID))
(943) Project
Arguments: [product#29211, plant#29212, orderDateTime#29213, productPlant#29223]
(944) SubqueryAlias
Arguments: wl
(945) LogicalRelation
Arguments: parquet, [systemId#29224, internalUUID#29225, id#29226, displayId#29227, name#29228, category#29229, companyCode#29230, address#29231, mainDistributionChain#29232, mainPurchasingOrganization#29233, validPurchasingOrganizations#29234, productGroup#29235], false
(946) Repartition
Arguments: 10, true
(947) Project
Arguments: [internalUUID#29225, address#29231.timeZone.code AS timezonecode#29236]
(948) Join
Arguments: LeftOuter, (plant#29212 <=> internalUUID#29225)
(949) Project
Arguments: [product#29211, plant#29212, orderDateTime#29213, productPlant#29223, internalUUID#29225, CASE WHEN isnotnull(timezonecode#29236) THEN timezonecode#29236 ELSE UTC END AS timezonecode#29237]
(950) Project
Arguments: [product#29211, plant#29212, orderDateTime#29213, productPlant#29223, timezonecode#29237]
(951) LogicalRelation
Arguments: parquet, [systemId#29238, internalUUID#29239, id#29240, displayId#29241, name#29242, baseUnitOfMeasure#29243, unitOfMeasures#29244, unitOfMeasureConversions#29245, productionAspect#29246, salesAspect#29247, procurementAspect#29248, productGroup#29249], false
(952) Repartition
Arguments: 10, true
(953) Join
Arguments: LeftOuter, (product#29211 = internalUUID#29239)
(954) Project
Arguments: [product#29211, plant#29212, orderDateTime#29213, productPlant#29223, timezonecode#29237, systemId#29238, internalUUID#29239, id#29240, displayId#29241, name#29242, baseUnitOfMeasure#29243, unitOfMeasures#29244, unitOfMeasureConversions#29245, productionAspect#29246, salesAspect#29247, procurementAspect#29248, productGroup#29249, filter(unitOfMeasureConversions#29245, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#29223.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#29223.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29243.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29243.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29250]
(955) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29250.quantityNumerator), true, [quantityNumerator#29251]
(956) Project
Arguments: [product#29211, plant#29212, orderDateTime#29213, productPlant#29223, timezonecode#29237, systemId#29238, internalUUID#29239, id#29240, displayId#29241, name#29242, baseUnitOfMeasure#29243, unitOfMeasures#29244, unitOfMeasureConversions#29245, productionAspect#29246, salesAspect#29247, procurementAspect#29248, productGroup#29249, filteredUnitOfMeasureConversions#29250, quantityNumerator#29251]
(957) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29250.quantityDenominator), true, [quantityDenominator#29252]
(958) Project
Arguments: [product#29211, plant#29212, orderDateTime#29213, productPlant#29223, timezonecode#29237, systemId#29238, internalUUID#29239, id#29240, displayId#29241, name#29242, baseUnitOfMeasure#29243, unitOfMeasures#29244, unitOfMeasureConversions#29245, productionAspect#29246, salesAspect#29247, procurementAspect#29248, productGroup#29249, filteredUnitOfMeasureConversions#29250, quantityNumerator#29251, quantityDenominator#29252]
(959) Project
Arguments: [product#29211, plant#29212, orderDateTime#29213, productPlant#29223, timezonecode#29237, systemId#29238, internalUUID#29239, id#29240, displayId#29241, name#29242, baseUnitOfMeasure#29243, unitOfMeasures#29244, unitOfMeasureConversions#29245, productionAspect#29246, salesAspect#29247, procurementAspect#29248, productGroup#29249, filteredUnitOfMeasureConversions#29250, quantityNumerator#29251, quantityDenominator#29252, (cast(quantityNumerator#29251 as double) / cast(quantityDenominator#29252 as double)) AS outboundUnit#29253]
(960) Project
Arguments: [product#29211, plant#29212, orderDateTime#29213, productPlant#29223, timezonecode#29237, systemId#29238, internalUUID#29239, id#29240, displayId#29241, name#29242, baseUnitOfMeasure#29243, unitOfMeasures#29244, unitOfMeasureConversions#29245, productionAspect#29246, salesAspect#29247, procurementAspect#29248, productGroup#29249, filteredUnitOfMeasureConversions#29250, quantityNumerator#29251, quantityDenominator#29252, CASE WHEN (isnull(outboundUnit#29253) OR (outboundUnit#29253 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#29253 END AS outboundUnit#29254]
(961) Project
Arguments: [product#29211, plant#29212, orderDateTime#29213, productPlant#29223, timezonecode#29237, outboundUnit#29254]
(962) Project
Arguments: [plant#29212]
(963) Deduplicate
Arguments: [plant#29212]
(964) Join
Arguments: Inner, (plantUuid#29208 = plant#29212)
(965) Project
Arguments: [plantId#29207, plantUuid#29208, storageLocId#29209, storageLocUuid#29210]
(966) Join
Arguments: Inner, (plant#29180.internalRefUUID <=> plantUuid#29208)
(967) Generate
Arguments: explode(filter(stockQuantities#29182, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#29210) AND (lambda x#26016.storageLocation.Id = storageLocId#29209)), lambda x#26016, false))), false, [stockQuantity#29255]
(968) Project
Arguments: [systemId#29177, internalUUID#29178, product#29179, plant#29180, calculationDateTime#29181, stockQuantities#29182, plantId#29207, plantUuid#29208, storageLocId#29209, storageLocUuid#29210, stockQuantity#29255]
(969) Aggregate
Arguments: [plantUuid#29208, internalUUID#29178, plant#29180, product#29179, systemId#29177], [plantUuid#29208, internalUUID#29178, plant#29180, product#29179, systemId#29177, first(calculationDateTime#29181, false) AS calculationDateTime#29256, collect_list(stockQuantity#29255, 0, 0) AS stockQuantities#29257]
(970) Project
Arguments: [systemId#29177, internalUUID#29178, product#29179, plant#29180, calculationDateTime#29256, stockQuantities#29257]
(971) Generate
Arguments: explode(stockQuantities#29257), false, [stockQuantity#29258]
(972) Project
Arguments: [systemId#29177, internalUUID#29178, product#29179, plant#29180, calculationDateTime#29256, stockQuantities#29257, stockQuantity#29258]
(973) Project
Arguments: [plant#29180.id AS plant#29259, plant#29180.internalRefUUID AS plantUuid#29260, product#29179.id AS product#29261, product#29179.internalRefUUID AS productUuid#29262, calculationDateTime#29256, stockQuantity#29258.storagelocation.id AS storageLocId#29263, stockQuantity#29258.storagelocation.internalRefUUID AS storageLocUuid#29264, stockQuantity#29258.quantity.measure AS quantity#29265, stockQuantity#29258.specialStockIndicator.code AS specialStockIndicator#29266, stockQuantity#29258.stockType.code AS stockType#29267]
(974) Filter
Arguments: ((specialStockIndicator#29266 = ) AND (stockType#29267 = 01))
(975) LogicalRelation
Arguments: parquet, [product#29268, plant#29269, orderDateTime#29270, planningStartDateTime#29271], false
(976) RepartitionByExpression
Arguments: [product#29268, plant#29269], 10
(977) Project
Arguments: [product#29268, plant#29269, orderDateTime#29270]
(978) LogicalRelation
Arguments: parquet, [systemId#29272, internalUUID#29273, plant#29274, product#29275, blockedForReplenishmentStartingFrom#29276, productionAspect#29277, salesPlant#29278, listing#29279], false
(979) Repartition
Arguments: 10, true
(980) Project
Arguments: [systemId#29272, internalUUID#29273, plant#29274, product#29275, blockedForReplenishmentStartingFrom#29276, productionAspect#29277, salesPlant#29278, listing#29279, struct(systemId, systemId#29272, internalUUID, internalUUID#29273, plant, plant#29274, product, product#29275, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#29276, productionAspect, productionAspect#29277, salesPlant, salesPlant#29278, listing, listing#29279) AS productPlant#29280]
(981) Project
Arguments: [productPlant#29280]
(982) Join
Arguments: LeftOuter, ((product#29268 <=> productPlant#29280.product.internalRefUUID) AND (plant#29269 <=> productPlant#29280.plant.internalRefUUID))
(983) Project
Arguments: [product#29268, plant#29269, orderDateTime#29270, productPlant#29280]
(984) SubqueryAlias
Arguments: wl
(985) LogicalRelation
Arguments: parquet, [systemId#29281, internalUUID#29282, id#29283, displayId#29284, name#29285, category#29286, companyCode#29287, address#29288, mainDistributionChain#29289, mainPurchasingOrganization#29290, validPurchasingOrganizations#29291, productGroup#29292], false
(986) Repartition
Arguments: 10, true
(987) Project
Arguments: [internalUUID#29282, address#29288.timeZone.code AS timezonecode#29293]
(988) Join
Arguments: LeftOuter, (plant#29269 <=> internalUUID#29282)
(989) Project
Arguments: [product#29268, plant#29269, orderDateTime#29270, productPlant#29280, internalUUID#29282, CASE WHEN isnotnull(timezonecode#29293) THEN timezonecode#29293 ELSE UTC END AS timezonecode#29294]
(990) Project
Arguments: [product#29268, plant#29269, orderDateTime#29270, productPlant#29280, timezonecode#29294]
(991) LogicalRelation
Arguments: parquet, [systemId#29295, internalUUID#29296, id#29297, displayId#29298, name#29299, baseUnitOfMeasure#29300, unitOfMeasures#29301, unitOfMeasureConversions#29302, productionAspect#29303, salesAspect#29304, procurementAspect#29305, productGroup#29306], false
(992) Repartition
Arguments: 10, true
(993) Join
Arguments: LeftOuter, (product#29268 = internalUUID#29296)
(994) Project
Arguments: [product#29268, plant#29269, orderDateTime#29270, productPlant#29280, timezonecode#29294, systemId#29295, internalUUID#29296, id#29297, displayId#29298, name#29299, baseUnitOfMeasure#29300, unitOfMeasures#29301, unitOfMeasureConversions#29302, productionAspect#29303, salesAspect#29304, procurementAspect#29305, productGroup#29306, filter(unitOfMeasureConversions#29302, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#29280.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#29280.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29300.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29300.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29307]
(995) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29307.quantityNumerator), true, [quantityNumerator#29308]
(996) Project
Arguments: [product#29268, plant#29269, orderDateTime#29270, productPlant#29280, timezonecode#29294, systemId#29295, internalUUID#29296, id#29297, displayId#29298, name#29299, baseUnitOfMeasure#29300, unitOfMeasures#29301, unitOfMeasureConversions#29302, productionAspect#29303, salesAspect#29304, procurementAspect#29305, productGroup#29306, filteredUnitOfMeasureConversions#29307, quantityNumerator#29308]
(997) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29307.quantityDenominator), true, [quantityDenominator#29309]
(998) Project
Arguments: [product#29268, plant#29269, orderDateTime#29270, productPlant#29280, timezonecode#29294, systemId#29295, internalUUID#29296, id#29297, displayId#29298, name#29299, baseUnitOfMeasure#29300, unitOfMeasures#29301, unitOfMeasureConversions#29302, productionAspect#29303, salesAspect#29304, procurementAspect#29305, productGroup#29306, filteredUnitOfMeasureConversions#29307, quantityNumerator#29308, quantityDenominator#29309]
(999) Project
Arguments: [product#29268, plant#29269, orderDateTime#29270, productPlant#29280, timezonecode#29294, systemId#29295, internalUUID#29296, id#29297, displayId#29298, name#29299, baseUnitOfMeasure#29300, unitOfMeasures#29301, unitOfMeasureConversions#29302, productionAspect#29303, salesAspect#29304, procurementAspect#29305, productGroup#29306, filteredUnitOfMeasureConversions#29307, quantityNumerator#29308, quantityDenominator#29309, (cast(quantityNumerator#29308 as double) / cast(quantityDenominator#29309 as double)) AS outboundUnit#29310]
(1000) Project
Arguments: [product#29268, plant#29269, orderDateTime#29270, productPlant#29280, timezonecode#29294, systemId#29295, internalUUID#29296, id#29297, displayId#29298, name#29299, baseUnitOfMeasure#29300, unitOfMeasures#29301, unitOfMeasureConversions#29302, productionAspect#29303, salesAspect#29304, procurementAspect#29305, productGroup#29306, filteredUnitOfMeasureConversions#29307, quantityNumerator#29308, quantityDenominator#29309, CASE WHEN (isnull(outboundUnit#29310) OR (outboundUnit#29310 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#29310 END AS outboundUnit#29311]
(1001) Project
Arguments: [product#29268, plant#29269, orderDateTime#29270, productPlant#29280, timezonecode#29294, outboundUnit#29311]
(1002) Join
Arguments: Inner, ((plantUuid#29260 = plant#29269) AND (productUuid#29262 = product#29268))
(1003) Filter
Arguments: (calculationDateTime#29256 <= orderDateTime#29270)
(1004) Project
Arguments: [plantUuid#29260 AS plant#29312, productUuid#29262 AS product#29313, storageLocId#29263, calculationDateTime#29256, quantity#29265]
(1005) LogicalRelation
Arguments: parquet, [systemId#29314, internalUUID#29315, product#29316, plant#29317, calculationDateTime#29318, stockQuantities#29319], false
(1006) Repartition
Arguments: 10, true
(1007) LogicalRelation
Arguments: parquet, [marketUnit#29320, description#29321, articleHierarchy#29322, defaultCurrency#29323, responsibilities#29324, replenishmentTypes#29325, distributionCenters#29326, assignedArticleHierarchyNodes#29327, minOrderQtySetting#29328, minOrderQtySettingInternal#29329, listingCheck#29330, odsSelection#29331, demandProfiles#29332, constraintProfiles#29333, optimizationProfiles#29334, orderGroupSplitProfiles#29335, supplierMinimumProfiles#29336, multipleRestrictionProfiles#29337, preferredUomSource#29338, handlingOfUnfulfilledDemands#29339, negligibleQuantitiesThreshold#29340, eventtype#29341], false
(1008) Repartition
Arguments: 10, true
(1009) Filter
Arguments: (marketUnit#29320 <=> DIP_1691)
(1010) Project
Arguments: [marketUnit#29320, description#29321, articleHierarchy#29322, defaultCurrency#29323, responsibilities#29324, replenishmentTypes#29325, distributionCenters#29326, assignedArticleHierarchyNodes#29327, minOrderQtySetting#29328, minOrderQtySettingInternal#29329, listingCheck#29330, odsSelection#29331, demandProfiles#29332, constraintProfiles#29333, optimizationProfiles#29334, orderGroupSplitProfiles#29335, supplierMinimumProfiles#29336, multipleRestrictionProfiles#29337, preferredUomSource#29338, handlingOfUnfulfilledDemands#29339, negligibleQuantitiesThreshold#29340, eventtype#29341]
(1011) Project
Arguments: [distributionCenters#29326]
(1012) Generate
Arguments: explode(distributionCenters#29326), false, [distributionCenters#29342]
(1013) Project
Arguments: [distributionCenters#29342]
(1014) Generate
Arguments: explode(distributionCenters#29342.storageLocations), false, [storageLocations#29343]
(1015) Project
Arguments: [distributionCenters#29342.id AS plantId#29344, distributionCenters#29342.internalRefUUID AS plantUuid#29345, storageLocations#29343]
(1016) Project
Arguments: [plantId#29344, plantUuid#29345, storageLocations#29343.id AS storageLocId#29346, storageLocations#29343.internalRefUUID AS storageLocUuid#29347]
(1017) LogicalRelation
Arguments: parquet, [product#29348, plant#29349, orderDateTime#29350, planningStartDateTime#29351], false
(1018) RepartitionByExpression
Arguments: [product#29348, plant#29349], 10
(1019) Project
Arguments: [product#29348, plant#29349, orderDateTime#29350]
(1020) LogicalRelation
Arguments: parquet, [systemId#29352, internalUUID#29353, plant#29354, product#29355, blockedForReplenishmentStartingFrom#29356, productionAspect#29357, salesPlant#29358, listing#29359], false
(1021) Repartition
Arguments: 10, true
(1022) Project
Arguments: [systemId#29352, internalUUID#29353, plant#29354, product#29355, blockedForReplenishmentStartingFrom#29356, productionAspect#29357, salesPlant#29358, listing#29359, struct(systemId, systemId#29352, internalUUID, internalUUID#29353, plant, plant#29354, product, product#29355, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#29356, productionAspect, productionAspect#29357, salesPlant, salesPlant#29358, listing, listing#29359) AS productPlant#29360]
(1023) Project
Arguments: [productPlant#29360]
(1024) Join
Arguments: LeftOuter, ((product#29348 <=> productPlant#29360.product.internalRefUUID) AND (plant#29349 <=> productPlant#29360.plant.internalRefUUID))
(1025) Project
Arguments: [product#29348, plant#29349, orderDateTime#29350, productPlant#29360]
(1026) SubqueryAlias
Arguments: wl
(1027) LogicalRelation
Arguments: parquet, [systemId#29361, internalUUID#29362, id#29363, displayId#29364, name#29365, category#29366, companyCode#29367, address#29368, mainDistributionChain#29369, mainPurchasingOrganization#29370, validPurchasingOrganizations#29371, productGroup#29372], false
(1028) Repartition
Arguments: 10, true
(1029) Project
Arguments: [internalUUID#29362, address#29368.timeZone.code AS timezonecode#29373]
(1030) Join
Arguments: LeftOuter, (plant#29349 <=> internalUUID#29362)
(1031) Project
Arguments: [product#29348, plant#29349, orderDateTime#29350, productPlant#29360, internalUUID#29362, CASE WHEN isnotnull(timezonecode#29373) THEN timezonecode#29373 ELSE UTC END AS timezonecode#29374]
(1032) Project
Arguments: [product#29348, plant#29349, orderDateTime#29350, productPlant#29360, timezonecode#29374]
(1033) LogicalRelation
Arguments: parquet, [systemId#29375, internalUUID#29376, id#29377, displayId#29378, name#29379, baseUnitOfMeasure#29380, unitOfMeasures#29381, unitOfMeasureConversions#29382, productionAspect#29383, salesAspect#29384, procurementAspect#29385, productGroup#29386], false
(1034) Repartition
Arguments: 10, true
(1035) Join
Arguments: LeftOuter, (product#29348 = internalUUID#29376)
(1036) Project
Arguments: [product#29348, plant#29349, orderDateTime#29350, productPlant#29360, timezonecode#29374, systemId#29375, internalUUID#29376, id#29377, displayId#29378, name#29379, baseUnitOfMeasure#29380, unitOfMeasures#29381, unitOfMeasureConversions#29382, productionAspect#29383, salesAspect#29384, procurementAspect#29385, productGroup#29386, filter(unitOfMeasureConversions#29382, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#29360.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#29360.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29380.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29380.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29387]
(1037) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29387.quantityNumerator), true, [quantityNumerator#29388]
(1038) Project
Arguments: [product#29348, plant#29349, orderDateTime#29350, productPlant#29360, timezonecode#29374, systemId#29375, internalUUID#29376, id#29377, displayId#29378, name#29379, baseUnitOfMeasure#29380, unitOfMeasures#29381, unitOfMeasureConversions#29382, productionAspect#29383, salesAspect#29384, procurementAspect#29385, productGroup#29386, filteredUnitOfMeasureConversions#29387, quantityNumerator#29388]
(1039) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29387.quantityDenominator), true, [quantityDenominator#29389]
(1040) Project
Arguments: [product#29348, plant#29349, orderDateTime#29350, productPlant#29360, timezonecode#29374, systemId#29375, internalUUID#29376, id#29377, displayId#29378, name#29379, baseUnitOfMeasure#29380, unitOfMeasures#29381, unitOfMeasureConversions#29382, productionAspect#29383, salesAspect#29384, procurementAspect#29385, productGroup#29386, filteredUnitOfMeasureConversions#29387, quantityNumerator#29388, quantityDenominator#29389]
(1041) Project
Arguments: [product#29348, plant#29349, orderDateTime#29350, productPlant#29360, timezonecode#29374, systemId#29375, internalUUID#29376, id#29377, displayId#29378, name#29379, baseUnitOfMeasure#29380, unitOfMeasures#29381, unitOfMeasureConversions#29382, productionAspect#29383, salesAspect#29384, procurementAspect#29385, productGroup#29386, filteredUnitOfMeasureConversions#29387, quantityNumerator#29388, quantityDenominator#29389, (cast(quantityNumerator#29388 as double) / cast(quantityDenominator#29389 as double)) AS outboundUnit#29390]
(1042) Project
Arguments: [product#29348, plant#29349, orderDateTime#29350, productPlant#29360, timezonecode#29374, systemId#29375, internalUUID#29376, id#29377, displayId#29378, name#29379, baseUnitOfMeasure#29380, unitOfMeasures#29381, unitOfMeasureConversions#29382, productionAspect#29383, salesAspect#29384, procurementAspect#29385, productGroup#29386, filteredUnitOfMeasureConversions#29387, quantityNumerator#29388, quantityDenominator#29389, CASE WHEN (isnull(outboundUnit#29390) OR (outboundUnit#29390 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#29390 END AS outboundUnit#29391]
(1043) Project
Arguments: [product#29348, plant#29349, orderDateTime#29350, productPlant#29360, timezonecode#29374, outboundUnit#29391]
(1044) Project
Arguments: [plant#29349]
(1045) Deduplicate
Arguments: [plant#29349]
(1046) Join
Arguments: Inner, (plantUuid#29345 = plant#29349)
(1047) Project
Arguments: [plantId#29344, plantUuid#29345, storageLocId#29346, storageLocUuid#29347]
(1048) Join
Arguments: Inner, (plant#29317.internalRefUUID <=> plantUuid#29345)
(1049) Generate
Arguments: explode(filter(stockQuantities#29319, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#29347) AND (lambda x#26016.storageLocation.Id = storageLocId#29346)), lambda x#26016, false))), false, [stockQuantity#29392]
(1050) Project
Arguments: [systemId#29314, internalUUID#29315, product#29316, plant#29317, calculationDateTime#29318, stockQuantities#29319, plantId#29344, plantUuid#29345, storageLocId#29346, storageLocUuid#29347, stockQuantity#29392]
(1051) Aggregate
Arguments: [plantUuid#29345, internalUUID#29315, plant#29317, product#29316, systemId#29314], [plantUuid#29345, internalUUID#29315, plant#29317, product#29316, systemId#29314, first(calculationDateTime#29318, false) AS calculationDateTime#29393, collect_list(stockQuantity#29392, 0, 0) AS stockQuantities#29394]
(1052) Project
Arguments: [systemId#29314, internalUUID#29315, product#29316, plant#29317, calculationDateTime#29393, stockQuantities#29394]
(1053) Generate
Arguments: explode(stockQuantities#29394), false, [stockQuantity#29395]
(1054) Project
Arguments: [systemId#29314, internalUUID#29315, product#29316, plant#29317, calculationDateTime#29393, stockQuantities#29394, stockQuantity#29395]
(1055) Project
Arguments: [plant#29317.id AS plant#29396, plant#29317.internalRefUUID AS plantUuid#29397, product#29316.id AS product#29398, product#29316.internalRefUUID AS productUuid#29399, calculationDateTime#29393, stockQuantity#29395.storagelocation.id AS storageLocId#29400, stockQuantity#29395.storagelocation.internalRefUUID AS storageLocUuid#29401, stockQuantity#29395.quantity.measure AS quantity#29402, stockQuantity#29395.specialStockIndicator.code AS specialStockIndicator#29403, stockQuantity#29395.stockType.code AS stockType#29404]
(1056) Filter
Arguments: ((specialStockIndicator#29403 = ) AND (stockType#29404 = 01))
(1057) LogicalRelation
Arguments: parquet, [product#29405, plant#29406, orderDateTime#29407, planningStartDateTime#29408], false
(1058) RepartitionByExpression
Arguments: [product#29405, plant#29406], 10
(1059) Project
Arguments: [product#29405, plant#29406, orderDateTime#29407]
(1060) LogicalRelation
Arguments: parquet, [systemId#29409, internalUUID#29410, plant#29411, product#29412, blockedForReplenishmentStartingFrom#29413, productionAspect#29414, salesPlant#29415, listing#29416], false
(1061) Repartition
Arguments: 10, true
(1062) Project
Arguments: [systemId#29409, internalUUID#29410, plant#29411, product#29412, blockedForReplenishmentStartingFrom#29413, productionAspect#29414, salesPlant#29415, listing#29416, struct(systemId, systemId#29409, internalUUID, internalUUID#29410, plant, plant#29411, product, product#29412, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#29413, productionAspect, productionAspect#29414, salesPlant, salesPlant#29415, listing, listing#29416) AS productPlant#29417]
(1063) Project
Arguments: [productPlant#29417]
(1064) Join
Arguments: LeftOuter, ((product#29405 <=> productPlant#29417.product.internalRefUUID) AND (plant#29406 <=> productPlant#29417.plant.internalRefUUID))
(1065) Project
Arguments: [product#29405, plant#29406, orderDateTime#29407, productPlant#29417]
(1066) SubqueryAlias
Arguments: wl
(1067) LogicalRelation
Arguments: parquet, [systemId#29418, internalUUID#29419, id#29420, displayId#29421, name#29422, category#29423, companyCode#29424, address#29425, mainDistributionChain#29426, mainPurchasingOrganization#29427, validPurchasingOrganizations#29428, productGroup#29429], false
(1068) Repartition
Arguments: 10, true
(1069) Project
Arguments: [internalUUID#29419, address#29425.timeZone.code AS timezonecode#29430]
(1070) Join
Arguments: LeftOuter, (plant#29406 <=> internalUUID#29419)
(1071) Project
Arguments: [product#29405, plant#29406, orderDateTime#29407, productPlant#29417, internalUUID#29419, CASE WHEN isnotnull(timezonecode#29430) THEN timezonecode#29430 ELSE UTC END AS timezonecode#29431]
(1072) Project
Arguments: [product#29405, plant#29406, orderDateTime#29407, productPlant#29417, timezonecode#29431]
(1073) LogicalRelation
Arguments: parquet, [systemId#29432, internalUUID#29433, id#29434, displayId#29435, name#29436, baseUnitOfMeasure#29437, unitOfMeasures#29438, unitOfMeasureConversions#29439, productionAspect#29440, salesAspect#29441, procurementAspect#29442, productGroup#29443], false
(1074) Repartition
Arguments: 10, true
(1075) Join
Arguments: LeftOuter, (product#29405 = internalUUID#29433)
(1076) Project
Arguments: [product#29405, plant#29406, orderDateTime#29407, productPlant#29417, timezonecode#29431, systemId#29432, internalUUID#29433, id#29434, displayId#29435, name#29436, baseUnitOfMeasure#29437, unitOfMeasures#29438, unitOfMeasureConversions#29439, productionAspect#29440, salesAspect#29441, procurementAspect#29442, productGroup#29443, filter(unitOfMeasureConversions#29439, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#29417.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#29417.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29437.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29437.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29444]
(1077) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29444.quantityNumerator), true, [quantityNumerator#29445]
(1078) Project
Arguments: [product#29405, plant#29406, orderDateTime#29407, productPlant#29417, timezonecode#29431, systemId#29432, internalUUID#29433, id#29434, displayId#29435, name#29436, baseUnitOfMeasure#29437, unitOfMeasures#29438, unitOfMeasureConversions#29439, productionAspect#29440, salesAspect#29441, procurementAspect#29442, productGroup#29443, filteredUnitOfMeasureConversions#29444, quantityNumerator#29445]
(1079) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29444.quantityDenominator), true, [quantityDenominator#29446]
(1080) Project
Arguments: [product#29405, plant#29406, orderDateTime#29407, productPlant#29417, timezonecode#29431, systemId#29432, internalUUID#29433, id#29434, displayId#29435, name#29436, baseUnitOfMeasure#29437, unitOfMeasures#29438, unitOfMeasureConversions#29439, productionAspect#29440, salesAspect#29441, procurementAspect#29442, productGroup#29443, filteredUnitOfMeasureConversions#29444, quantityNumerator#29445, quantityDenominator#29446]
(1081) Project
Arguments: [product#29405, plant#29406, orderDateTime#29407, productPlant#29417, timezonecode#29431, systemId#29432, internalUUID#29433, id#29434, displayId#29435, name#29436, baseUnitOfMeasure#29437, unitOfMeasures#29438, unitOfMeasureConversions#29439, productionAspect#29440, salesAspect#29441, procurementAspect#29442, productGroup#29443, filteredUnitOfMeasureConversions#29444, quantityNumerator#29445, quantityDenominator#29446, (cast(quantityNumerator#29445 as double) / cast(quantityDenominator#29446 as double)) AS outboundUnit#29447]
(1082) Project
Arguments: [product#29405, plant#29406, orderDateTime#29407, productPlant#29417, timezonecode#29431, systemId#29432, internalUUID#29433, id#29434, displayId#29435, name#29436, baseUnitOfMeasure#29437, unitOfMeasures#29438, unitOfMeasureConversions#29439, productionAspect#29440, salesAspect#29441, procurementAspect#29442, productGroup#29443, filteredUnitOfMeasureConversions#29444, quantityNumerator#29445, quantityDenominator#29446, CASE WHEN (isnull(outboundUnit#29447) OR (outboundUnit#29447 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#29447 END AS outboundUnit#29448]
(1083) Project
Arguments: [product#29405, plant#29406, orderDateTime#29407, productPlant#29417, timezonecode#29431, outboundUnit#29448]
(1084) Join
Arguments: Inner, ((plantUuid#29397 = plant#29406) AND (productUuid#29399 = product#29405))
(1085) Filter
Arguments: (calculationDateTime#29393 <= orderDateTime#29407)
(1086) Project
Arguments: [plantUuid#29397 AS plant#29449, productUuid#29399 AS product#29450, storageLocId#29400, calculationDateTime#29393, quantity#29402]
(1087) Aggregate
Arguments: [plant#29449, product#29450, storageLocId#29400], [plant#29449, product#29450, storageLocId#29400, max(calculationDateTime#29393) AS max_calc_datetime#29451]
(1088) Join
Arguments: Inner, ((((plant#29312 <=> plant#29449) AND (product#29313 <=> product#29450)) AND (storageLocId#29263 <=> storageLocId#29400)) AND (calculationDateTime#29256 <=> max_calc_datetime#29451))
(1089) Project
Arguments: [plant#29312, product#29313, storageLocId#29263, calculationDateTime#29256, quantity#29265]
(1090) Aggregate
Arguments: [product#29313, plant#29312], [product#29313, plant#29312, sum(quantity#29265) AS quantitySum#29452, min(calculationDateTime#29256) AS minCalculationDateTime#29453]
(1091) Project
Arguments: [product#29313, plant#29312, quantitySum#29452, minCalculationDateTime#29453, round(quantitySum#29452, 0) AS roundedQuantitySum#29454]
(1092) Join
Arguments: LeftOuter, ((plant#29134 = plant#29312) AND (product#29133 = product#29313))
(1093) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, outboundUnit#29176, roundedQuantitySum#29454, minCalculationDateTime#29453]
(1094) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, outboundUnit#29176, roundedQuantitySum#29454, minCalculationDateTime#29453, CASE WHEN isnotnull(minCalculationDateTime#29453) THEN minCalculationDateTime#29453 ELSE orderDateTime#29135 END AS stockDatetime#29455]
(1095) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, outboundUnit#29176, roundedQuantitySum#29454, minCalculationDateTime#29453, stockDatetime#29455, CASE WHEN isnotnull(roundedQuantitySum#29454) THEN array(roundedQuantitySum#29454) ELSE array(0.0) END AS stockBatchQuantities#29456]
(1096) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, outboundUnit#29176, roundedQuantitySum#29454, minCalculationDateTime#29453, stockDatetime#29455, stockBatchQuantities#29456, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#29457]
(1097) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, outboundUnit#29176, roundedQuantitySum#29454, stockDatetime#29455, stockBatchQuantities#29456, stockBatchShelfLifeEndDatetimes#29457]
(1098) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, outboundUnit#29176, stockDatetime#29455, stockBatchQuantities#29456, stockBatchShelfLifeEndDatetimes#29457]
(1099) LogicalRelation
Arguments: parquet, [product#29458, plant#29459, orderDateTime#29460, planningStartDateTime#29461], false
(1100) RepartitionByExpression
Arguments: [product#29458, plant#29459], 10
(1101) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460]
(1102) LogicalRelation
Arguments: parquet, [systemId#29462, internalUUID#29463, plant#29464, product#29465, blockedForReplenishmentStartingFrom#29466, productionAspect#29467, salesPlant#29468, listing#29469], false
(1103) Repartition
Arguments: 10, true
(1104) Project
Arguments: [systemId#29462, internalUUID#29463, plant#29464, product#29465, blockedForReplenishmentStartingFrom#29466, productionAspect#29467, salesPlant#29468, listing#29469, struct(systemId, systemId#29462, internalUUID, internalUUID#29463, plant, plant#29464, product, product#29465, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#29466, productionAspect, productionAspect#29467, salesPlant, salesPlant#29468, listing, listing#29469) AS productPlant#29470]
(1105) Project
Arguments: [productPlant#29470]
(1106) Join
Arguments: LeftOuter, ((product#29458 <=> productPlant#29470.product.internalRefUUID) AND (plant#29459 <=> productPlant#29470.plant.internalRefUUID))
(1107) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470]
(1108) SubqueryAlias
Arguments: wl
(1109) LogicalRelation
Arguments: parquet, [systemId#29471, internalUUID#29472, id#29473, displayId#29474, name#29475, category#29476, companyCode#29477, address#29478, mainDistributionChain#29479, mainPurchasingOrganization#29480, validPurchasingOrganizations#29481, productGroup#29482], false
(1110) Repartition
Arguments: 10, true
(1111) Project
Arguments: [internalUUID#29472, address#29478.timeZone.code AS timezonecode#29483]
(1112) Join
Arguments: LeftOuter, (plant#29459 <=> internalUUID#29472)
(1113) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, internalUUID#29472, CASE WHEN isnotnull(timezonecode#29483) THEN timezonecode#29483 ELSE UTC END AS timezonecode#29484]
(1114) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484]
(1115) LogicalRelation
Arguments: parquet, [systemId#29485, internalUUID#29486, id#29487, displayId#29488, name#29489, baseUnitOfMeasure#29490, unitOfMeasures#29491, unitOfMeasureConversions#29492, productionAspect#29493, salesAspect#29494, procurementAspect#29495, productGroup#29496], false
(1116) Repartition
Arguments: 10, true
(1117) Join
Arguments: LeftOuter, (product#29458 = internalUUID#29486)
(1118) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, systemId#29485, internalUUID#29486, id#29487, displayId#29488, name#29489, baseUnitOfMeasure#29490, unitOfMeasures#29491, unitOfMeasureConversions#29492, productionAspect#29493, salesAspect#29494, procurementAspect#29495, productGroup#29496, filter(unitOfMeasureConversions#29492, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#29470.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#29470.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29490.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29490.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29497]
(1119) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29497.quantityNumerator), true, [quantityNumerator#29498]
(1120) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, systemId#29485, internalUUID#29486, id#29487, displayId#29488, name#29489, baseUnitOfMeasure#29490, unitOfMeasures#29491, unitOfMeasureConversions#29492, productionAspect#29493, salesAspect#29494, procurementAspect#29495, productGroup#29496, filteredUnitOfMeasureConversions#29497, quantityNumerator#29498]
(1121) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29497.quantityDenominator), true, [quantityDenominator#29499]
(1122) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, systemId#29485, internalUUID#29486, id#29487, displayId#29488, name#29489, baseUnitOfMeasure#29490, unitOfMeasures#29491, unitOfMeasureConversions#29492, productionAspect#29493, salesAspect#29494, procurementAspect#29495, productGroup#29496, filteredUnitOfMeasureConversions#29497, quantityNumerator#29498, quantityDenominator#29499]
(1123) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, systemId#29485, internalUUID#29486, id#29487, displayId#29488, name#29489, baseUnitOfMeasure#29490, unitOfMeasures#29491, unitOfMeasureConversions#29492, productionAspect#29493, salesAspect#29494, procurementAspect#29495, productGroup#29496, filteredUnitOfMeasureConversions#29497, quantityNumerator#29498, quantityDenominator#29499, (cast(quantityNumerator#29498 as double) / cast(quantityDenominator#29499 as double)) AS outboundUnit#29500]
(1124) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, systemId#29485, internalUUID#29486, id#29487, displayId#29488, name#29489, baseUnitOfMeasure#29490, unitOfMeasures#29491, unitOfMeasureConversions#29492, productionAspect#29493, salesAspect#29494, procurementAspect#29495, productGroup#29496, filteredUnitOfMeasureConversions#29497, quantityNumerator#29498, quantityDenominator#29499, CASE WHEN (isnull(outboundUnit#29500) OR (outboundUnit#29500 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#29500 END AS outboundUnit#29501]
(1125) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501]
(1126) LogicalRelation
Arguments: parquet, [systemId#29502, internalUUID#29503, product#29504, plant#29505, calculationDateTime#29506, stockQuantities#29507], false
(1127) Repartition
Arguments: 10, true
(1128) LogicalRelation
Arguments: parquet, [marketUnit#29508, description#29509, articleHierarchy#29510, defaultCurrency#29511, responsibilities#29512, replenishmentTypes#29513, distributionCenters#29514, assignedArticleHierarchyNodes#29515, minOrderQtySetting#29516, minOrderQtySettingInternal#29517, listingCheck#29518, odsSelection#29519, demandProfiles#29520, constraintProfiles#29521, optimizationProfiles#29522, orderGroupSplitProfiles#29523, supplierMinimumProfiles#29524, multipleRestrictionProfiles#29525, preferredUomSource#29526, handlingOfUnfulfilledDemands#29527, negligibleQuantitiesThreshold#29528, eventtype#29529], false
(1129) Repartition
Arguments: 10, true
(1130) Filter
Arguments: (marketUnit#29508 <=> DIP_1691)
(1131) Project
Arguments: [marketUnit#29508, description#29509, articleHierarchy#29510, defaultCurrency#29511, responsibilities#29512, replenishmentTypes#29513, distributionCenters#29514, assignedArticleHierarchyNodes#29515, minOrderQtySetting#29516, minOrderQtySettingInternal#29517, listingCheck#29518, odsSelection#29519, demandProfiles#29520, constraintProfiles#29521, optimizationProfiles#29522, orderGroupSplitProfiles#29523, supplierMinimumProfiles#29524, multipleRestrictionProfiles#29525, preferredUomSource#29526, handlingOfUnfulfilledDemands#29527, negligibleQuantitiesThreshold#29528, eventtype#29529]
(1132) Project
Arguments: [distributionCenters#29514]
(1133) Generate
Arguments: explode(distributionCenters#29514), false, [distributionCenters#29530]
(1134) Project
Arguments: [distributionCenters#29530]
(1135) Generate
Arguments: explode(distributionCenters#29530.storageLocations), false, [storageLocations#29531]
(1136) Project
Arguments: [distributionCenters#29530.id AS plantId#29532, distributionCenters#29530.internalRefUUID AS plantUuid#29533, storageLocations#29531]
(1137) Project
Arguments: [plantId#29532, plantUuid#29533, storageLocations#29531.id AS storageLocId#29534, storageLocations#29531.internalRefUUID AS storageLocUuid#29535]
(1138) LogicalRelation
Arguments: parquet, [product#29536, plant#29537, orderDateTime#29538, planningStartDateTime#29539], false
(1139) RepartitionByExpression
Arguments: [product#29536, plant#29537], 10
(1140) Project
Arguments: [product#29536, plant#29537, orderDateTime#29538]
(1141) LogicalRelation
Arguments: parquet, [systemId#29540, internalUUID#29541, plant#29542, product#29543, blockedForReplenishmentStartingFrom#29544, productionAspect#29545, salesPlant#29546, listing#29547], false
(1142) Repartition
Arguments: 10, true
(1143) Project
Arguments: [systemId#29540, internalUUID#29541, plant#29542, product#29543, blockedForReplenishmentStartingFrom#29544, productionAspect#29545, salesPlant#29546, listing#29547, struct(systemId, systemId#29540, internalUUID, internalUUID#29541, plant, plant#29542, product, product#29543, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#29544, productionAspect, productionAspect#29545, salesPlant, salesPlant#29546, listing, listing#29547) AS productPlant#29548]
(1144) Project
Arguments: [productPlant#29548]
(1145) Join
Arguments: LeftOuter, ((product#29536 <=> productPlant#29548.product.internalRefUUID) AND (plant#29537 <=> productPlant#29548.plant.internalRefUUID))
(1146) Project
Arguments: [product#29536, plant#29537, orderDateTime#29538, productPlant#29548]
(1147) SubqueryAlias
Arguments: wl
(1148) LogicalRelation
Arguments: parquet, [systemId#29549, internalUUID#29550, id#29551, displayId#29552, name#29553, category#29554, companyCode#29555, address#29556, mainDistributionChain#29557, mainPurchasingOrganization#29558, validPurchasingOrganizations#29559, productGroup#29560], false
(1149) Repartition
Arguments: 10, true
(1150) Project
Arguments: [internalUUID#29550, address#29556.timeZone.code AS timezonecode#29561]
(1151) Join
Arguments: LeftOuter, (plant#29537 <=> internalUUID#29550)
(1152) Project
Arguments: [product#29536, plant#29537, orderDateTime#29538, productPlant#29548, internalUUID#29550, CASE WHEN isnotnull(timezonecode#29561) THEN timezonecode#29561 ELSE UTC END AS timezonecode#29562]
(1153) Project
Arguments: [product#29536, plant#29537, orderDateTime#29538, productPlant#29548, timezonecode#29562]
(1154) LogicalRelation
Arguments: parquet, [systemId#29563, internalUUID#29564, id#29565, displayId#29566, name#29567, baseUnitOfMeasure#29568, unitOfMeasures#29569, unitOfMeasureConversions#29570, productionAspect#29571, salesAspect#29572, procurementAspect#29573, productGroup#29574], false
(1155) Repartition
Arguments: 10, true
(1156) Join
Arguments: LeftOuter, (product#29536 = internalUUID#29564)
(1157) Project
Arguments: [product#29536, plant#29537, orderDateTime#29538, productPlant#29548, timezonecode#29562, systemId#29563, internalUUID#29564, id#29565, displayId#29566, name#29567, baseUnitOfMeasure#29568, unitOfMeasures#29569, unitOfMeasureConversions#29570, productionAspect#29571, salesAspect#29572, procurementAspect#29573, productGroup#29574, filter(unitOfMeasureConversions#29570, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#29548.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#29548.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29568.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29568.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29575]
(1158) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29575.quantityNumerator), true, [quantityNumerator#29576]
(1159) Project
Arguments: [product#29536, plant#29537, orderDateTime#29538, productPlant#29548, timezonecode#29562, systemId#29563, internalUUID#29564, id#29565, displayId#29566, name#29567, baseUnitOfMeasure#29568, unitOfMeasures#29569, unitOfMeasureConversions#29570, productionAspect#29571, salesAspect#29572, procurementAspect#29573, productGroup#29574, filteredUnitOfMeasureConversions#29575, quantityNumerator#29576]
(1160) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29575.quantityDenominator), true, [quantityDenominator#29577]
(1161) Project
Arguments: [product#29536, plant#29537, orderDateTime#29538, productPlant#29548, timezonecode#29562, systemId#29563, internalUUID#29564, id#29565, displayId#29566, name#29567, baseUnitOfMeasure#29568, unitOfMeasures#29569, unitOfMeasureConversions#29570, productionAspect#29571, salesAspect#29572, procurementAspect#29573, productGroup#29574, filteredUnitOfMeasureConversions#29575, quantityNumerator#29576, quantityDenominator#29577]
(1162) Project
Arguments: [product#29536, plant#29537, orderDateTime#29538, productPlant#29548, timezonecode#29562, systemId#29563, internalUUID#29564, id#29565, displayId#29566, name#29567, baseUnitOfMeasure#29568, unitOfMeasures#29569, unitOfMeasureConversions#29570, productionAspect#29571, salesAspect#29572, procurementAspect#29573, productGroup#29574, filteredUnitOfMeasureConversions#29575, quantityNumerator#29576, quantityDenominator#29577, (cast(quantityNumerator#29576 as double) / cast(quantityDenominator#29577 as double)) AS outboundUnit#29578]
(1163) Project
Arguments: [product#29536, plant#29537, orderDateTime#29538, productPlant#29548, timezonecode#29562, systemId#29563, internalUUID#29564, id#29565, displayId#29566, name#29567, baseUnitOfMeasure#29568, unitOfMeasures#29569, unitOfMeasureConversions#29570, productionAspect#29571, salesAspect#29572, procurementAspect#29573, productGroup#29574, filteredUnitOfMeasureConversions#29575, quantityNumerator#29576, quantityDenominator#29577, CASE WHEN (isnull(outboundUnit#29578) OR (outboundUnit#29578 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#29578 END AS outboundUnit#29579]
(1164) Project
Arguments: [product#29536, plant#29537, orderDateTime#29538, productPlant#29548, timezonecode#29562, outboundUnit#29579]
(1165) Project
Arguments: [plant#29537]
(1166) Deduplicate
Arguments: [plant#29537]
(1167) Join
Arguments: Inner, (plantUuid#29533 = plant#29537)
(1168) Project
Arguments: [plantId#29532, plantUuid#29533, storageLocId#29534, storageLocUuid#29535]
(1169) Join
Arguments: Inner, (plant#29505.internalRefUUID <=> plantUuid#29533)
(1170) Generate
Arguments: explode(filter(stockQuantities#29507, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#29535) AND (lambda x#26016.storageLocation.Id = storageLocId#29534)), lambda x#26016, false))), false, [stockQuantity#29580]
(1171) Project
Arguments: [systemId#29502, internalUUID#29503, product#29504, plant#29505, calculationDateTime#29506, stockQuantities#29507, plantId#29532, plantUuid#29533, storageLocId#29534, storageLocUuid#29535, stockQuantity#29580]
(1172) Aggregate
Arguments: [plantUuid#29533, internalUUID#29503, plant#29505, product#29504, systemId#29502], [plantUuid#29533, internalUUID#29503, plant#29505, product#29504, systemId#29502, first(calculationDateTime#29506, false) AS calculationDateTime#29581, collect_list(stockQuantity#29580, 0, 0) AS stockQuantities#29582]
(1173) Project
Arguments: [systemId#29502, internalUUID#29503, product#29504, plant#29505, calculationDateTime#29581, stockQuantities#29582]
(1174) Generate
Arguments: explode(stockQuantities#29582), false, [stockQuantity#29583]
(1175) Project
Arguments: [systemId#29502, internalUUID#29503, product#29504, plant#29505, calculationDateTime#29581, stockQuantities#29582, stockQuantity#29583]
(1176) Project
Arguments: [plant#29505.id AS plant#29584, plant#29505.internalRefUUID AS plantUuid#29585, product#29504.id AS product#29586, product#29504.internalRefUUID AS productUuid#29587, calculationDateTime#29581, stockQuantity#29583.storagelocation.id AS storageLocId#29588, stockQuantity#29583.storagelocation.internalRefUUID AS storageLocUuid#29589, stockQuantity#29583.quantity.measure AS quantity#29590, stockQuantity#29583.specialStockIndicator.code AS specialStockIndicator#29591, stockQuantity#29583.stockType.code AS stockType#29592]
(1177) Filter
Arguments: ((specialStockIndicator#29591 = ) AND (stockType#29592 = 01))
(1178) LogicalRelation
Arguments: parquet, [product#29593, plant#29594, orderDateTime#29595, planningStartDateTime#29596], false
(1179) RepartitionByExpression
Arguments: [product#29593, plant#29594], 10
(1180) Project
Arguments: [product#29593, plant#29594, orderDateTime#29595]
(1181) LogicalRelation
Arguments: parquet, [systemId#29597, internalUUID#29598, plant#29599, product#29600, blockedForReplenishmentStartingFrom#29601, productionAspect#29602, salesPlant#29603, listing#29604], false
(1182) Repartition
Arguments: 10, true
(1183) Project
Arguments: [systemId#29597, internalUUID#29598, plant#29599, product#29600, blockedForReplenishmentStartingFrom#29601, productionAspect#29602, salesPlant#29603, listing#29604, struct(systemId, systemId#29597, internalUUID, internalUUID#29598, plant, plant#29599, product, product#29600, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#29601, productionAspect, productionAspect#29602, salesPlant, salesPlant#29603, listing, listing#29604) AS productPlant#29605]
(1184) Project
Arguments: [productPlant#29605]
(1185) Join
Arguments: LeftOuter, ((product#29593 <=> productPlant#29605.product.internalRefUUID) AND (plant#29594 <=> productPlant#29605.plant.internalRefUUID))
(1186) Project
Arguments: [product#29593, plant#29594, orderDateTime#29595, productPlant#29605]
(1187) SubqueryAlias
Arguments: wl
(1188) LogicalRelation
Arguments: parquet, [systemId#29606, internalUUID#29607, id#29608, displayId#29609, name#29610, category#29611, companyCode#29612, address#29613, mainDistributionChain#29614, mainPurchasingOrganization#29615, validPurchasingOrganizations#29616, productGroup#29617], false
(1189) Repartition
Arguments: 10, true
(1190) Project
Arguments: [internalUUID#29607, address#29613.timeZone.code AS timezonecode#29618]
(1191) Join
Arguments: LeftOuter, (plant#29594 <=> internalUUID#29607)
(1192) Project
Arguments: [product#29593, plant#29594, orderDateTime#29595, productPlant#29605, internalUUID#29607, CASE WHEN isnotnull(timezonecode#29618) THEN timezonecode#29618 ELSE UTC END AS timezonecode#29619]
(1193) Project
Arguments: [product#29593, plant#29594, orderDateTime#29595, productPlant#29605, timezonecode#29619]
(1194) LogicalRelation
Arguments: parquet, [systemId#29620, internalUUID#29621, id#29622, displayId#29623, name#29624, baseUnitOfMeasure#29625, unitOfMeasures#29626, unitOfMeasureConversions#29627, productionAspect#29628, salesAspect#29629, procurementAspect#29630, productGroup#29631], false
(1195) Repartition
Arguments: 10, true
(1196) Join
Arguments: LeftOuter, (product#29593 = internalUUID#29621)
(1197) Project
Arguments: [product#29593, plant#29594, orderDateTime#29595, productPlant#29605, timezonecode#29619, systemId#29620, internalUUID#29621, id#29622, displayId#29623, name#29624, baseUnitOfMeasure#29625, unitOfMeasures#29626, unitOfMeasureConversions#29627, productionAspect#29628, salesAspect#29629, procurementAspect#29630, productGroup#29631, filter(unitOfMeasureConversions#29627, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#29605.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#29605.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29625.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29625.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29632]
(1198) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29632.quantityNumerator), true, [quantityNumerator#29633]
(1199) Project
Arguments: [product#29593, plant#29594, orderDateTime#29595, productPlant#29605, timezonecode#29619, systemId#29620, internalUUID#29621, id#29622, displayId#29623, name#29624, baseUnitOfMeasure#29625, unitOfMeasures#29626, unitOfMeasureConversions#29627, productionAspect#29628, salesAspect#29629, procurementAspect#29630, productGroup#29631, filteredUnitOfMeasureConversions#29632, quantityNumerator#29633]
(1200) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29632.quantityDenominator), true, [quantityDenominator#29634]
(1201) Project
Arguments: [product#29593, plant#29594, orderDateTime#29595, productPlant#29605, timezonecode#29619, systemId#29620, internalUUID#29621, id#29622, displayId#29623, name#29624, baseUnitOfMeasure#29625, unitOfMeasures#29626, unitOfMeasureConversions#29627, productionAspect#29628, salesAspect#29629, procurementAspect#29630, productGroup#29631, filteredUnitOfMeasureConversions#29632, quantityNumerator#29633, quantityDenominator#29634]
(1202) Project
Arguments: [product#29593, plant#29594, orderDateTime#29595, productPlant#29605, timezonecode#29619, systemId#29620, internalUUID#29621, id#29622, displayId#29623, name#29624, baseUnitOfMeasure#29625, unitOfMeasures#29626, unitOfMeasureConversions#29627, productionAspect#29628, salesAspect#29629, procurementAspect#29630, productGroup#29631, filteredUnitOfMeasureConversions#29632, quantityNumerator#29633, quantityDenominator#29634, (cast(quantityNumerator#29633 as double) / cast(quantityDenominator#29634 as double)) AS outboundUnit#29635]
(1203) Project
Arguments: [product#29593, plant#29594, orderDateTime#29595, productPlant#29605, timezonecode#29619, systemId#29620, internalUUID#29621, id#29622, displayId#29623, name#29624, baseUnitOfMeasure#29625, unitOfMeasures#29626, unitOfMeasureConversions#29627, productionAspect#29628, salesAspect#29629, procurementAspect#29630, productGroup#29631, filteredUnitOfMeasureConversions#29632, quantityNumerator#29633, quantityDenominator#29634, CASE WHEN (isnull(outboundUnit#29635) OR (outboundUnit#29635 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#29635 END AS outboundUnit#29636]
(1204) Project
Arguments: [product#29593, plant#29594, orderDateTime#29595, productPlant#29605, timezonecode#29619, outboundUnit#29636]
(1205) Join
Arguments: Inner, ((plantUuid#29585 = plant#29594) AND (productUuid#29587 = product#29593))
(1206) Filter
Arguments: (calculationDateTime#29581 <= orderDateTime#29595)
(1207) Project
Arguments: [plantUuid#29585 AS plant#29637, productUuid#29587 AS product#29638, storageLocId#29588, calculationDateTime#29581, quantity#29590]
(1208) LogicalRelation
Arguments: parquet, [systemId#29639, internalUUID#29640, product#29641, plant#29642, calculationDateTime#29643, stockQuantities#29644], false
(1209) Repartition
Arguments: 10, true
(1210) LogicalRelation
Arguments: parquet, [marketUnit#29645, description#29646, articleHierarchy#29647, defaultCurrency#29648, responsibilities#29649, replenishmentTypes#29650, distributionCenters#29651, assignedArticleHierarchyNodes#29652, minOrderQtySetting#29653, minOrderQtySettingInternal#29654, listingCheck#29655, odsSelection#29656, demandProfiles#29657, constraintProfiles#29658, optimizationProfiles#29659, orderGroupSplitProfiles#29660, supplierMinimumProfiles#29661, multipleRestrictionProfiles#29662, preferredUomSource#29663, handlingOfUnfulfilledDemands#29664, negligibleQuantitiesThreshold#29665, eventtype#29666], false
(1211) Repartition
Arguments: 10, true
(1212) Filter
Arguments: (marketUnit#29645 <=> DIP_1691)
(1213) Project
Arguments: [marketUnit#29645, description#29646, articleHierarchy#29647, defaultCurrency#29648, responsibilities#29649, replenishmentTypes#29650, distributionCenters#29651, assignedArticleHierarchyNodes#29652, minOrderQtySetting#29653, minOrderQtySettingInternal#29654, listingCheck#29655, odsSelection#29656, demandProfiles#29657, constraintProfiles#29658, optimizationProfiles#29659, orderGroupSplitProfiles#29660, supplierMinimumProfiles#29661, multipleRestrictionProfiles#29662, preferredUomSource#29663, handlingOfUnfulfilledDemands#29664, negligibleQuantitiesThreshold#29665, eventtype#29666]
(1214) Project
Arguments: [distributionCenters#29651]
(1215) Generate
Arguments: explode(distributionCenters#29651), false, [distributionCenters#29667]
(1216) Project
Arguments: [distributionCenters#29667]
(1217) Generate
Arguments: explode(distributionCenters#29667.storageLocations), false, [storageLocations#29668]
(1218) Project
Arguments: [distributionCenters#29667.id AS plantId#29669, distributionCenters#29667.internalRefUUID AS plantUuid#29670, storageLocations#29668]
(1219) Project
Arguments: [plantId#29669, plantUuid#29670, storageLocations#29668.id AS storageLocId#29671, storageLocations#29668.internalRefUUID AS storageLocUuid#29672]
(1220) LogicalRelation
Arguments: parquet, [product#29673, plant#29674, orderDateTime#29675, planningStartDateTime#29676], false
(1221) RepartitionByExpression
Arguments: [product#29673, plant#29674], 10
(1222) Project
Arguments: [product#29673, plant#29674, orderDateTime#29675]
(1223) LogicalRelation
Arguments: parquet, [systemId#29677, internalUUID#29678, plant#29679, product#29680, blockedForReplenishmentStartingFrom#29681, productionAspect#29682, salesPlant#29683, listing#29684], false
(1224) Repartition
Arguments: 10, true
(1225) Project
Arguments: [systemId#29677, internalUUID#29678, plant#29679, product#29680, blockedForReplenishmentStartingFrom#29681, productionAspect#29682, salesPlant#29683, listing#29684, struct(systemId, systemId#29677, internalUUID, internalUUID#29678, plant, plant#29679, product, product#29680, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#29681, productionAspect, productionAspect#29682, salesPlant, salesPlant#29683, listing, listing#29684) AS productPlant#29685]
(1226) Project
Arguments: [productPlant#29685]
(1227) Join
Arguments: LeftOuter, ((product#29673 <=> productPlant#29685.product.internalRefUUID) AND (plant#29674 <=> productPlant#29685.plant.internalRefUUID))
(1228) Project
Arguments: [product#29673, plant#29674, orderDateTime#29675, productPlant#29685]
(1229) SubqueryAlias
Arguments: wl
(1230) LogicalRelation
Arguments: parquet, [systemId#29686, internalUUID#29687, id#29688, displayId#29689, name#29690, category#29691, companyCode#29692, address#29693, mainDistributionChain#29694, mainPurchasingOrganization#29695, validPurchasingOrganizations#29696, productGroup#29697], false
(1231) Repartition
Arguments: 10, true
(1232) Project
Arguments: [internalUUID#29687, address#29693.timeZone.code AS timezonecode#29698]
(1233) Join
Arguments: LeftOuter, (plant#29674 <=> internalUUID#29687)
(1234) Project
Arguments: [product#29673, plant#29674, orderDateTime#29675, productPlant#29685, internalUUID#29687, CASE WHEN isnotnull(timezonecode#29698) THEN timezonecode#29698 ELSE UTC END AS timezonecode#29699]
(1235) Project
Arguments: [product#29673, plant#29674, orderDateTime#29675, productPlant#29685, timezonecode#29699]
(1236) LogicalRelation
Arguments: parquet, [systemId#29700, internalUUID#29701, id#29702, displayId#29703, name#29704, baseUnitOfMeasure#29705, unitOfMeasures#29706, unitOfMeasureConversions#29707, productionAspect#29708, salesAspect#29709, procurementAspect#29710, productGroup#29711], false
(1237) Repartition
Arguments: 10, true
(1238) Join
Arguments: LeftOuter, (product#29673 = internalUUID#29701)
(1239) Project
Arguments: [product#29673, plant#29674, orderDateTime#29675, productPlant#29685, timezonecode#29699, systemId#29700, internalUUID#29701, id#29702, displayId#29703, name#29704, baseUnitOfMeasure#29705, unitOfMeasures#29706, unitOfMeasureConversions#29707, productionAspect#29708, salesAspect#29709, procurementAspect#29710, productGroup#29711, filter(unitOfMeasureConversions#29707, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#29685.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#29685.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29705.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29705.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29712]
(1240) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29712.quantityNumerator), true, [quantityNumerator#29713]
(1241) Project
Arguments: [product#29673, plant#29674, orderDateTime#29675, productPlant#29685, timezonecode#29699, systemId#29700, internalUUID#29701, id#29702, displayId#29703, name#29704, baseUnitOfMeasure#29705, unitOfMeasures#29706, unitOfMeasureConversions#29707, productionAspect#29708, salesAspect#29709, procurementAspect#29710, productGroup#29711, filteredUnitOfMeasureConversions#29712, quantityNumerator#29713]
(1242) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29712.quantityDenominator), true, [quantityDenominator#29714]
(1243) Project
Arguments: [product#29673, plant#29674, orderDateTime#29675, productPlant#29685, timezonecode#29699, systemId#29700, internalUUID#29701, id#29702, displayId#29703, name#29704, baseUnitOfMeasure#29705, unitOfMeasures#29706, unitOfMeasureConversions#29707, productionAspect#29708, salesAspect#29709, procurementAspect#29710, productGroup#29711, filteredUnitOfMeasureConversions#29712, quantityNumerator#29713, quantityDenominator#29714]
(1244) Project
Arguments: [product#29673, plant#29674, orderDateTime#29675, productPlant#29685, timezonecode#29699, systemId#29700, internalUUID#29701, id#29702, displayId#29703, name#29704, baseUnitOfMeasure#29705, unitOfMeasures#29706, unitOfMeasureConversions#29707, productionAspect#29708, salesAspect#29709, procurementAspect#29710, productGroup#29711, filteredUnitOfMeasureConversions#29712, quantityNumerator#29713, quantityDenominator#29714, (cast(quantityNumerator#29713 as double) / cast(quantityDenominator#29714 as double)) AS outboundUnit#29715]
(1245) Project
Arguments: [product#29673, plant#29674, orderDateTime#29675, productPlant#29685, timezonecode#29699, systemId#29700, internalUUID#29701, id#29702, displayId#29703, name#29704, baseUnitOfMeasure#29705, unitOfMeasures#29706, unitOfMeasureConversions#29707, productionAspect#29708, salesAspect#29709, procurementAspect#29710, productGroup#29711, filteredUnitOfMeasureConversions#29712, quantityNumerator#29713, quantityDenominator#29714, CASE WHEN (isnull(outboundUnit#29715) OR (outboundUnit#29715 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#29715 END AS outboundUnit#29716]
(1246) Project
Arguments: [product#29673, plant#29674, orderDateTime#29675, productPlant#29685, timezonecode#29699, outboundUnit#29716]
(1247) Project
Arguments: [plant#29674]
(1248) Deduplicate
Arguments: [plant#29674]
(1249) Join
Arguments: Inner, (plantUuid#29670 = plant#29674)
(1250) Project
Arguments: [plantId#29669, plantUuid#29670, storageLocId#29671, storageLocUuid#29672]
(1251) Join
Arguments: Inner, (plant#29642.internalRefUUID <=> plantUuid#29670)
(1252) Generate
Arguments: explode(filter(stockQuantities#29644, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#29672) AND (lambda x#26016.storageLocation.Id = storageLocId#29671)), lambda x#26016, false))), false, [stockQuantity#29717]
(1253) Project
Arguments: [systemId#29639, internalUUID#29640, product#29641, plant#29642, calculationDateTime#29643, stockQuantities#29644, plantId#29669, plantUuid#29670, storageLocId#29671, storageLocUuid#29672, stockQuantity#29717]
(1254) Aggregate
Arguments: [plantUuid#29670, internalUUID#29640, plant#29642, product#29641, systemId#29639], [plantUuid#29670, internalUUID#29640, plant#29642, product#29641, systemId#29639, first(calculationDateTime#29643, false) AS calculationDateTime#29718, collect_list(stockQuantity#29717, 0, 0) AS stockQuantities#29719]
(1255) Project
Arguments: [systemId#29639, internalUUID#29640, product#29641, plant#29642, calculationDateTime#29718, stockQuantities#29719]
(1256) Generate
Arguments: explode(stockQuantities#29719), false, [stockQuantity#29720]
(1257) Project
Arguments: [systemId#29639, internalUUID#29640, product#29641, plant#29642, calculationDateTime#29718, stockQuantities#29719, stockQuantity#29720]
(1258) Project
Arguments: [plant#29642.id AS plant#29721, plant#29642.internalRefUUID AS plantUuid#29722, product#29641.id AS product#29723, product#29641.internalRefUUID AS productUuid#29724, calculationDateTime#29718, stockQuantity#29720.storagelocation.id AS storageLocId#29725, stockQuantity#29720.storagelocation.internalRefUUID AS storageLocUuid#29726, stockQuantity#29720.quantity.measure AS quantity#29727, stockQuantity#29720.specialStockIndicator.code AS specialStockIndicator#29728, stockQuantity#29720.stockType.code AS stockType#29729]
(1259) Filter
Arguments: ((specialStockIndicator#29728 = ) AND (stockType#29729 = 01))
(1260) LogicalRelation
Arguments: parquet, [product#29730, plant#29731, orderDateTime#29732, planningStartDateTime#29733], false
(1261) RepartitionByExpression
Arguments: [product#29730, plant#29731], 10
(1262) Project
Arguments: [product#29730, plant#29731, orderDateTime#29732]
(1263) LogicalRelation
Arguments: parquet, [systemId#29734, internalUUID#29735, plant#29736, product#29737, blockedForReplenishmentStartingFrom#29738, productionAspect#29739, salesPlant#29740, listing#29741], false
(1264) Repartition
Arguments: 10, true
(1265) Project
Arguments: [systemId#29734, internalUUID#29735, plant#29736, product#29737, blockedForReplenishmentStartingFrom#29738, productionAspect#29739, salesPlant#29740, listing#29741, struct(systemId, systemId#29734, internalUUID, internalUUID#29735, plant, plant#29736, product, product#29737, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#29738, productionAspect, productionAspect#29739, salesPlant, salesPlant#29740, listing, listing#29741) AS productPlant#29742]
(1266) Project
Arguments: [productPlant#29742]
(1267) Join
Arguments: LeftOuter, ((product#29730 <=> productPlant#29742.product.internalRefUUID) AND (plant#29731 <=> productPlant#29742.plant.internalRefUUID))
(1268) Project
Arguments: [product#29730, plant#29731, orderDateTime#29732, productPlant#29742]
(1269) SubqueryAlias
Arguments: wl
(1270) LogicalRelation
Arguments: parquet, [systemId#29743, internalUUID#29744, id#29745, displayId#29746, name#29747, category#29748, companyCode#29749, address#29750, mainDistributionChain#29751, mainPurchasingOrganization#29752, validPurchasingOrganizations#29753, productGroup#29754], false
(1271) Repartition
Arguments: 10, true
(1272) Project
Arguments: [internalUUID#29744, address#29750.timeZone.code AS timezonecode#29755]
(1273) Join
Arguments: LeftOuter, (plant#29731 <=> internalUUID#29744)
(1274) Project
Arguments: [product#29730, plant#29731, orderDateTime#29732, productPlant#29742, internalUUID#29744, CASE WHEN isnotnull(timezonecode#29755) THEN timezonecode#29755 ELSE UTC END AS timezonecode#29756]
(1275) Project
Arguments: [product#29730, plant#29731, orderDateTime#29732, productPlant#29742, timezonecode#29756]
(1276) LogicalRelation
Arguments: parquet, [systemId#29757, internalUUID#29758, id#29759, displayId#29760, name#29761, baseUnitOfMeasure#29762, unitOfMeasures#29763, unitOfMeasureConversions#29764, productionAspect#29765, salesAspect#29766, procurementAspect#29767, productGroup#29768], false
(1277) Repartition
Arguments: 10, true
(1278) Join
Arguments: LeftOuter, (product#29730 = internalUUID#29758)
(1279) Project
Arguments: [product#29730, plant#29731, orderDateTime#29732, productPlant#29742, timezonecode#29756, systemId#29757, internalUUID#29758, id#29759, displayId#29760, name#29761, baseUnitOfMeasure#29762, unitOfMeasures#29763, unitOfMeasureConversions#29764, productionAspect#29765, salesAspect#29766, procurementAspect#29767, productGroup#29768, filter(unitOfMeasureConversions#29764, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#29742.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#29742.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#29762.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#29762.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#29769]
(1280) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29769.quantityNumerator), true, [quantityNumerator#29770]
(1281) Project
Arguments: [product#29730, plant#29731, orderDateTime#29732, productPlant#29742, timezonecode#29756, systemId#29757, internalUUID#29758, id#29759, displayId#29760, name#29761, baseUnitOfMeasure#29762, unitOfMeasures#29763, unitOfMeasureConversions#29764, productionAspect#29765, salesAspect#29766, procurementAspect#29767, productGroup#29768, filteredUnitOfMeasureConversions#29769, quantityNumerator#29770]
(1282) Generate
Arguments: explode(filteredUnitOfMeasureConversions#29769.quantityDenominator), true, [quantityDenominator#29771]
(1283) Project
Arguments: [product#29730, plant#29731, orderDateTime#29732, productPlant#29742, timezonecode#29756, systemId#29757, internalUUID#29758, id#29759, displayId#29760, name#29761, baseUnitOfMeasure#29762, unitOfMeasures#29763, unitOfMeasureConversions#29764, productionAspect#29765, salesAspect#29766, procurementAspect#29767, productGroup#29768, filteredUnitOfMeasureConversions#29769, quantityNumerator#29770, quantityDenominator#29771]
(1284) Project
Arguments: [product#29730, plant#29731, orderDateTime#29732, productPlant#29742, timezonecode#29756, systemId#29757, internalUUID#29758, id#29759, displayId#29760, name#29761, baseUnitOfMeasure#29762, unitOfMeasures#29763, unitOfMeasureConversions#29764, productionAspect#29765, salesAspect#29766, procurementAspect#29767, productGroup#29768, filteredUnitOfMeasureConversions#29769, quantityNumerator#29770, quantityDenominator#29771, (cast(quantityNumerator#29770 as double) / cast(quantityDenominator#29771 as double)) AS outboundUnit#29772]
(1285) Project
Arguments: [product#29730, plant#29731, orderDateTime#29732, productPlant#29742, timezonecode#29756, systemId#29757, internalUUID#29758, id#29759, displayId#29760, name#29761, baseUnitOfMeasure#29762, unitOfMeasures#29763, unitOfMeasureConversions#29764, productionAspect#29765, salesAspect#29766, procurementAspect#29767, productGroup#29768, filteredUnitOfMeasureConversions#29769, quantityNumerator#29770, quantityDenominator#29771, CASE WHEN (isnull(outboundUnit#29772) OR (outboundUnit#29772 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#29772 END AS outboundUnit#29773]
(1286) Project
Arguments: [product#29730, plant#29731, orderDateTime#29732, productPlant#29742, timezonecode#29756, outboundUnit#29773]
(1287) Join
Arguments: Inner, ((plantUuid#29722 = plant#29731) AND (productUuid#29724 = product#29730))
(1288) Filter
Arguments: (calculationDateTime#29718 <= orderDateTime#29732)
(1289) Project
Arguments: [plantUuid#29722 AS plant#29774, productUuid#29724 AS product#29775, storageLocId#29725, calculationDateTime#29718, quantity#29727]
(1290) Aggregate
Arguments: [plant#29774, product#29775, storageLocId#29725], [plant#29774, product#29775, storageLocId#29725, max(calculationDateTime#29718) AS max_calc_datetime#29776]
(1291) Join
Arguments: Inner, ((((plant#29637 <=> plant#29774) AND (product#29638 <=> product#29775)) AND (storageLocId#29588 <=> storageLocId#29725)) AND (calculationDateTime#29581 <=> max_calc_datetime#29776))
(1292) Project
Arguments: [plant#29637, product#29638, storageLocId#29588, calculationDateTime#29581, quantity#29590]
(1293) Aggregate
Arguments: [product#29638, plant#29637], [product#29638, plant#29637, sum(quantity#29590) AS quantitySum#29777, min(calculationDateTime#29581) AS minCalculationDateTime#29778]
(1294) Project
Arguments: [product#29638, plant#29637, quantitySum#29777, minCalculationDateTime#29778, round(quantitySum#29777, 0) AS roundedQuantitySum#29779]
(1295) Join
Arguments: LeftOuter, ((plant#29459 = plant#29637) AND (product#29458 = product#29638))
(1296) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, roundedQuantitySum#29779, minCalculationDateTime#29778]
(1297) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, roundedQuantitySum#29779, minCalculationDateTime#29778, CASE WHEN isnotnull(minCalculationDateTime#29778) THEN minCalculationDateTime#29778 ELSE orderDateTime#29460 END AS stockDatetime#29780]
(1298) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, roundedQuantitySum#29779, minCalculationDateTime#29778, stockDatetime#29780, CASE WHEN isnotnull(roundedQuantitySum#29779) THEN array(roundedQuantitySum#29779) ELSE array(0.0) END AS stockBatchQuantities#29781]
(1299) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, roundedQuantitySum#29779, minCalculationDateTime#29778, stockDatetime#29780, stockBatchQuantities#29781, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#29782]
(1300) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, roundedQuantitySum#29779, stockDatetime#29780, stockBatchQuantities#29781, stockBatchShelfLifeEndDatetimes#29782]
(1301) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, stockDatetime#29780, stockBatchQuantities#29781, stockBatchShelfLifeEndDatetimes#29782]
(1302) LogicalRelation
Arguments: parquet, [product#29783, plant#29784, demandChannel#29785, demandStream#29786, considerVariance#29787, demandTimeBuckets#29788, demandPointInTimeStart#29789, demandPointInTimeEnd#29790, demandPointInTime#29791], false
(1303) Join
Arguments: LeftOuter, ((product#29458 = product#29783) AND (plant#29459 = plant#29784))
(1304) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, stockDatetime#29780, stockBatchQuantities#29781, stockBatchShelfLifeEndDatetimes#29782, demandChannel#29785, demandStream#29786, considerVariance#29787, demandTimeBuckets#29788, demandPointInTimeStart#29789, demandPointInTimeEnd#29790, demandPointInTime#29791, product#29783, plant#29784]
(1305) Project
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, stockDatetime#29780, stockBatchQuantities#29781, stockBatchShelfLifeEndDatetimes#29782, demandChannel#29785, demandStream#29786, considerVariance#29787, demandTimeBuckets#29788, demandPointInTimeStart#29789, demandPointInTimeEnd#29790, demandPointInTime#29791, CASE WHEN isnotnull(product#29783) THEN struct(demandChannel, demandChannel#29785, demandStream, demandStream#29786, considerVariance, considerVariance#29787, demandTimeBuckets, demandTimeBuckets#29788, demandPointInTimeStart, demandPointInTimeStart#29789, demandPointInTimeEnd, demandPointInTimeEnd#29790, demandPointInTime, demandPointInTime#29791) 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#29792]
(1306) Aggregate
Arguments: [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, stockDatetime#29780, stockBatchQuantities#29781, stockBatchShelfLifeEndDatetimes#29782], [product#29458, plant#29459, orderDateTime#29460, productPlant#29470, timezonecode#29484, outboundUnit#29501, stockDatetime#29780, stockBatchQuantities#29781, stockBatchShelfLifeEndDatetimes#29782, collect_list(rawDemands#29792, 0, 0) AS rawDemands#29793]
(1307) DeserializeToObject
Arguments: createexternalrow(invoke(product#29458.toString()), invoke(plant#29459.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#29460)), if (isnull(productPlant#29470)) null else createexternalrow(invoke(productPlant#29470.systemId.toString()), invoke(productPlant#29470.internalUUID.toString()), if (isnull(productPlant#29470.plant)) null else createexternalrow(invoke(productPlant#29470.plant.internalRefUUID.toString()), invoke(productPlant#29470.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#29470.product)) null else createexternalrow(invoke(productPlant#29470.product.internalRefUUID.toString()), invoke(productPlant#29470.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#29470.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#29470.productionAspect)) null else createexternalrow(if (isnull(productPlant#29470.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#29470.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#29470.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#29470.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#29470.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#29470.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#29470.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#29470.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#29470.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#29470.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#29470.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#29470.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#29470.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#29470.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#29470.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#29470.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#29470.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#29470.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#29470.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#29470.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#29470.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#29470.salesPlant)) null else createexternalrow(if (isnull(productPlant#29470.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#29470.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#29470.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, 3800), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#29470.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#29484.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#29501)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#29780)), mapobjects(lambdavariable(MapObject, DoubleType, true, 3801), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 3801) as double))), stockBatchQuantities#29781, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 3802), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 3802) as timestamp)))), stockBatchShelfLifeEndDatetimes#29782, 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, 3803), 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, 3803))) 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, 3803).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, 3803).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, 3803).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).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, 3803).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, 3803).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, 3803).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).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, 3803).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#29793, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#26378: org.apache.spark.sql.Row
(1308) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, interface org.apache.spark.sql.Row, [StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)], obj#26383: org.apache.spark.sql.Row
(1309) 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#29794, 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#29795, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3791), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3791), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3792), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3792), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3793), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3793), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3794), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3794), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3795), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3795), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#29796, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3797), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3797), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3798), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3798), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3799), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3799), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#29797]
(1310) Join
Arguments: LeftOuter, ((plant#29795 <=> plant#29134) AND (product#29794 <=> product#29133))
(1311) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, outboundUnit#29176, stockDatetime#29455, stockBatchQuantities#29456, stockBatchShelfLifeEndDatetimes#29457, plant#29795, dayBucketDemands#29796, pointInTimeDemands#29797]
(1312) Project
Arguments: [product#29133, plant#29134, orderDateTime#29135, productPlant#29145, timezonecode#29159, outboundUnit#29176, stockDatetime#29455, stockBatchQuantities#29456, stockBatchShelfLifeEndDatetimes#29457, dayBucketDemands#29796, pointInTimeDemands#29797]
(1313) LogicalRelation
Arguments: parquet, [systemId#29798, internalUUID#29799, id#29800, displayId#29801, supplier#29802, type#29803, status#29804, isMarkedForDeletion#29805, items#29806], false
(1314) Repartition
Arguments: 10, true
(1315) Generate
Arguments: explode(items#29806), false, [item#29807]
(1316) Project
Arguments: [id#29800, internalUUID#29799, isMarkedForDeletion#29805, supplier#29802.internalRefUUID AS supplierUuid#29808, item#29807]
(1317) Filter
Arguments: (((NOT isMarkedForDeletion#29805 AND NOT item#29807.deletionIndicator) AND NOT item#29807.completeIndicator) AND NOT item#29807.returnIndicator)
(1318) Project
Arguments: [id#29800, internalUUID#29799, supplierUuid#29808, item#29807.plant.internalRefUUID AS plant#29809, item#29807.product.internalRefUUID AS product#29810, item#29807.storageLocation.internalRefUUID AS storageLocUuid#29811, item#29807.quantityUnit.code AS quantityUom#29812, item#29807.quantityUnit.internalRefUUID AS quantityUomUuid#29813, item#29807.quantityNumerator AS quantityNumerator#29814, item#29807.quantityDenominator AS quantityDenominator#29815, item#29807.scheduleLines AS scheduleLines#29816, item#29807.confirmations AS confirmations#29817]
(1319) Join
Arguments: Inner, ((product#29133 <=> product#29810) AND (plant#29134 <=> supplierUuid#29808))
(1320) Project
Arguments: [id#29800, internalUUID#29799, supplierUuid#29808, plant#29809, product#29810, storageLocUuid#29811, quantityUom#29812, quantityUomUuid#29813, quantityNumerator#29814, quantityDenominator#29815, scheduleLines#29816, confirmations#29817, stockDatetime#29455, plant#29134]
(1321) Project
Arguments: [id#29800, internalUUID#29799, supplierUuid#29808, product#29810, storageLocUuid#29811, quantityUom#29812, quantityUomUuid#29813, quantityNumerator#29814, quantityDenominator#29815, scheduleLines#29816, confirmations#29817, stockDatetime#29455, plant#29134]
(1322) Project
Arguments: [id#29800, internalUUID#29799, supplierUuid#29808, product#29810, storageLocUuid#29811, quantityUom#29812, quantityUomUuid#29813, quantityNumerator#29814, quantityDenominator#29815, scheduleLines#29816, confirmations#29817, stockDatetime#29455, plant#29134, filter(transform(filter(transform(scheduleLines#29816, lambdafunction(struct(openQty, (greatest((lambda x_16#29113.quantity - coalesce(lambda x_16#29113.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_16#29113.productAvailabilityDateTime, lambda x_16#29113.deliveryAt)), lambda x_16#29113, false)), lambdafunction((lambda x_17#29114.availabilityDatetime < stockDatetime#29455), lambda x_17#29114, false)), lambdafunction(struct(documentId, id#29800, documentUuid, internalUUID#29799, openQty, lambda x_18#29115.openQty, openQtyInBaseUnit, ((lambda x_18#29115.openQty * quantityNumerator#29814) / quantityDenominator#29815), qtyUom, quantityUom#29812, qtyUomUuid, quantityUomUuid#29813, availabilityDatetime, lambda x_18#29115.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_18#29115, false)), lambdafunction(NOT (lambda x_19#29116.openQty = 0.0), lambda x_19#29116, false)) AS openGoodsMovements#29112]
(1323) Aggregate
Arguments: [product#29810, plant#29134], [product#29810, plant#29134, flatten(collect_list(openGoodsMovements#29112, 0, 0)) AS openGoodsMovements#29117]
(1324) Filter
Arguments: (array_size(openGoodsMovements#29117) > 0)
(1325) Union
Arguments: false, false
(1326) Aggregate
Arguments: [product#26759, plant#26758], [product#26759, plant#26758, flatten(collect_list(openGoodsMovements#27136, 0, 0)) AS openGoodsMovements#29868]
(1327) Join
Arguments: LeftOuter, ((product#25911 = product#26759) AND (plant#25912 = plant#26758))
(1328) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovements#29868]
(1329) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, coalesce(openGoodsMovements#29868.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#30587, coalesce(openGoodsMovements#29868.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#30588, coalesce(openGoodsMovements#29868.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#30589]
(1330) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, 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#30690]
(1331) LogicalRelation
Arguments: parquet, [product#30889, plant#30890, orderDateTime#30891, planningStartDateTime#30892], false
(1332) RepartitionByExpression
Arguments: [product#30889, plant#30890], 10
(1333) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891]
(1334) LogicalRelation
Arguments: parquet, [systemId#30893, internalUUID#30894, plant#30895, product#30896, blockedForReplenishmentStartingFrom#30897, productionAspect#30898, salesPlant#30899, listing#30900], false
(1335) Repartition
Arguments: 10, true
(1336) Project
Arguments: [systemId#30893, internalUUID#30894, plant#30895, product#30896, blockedForReplenishmentStartingFrom#30897, productionAspect#30898, salesPlant#30899, listing#30900, struct(systemId, systemId#30893, internalUUID, internalUUID#30894, plant, plant#30895, product, product#30896, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#30897, productionAspect, productionAspect#30898, salesPlant, salesPlant#30899, listing, listing#30900) AS productPlant#30901]
(1337) Project
Arguments: [productPlant#30901]
(1338) Join
Arguments: LeftOuter, ((product#30889 <=> productPlant#30901.product.internalRefUUID) AND (plant#30890 <=> productPlant#30901.plant.internalRefUUID))
(1339) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901]
(1340) SubqueryAlias
Arguments: wl
(1341) LogicalRelation
Arguments: parquet, [systemId#30902, internalUUID#30903, id#30904, displayId#30905, name#30906, category#30907, companyCode#30908, address#30909, mainDistributionChain#30910, mainPurchasingOrganization#30911, validPurchasingOrganizations#30912, productGroup#30913], false
(1342) Repartition
Arguments: 10, true
(1343) Project
Arguments: [internalUUID#30903, address#30909.timeZone.code AS timezonecode#30914]
(1344) Join
Arguments: LeftOuter, (plant#30890 <=> internalUUID#30903)
(1345) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, internalUUID#30903, CASE WHEN isnotnull(timezonecode#30914) THEN timezonecode#30914 ELSE UTC END AS timezonecode#30915]
(1346) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915]
(1347) LogicalRelation
Arguments: parquet, [systemId#30916, internalUUID#30917, id#30918, displayId#30919, name#30920, baseUnitOfMeasure#30921, unitOfMeasures#30922, unitOfMeasureConversions#30923, productionAspect#30924, salesAspect#30925, procurementAspect#30926, productGroup#30927], false
(1348) Repartition
Arguments: 10, true
(1349) Join
Arguments: LeftOuter, (product#30889 = internalUUID#30917)
(1350) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, systemId#30916, internalUUID#30917, id#30918, displayId#30919, name#30920, baseUnitOfMeasure#30921, unitOfMeasures#30922, unitOfMeasureConversions#30923, productionAspect#30924, salesAspect#30925, procurementAspect#30926, productGroup#30927, filter(unitOfMeasureConversions#30923, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#30901.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#30901.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#30921.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#30921.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#30928]
(1351) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30928.quantityNumerator), true, [quantityNumerator#30929]
(1352) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, systemId#30916, internalUUID#30917, id#30918, displayId#30919, name#30920, baseUnitOfMeasure#30921, unitOfMeasures#30922, unitOfMeasureConversions#30923, productionAspect#30924, salesAspect#30925, procurementAspect#30926, productGroup#30927, filteredUnitOfMeasureConversions#30928, quantityNumerator#30929]
(1353) Generate
Arguments: explode(filteredUnitOfMeasureConversions#30928.quantityDenominator), true, [quantityDenominator#30930]
(1354) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, systemId#30916, internalUUID#30917, id#30918, displayId#30919, name#30920, baseUnitOfMeasure#30921, unitOfMeasures#30922, unitOfMeasureConversions#30923, productionAspect#30924, salesAspect#30925, procurementAspect#30926, productGroup#30927, filteredUnitOfMeasureConversions#30928, quantityNumerator#30929, quantityDenominator#30930]
(1355) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, systemId#30916, internalUUID#30917, id#30918, displayId#30919, name#30920, baseUnitOfMeasure#30921, unitOfMeasures#30922, unitOfMeasureConversions#30923, productionAspect#30924, salesAspect#30925, procurementAspect#30926, productGroup#30927, filteredUnitOfMeasureConversions#30928, quantityNumerator#30929, quantityDenominator#30930, (cast(quantityNumerator#30929 as double) / cast(quantityDenominator#30930 as double)) AS outboundUnit#30931]
(1356) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, systemId#30916, internalUUID#30917, id#30918, displayId#30919, name#30920, baseUnitOfMeasure#30921, unitOfMeasures#30922, unitOfMeasureConversions#30923, productionAspect#30924, salesAspect#30925, procurementAspect#30926, productGroup#30927, filteredUnitOfMeasureConversions#30928, quantityNumerator#30929, quantityDenominator#30930, CASE WHEN (isnull(outboundUnit#30931) OR (outboundUnit#30931 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#30931 END AS outboundUnit#30932]
(1357) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932]
(1358) LogicalRelation
Arguments: parquet, [systemId#30933, internalUUID#30934, product#30935, plant#30936, calculationDateTime#30937, stockQuantities#30938], false
(1359) Repartition
Arguments: 10, true
(1360) LogicalRelation
Arguments: parquet, [marketUnit#30939, description#30940, articleHierarchy#30941, defaultCurrency#30942, responsibilities#30943, replenishmentTypes#30944, distributionCenters#30945, assignedArticleHierarchyNodes#30946, minOrderQtySetting#30947, minOrderQtySettingInternal#30948, listingCheck#30949, odsSelection#30950, demandProfiles#30951, constraintProfiles#30952, optimizationProfiles#30953, orderGroupSplitProfiles#30954, supplierMinimumProfiles#30955, multipleRestrictionProfiles#30956, preferredUomSource#30957, handlingOfUnfulfilledDemands#30958, negligibleQuantitiesThreshold#30959, eventtype#30960], false
(1361) Repartition
Arguments: 10, true
(1362) Filter
Arguments: (marketUnit#30939 <=> DIP_1691)
(1363) Project
Arguments: [marketUnit#30939, description#30940, articleHierarchy#30941, defaultCurrency#30942, responsibilities#30943, replenishmentTypes#30944, distributionCenters#30945, assignedArticleHierarchyNodes#30946, minOrderQtySetting#30947, minOrderQtySettingInternal#30948, listingCheck#30949, odsSelection#30950, demandProfiles#30951, constraintProfiles#30952, optimizationProfiles#30953, orderGroupSplitProfiles#30954, supplierMinimumProfiles#30955, multipleRestrictionProfiles#30956, preferredUomSource#30957, handlingOfUnfulfilledDemands#30958, negligibleQuantitiesThreshold#30959, eventtype#30960]
(1364) Project
Arguments: [distributionCenters#30945]
(1365) Generate
Arguments: explode(distributionCenters#30945), false, [distributionCenters#30961]
(1366) Project
Arguments: [distributionCenters#30961]
(1367) Generate
Arguments: explode(distributionCenters#30961.storageLocations), false, [storageLocations#30962]
(1368) Project
Arguments: [distributionCenters#30961.id AS plantId#30963, distributionCenters#30961.internalRefUUID AS plantUuid#30964, storageLocations#30962]
(1369) Project
Arguments: [plantId#30963, plantUuid#30964, storageLocations#30962.id AS storageLocId#30965, storageLocations#30962.internalRefUUID AS storageLocUuid#30966]
(1370) LogicalRelation
Arguments: parquet, [product#30967, plant#30968, orderDateTime#30969, planningStartDateTime#30970], false
(1371) RepartitionByExpression
Arguments: [product#30967, plant#30968], 10
(1372) Project
Arguments: [product#30967, plant#30968, orderDateTime#30969]
(1373) LogicalRelation
Arguments: parquet, [systemId#30971, internalUUID#30972, plant#30973, product#30974, blockedForReplenishmentStartingFrom#30975, productionAspect#30976, salesPlant#30977, listing#30978], false
(1374) Repartition
Arguments: 10, true
(1375) Project
Arguments: [systemId#30971, internalUUID#30972, plant#30973, product#30974, blockedForReplenishmentStartingFrom#30975, productionAspect#30976, salesPlant#30977, listing#30978, struct(systemId, systemId#30971, internalUUID, internalUUID#30972, plant, plant#30973, product, product#30974, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#30975, productionAspect, productionAspect#30976, salesPlant, salesPlant#30977, listing, listing#30978) AS productPlant#30979]
(1376) Project
Arguments: [productPlant#30979]
(1377) Join
Arguments: LeftOuter, ((product#30967 <=> productPlant#30979.product.internalRefUUID) AND (plant#30968 <=> productPlant#30979.plant.internalRefUUID))
(1378) Project
Arguments: [product#30967, plant#30968, orderDateTime#30969, productPlant#30979]
(1379) SubqueryAlias
Arguments: wl
(1380) LogicalRelation
Arguments: parquet, [systemId#30980, internalUUID#30981, id#30982, displayId#30983, name#30984, category#30985, companyCode#30986, address#30987, mainDistributionChain#30988, mainPurchasingOrganization#30989, validPurchasingOrganizations#30990, productGroup#30991], false
(1381) Repartition
Arguments: 10, true
(1382) Project
Arguments: [internalUUID#30981, address#30987.timeZone.code AS timezonecode#30992]
(1383) Join
Arguments: LeftOuter, (plant#30968 <=> internalUUID#30981)
(1384) Project
Arguments: [product#30967, plant#30968, orderDateTime#30969, productPlant#30979, internalUUID#30981, CASE WHEN isnotnull(timezonecode#30992) THEN timezonecode#30992 ELSE UTC END AS timezonecode#30993]
(1385) Project
Arguments: [product#30967, plant#30968, orderDateTime#30969, productPlant#30979, timezonecode#30993]
(1386) LogicalRelation
Arguments: parquet, [systemId#30994, internalUUID#30995, id#30996, displayId#30997, name#30998, baseUnitOfMeasure#30999, unitOfMeasures#31000, unitOfMeasureConversions#31001, productionAspect#31002, salesAspect#31003, procurementAspect#31004, productGroup#31005], false
(1387) Repartition
Arguments: 10, true
(1388) Join
Arguments: LeftOuter, (product#30967 = internalUUID#30995)
(1389) Project
Arguments: [product#30967, plant#30968, orderDateTime#30969, productPlant#30979, timezonecode#30993, systemId#30994, internalUUID#30995, id#30996, displayId#30997, name#30998, baseUnitOfMeasure#30999, unitOfMeasures#31000, unitOfMeasureConversions#31001, productionAspect#31002, salesAspect#31003, procurementAspect#31004, productGroup#31005, filter(unitOfMeasureConversions#31001, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#30979.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#30979.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#30999.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#30999.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31006]
(1390) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31006.quantityNumerator), true, [quantityNumerator#31007]
(1391) Project
Arguments: [product#30967, plant#30968, orderDateTime#30969, productPlant#30979, timezonecode#30993, systemId#30994, internalUUID#30995, id#30996, displayId#30997, name#30998, baseUnitOfMeasure#30999, unitOfMeasures#31000, unitOfMeasureConversions#31001, productionAspect#31002, salesAspect#31003, procurementAspect#31004, productGroup#31005, filteredUnitOfMeasureConversions#31006, quantityNumerator#31007]
(1392) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31006.quantityDenominator), true, [quantityDenominator#31008]
(1393) Project
Arguments: [product#30967, plant#30968, orderDateTime#30969, productPlant#30979, timezonecode#30993, systemId#30994, internalUUID#30995, id#30996, displayId#30997, name#30998, baseUnitOfMeasure#30999, unitOfMeasures#31000, unitOfMeasureConversions#31001, productionAspect#31002, salesAspect#31003, procurementAspect#31004, productGroup#31005, filteredUnitOfMeasureConversions#31006, quantityNumerator#31007, quantityDenominator#31008]
(1394) Project
Arguments: [product#30967, plant#30968, orderDateTime#30969, productPlant#30979, timezonecode#30993, systemId#30994, internalUUID#30995, id#30996, displayId#30997, name#30998, baseUnitOfMeasure#30999, unitOfMeasures#31000, unitOfMeasureConversions#31001, productionAspect#31002, salesAspect#31003, procurementAspect#31004, productGroup#31005, filteredUnitOfMeasureConversions#31006, quantityNumerator#31007, quantityDenominator#31008, (cast(quantityNumerator#31007 as double) / cast(quantityDenominator#31008 as double)) AS outboundUnit#31009]
(1395) Project
Arguments: [product#30967, plant#30968, orderDateTime#30969, productPlant#30979, timezonecode#30993, systemId#30994, internalUUID#30995, id#30996, displayId#30997, name#30998, baseUnitOfMeasure#30999, unitOfMeasures#31000, unitOfMeasureConversions#31001, productionAspect#31002, salesAspect#31003, procurementAspect#31004, productGroup#31005, filteredUnitOfMeasureConversions#31006, quantityNumerator#31007, quantityDenominator#31008, CASE WHEN (isnull(outboundUnit#31009) OR (outboundUnit#31009 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31009 END AS outboundUnit#31010]
(1396) Project
Arguments: [product#30967, plant#30968, orderDateTime#30969, productPlant#30979, timezonecode#30993, outboundUnit#31010]
(1397) Project
Arguments: [plant#30968]
(1398) Deduplicate
Arguments: [plant#30968]
(1399) Join
Arguments: Inner, (plantUuid#30964 = plant#30968)
(1400) Project
Arguments: [plantId#30963, plantUuid#30964, storageLocId#30965, storageLocUuid#30966]
(1401) Join
Arguments: Inner, (plant#30936.internalRefUUID <=> plantUuid#30964)
(1402) Generate
Arguments: explode(filter(stockQuantities#30938, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#30966) AND (lambda x#26016.storageLocation.Id = storageLocId#30965)), lambda x#26016, false))), false, [stockQuantity#31011]
(1403) Project
Arguments: [systemId#30933, internalUUID#30934, product#30935, plant#30936, calculationDateTime#30937, stockQuantities#30938, plantId#30963, plantUuid#30964, storageLocId#30965, storageLocUuid#30966, stockQuantity#31011]
(1404) Aggregate
Arguments: [plantUuid#30964, internalUUID#30934, plant#30936, product#30935, systemId#30933], [plantUuid#30964, internalUUID#30934, plant#30936, product#30935, systemId#30933, first(calculationDateTime#30937, false) AS calculationDateTime#31012, collect_list(stockQuantity#31011, 0, 0) AS stockQuantities#31013]
(1405) Project
Arguments: [systemId#30933, internalUUID#30934, product#30935, plant#30936, calculationDateTime#31012, stockQuantities#31013]
(1406) Generate
Arguments: explode(stockQuantities#31013), false, [stockQuantity#31014]
(1407) Project
Arguments: [systemId#30933, internalUUID#30934, product#30935, plant#30936, calculationDateTime#31012, stockQuantities#31013, stockQuantity#31014]
(1408) Project
Arguments: [plant#30936.id AS plant#31015, plant#30936.internalRefUUID AS plantUuid#31016, product#30935.id AS product#31017, product#30935.internalRefUUID AS productUuid#31018, calculationDateTime#31012, stockQuantity#31014.storagelocation.id AS storageLocId#31019, stockQuantity#31014.storagelocation.internalRefUUID AS storageLocUuid#31020, stockQuantity#31014.quantity.measure AS quantity#31021, stockQuantity#31014.specialStockIndicator.code AS specialStockIndicator#31022, stockQuantity#31014.stockType.code AS stockType#31023]
(1409) Filter
Arguments: ((specialStockIndicator#31022 = ) AND (stockType#31023 = 01))
(1410) LogicalRelation
Arguments: parquet, [product#31024, plant#31025, orderDateTime#31026, planningStartDateTime#31027], false
(1411) RepartitionByExpression
Arguments: [product#31024, plant#31025], 10
(1412) Project
Arguments: [product#31024, plant#31025, orderDateTime#31026]
(1413) LogicalRelation
Arguments: parquet, [systemId#31028, internalUUID#31029, plant#31030, product#31031, blockedForReplenishmentStartingFrom#31032, productionAspect#31033, salesPlant#31034, listing#31035], false
(1414) Repartition
Arguments: 10, true
(1415) Project
Arguments: [systemId#31028, internalUUID#31029, plant#31030, product#31031, blockedForReplenishmentStartingFrom#31032, productionAspect#31033, salesPlant#31034, listing#31035, struct(systemId, systemId#31028, internalUUID, internalUUID#31029, plant, plant#31030, product, product#31031, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31032, productionAspect, productionAspect#31033, salesPlant, salesPlant#31034, listing, listing#31035) AS productPlant#31036]
(1416) Project
Arguments: [productPlant#31036]
(1417) Join
Arguments: LeftOuter, ((product#31024 <=> productPlant#31036.product.internalRefUUID) AND (plant#31025 <=> productPlant#31036.plant.internalRefUUID))
(1418) Project
Arguments: [product#31024, plant#31025, orderDateTime#31026, productPlant#31036]
(1419) SubqueryAlias
Arguments: wl
(1420) LogicalRelation
Arguments: parquet, [systemId#31037, internalUUID#31038, id#31039, displayId#31040, name#31041, category#31042, companyCode#31043, address#31044, mainDistributionChain#31045, mainPurchasingOrganization#31046, validPurchasingOrganizations#31047, productGroup#31048], false
(1421) Repartition
Arguments: 10, true
(1422) Project
Arguments: [internalUUID#31038, address#31044.timeZone.code AS timezonecode#31049]
(1423) Join
Arguments: LeftOuter, (plant#31025 <=> internalUUID#31038)
(1424) Project
Arguments: [product#31024, plant#31025, orderDateTime#31026, productPlant#31036, internalUUID#31038, CASE WHEN isnotnull(timezonecode#31049) THEN timezonecode#31049 ELSE UTC END AS timezonecode#31050]
(1425) Project
Arguments: [product#31024, plant#31025, orderDateTime#31026, productPlant#31036, timezonecode#31050]
(1426) LogicalRelation
Arguments: parquet, [systemId#31051, internalUUID#31052, id#31053, displayId#31054, name#31055, baseUnitOfMeasure#31056, unitOfMeasures#31057, unitOfMeasureConversions#31058, productionAspect#31059, salesAspect#31060, procurementAspect#31061, productGroup#31062], false
(1427) Repartition
Arguments: 10, true
(1428) Join
Arguments: LeftOuter, (product#31024 = internalUUID#31052)
(1429) Project
Arguments: [product#31024, plant#31025, orderDateTime#31026, productPlant#31036, timezonecode#31050, systemId#31051, internalUUID#31052, id#31053, displayId#31054, name#31055, baseUnitOfMeasure#31056, unitOfMeasures#31057, unitOfMeasureConversions#31058, productionAspect#31059, salesAspect#31060, procurementAspect#31061, productGroup#31062, filter(unitOfMeasureConversions#31058, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31036.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31036.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31056.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31056.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31063]
(1430) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31063.quantityNumerator), true, [quantityNumerator#31064]
(1431) Project
Arguments: [product#31024, plant#31025, orderDateTime#31026, productPlant#31036, timezonecode#31050, systemId#31051, internalUUID#31052, id#31053, displayId#31054, name#31055, baseUnitOfMeasure#31056, unitOfMeasures#31057, unitOfMeasureConversions#31058, productionAspect#31059, salesAspect#31060, procurementAspect#31061, productGroup#31062, filteredUnitOfMeasureConversions#31063, quantityNumerator#31064]
(1432) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31063.quantityDenominator), true, [quantityDenominator#31065]
(1433) Project
Arguments: [product#31024, plant#31025, orderDateTime#31026, productPlant#31036, timezonecode#31050, systemId#31051, internalUUID#31052, id#31053, displayId#31054, name#31055, baseUnitOfMeasure#31056, unitOfMeasures#31057, unitOfMeasureConversions#31058, productionAspect#31059, salesAspect#31060, procurementAspect#31061, productGroup#31062, filteredUnitOfMeasureConversions#31063, quantityNumerator#31064, quantityDenominator#31065]
(1434) Project
Arguments: [product#31024, plant#31025, orderDateTime#31026, productPlant#31036, timezonecode#31050, systemId#31051, internalUUID#31052, id#31053, displayId#31054, name#31055, baseUnitOfMeasure#31056, unitOfMeasures#31057, unitOfMeasureConversions#31058, productionAspect#31059, salesAspect#31060, procurementAspect#31061, productGroup#31062, filteredUnitOfMeasureConversions#31063, quantityNumerator#31064, quantityDenominator#31065, (cast(quantityNumerator#31064 as double) / cast(quantityDenominator#31065 as double)) AS outboundUnit#31066]
(1435) Project
Arguments: [product#31024, plant#31025, orderDateTime#31026, productPlant#31036, timezonecode#31050, systemId#31051, internalUUID#31052, id#31053, displayId#31054, name#31055, baseUnitOfMeasure#31056, unitOfMeasures#31057, unitOfMeasureConversions#31058, productionAspect#31059, salesAspect#31060, procurementAspect#31061, productGroup#31062, filteredUnitOfMeasureConversions#31063, quantityNumerator#31064, quantityDenominator#31065, CASE WHEN (isnull(outboundUnit#31066) OR (outboundUnit#31066 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31066 END AS outboundUnit#31067]
(1436) Project
Arguments: [product#31024, plant#31025, orderDateTime#31026, productPlant#31036, timezonecode#31050, outboundUnit#31067]
(1437) Join
Arguments: Inner, ((plantUuid#31016 = plant#31025) AND (productUuid#31018 = product#31024))
(1438) Filter
Arguments: (calculationDateTime#31012 <= orderDateTime#31026)
(1439) Project
Arguments: [plantUuid#31016 AS plant#31068, productUuid#31018 AS product#31069, storageLocId#31019, calculationDateTime#31012, quantity#31021]
(1440) LogicalRelation
Arguments: parquet, [systemId#31070, internalUUID#31071, product#31072, plant#31073, calculationDateTime#31074, stockQuantities#31075], false
(1441) Repartition
Arguments: 10, true
(1442) LogicalRelation
Arguments: parquet, [marketUnit#31076, description#31077, articleHierarchy#31078, defaultCurrency#31079, responsibilities#31080, replenishmentTypes#31081, distributionCenters#31082, assignedArticleHierarchyNodes#31083, minOrderQtySetting#31084, minOrderQtySettingInternal#31085, listingCheck#31086, odsSelection#31087, demandProfiles#31088, constraintProfiles#31089, optimizationProfiles#31090, orderGroupSplitProfiles#31091, supplierMinimumProfiles#31092, multipleRestrictionProfiles#31093, preferredUomSource#31094, handlingOfUnfulfilledDemands#31095, negligibleQuantitiesThreshold#31096, eventtype#31097], false
(1443) Repartition
Arguments: 10, true
(1444) Filter
Arguments: (marketUnit#31076 <=> DIP_1691)
(1445) Project
Arguments: [marketUnit#31076, description#31077, articleHierarchy#31078, defaultCurrency#31079, responsibilities#31080, replenishmentTypes#31081, distributionCenters#31082, assignedArticleHierarchyNodes#31083, minOrderQtySetting#31084, minOrderQtySettingInternal#31085, listingCheck#31086, odsSelection#31087, demandProfiles#31088, constraintProfiles#31089, optimizationProfiles#31090, orderGroupSplitProfiles#31091, supplierMinimumProfiles#31092, multipleRestrictionProfiles#31093, preferredUomSource#31094, handlingOfUnfulfilledDemands#31095, negligibleQuantitiesThreshold#31096, eventtype#31097]
(1446) Project
Arguments: [distributionCenters#31082]
(1447) Generate
Arguments: explode(distributionCenters#31082), false, [distributionCenters#31098]
(1448) Project
Arguments: [distributionCenters#31098]
(1449) Generate
Arguments: explode(distributionCenters#31098.storageLocations), false, [storageLocations#31099]
(1450) Project
Arguments: [distributionCenters#31098.id AS plantId#31100, distributionCenters#31098.internalRefUUID AS plantUuid#31101, storageLocations#31099]
(1451) Project
Arguments: [plantId#31100, plantUuid#31101, storageLocations#31099.id AS storageLocId#31102, storageLocations#31099.internalRefUUID AS storageLocUuid#31103]
(1452) LogicalRelation
Arguments: parquet, [product#31104, plant#31105, orderDateTime#31106, planningStartDateTime#31107], false
(1453) RepartitionByExpression
Arguments: [product#31104, plant#31105], 10
(1454) Project
Arguments: [product#31104, plant#31105, orderDateTime#31106]
(1455) LogicalRelation
Arguments: parquet, [systemId#31108, internalUUID#31109, plant#31110, product#31111, blockedForReplenishmentStartingFrom#31112, productionAspect#31113, salesPlant#31114, listing#31115], false
(1456) Repartition
Arguments: 10, true
(1457) Project
Arguments: [systemId#31108, internalUUID#31109, plant#31110, product#31111, blockedForReplenishmentStartingFrom#31112, productionAspect#31113, salesPlant#31114, listing#31115, struct(systemId, systemId#31108, internalUUID, internalUUID#31109, plant, plant#31110, product, product#31111, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31112, productionAspect, productionAspect#31113, salesPlant, salesPlant#31114, listing, listing#31115) AS productPlant#31116]
(1458) Project
Arguments: [productPlant#31116]
(1459) Join
Arguments: LeftOuter, ((product#31104 <=> productPlant#31116.product.internalRefUUID) AND (plant#31105 <=> productPlant#31116.plant.internalRefUUID))
(1460) Project
Arguments: [product#31104, plant#31105, orderDateTime#31106, productPlant#31116]
(1461) SubqueryAlias
Arguments: wl
(1462) LogicalRelation
Arguments: parquet, [systemId#31117, internalUUID#31118, id#31119, displayId#31120, name#31121, category#31122, companyCode#31123, address#31124, mainDistributionChain#31125, mainPurchasingOrganization#31126, validPurchasingOrganizations#31127, productGroup#31128], false
(1463) Repartition
Arguments: 10, true
(1464) Project
Arguments: [internalUUID#31118, address#31124.timeZone.code AS timezonecode#31129]
(1465) Join
Arguments: LeftOuter, (plant#31105 <=> internalUUID#31118)
(1466) Project
Arguments: [product#31104, plant#31105, orderDateTime#31106, productPlant#31116, internalUUID#31118, CASE WHEN isnotnull(timezonecode#31129) THEN timezonecode#31129 ELSE UTC END AS timezonecode#31130]
(1467) Project
Arguments: [product#31104, plant#31105, orderDateTime#31106, productPlant#31116, timezonecode#31130]
(1468) LogicalRelation
Arguments: parquet, [systemId#31131, internalUUID#31132, id#31133, displayId#31134, name#31135, baseUnitOfMeasure#31136, unitOfMeasures#31137, unitOfMeasureConversions#31138, productionAspect#31139, salesAspect#31140, procurementAspect#31141, productGroup#31142], false
(1469) Repartition
Arguments: 10, true
(1470) Join
Arguments: LeftOuter, (product#31104 = internalUUID#31132)
(1471) Project
Arguments: [product#31104, plant#31105, orderDateTime#31106, productPlant#31116, timezonecode#31130, systemId#31131, internalUUID#31132, id#31133, displayId#31134, name#31135, baseUnitOfMeasure#31136, unitOfMeasures#31137, unitOfMeasureConversions#31138, productionAspect#31139, salesAspect#31140, procurementAspect#31141, productGroup#31142, filter(unitOfMeasureConversions#31138, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31116.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31116.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31136.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31136.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31143]
(1472) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31143.quantityNumerator), true, [quantityNumerator#31144]
(1473) Project
Arguments: [product#31104, plant#31105, orderDateTime#31106, productPlant#31116, timezonecode#31130, systemId#31131, internalUUID#31132, id#31133, displayId#31134, name#31135, baseUnitOfMeasure#31136, unitOfMeasures#31137, unitOfMeasureConversions#31138, productionAspect#31139, salesAspect#31140, procurementAspect#31141, productGroup#31142, filteredUnitOfMeasureConversions#31143, quantityNumerator#31144]
(1474) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31143.quantityDenominator), true, [quantityDenominator#31145]
(1475) Project
Arguments: [product#31104, plant#31105, orderDateTime#31106, productPlant#31116, timezonecode#31130, systemId#31131, internalUUID#31132, id#31133, displayId#31134, name#31135, baseUnitOfMeasure#31136, unitOfMeasures#31137, unitOfMeasureConversions#31138, productionAspect#31139, salesAspect#31140, procurementAspect#31141, productGroup#31142, filteredUnitOfMeasureConversions#31143, quantityNumerator#31144, quantityDenominator#31145]
(1476) Project
Arguments: [product#31104, plant#31105, orderDateTime#31106, productPlant#31116, timezonecode#31130, systemId#31131, internalUUID#31132, id#31133, displayId#31134, name#31135, baseUnitOfMeasure#31136, unitOfMeasures#31137, unitOfMeasureConversions#31138, productionAspect#31139, salesAspect#31140, procurementAspect#31141, productGroup#31142, filteredUnitOfMeasureConversions#31143, quantityNumerator#31144, quantityDenominator#31145, (cast(quantityNumerator#31144 as double) / cast(quantityDenominator#31145 as double)) AS outboundUnit#31146]
(1477) Project
Arguments: [product#31104, plant#31105, orderDateTime#31106, productPlant#31116, timezonecode#31130, systemId#31131, internalUUID#31132, id#31133, displayId#31134, name#31135, baseUnitOfMeasure#31136, unitOfMeasures#31137, unitOfMeasureConversions#31138, productionAspect#31139, salesAspect#31140, procurementAspect#31141, productGroup#31142, filteredUnitOfMeasureConversions#31143, quantityNumerator#31144, quantityDenominator#31145, CASE WHEN (isnull(outboundUnit#31146) OR (outboundUnit#31146 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31146 END AS outboundUnit#31147]
(1478) Project
Arguments: [product#31104, plant#31105, orderDateTime#31106, productPlant#31116, timezonecode#31130, outboundUnit#31147]
(1479) Project
Arguments: [plant#31105]
(1480) Deduplicate
Arguments: [plant#31105]
(1481) Join
Arguments: Inner, (plantUuid#31101 = plant#31105)
(1482) Project
Arguments: [plantId#31100, plantUuid#31101, storageLocId#31102, storageLocUuid#31103]
(1483) Join
Arguments: Inner, (plant#31073.internalRefUUID <=> plantUuid#31101)
(1484) Generate
Arguments: explode(filter(stockQuantities#31075, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#31103) AND (lambda x#26016.storageLocation.Id = storageLocId#31102)), lambda x#26016, false))), false, [stockQuantity#31148]
(1485) Project
Arguments: [systemId#31070, internalUUID#31071, product#31072, plant#31073, calculationDateTime#31074, stockQuantities#31075, plantId#31100, plantUuid#31101, storageLocId#31102, storageLocUuid#31103, stockQuantity#31148]
(1486) Aggregate
Arguments: [plantUuid#31101, internalUUID#31071, plant#31073, product#31072, systemId#31070], [plantUuid#31101, internalUUID#31071, plant#31073, product#31072, systemId#31070, first(calculationDateTime#31074, false) AS calculationDateTime#31149, collect_list(stockQuantity#31148, 0, 0) AS stockQuantities#31150]
(1487) Project
Arguments: [systemId#31070, internalUUID#31071, product#31072, plant#31073, calculationDateTime#31149, stockQuantities#31150]
(1488) Generate
Arguments: explode(stockQuantities#31150), false, [stockQuantity#31151]
(1489) Project
Arguments: [systemId#31070, internalUUID#31071, product#31072, plant#31073, calculationDateTime#31149, stockQuantities#31150, stockQuantity#31151]
(1490) Project
Arguments: [plant#31073.id AS plant#31152, plant#31073.internalRefUUID AS plantUuid#31153, product#31072.id AS product#31154, product#31072.internalRefUUID AS productUuid#31155, calculationDateTime#31149, stockQuantity#31151.storagelocation.id AS storageLocId#31156, stockQuantity#31151.storagelocation.internalRefUUID AS storageLocUuid#31157, stockQuantity#31151.quantity.measure AS quantity#31158, stockQuantity#31151.specialStockIndicator.code AS specialStockIndicator#31159, stockQuantity#31151.stockType.code AS stockType#31160]
(1491) Filter
Arguments: ((specialStockIndicator#31159 = ) AND (stockType#31160 = 01))
(1492) LogicalRelation
Arguments: parquet, [product#31161, plant#31162, orderDateTime#31163, planningStartDateTime#31164], false
(1493) RepartitionByExpression
Arguments: [product#31161, plant#31162], 10
(1494) Project
Arguments: [product#31161, plant#31162, orderDateTime#31163]
(1495) LogicalRelation
Arguments: parquet, [systemId#31165, internalUUID#31166, plant#31167, product#31168, blockedForReplenishmentStartingFrom#31169, productionAspect#31170, salesPlant#31171, listing#31172], false
(1496) Repartition
Arguments: 10, true
(1497) Project
Arguments: [systemId#31165, internalUUID#31166, plant#31167, product#31168, blockedForReplenishmentStartingFrom#31169, productionAspect#31170, salesPlant#31171, listing#31172, struct(systemId, systemId#31165, internalUUID, internalUUID#31166, plant, plant#31167, product, product#31168, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31169, productionAspect, productionAspect#31170, salesPlant, salesPlant#31171, listing, listing#31172) AS productPlant#31173]
(1498) Project
Arguments: [productPlant#31173]
(1499) Join
Arguments: LeftOuter, ((product#31161 <=> productPlant#31173.product.internalRefUUID) AND (plant#31162 <=> productPlant#31173.plant.internalRefUUID))
(1500) Project
Arguments: [product#31161, plant#31162, orderDateTime#31163, productPlant#31173]
(1501) SubqueryAlias
Arguments: wl
(1502) LogicalRelation
Arguments: parquet, [systemId#31174, internalUUID#31175, id#31176, displayId#31177, name#31178, category#31179, companyCode#31180, address#31181, mainDistributionChain#31182, mainPurchasingOrganization#31183, validPurchasingOrganizations#31184, productGroup#31185], false
(1503) Repartition
Arguments: 10, true
(1504) Project
Arguments: [internalUUID#31175, address#31181.timeZone.code AS timezonecode#31186]
(1505) Join
Arguments: LeftOuter, (plant#31162 <=> internalUUID#31175)
(1506) Project
Arguments: [product#31161, plant#31162, orderDateTime#31163, productPlant#31173, internalUUID#31175, CASE WHEN isnotnull(timezonecode#31186) THEN timezonecode#31186 ELSE UTC END AS timezonecode#31187]
(1507) Project
Arguments: [product#31161, plant#31162, orderDateTime#31163, productPlant#31173, timezonecode#31187]
(1508) LogicalRelation
Arguments: parquet, [systemId#31188, internalUUID#31189, id#31190, displayId#31191, name#31192, baseUnitOfMeasure#31193, unitOfMeasures#31194, unitOfMeasureConversions#31195, productionAspect#31196, salesAspect#31197, procurementAspect#31198, productGroup#31199], false
(1509) Repartition
Arguments: 10, true
(1510) Join
Arguments: LeftOuter, (product#31161 = internalUUID#31189)
(1511) Project
Arguments: [product#31161, plant#31162, orderDateTime#31163, productPlant#31173, timezonecode#31187, systemId#31188, internalUUID#31189, id#31190, displayId#31191, name#31192, baseUnitOfMeasure#31193, unitOfMeasures#31194, unitOfMeasureConversions#31195, productionAspect#31196, salesAspect#31197, procurementAspect#31198, productGroup#31199, filter(unitOfMeasureConversions#31195, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31173.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31173.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31193.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31193.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31200]
(1512) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31200.quantityNumerator), true, [quantityNumerator#31201]
(1513) Project
Arguments: [product#31161, plant#31162, orderDateTime#31163, productPlant#31173, timezonecode#31187, systemId#31188, internalUUID#31189, id#31190, displayId#31191, name#31192, baseUnitOfMeasure#31193, unitOfMeasures#31194, unitOfMeasureConversions#31195, productionAspect#31196, salesAspect#31197, procurementAspect#31198, productGroup#31199, filteredUnitOfMeasureConversions#31200, quantityNumerator#31201]
(1514) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31200.quantityDenominator), true, [quantityDenominator#31202]
(1515) Project
Arguments: [product#31161, plant#31162, orderDateTime#31163, productPlant#31173, timezonecode#31187, systemId#31188, internalUUID#31189, id#31190, displayId#31191, name#31192, baseUnitOfMeasure#31193, unitOfMeasures#31194, unitOfMeasureConversions#31195, productionAspect#31196, salesAspect#31197, procurementAspect#31198, productGroup#31199, filteredUnitOfMeasureConversions#31200, quantityNumerator#31201, quantityDenominator#31202]
(1516) Project
Arguments: [product#31161, plant#31162, orderDateTime#31163, productPlant#31173, timezonecode#31187, systemId#31188, internalUUID#31189, id#31190, displayId#31191, name#31192, baseUnitOfMeasure#31193, unitOfMeasures#31194, unitOfMeasureConversions#31195, productionAspect#31196, salesAspect#31197, procurementAspect#31198, productGroup#31199, filteredUnitOfMeasureConversions#31200, quantityNumerator#31201, quantityDenominator#31202, (cast(quantityNumerator#31201 as double) / cast(quantityDenominator#31202 as double)) AS outboundUnit#31203]
(1517) Project
Arguments: [product#31161, plant#31162, orderDateTime#31163, productPlant#31173, timezonecode#31187, systemId#31188, internalUUID#31189, id#31190, displayId#31191, name#31192, baseUnitOfMeasure#31193, unitOfMeasures#31194, unitOfMeasureConversions#31195, productionAspect#31196, salesAspect#31197, procurementAspect#31198, productGroup#31199, filteredUnitOfMeasureConversions#31200, quantityNumerator#31201, quantityDenominator#31202, CASE WHEN (isnull(outboundUnit#31203) OR (outboundUnit#31203 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31203 END AS outboundUnit#31204]
(1518) Project
Arguments: [product#31161, plant#31162, orderDateTime#31163, productPlant#31173, timezonecode#31187, outboundUnit#31204]
(1519) Join
Arguments: Inner, ((plantUuid#31153 = plant#31162) AND (productUuid#31155 = product#31161))
(1520) Filter
Arguments: (calculationDateTime#31149 <= orderDateTime#31163)
(1521) Project
Arguments: [plantUuid#31153 AS plant#31205, productUuid#31155 AS product#31206, storageLocId#31156, calculationDateTime#31149, quantity#31158]
(1522) Aggregate
Arguments: [plant#31205, product#31206, storageLocId#31156], [plant#31205, product#31206, storageLocId#31156, max(calculationDateTime#31149) AS max_calc_datetime#31207]
(1523) Join
Arguments: Inner, ((((plant#31068 <=> plant#31205) AND (product#31069 <=> product#31206)) AND (storageLocId#31019 <=> storageLocId#31156)) AND (calculationDateTime#31012 <=> max_calc_datetime#31207))
(1524) Project
Arguments: [plant#31068, product#31069, storageLocId#31019, calculationDateTime#31012, quantity#31021]
(1525) Aggregate
Arguments: [product#31069, plant#31068], [product#31069, plant#31068, sum(quantity#31021) AS quantitySum#31208, min(calculationDateTime#31012) AS minCalculationDateTime#31209]
(1526) Project
Arguments: [product#31069, plant#31068, quantitySum#31208, minCalculationDateTime#31209, round(quantitySum#31208, 0) AS roundedQuantitySum#31210]
(1527) Join
Arguments: LeftOuter, ((plant#30890 = plant#31068) AND (product#30889 = product#31069))
(1528) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, roundedQuantitySum#31210, minCalculationDateTime#31209]
(1529) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, roundedQuantitySum#31210, minCalculationDateTime#31209, CASE WHEN isnotnull(minCalculationDateTime#31209) THEN minCalculationDateTime#31209 ELSE orderDateTime#30891 END AS stockDatetime#31211]
(1530) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, roundedQuantitySum#31210, minCalculationDateTime#31209, stockDatetime#31211, CASE WHEN isnotnull(roundedQuantitySum#31210) THEN array(roundedQuantitySum#31210) ELSE array(0.0) END AS stockBatchQuantities#31212]
(1531) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, roundedQuantitySum#31210, minCalculationDateTime#31209, stockDatetime#31211, stockBatchQuantities#31212, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#31213]
(1532) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, roundedQuantitySum#31210, stockDatetime#31211, stockBatchQuantities#31212, stockBatchShelfLifeEndDatetimes#31213]
(1533) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, stockBatchShelfLifeEndDatetimes#31213]
(1534) LogicalRelation
Arguments: parquet, [product#31214, plant#31215, orderDateTime#31216, planningStartDateTime#31217], false
(1535) RepartitionByExpression
Arguments: [product#31214, plant#31215], 10
(1536) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216]
(1537) LogicalRelation
Arguments: parquet, [systemId#31218, internalUUID#31219, plant#31220, product#31221, blockedForReplenishmentStartingFrom#31222, productionAspect#31223, salesPlant#31224, listing#31225], false
(1538) Repartition
Arguments: 10, true
(1539) Project
Arguments: [systemId#31218, internalUUID#31219, plant#31220, product#31221, blockedForReplenishmentStartingFrom#31222, productionAspect#31223, salesPlant#31224, listing#31225, struct(systemId, systemId#31218, internalUUID, internalUUID#31219, plant, plant#31220, product, product#31221, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31222, productionAspect, productionAspect#31223, salesPlant, salesPlant#31224, listing, listing#31225) AS productPlant#31226]
(1540) Project
Arguments: [productPlant#31226]
(1541) Join
Arguments: LeftOuter, ((product#31214 <=> productPlant#31226.product.internalRefUUID) AND (plant#31215 <=> productPlant#31226.plant.internalRefUUID))
(1542) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226]
(1543) SubqueryAlias
Arguments: wl
(1544) LogicalRelation
Arguments: parquet, [systemId#31227, internalUUID#31228, id#31229, displayId#31230, name#31231, category#31232, companyCode#31233, address#31234, mainDistributionChain#31235, mainPurchasingOrganization#31236, validPurchasingOrganizations#31237, productGroup#31238], false
(1545) Repartition
Arguments: 10, true
(1546) Project
Arguments: [internalUUID#31228, address#31234.timeZone.code AS timezonecode#31239]
(1547) Join
Arguments: LeftOuter, (plant#31215 <=> internalUUID#31228)
(1548) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, internalUUID#31228, CASE WHEN isnotnull(timezonecode#31239) THEN timezonecode#31239 ELSE UTC END AS timezonecode#31240]
(1549) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240]
(1550) LogicalRelation
Arguments: parquet, [systemId#31241, internalUUID#31242, id#31243, displayId#31244, name#31245, baseUnitOfMeasure#31246, unitOfMeasures#31247, unitOfMeasureConversions#31248, productionAspect#31249, salesAspect#31250, procurementAspect#31251, productGroup#31252], false
(1551) Repartition
Arguments: 10, true
(1552) Join
Arguments: LeftOuter, (product#31214 = internalUUID#31242)
(1553) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, systemId#31241, internalUUID#31242, id#31243, displayId#31244, name#31245, baseUnitOfMeasure#31246, unitOfMeasures#31247, unitOfMeasureConversions#31248, productionAspect#31249, salesAspect#31250, procurementAspect#31251, productGroup#31252, filter(unitOfMeasureConversions#31248, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31226.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31226.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31246.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31246.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31253]
(1554) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31253.quantityNumerator), true, [quantityNumerator#31254]
(1555) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, systemId#31241, internalUUID#31242, id#31243, displayId#31244, name#31245, baseUnitOfMeasure#31246, unitOfMeasures#31247, unitOfMeasureConversions#31248, productionAspect#31249, salesAspect#31250, procurementAspect#31251, productGroup#31252, filteredUnitOfMeasureConversions#31253, quantityNumerator#31254]
(1556) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31253.quantityDenominator), true, [quantityDenominator#31255]
(1557) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, systemId#31241, internalUUID#31242, id#31243, displayId#31244, name#31245, baseUnitOfMeasure#31246, unitOfMeasures#31247, unitOfMeasureConversions#31248, productionAspect#31249, salesAspect#31250, procurementAspect#31251, productGroup#31252, filteredUnitOfMeasureConversions#31253, quantityNumerator#31254, quantityDenominator#31255]
(1558) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, systemId#31241, internalUUID#31242, id#31243, displayId#31244, name#31245, baseUnitOfMeasure#31246, unitOfMeasures#31247, unitOfMeasureConversions#31248, productionAspect#31249, salesAspect#31250, procurementAspect#31251, productGroup#31252, filteredUnitOfMeasureConversions#31253, quantityNumerator#31254, quantityDenominator#31255, (cast(quantityNumerator#31254 as double) / cast(quantityDenominator#31255 as double)) AS outboundUnit#31256]
(1559) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, systemId#31241, internalUUID#31242, id#31243, displayId#31244, name#31245, baseUnitOfMeasure#31246, unitOfMeasures#31247, unitOfMeasureConversions#31248, productionAspect#31249, salesAspect#31250, procurementAspect#31251, productGroup#31252, filteredUnitOfMeasureConversions#31253, quantityNumerator#31254, quantityDenominator#31255, CASE WHEN (isnull(outboundUnit#31256) OR (outboundUnit#31256 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31256 END AS outboundUnit#31257]
(1560) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257]
(1561) LogicalRelation
Arguments: parquet, [systemId#31258, internalUUID#31259, product#31260, plant#31261, calculationDateTime#31262, stockQuantities#31263], false
(1562) Repartition
Arguments: 10, true
(1563) LogicalRelation
Arguments: parquet, [marketUnit#31264, description#31265, articleHierarchy#31266, defaultCurrency#31267, responsibilities#31268, replenishmentTypes#31269, distributionCenters#31270, assignedArticleHierarchyNodes#31271, minOrderQtySetting#31272, minOrderQtySettingInternal#31273, listingCheck#31274, odsSelection#31275, demandProfiles#31276, constraintProfiles#31277, optimizationProfiles#31278, orderGroupSplitProfiles#31279, supplierMinimumProfiles#31280, multipleRestrictionProfiles#31281, preferredUomSource#31282, handlingOfUnfulfilledDemands#31283, negligibleQuantitiesThreshold#31284, eventtype#31285], false
(1564) Repartition
Arguments: 10, true
(1565) Filter
Arguments: (marketUnit#31264 <=> DIP_1691)
(1566) Project
Arguments: [marketUnit#31264, description#31265, articleHierarchy#31266, defaultCurrency#31267, responsibilities#31268, replenishmentTypes#31269, distributionCenters#31270, assignedArticleHierarchyNodes#31271, minOrderQtySetting#31272, minOrderQtySettingInternal#31273, listingCheck#31274, odsSelection#31275, demandProfiles#31276, constraintProfiles#31277, optimizationProfiles#31278, orderGroupSplitProfiles#31279, supplierMinimumProfiles#31280, multipleRestrictionProfiles#31281, preferredUomSource#31282, handlingOfUnfulfilledDemands#31283, negligibleQuantitiesThreshold#31284, eventtype#31285]
(1567) Project
Arguments: [distributionCenters#31270]
(1568) Generate
Arguments: explode(distributionCenters#31270), false, [distributionCenters#31286]
(1569) Project
Arguments: [distributionCenters#31286]
(1570) Generate
Arguments: explode(distributionCenters#31286.storageLocations), false, [storageLocations#31287]
(1571) Project
Arguments: [distributionCenters#31286.id AS plantId#31288, distributionCenters#31286.internalRefUUID AS plantUuid#31289, storageLocations#31287]
(1572) Project
Arguments: [plantId#31288, plantUuid#31289, storageLocations#31287.id AS storageLocId#31290, storageLocations#31287.internalRefUUID AS storageLocUuid#31291]
(1573) LogicalRelation
Arguments: parquet, [product#31292, plant#31293, orderDateTime#31294, planningStartDateTime#31295], false
(1574) RepartitionByExpression
Arguments: [product#31292, plant#31293], 10
(1575) Project
Arguments: [product#31292, plant#31293, orderDateTime#31294]
(1576) LogicalRelation
Arguments: parquet, [systemId#31296, internalUUID#31297, plant#31298, product#31299, blockedForReplenishmentStartingFrom#31300, productionAspect#31301, salesPlant#31302, listing#31303], false
(1577) Repartition
Arguments: 10, true
(1578) Project
Arguments: [systemId#31296, internalUUID#31297, plant#31298, product#31299, blockedForReplenishmentStartingFrom#31300, productionAspect#31301, salesPlant#31302, listing#31303, struct(systemId, systemId#31296, internalUUID, internalUUID#31297, plant, plant#31298, product, product#31299, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31300, productionAspect, productionAspect#31301, salesPlant, salesPlant#31302, listing, listing#31303) AS productPlant#31304]
(1579) Project
Arguments: [productPlant#31304]
(1580) Join
Arguments: LeftOuter, ((product#31292 <=> productPlant#31304.product.internalRefUUID) AND (plant#31293 <=> productPlant#31304.plant.internalRefUUID))
(1581) Project
Arguments: [product#31292, plant#31293, orderDateTime#31294, productPlant#31304]
(1582) SubqueryAlias
Arguments: wl
(1583) LogicalRelation
Arguments: parquet, [systemId#31305, internalUUID#31306, id#31307, displayId#31308, name#31309, category#31310, companyCode#31311, address#31312, mainDistributionChain#31313, mainPurchasingOrganization#31314, validPurchasingOrganizations#31315, productGroup#31316], false
(1584) Repartition
Arguments: 10, true
(1585) Project
Arguments: [internalUUID#31306, address#31312.timeZone.code AS timezonecode#31317]
(1586) Join
Arguments: LeftOuter, (plant#31293 <=> internalUUID#31306)
(1587) Project
Arguments: [product#31292, plant#31293, orderDateTime#31294, productPlant#31304, internalUUID#31306, CASE WHEN isnotnull(timezonecode#31317) THEN timezonecode#31317 ELSE UTC END AS timezonecode#31318]
(1588) Project
Arguments: [product#31292, plant#31293, orderDateTime#31294, productPlant#31304, timezonecode#31318]
(1589) LogicalRelation
Arguments: parquet, [systemId#31319, internalUUID#31320, id#31321, displayId#31322, name#31323, baseUnitOfMeasure#31324, unitOfMeasures#31325, unitOfMeasureConversions#31326, productionAspect#31327, salesAspect#31328, procurementAspect#31329, productGroup#31330], false
(1590) Repartition
Arguments: 10, true
(1591) Join
Arguments: LeftOuter, (product#31292 = internalUUID#31320)
(1592) Project
Arguments: [product#31292, plant#31293, orderDateTime#31294, productPlant#31304, timezonecode#31318, systemId#31319, internalUUID#31320, id#31321, displayId#31322, name#31323, baseUnitOfMeasure#31324, unitOfMeasures#31325, unitOfMeasureConversions#31326, productionAspect#31327, salesAspect#31328, procurementAspect#31329, productGroup#31330, filter(unitOfMeasureConversions#31326, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31304.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31304.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31324.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31324.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31331]
(1593) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31331.quantityNumerator), true, [quantityNumerator#31332]
(1594) Project
Arguments: [product#31292, plant#31293, orderDateTime#31294, productPlant#31304, timezonecode#31318, systemId#31319, internalUUID#31320, id#31321, displayId#31322, name#31323, baseUnitOfMeasure#31324, unitOfMeasures#31325, unitOfMeasureConversions#31326, productionAspect#31327, salesAspect#31328, procurementAspect#31329, productGroup#31330, filteredUnitOfMeasureConversions#31331, quantityNumerator#31332]
(1595) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31331.quantityDenominator), true, [quantityDenominator#31333]
(1596) Project
Arguments: [product#31292, plant#31293, orderDateTime#31294, productPlant#31304, timezonecode#31318, systemId#31319, internalUUID#31320, id#31321, displayId#31322, name#31323, baseUnitOfMeasure#31324, unitOfMeasures#31325, unitOfMeasureConversions#31326, productionAspect#31327, salesAspect#31328, procurementAspect#31329, productGroup#31330, filteredUnitOfMeasureConversions#31331, quantityNumerator#31332, quantityDenominator#31333]
(1597) Project
Arguments: [product#31292, plant#31293, orderDateTime#31294, productPlant#31304, timezonecode#31318, systemId#31319, internalUUID#31320, id#31321, displayId#31322, name#31323, baseUnitOfMeasure#31324, unitOfMeasures#31325, unitOfMeasureConversions#31326, productionAspect#31327, salesAspect#31328, procurementAspect#31329, productGroup#31330, filteredUnitOfMeasureConversions#31331, quantityNumerator#31332, quantityDenominator#31333, (cast(quantityNumerator#31332 as double) / cast(quantityDenominator#31333 as double)) AS outboundUnit#31334]
(1598) Project
Arguments: [product#31292, plant#31293, orderDateTime#31294, productPlant#31304, timezonecode#31318, systemId#31319, internalUUID#31320, id#31321, displayId#31322, name#31323, baseUnitOfMeasure#31324, unitOfMeasures#31325, unitOfMeasureConversions#31326, productionAspect#31327, salesAspect#31328, procurementAspect#31329, productGroup#31330, filteredUnitOfMeasureConversions#31331, quantityNumerator#31332, quantityDenominator#31333, CASE WHEN (isnull(outboundUnit#31334) OR (outboundUnit#31334 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31334 END AS outboundUnit#31335]
(1599) Project
Arguments: [product#31292, plant#31293, orderDateTime#31294, productPlant#31304, timezonecode#31318, outboundUnit#31335]
(1600) Project
Arguments: [plant#31293]
(1601) Deduplicate
Arguments: [plant#31293]
(1602) Join
Arguments: Inner, (plantUuid#31289 = plant#31293)
(1603) Project
Arguments: [plantId#31288, plantUuid#31289, storageLocId#31290, storageLocUuid#31291]
(1604) Join
Arguments: Inner, (plant#31261.internalRefUUID <=> plantUuid#31289)
(1605) Generate
Arguments: explode(filter(stockQuantities#31263, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#31291) AND (lambda x#26016.storageLocation.Id = storageLocId#31290)), lambda x#26016, false))), false, [stockQuantity#31336]
(1606) Project
Arguments: [systemId#31258, internalUUID#31259, product#31260, plant#31261, calculationDateTime#31262, stockQuantities#31263, plantId#31288, plantUuid#31289, storageLocId#31290, storageLocUuid#31291, stockQuantity#31336]
(1607) Aggregate
Arguments: [plantUuid#31289, internalUUID#31259, plant#31261, product#31260, systemId#31258], [plantUuid#31289, internalUUID#31259, plant#31261, product#31260, systemId#31258, first(calculationDateTime#31262, false) AS calculationDateTime#31337, collect_list(stockQuantity#31336, 0, 0) AS stockQuantities#31338]
(1608) Project
Arguments: [systemId#31258, internalUUID#31259, product#31260, plant#31261, calculationDateTime#31337, stockQuantities#31338]
(1609) Generate
Arguments: explode(stockQuantities#31338), false, [stockQuantity#31339]
(1610) Project
Arguments: [systemId#31258, internalUUID#31259, product#31260, plant#31261, calculationDateTime#31337, stockQuantities#31338, stockQuantity#31339]
(1611) Project
Arguments: [plant#31261.id AS plant#31340, plant#31261.internalRefUUID AS plantUuid#31341, product#31260.id AS product#31342, product#31260.internalRefUUID AS productUuid#31343, calculationDateTime#31337, stockQuantity#31339.storagelocation.id AS storageLocId#31344, stockQuantity#31339.storagelocation.internalRefUUID AS storageLocUuid#31345, stockQuantity#31339.quantity.measure AS quantity#31346, stockQuantity#31339.specialStockIndicator.code AS specialStockIndicator#31347, stockQuantity#31339.stockType.code AS stockType#31348]
(1612) Filter
Arguments: ((specialStockIndicator#31347 = ) AND (stockType#31348 = 01))
(1613) LogicalRelation
Arguments: parquet, [product#31349, plant#31350, orderDateTime#31351, planningStartDateTime#31352], false
(1614) RepartitionByExpression
Arguments: [product#31349, plant#31350], 10
(1615) Project
Arguments: [product#31349, plant#31350, orderDateTime#31351]
(1616) LogicalRelation
Arguments: parquet, [systemId#31353, internalUUID#31354, plant#31355, product#31356, blockedForReplenishmentStartingFrom#31357, productionAspect#31358, salesPlant#31359, listing#31360], false
(1617) Repartition
Arguments: 10, true
(1618) Project
Arguments: [systemId#31353, internalUUID#31354, plant#31355, product#31356, blockedForReplenishmentStartingFrom#31357, productionAspect#31358, salesPlant#31359, listing#31360, struct(systemId, systemId#31353, internalUUID, internalUUID#31354, plant, plant#31355, product, product#31356, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31357, productionAspect, productionAspect#31358, salesPlant, salesPlant#31359, listing, listing#31360) AS productPlant#31361]
(1619) Project
Arguments: [productPlant#31361]
(1620) Join
Arguments: LeftOuter, ((product#31349 <=> productPlant#31361.product.internalRefUUID) AND (plant#31350 <=> productPlant#31361.plant.internalRefUUID))
(1621) Project
Arguments: [product#31349, plant#31350, orderDateTime#31351, productPlant#31361]
(1622) SubqueryAlias
Arguments: wl
(1623) LogicalRelation
Arguments: parquet, [systemId#31362, internalUUID#31363, id#31364, displayId#31365, name#31366, category#31367, companyCode#31368, address#31369, mainDistributionChain#31370, mainPurchasingOrganization#31371, validPurchasingOrganizations#31372, productGroup#31373], false
(1624) Repartition
Arguments: 10, true
(1625) Project
Arguments: [internalUUID#31363, address#31369.timeZone.code AS timezonecode#31374]
(1626) Join
Arguments: LeftOuter, (plant#31350 <=> internalUUID#31363)
(1627) Project
Arguments: [product#31349, plant#31350, orderDateTime#31351, productPlant#31361, internalUUID#31363, CASE WHEN isnotnull(timezonecode#31374) THEN timezonecode#31374 ELSE UTC END AS timezonecode#31375]
(1628) Project
Arguments: [product#31349, plant#31350, orderDateTime#31351, productPlant#31361, timezonecode#31375]
(1629) LogicalRelation
Arguments: parquet, [systemId#31376, internalUUID#31377, id#31378, displayId#31379, name#31380, baseUnitOfMeasure#31381, unitOfMeasures#31382, unitOfMeasureConversions#31383, productionAspect#31384, salesAspect#31385, procurementAspect#31386, productGroup#31387], false
(1630) Repartition
Arguments: 10, true
(1631) Join
Arguments: LeftOuter, (product#31349 = internalUUID#31377)
(1632) Project
Arguments: [product#31349, plant#31350, orderDateTime#31351, productPlant#31361, timezonecode#31375, systemId#31376, internalUUID#31377, id#31378, displayId#31379, name#31380, baseUnitOfMeasure#31381, unitOfMeasures#31382, unitOfMeasureConversions#31383, productionAspect#31384, salesAspect#31385, procurementAspect#31386, productGroup#31387, filter(unitOfMeasureConversions#31383, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31361.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31361.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31381.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31381.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31388]
(1633) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31388.quantityNumerator), true, [quantityNumerator#31389]
(1634) Project
Arguments: [product#31349, plant#31350, orderDateTime#31351, productPlant#31361, timezonecode#31375, systemId#31376, internalUUID#31377, id#31378, displayId#31379, name#31380, baseUnitOfMeasure#31381, unitOfMeasures#31382, unitOfMeasureConversions#31383, productionAspect#31384, salesAspect#31385, procurementAspect#31386, productGroup#31387, filteredUnitOfMeasureConversions#31388, quantityNumerator#31389]
(1635) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31388.quantityDenominator), true, [quantityDenominator#31390]
(1636) Project
Arguments: [product#31349, plant#31350, orderDateTime#31351, productPlant#31361, timezonecode#31375, systemId#31376, internalUUID#31377, id#31378, displayId#31379, name#31380, baseUnitOfMeasure#31381, unitOfMeasures#31382, unitOfMeasureConversions#31383, productionAspect#31384, salesAspect#31385, procurementAspect#31386, productGroup#31387, filteredUnitOfMeasureConversions#31388, quantityNumerator#31389, quantityDenominator#31390]
(1637) Project
Arguments: [product#31349, plant#31350, orderDateTime#31351, productPlant#31361, timezonecode#31375, systemId#31376, internalUUID#31377, id#31378, displayId#31379, name#31380, baseUnitOfMeasure#31381, unitOfMeasures#31382, unitOfMeasureConversions#31383, productionAspect#31384, salesAspect#31385, procurementAspect#31386, productGroup#31387, filteredUnitOfMeasureConversions#31388, quantityNumerator#31389, quantityDenominator#31390, (cast(quantityNumerator#31389 as double) / cast(quantityDenominator#31390 as double)) AS outboundUnit#31391]
(1638) Project
Arguments: [product#31349, plant#31350, orderDateTime#31351, productPlant#31361, timezonecode#31375, systemId#31376, internalUUID#31377, id#31378, displayId#31379, name#31380, baseUnitOfMeasure#31381, unitOfMeasures#31382, unitOfMeasureConversions#31383, productionAspect#31384, salesAspect#31385, procurementAspect#31386, productGroup#31387, filteredUnitOfMeasureConversions#31388, quantityNumerator#31389, quantityDenominator#31390, CASE WHEN (isnull(outboundUnit#31391) OR (outboundUnit#31391 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31391 END AS outboundUnit#31392]
(1639) Project
Arguments: [product#31349, plant#31350, orderDateTime#31351, productPlant#31361, timezonecode#31375, outboundUnit#31392]
(1640) Join
Arguments: Inner, ((plantUuid#31341 = plant#31350) AND (productUuid#31343 = product#31349))
(1641) Filter
Arguments: (calculationDateTime#31337 <= orderDateTime#31351)
(1642) Project
Arguments: [plantUuid#31341 AS plant#31393, productUuid#31343 AS product#31394, storageLocId#31344, calculationDateTime#31337, quantity#31346]
(1643) LogicalRelation
Arguments: parquet, [systemId#31395, internalUUID#31396, product#31397, plant#31398, calculationDateTime#31399, stockQuantities#31400], false
(1644) Repartition
Arguments: 10, true
(1645) LogicalRelation
Arguments: parquet, [marketUnit#31401, description#31402, articleHierarchy#31403, defaultCurrency#31404, responsibilities#31405, replenishmentTypes#31406, distributionCenters#31407, assignedArticleHierarchyNodes#31408, minOrderQtySetting#31409, minOrderQtySettingInternal#31410, listingCheck#31411, odsSelection#31412, demandProfiles#31413, constraintProfiles#31414, optimizationProfiles#31415, orderGroupSplitProfiles#31416, supplierMinimumProfiles#31417, multipleRestrictionProfiles#31418, preferredUomSource#31419, handlingOfUnfulfilledDemands#31420, negligibleQuantitiesThreshold#31421, eventtype#31422], false
(1646) Repartition
Arguments: 10, true
(1647) Filter
Arguments: (marketUnit#31401 <=> DIP_1691)
(1648) Project
Arguments: [marketUnit#31401, description#31402, articleHierarchy#31403, defaultCurrency#31404, responsibilities#31405, replenishmentTypes#31406, distributionCenters#31407, assignedArticleHierarchyNodes#31408, minOrderQtySetting#31409, minOrderQtySettingInternal#31410, listingCheck#31411, odsSelection#31412, demandProfiles#31413, constraintProfiles#31414, optimizationProfiles#31415, orderGroupSplitProfiles#31416, supplierMinimumProfiles#31417, multipleRestrictionProfiles#31418, preferredUomSource#31419, handlingOfUnfulfilledDemands#31420, negligibleQuantitiesThreshold#31421, eventtype#31422]
(1649) Project
Arguments: [distributionCenters#31407]
(1650) Generate
Arguments: explode(distributionCenters#31407), false, [distributionCenters#31423]
(1651) Project
Arguments: [distributionCenters#31423]
(1652) Generate
Arguments: explode(distributionCenters#31423.storageLocations), false, [storageLocations#31424]
(1653) Project
Arguments: [distributionCenters#31423.id AS plantId#31425, distributionCenters#31423.internalRefUUID AS plantUuid#31426, storageLocations#31424]
(1654) Project
Arguments: [plantId#31425, plantUuid#31426, storageLocations#31424.id AS storageLocId#31427, storageLocations#31424.internalRefUUID AS storageLocUuid#31428]
(1655) LogicalRelation
Arguments: parquet, [product#31429, plant#31430, orderDateTime#31431, planningStartDateTime#31432], false
(1656) RepartitionByExpression
Arguments: [product#31429, plant#31430], 10
(1657) Project
Arguments: [product#31429, plant#31430, orderDateTime#31431]
(1658) LogicalRelation
Arguments: parquet, [systemId#31433, internalUUID#31434, plant#31435, product#31436, blockedForReplenishmentStartingFrom#31437, productionAspect#31438, salesPlant#31439, listing#31440], false
(1659) Repartition
Arguments: 10, true
(1660) Project
Arguments: [systemId#31433, internalUUID#31434, plant#31435, product#31436, blockedForReplenishmentStartingFrom#31437, productionAspect#31438, salesPlant#31439, listing#31440, struct(systemId, systemId#31433, internalUUID, internalUUID#31434, plant, plant#31435, product, product#31436, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31437, productionAspect, productionAspect#31438, salesPlant, salesPlant#31439, listing, listing#31440) AS productPlant#31441]
(1661) Project
Arguments: [productPlant#31441]
(1662) Join
Arguments: LeftOuter, ((product#31429 <=> productPlant#31441.product.internalRefUUID) AND (plant#31430 <=> productPlant#31441.plant.internalRefUUID))
(1663) Project
Arguments: [product#31429, plant#31430, orderDateTime#31431, productPlant#31441]
(1664) SubqueryAlias
Arguments: wl
(1665) LogicalRelation
Arguments: parquet, [systemId#31442, internalUUID#31443, id#31444, displayId#31445, name#31446, category#31447, companyCode#31448, address#31449, mainDistributionChain#31450, mainPurchasingOrganization#31451, validPurchasingOrganizations#31452, productGroup#31453], false
(1666) Repartition
Arguments: 10, true
(1667) Project
Arguments: [internalUUID#31443, address#31449.timeZone.code AS timezonecode#31454]
(1668) Join
Arguments: LeftOuter, (plant#31430 <=> internalUUID#31443)
(1669) Project
Arguments: [product#31429, plant#31430, orderDateTime#31431, productPlant#31441, internalUUID#31443, CASE WHEN isnotnull(timezonecode#31454) THEN timezonecode#31454 ELSE UTC END AS timezonecode#31455]
(1670) Project
Arguments: [product#31429, plant#31430, orderDateTime#31431, productPlant#31441, timezonecode#31455]
(1671) LogicalRelation
Arguments: parquet, [systemId#31456, internalUUID#31457, id#31458, displayId#31459, name#31460, baseUnitOfMeasure#31461, unitOfMeasures#31462, unitOfMeasureConversions#31463, productionAspect#31464, salesAspect#31465, procurementAspect#31466, productGroup#31467], false
(1672) Repartition
Arguments: 10, true
(1673) Join
Arguments: LeftOuter, (product#31429 = internalUUID#31457)
(1674) Project
Arguments: [product#31429, plant#31430, orderDateTime#31431, productPlant#31441, timezonecode#31455, systemId#31456, internalUUID#31457, id#31458, displayId#31459, name#31460, baseUnitOfMeasure#31461, unitOfMeasures#31462, unitOfMeasureConversions#31463, productionAspect#31464, salesAspect#31465, procurementAspect#31466, productGroup#31467, filter(unitOfMeasureConversions#31463, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31441.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31441.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31461.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31461.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31468]
(1675) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31468.quantityNumerator), true, [quantityNumerator#31469]
(1676) Project
Arguments: [product#31429, plant#31430, orderDateTime#31431, productPlant#31441, timezonecode#31455, systemId#31456, internalUUID#31457, id#31458, displayId#31459, name#31460, baseUnitOfMeasure#31461, unitOfMeasures#31462, unitOfMeasureConversions#31463, productionAspect#31464, salesAspect#31465, procurementAspect#31466, productGroup#31467, filteredUnitOfMeasureConversions#31468, quantityNumerator#31469]
(1677) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31468.quantityDenominator), true, [quantityDenominator#31470]
(1678) Project
Arguments: [product#31429, plant#31430, orderDateTime#31431, productPlant#31441, timezonecode#31455, systemId#31456, internalUUID#31457, id#31458, displayId#31459, name#31460, baseUnitOfMeasure#31461, unitOfMeasures#31462, unitOfMeasureConversions#31463, productionAspect#31464, salesAspect#31465, procurementAspect#31466, productGroup#31467, filteredUnitOfMeasureConversions#31468, quantityNumerator#31469, quantityDenominator#31470]
(1679) Project
Arguments: [product#31429, plant#31430, orderDateTime#31431, productPlant#31441, timezonecode#31455, systemId#31456, internalUUID#31457, id#31458, displayId#31459, name#31460, baseUnitOfMeasure#31461, unitOfMeasures#31462, unitOfMeasureConversions#31463, productionAspect#31464, salesAspect#31465, procurementAspect#31466, productGroup#31467, filteredUnitOfMeasureConversions#31468, quantityNumerator#31469, quantityDenominator#31470, (cast(quantityNumerator#31469 as double) / cast(quantityDenominator#31470 as double)) AS outboundUnit#31471]
(1680) Project
Arguments: [product#31429, plant#31430, orderDateTime#31431, productPlant#31441, timezonecode#31455, systemId#31456, internalUUID#31457, id#31458, displayId#31459, name#31460, baseUnitOfMeasure#31461, unitOfMeasures#31462, unitOfMeasureConversions#31463, productionAspect#31464, salesAspect#31465, procurementAspect#31466, productGroup#31467, filteredUnitOfMeasureConversions#31468, quantityNumerator#31469, quantityDenominator#31470, CASE WHEN (isnull(outboundUnit#31471) OR (outboundUnit#31471 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31471 END AS outboundUnit#31472]
(1681) Project
Arguments: [product#31429, plant#31430, orderDateTime#31431, productPlant#31441, timezonecode#31455, outboundUnit#31472]
(1682) Project
Arguments: [plant#31430]
(1683) Deduplicate
Arguments: [plant#31430]
(1684) Join
Arguments: Inner, (plantUuid#31426 = plant#31430)
(1685) Project
Arguments: [plantId#31425, plantUuid#31426, storageLocId#31427, storageLocUuid#31428]
(1686) Join
Arguments: Inner, (plant#31398.internalRefUUID <=> plantUuid#31426)
(1687) Generate
Arguments: explode(filter(stockQuantities#31400, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#31428) AND (lambda x#26016.storageLocation.Id = storageLocId#31427)), lambda x#26016, false))), false, [stockQuantity#31473]
(1688) Project
Arguments: [systemId#31395, internalUUID#31396, product#31397, plant#31398, calculationDateTime#31399, stockQuantities#31400, plantId#31425, plantUuid#31426, storageLocId#31427, storageLocUuid#31428, stockQuantity#31473]
(1689) Aggregate
Arguments: [plantUuid#31426, internalUUID#31396, plant#31398, product#31397, systemId#31395], [plantUuid#31426, internalUUID#31396, plant#31398, product#31397, systemId#31395, first(calculationDateTime#31399, false) AS calculationDateTime#31474, collect_list(stockQuantity#31473, 0, 0) AS stockQuantities#31475]
(1690) Project
Arguments: [systemId#31395, internalUUID#31396, product#31397, plant#31398, calculationDateTime#31474, stockQuantities#31475]
(1691) Generate
Arguments: explode(stockQuantities#31475), false, [stockQuantity#31476]
(1692) Project
Arguments: [systemId#31395, internalUUID#31396, product#31397, plant#31398, calculationDateTime#31474, stockQuantities#31475, stockQuantity#31476]
(1693) Project
Arguments: [plant#31398.id AS plant#31477, plant#31398.internalRefUUID AS plantUuid#31478, product#31397.id AS product#31479, product#31397.internalRefUUID AS productUuid#31480, calculationDateTime#31474, stockQuantity#31476.storagelocation.id AS storageLocId#31481, stockQuantity#31476.storagelocation.internalRefUUID AS storageLocUuid#31482, stockQuantity#31476.quantity.measure AS quantity#31483, stockQuantity#31476.specialStockIndicator.code AS specialStockIndicator#31484, stockQuantity#31476.stockType.code AS stockType#31485]
(1694) Filter
Arguments: ((specialStockIndicator#31484 = ) AND (stockType#31485 = 01))
(1695) LogicalRelation
Arguments: parquet, [product#31486, plant#31487, orderDateTime#31488, planningStartDateTime#31489], false
(1696) RepartitionByExpression
Arguments: [product#31486, plant#31487], 10
(1697) Project
Arguments: [product#31486, plant#31487, orderDateTime#31488]
(1698) LogicalRelation
Arguments: parquet, [systemId#31490, internalUUID#31491, plant#31492, product#31493, blockedForReplenishmentStartingFrom#31494, productionAspect#31495, salesPlant#31496, listing#31497], false
(1699) Repartition
Arguments: 10, true
(1700) Project
Arguments: [systemId#31490, internalUUID#31491, plant#31492, product#31493, blockedForReplenishmentStartingFrom#31494, productionAspect#31495, salesPlant#31496, listing#31497, struct(systemId, systemId#31490, internalUUID, internalUUID#31491, plant, plant#31492, product, product#31493, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31494, productionAspect, productionAspect#31495, salesPlant, salesPlant#31496, listing, listing#31497) AS productPlant#31498]
(1701) Project
Arguments: [productPlant#31498]
(1702) Join
Arguments: LeftOuter, ((product#31486 <=> productPlant#31498.product.internalRefUUID) AND (plant#31487 <=> productPlant#31498.plant.internalRefUUID))
(1703) Project
Arguments: [product#31486, plant#31487, orderDateTime#31488, productPlant#31498]
(1704) SubqueryAlias
Arguments: wl
(1705) LogicalRelation
Arguments: parquet, [systemId#31499, internalUUID#31500, id#31501, displayId#31502, name#31503, category#31504, companyCode#31505, address#31506, mainDistributionChain#31507, mainPurchasingOrganization#31508, validPurchasingOrganizations#31509, productGroup#31510], false
(1706) Repartition
Arguments: 10, true
(1707) Project
Arguments: [internalUUID#31500, address#31506.timeZone.code AS timezonecode#31511]
(1708) Join
Arguments: LeftOuter, (plant#31487 <=> internalUUID#31500)
(1709) Project
Arguments: [product#31486, plant#31487, orderDateTime#31488, productPlant#31498, internalUUID#31500, CASE WHEN isnotnull(timezonecode#31511) THEN timezonecode#31511 ELSE UTC END AS timezonecode#31512]
(1710) Project
Arguments: [product#31486, plant#31487, orderDateTime#31488, productPlant#31498, timezonecode#31512]
(1711) LogicalRelation
Arguments: parquet, [systemId#31513, internalUUID#31514, id#31515, displayId#31516, name#31517, baseUnitOfMeasure#31518, unitOfMeasures#31519, unitOfMeasureConversions#31520, productionAspect#31521, salesAspect#31522, procurementAspect#31523, productGroup#31524], false
(1712) Repartition
Arguments: 10, true
(1713) Join
Arguments: LeftOuter, (product#31486 = internalUUID#31514)
(1714) Project
Arguments: [product#31486, plant#31487, orderDateTime#31488, productPlant#31498, timezonecode#31512, systemId#31513, internalUUID#31514, id#31515, displayId#31516, name#31517, baseUnitOfMeasure#31518, unitOfMeasures#31519, unitOfMeasureConversions#31520, productionAspect#31521, salesAspect#31522, procurementAspect#31523, productGroup#31524, filter(unitOfMeasureConversions#31520, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31498.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31498.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31518.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31518.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31525]
(1715) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31525.quantityNumerator), true, [quantityNumerator#31526]
(1716) Project
Arguments: [product#31486, plant#31487, orderDateTime#31488, productPlant#31498, timezonecode#31512, systemId#31513, internalUUID#31514, id#31515, displayId#31516, name#31517, baseUnitOfMeasure#31518, unitOfMeasures#31519, unitOfMeasureConversions#31520, productionAspect#31521, salesAspect#31522, procurementAspect#31523, productGroup#31524, filteredUnitOfMeasureConversions#31525, quantityNumerator#31526]
(1717) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31525.quantityDenominator), true, [quantityDenominator#31527]
(1718) Project
Arguments: [product#31486, plant#31487, orderDateTime#31488, productPlant#31498, timezonecode#31512, systemId#31513, internalUUID#31514, id#31515, displayId#31516, name#31517, baseUnitOfMeasure#31518, unitOfMeasures#31519, unitOfMeasureConversions#31520, productionAspect#31521, salesAspect#31522, procurementAspect#31523, productGroup#31524, filteredUnitOfMeasureConversions#31525, quantityNumerator#31526, quantityDenominator#31527]
(1719) Project
Arguments: [product#31486, plant#31487, orderDateTime#31488, productPlant#31498, timezonecode#31512, systemId#31513, internalUUID#31514, id#31515, displayId#31516, name#31517, baseUnitOfMeasure#31518, unitOfMeasures#31519, unitOfMeasureConversions#31520, productionAspect#31521, salesAspect#31522, procurementAspect#31523, productGroup#31524, filteredUnitOfMeasureConversions#31525, quantityNumerator#31526, quantityDenominator#31527, (cast(quantityNumerator#31526 as double) / cast(quantityDenominator#31527 as double)) AS outboundUnit#31528]
(1720) Project
Arguments: [product#31486, plant#31487, orderDateTime#31488, productPlant#31498, timezonecode#31512, systemId#31513, internalUUID#31514, id#31515, displayId#31516, name#31517, baseUnitOfMeasure#31518, unitOfMeasures#31519, unitOfMeasureConversions#31520, productionAspect#31521, salesAspect#31522, procurementAspect#31523, productGroup#31524, filteredUnitOfMeasureConversions#31525, quantityNumerator#31526, quantityDenominator#31527, CASE WHEN (isnull(outboundUnit#31528) OR (outboundUnit#31528 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31528 END AS outboundUnit#31529]
(1721) Project
Arguments: [product#31486, plant#31487, orderDateTime#31488, productPlant#31498, timezonecode#31512, outboundUnit#31529]
(1722) Join
Arguments: Inner, ((plantUuid#31478 = plant#31487) AND (productUuid#31480 = product#31486))
(1723) Filter
Arguments: (calculationDateTime#31474 <= orderDateTime#31488)
(1724) Project
Arguments: [plantUuid#31478 AS plant#31530, productUuid#31480 AS product#31531, storageLocId#31481, calculationDateTime#31474, quantity#31483]
(1725) Aggregate
Arguments: [plant#31530, product#31531, storageLocId#31481], [plant#31530, product#31531, storageLocId#31481, max(calculationDateTime#31474) AS max_calc_datetime#31532]
(1726) Join
Arguments: Inner, ((((plant#31393 <=> plant#31530) AND (product#31394 <=> product#31531)) AND (storageLocId#31344 <=> storageLocId#31481)) AND (calculationDateTime#31337 <=> max_calc_datetime#31532))
(1727) Project
Arguments: [plant#31393, product#31394, storageLocId#31344, calculationDateTime#31337, quantity#31346]
(1728) Aggregate
Arguments: [product#31394, plant#31393], [product#31394, plant#31393, sum(quantity#31346) AS quantitySum#31533, min(calculationDateTime#31337) AS minCalculationDateTime#31534]
(1729) Project
Arguments: [product#31394, plant#31393, quantitySum#31533, minCalculationDateTime#31534, round(quantitySum#31533, 0) AS roundedQuantitySum#31535]
(1730) Join
Arguments: LeftOuter, ((plant#31215 = plant#31393) AND (product#31214 = product#31394))
(1731) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, roundedQuantitySum#31535, minCalculationDateTime#31534]
(1732) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, roundedQuantitySum#31535, minCalculationDateTime#31534, CASE WHEN isnotnull(minCalculationDateTime#31534) THEN minCalculationDateTime#31534 ELSE orderDateTime#31216 END AS stockDatetime#31536]
(1733) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, roundedQuantitySum#31535, minCalculationDateTime#31534, stockDatetime#31536, CASE WHEN isnotnull(roundedQuantitySum#31535) THEN array(roundedQuantitySum#31535) ELSE array(0.0) END AS stockBatchQuantities#31537]
(1734) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, roundedQuantitySum#31535, minCalculationDateTime#31534, stockDatetime#31536, stockBatchQuantities#31537, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#31538]
(1735) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, roundedQuantitySum#31535, stockDatetime#31536, stockBatchQuantities#31537, stockBatchShelfLifeEndDatetimes#31538]
(1736) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, stockDatetime#31536, stockBatchQuantities#31537, stockBatchShelfLifeEndDatetimes#31538]
(1737) LogicalRelation
Arguments: parquet, [product#31539, plant#31540, demandChannel#31541, demandStream#31542, considerVariance#31543, demandTimeBuckets#31544, demandPointInTimeStart#31545, demandPointInTimeEnd#31546, demandPointInTime#31547], false
(1738) Join
Arguments: LeftOuter, ((product#31214 = product#31539) AND (plant#31215 = plant#31540))
(1739) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, stockDatetime#31536, stockBatchQuantities#31537, stockBatchShelfLifeEndDatetimes#31538, demandChannel#31541, demandStream#31542, considerVariance#31543, demandTimeBuckets#31544, demandPointInTimeStart#31545, demandPointInTimeEnd#31546, demandPointInTime#31547, product#31539, plant#31540]
(1740) Project
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, stockDatetime#31536, stockBatchQuantities#31537, stockBatchShelfLifeEndDatetimes#31538, demandChannel#31541, demandStream#31542, considerVariance#31543, demandTimeBuckets#31544, demandPointInTimeStart#31545, demandPointInTimeEnd#31546, demandPointInTime#31547, CASE WHEN isnotnull(product#31539) THEN struct(demandChannel, demandChannel#31541, demandStream, demandStream#31542, considerVariance, considerVariance#31543, demandTimeBuckets, demandTimeBuckets#31544, demandPointInTimeStart, demandPointInTimeStart#31545, demandPointInTimeEnd, demandPointInTimeEnd#31546, demandPointInTime, demandPointInTime#31547) 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#31548]
(1741) Aggregate
Arguments: [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, stockDatetime#31536, stockBatchQuantities#31537, stockBatchShelfLifeEndDatetimes#31538], [product#31214, plant#31215, orderDateTime#31216, productPlant#31226, timezonecode#31240, outboundUnit#31257, stockDatetime#31536, stockBatchQuantities#31537, stockBatchShelfLifeEndDatetimes#31538, collect_list(rawDemands#31548, 0, 0) AS rawDemands#31549]
(1742) DeserializeToObject
Arguments: createexternalrow(invoke(product#31214.toString()), invoke(plant#31215.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#31216)), if (isnull(productPlant#31226)) null else createexternalrow(invoke(productPlant#31226.systemId.toString()), invoke(productPlant#31226.internalUUID.toString()), if (isnull(productPlant#31226.plant)) null else createexternalrow(invoke(productPlant#31226.plant.internalRefUUID.toString()), invoke(productPlant#31226.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#31226.product)) null else createexternalrow(invoke(productPlant#31226.product.internalRefUUID.toString()), invoke(productPlant#31226.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#31226.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#31226.productionAspect)) null else createexternalrow(if (isnull(productPlant#31226.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#31226.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#31226.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#31226.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#31226.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#31226.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#31226.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#31226.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#31226.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#31226.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#31226.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#31226.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#31226.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#31226.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#31226.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#31226.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#31226.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#31226.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#31226.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#31226.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#31226.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#31226.salesPlant)) null else createexternalrow(if (isnull(productPlant#31226.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#31226.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#31226.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, 3800), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#31226.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#31240.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#31257)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#31536)), mapobjects(lambdavariable(MapObject, DoubleType, true, 3801), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 3801) as double))), stockBatchQuantities#31537, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 3802), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 3802) as timestamp)))), stockBatchShelfLifeEndDatetimes#31538, 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, 3803), 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, 3803))) 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, 3803).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, 3803).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, 3803).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).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, 3803).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, 3803).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, 3803).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).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, 3803).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#31549, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#26378: org.apache.spark.sql.Row
(1743) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, interface org.apache.spark.sql.Row, [StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)], obj#26383: org.apache.spark.sql.Row
(1744) 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#31550, 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#31551, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3791), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3791), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3792), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3792), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3793), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3793), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3794), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3794), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3795), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3795), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#31552, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3797), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3797), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3798), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3798), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3799), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3799), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#31553]
(1745) Join
Arguments: LeftOuter, ((plant#31551 <=> plant#30890) AND (product#31550 <=> product#30889))
(1746) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, stockBatchShelfLifeEndDatetimes#31213, plant#31551, dayBucketDemands#31552, pointInTimeDemands#31553]
(1747) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, stockBatchShelfLifeEndDatetimes#31213, dayBucketDemands#31552, pointInTimeDemands#31553]
(1748) LogicalRelation
Arguments: parquet, [product#31554, plant#31555, orderDateTime#31556, planningStartDateTime#31557], false
(1749) RepartitionByExpression
Arguments: [product#31554, plant#31555], 10
(1750) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556]
(1751) LogicalRelation
Arguments: parquet, [systemId#31558, internalUUID#31559, plant#31560, product#31561, blockedForReplenishmentStartingFrom#31562, productionAspect#31563, salesPlant#31564, listing#31565], false
(1752) Repartition
Arguments: 10, true
(1753) Project
Arguments: [systemId#31558, internalUUID#31559, plant#31560, product#31561, blockedForReplenishmentStartingFrom#31562, productionAspect#31563, salesPlant#31564, listing#31565, struct(systemId, systemId#31558, internalUUID, internalUUID#31559, plant, plant#31560, product, product#31561, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31562, productionAspect, productionAspect#31563, salesPlant, salesPlant#31564, listing, listing#31565) AS productPlant#31566]
(1754) Project
Arguments: [productPlant#31566]
(1755) Join
Arguments: LeftOuter, ((product#31554 <=> productPlant#31566.product.internalRefUUID) AND (plant#31555 <=> productPlant#31566.plant.internalRefUUID))
(1756) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566]
(1757) SubqueryAlias
Arguments: wl
(1758) LogicalRelation
Arguments: parquet, [systemId#31567, internalUUID#31568, id#31569, displayId#31570, name#31571, category#31572, companyCode#31573, address#31574, mainDistributionChain#31575, mainPurchasingOrganization#31576, validPurchasingOrganizations#31577, productGroup#31578], false
(1759) Repartition
Arguments: 10, true
(1760) Project
Arguments: [internalUUID#31568, address#31574.timeZone.code AS timezonecode#31579]
(1761) Join
Arguments: LeftOuter, (plant#31555 <=> internalUUID#31568)
(1762) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, internalUUID#31568, CASE WHEN isnotnull(timezonecode#31579) THEN timezonecode#31579 ELSE UTC END AS timezonecode#31580]
(1763) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580]
(1764) LogicalRelation
Arguments: parquet, [systemId#31581, internalUUID#31582, id#31583, displayId#31584, name#31585, baseUnitOfMeasure#31586, unitOfMeasures#31587, unitOfMeasureConversions#31588, productionAspect#31589, salesAspect#31590, procurementAspect#31591, productGroup#31592], false
(1765) Repartition
Arguments: 10, true
(1766) Join
Arguments: LeftOuter, (product#31554 = internalUUID#31582)
(1767) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, systemId#31581, internalUUID#31582, id#31583, displayId#31584, name#31585, baseUnitOfMeasure#31586, unitOfMeasures#31587, unitOfMeasureConversions#31588, productionAspect#31589, salesAspect#31590, procurementAspect#31591, productGroup#31592, filter(unitOfMeasureConversions#31588, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31566.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31566.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31586.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31586.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31593]
(1768) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31593.quantityNumerator), true, [quantityNumerator#31594]
(1769) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, systemId#31581, internalUUID#31582, id#31583, displayId#31584, name#31585, baseUnitOfMeasure#31586, unitOfMeasures#31587, unitOfMeasureConversions#31588, productionAspect#31589, salesAspect#31590, procurementAspect#31591, productGroup#31592, filteredUnitOfMeasureConversions#31593, quantityNumerator#31594]
(1770) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31593.quantityDenominator), true, [quantityDenominator#31595]
(1771) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, systemId#31581, internalUUID#31582, id#31583, displayId#31584, name#31585, baseUnitOfMeasure#31586, unitOfMeasures#31587, unitOfMeasureConversions#31588, productionAspect#31589, salesAspect#31590, procurementAspect#31591, productGroup#31592, filteredUnitOfMeasureConversions#31593, quantityNumerator#31594, quantityDenominator#31595]
(1772) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, systemId#31581, internalUUID#31582, id#31583, displayId#31584, name#31585, baseUnitOfMeasure#31586, unitOfMeasures#31587, unitOfMeasureConversions#31588, productionAspect#31589, salesAspect#31590, procurementAspect#31591, productGroup#31592, filteredUnitOfMeasureConversions#31593, quantityNumerator#31594, quantityDenominator#31595, (cast(quantityNumerator#31594 as double) / cast(quantityDenominator#31595 as double)) AS outboundUnit#31596]
(1773) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, systemId#31581, internalUUID#31582, id#31583, displayId#31584, name#31585, baseUnitOfMeasure#31586, unitOfMeasures#31587, unitOfMeasureConversions#31588, productionAspect#31589, salesAspect#31590, procurementAspect#31591, productGroup#31592, filteredUnitOfMeasureConversions#31593, quantityNumerator#31594, quantityDenominator#31595, CASE WHEN (isnull(outboundUnit#31596) OR (outboundUnit#31596 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31596 END AS outboundUnit#31597]
(1774) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, outboundUnit#31597]
(1775) LogicalRelation
Arguments: parquet, [systemId#31598, internalUUID#31599, product#31600, plant#31601, calculationDateTime#31602, stockQuantities#31603], false
(1776) Repartition
Arguments: 10, true
(1777) LogicalRelation
Arguments: parquet, [marketUnit#31604, description#31605, articleHierarchy#31606, defaultCurrency#31607, responsibilities#31608, replenishmentTypes#31609, distributionCenters#31610, assignedArticleHierarchyNodes#31611, minOrderQtySetting#31612, minOrderQtySettingInternal#31613, listingCheck#31614, odsSelection#31615, demandProfiles#31616, constraintProfiles#31617, optimizationProfiles#31618, orderGroupSplitProfiles#31619, supplierMinimumProfiles#31620, multipleRestrictionProfiles#31621, preferredUomSource#31622, handlingOfUnfulfilledDemands#31623, negligibleQuantitiesThreshold#31624, eventtype#31625], false
(1778) Repartition
Arguments: 10, true
(1779) Filter
Arguments: (marketUnit#31604 <=> DIP_1691)
(1780) Project
Arguments: [marketUnit#31604, description#31605, articleHierarchy#31606, defaultCurrency#31607, responsibilities#31608, replenishmentTypes#31609, distributionCenters#31610, assignedArticleHierarchyNodes#31611, minOrderQtySetting#31612, minOrderQtySettingInternal#31613, listingCheck#31614, odsSelection#31615, demandProfiles#31616, constraintProfiles#31617, optimizationProfiles#31618, orderGroupSplitProfiles#31619, supplierMinimumProfiles#31620, multipleRestrictionProfiles#31621, preferredUomSource#31622, handlingOfUnfulfilledDemands#31623, negligibleQuantitiesThreshold#31624, eventtype#31625]
(1781) Project
Arguments: [distributionCenters#31610]
(1782) Generate
Arguments: explode(distributionCenters#31610), false, [distributionCenters#31626]
(1783) Project
Arguments: [distributionCenters#31626]
(1784) Generate
Arguments: explode(distributionCenters#31626.storageLocations), false, [storageLocations#31627]
(1785) Project
Arguments: [distributionCenters#31626.id AS plantId#31628, distributionCenters#31626.internalRefUUID AS plantUuid#31629, storageLocations#31627]
(1786) Project
Arguments: [plantId#31628, plantUuid#31629, storageLocations#31627.id AS storageLocId#31630, storageLocations#31627.internalRefUUID AS storageLocUuid#31631]
(1787) LogicalRelation
Arguments: parquet, [product#31632, plant#31633, orderDateTime#31634, planningStartDateTime#31635], false
(1788) RepartitionByExpression
Arguments: [product#31632, plant#31633], 10
(1789) Project
Arguments: [product#31632, plant#31633, orderDateTime#31634]
(1790) LogicalRelation
Arguments: parquet, [systemId#31636, internalUUID#31637, plant#31638, product#31639, blockedForReplenishmentStartingFrom#31640, productionAspect#31641, salesPlant#31642, listing#31643], false
(1791) Repartition
Arguments: 10, true
(1792) Project
Arguments: [systemId#31636, internalUUID#31637, plant#31638, product#31639, blockedForReplenishmentStartingFrom#31640, productionAspect#31641, salesPlant#31642, listing#31643, struct(systemId, systemId#31636, internalUUID, internalUUID#31637, plant, plant#31638, product, product#31639, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31640, productionAspect, productionAspect#31641, salesPlant, salesPlant#31642, listing, listing#31643) AS productPlant#31644]
(1793) Project
Arguments: [productPlant#31644]
(1794) Join
Arguments: LeftOuter, ((product#31632 <=> productPlant#31644.product.internalRefUUID) AND (plant#31633 <=> productPlant#31644.plant.internalRefUUID))
(1795) Project
Arguments: [product#31632, plant#31633, orderDateTime#31634, productPlant#31644]
(1796) SubqueryAlias
Arguments: wl
(1797) LogicalRelation
Arguments: parquet, [systemId#31645, internalUUID#31646, id#31647, displayId#31648, name#31649, category#31650, companyCode#31651, address#31652, mainDistributionChain#31653, mainPurchasingOrganization#31654, validPurchasingOrganizations#31655, productGroup#31656], false
(1798) Repartition
Arguments: 10, true
(1799) Project
Arguments: [internalUUID#31646, address#31652.timeZone.code AS timezonecode#31657]
(1800) Join
Arguments: LeftOuter, (plant#31633 <=> internalUUID#31646)
(1801) Project
Arguments: [product#31632, plant#31633, orderDateTime#31634, productPlant#31644, internalUUID#31646, CASE WHEN isnotnull(timezonecode#31657) THEN timezonecode#31657 ELSE UTC END AS timezonecode#31658]
(1802) Project
Arguments: [product#31632, plant#31633, orderDateTime#31634, productPlant#31644, timezonecode#31658]
(1803) LogicalRelation
Arguments: parquet, [systemId#31659, internalUUID#31660, id#31661, displayId#31662, name#31663, baseUnitOfMeasure#31664, unitOfMeasures#31665, unitOfMeasureConversions#31666, productionAspect#31667, salesAspect#31668, procurementAspect#31669, productGroup#31670], false
(1804) Repartition
Arguments: 10, true
(1805) Join
Arguments: LeftOuter, (product#31632 = internalUUID#31660)
(1806) Project
Arguments: [product#31632, plant#31633, orderDateTime#31634, productPlant#31644, timezonecode#31658, systemId#31659, internalUUID#31660, id#31661, displayId#31662, name#31663, baseUnitOfMeasure#31664, unitOfMeasures#31665, unitOfMeasureConversions#31666, productionAspect#31667, salesAspect#31668, procurementAspect#31669, productGroup#31670, filter(unitOfMeasureConversions#31666, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31644.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31644.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31664.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31664.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31671]
(1807) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31671.quantityNumerator), true, [quantityNumerator#31672]
(1808) Project
Arguments: [product#31632, plant#31633, orderDateTime#31634, productPlant#31644, timezonecode#31658, systemId#31659, internalUUID#31660, id#31661, displayId#31662, name#31663, baseUnitOfMeasure#31664, unitOfMeasures#31665, unitOfMeasureConversions#31666, productionAspect#31667, salesAspect#31668, procurementAspect#31669, productGroup#31670, filteredUnitOfMeasureConversions#31671, quantityNumerator#31672]
(1809) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31671.quantityDenominator), true, [quantityDenominator#31673]
(1810) Project
Arguments: [product#31632, plant#31633, orderDateTime#31634, productPlant#31644, timezonecode#31658, systemId#31659, internalUUID#31660, id#31661, displayId#31662, name#31663, baseUnitOfMeasure#31664, unitOfMeasures#31665, unitOfMeasureConversions#31666, productionAspect#31667, salesAspect#31668, procurementAspect#31669, productGroup#31670, filteredUnitOfMeasureConversions#31671, quantityNumerator#31672, quantityDenominator#31673]
(1811) Project
Arguments: [product#31632, plant#31633, orderDateTime#31634, productPlant#31644, timezonecode#31658, systemId#31659, internalUUID#31660, id#31661, displayId#31662, name#31663, baseUnitOfMeasure#31664, unitOfMeasures#31665, unitOfMeasureConversions#31666, productionAspect#31667, salesAspect#31668, procurementAspect#31669, productGroup#31670, filteredUnitOfMeasureConversions#31671, quantityNumerator#31672, quantityDenominator#31673, (cast(quantityNumerator#31672 as double) / cast(quantityDenominator#31673 as double)) AS outboundUnit#31674]
(1812) Project
Arguments: [product#31632, plant#31633, orderDateTime#31634, productPlant#31644, timezonecode#31658, systemId#31659, internalUUID#31660, id#31661, displayId#31662, name#31663, baseUnitOfMeasure#31664, unitOfMeasures#31665, unitOfMeasureConversions#31666, productionAspect#31667, salesAspect#31668, procurementAspect#31669, productGroup#31670, filteredUnitOfMeasureConversions#31671, quantityNumerator#31672, quantityDenominator#31673, CASE WHEN (isnull(outboundUnit#31674) OR (outboundUnit#31674 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31674 END AS outboundUnit#31675]
(1813) Project
Arguments: [product#31632, plant#31633, orderDateTime#31634, productPlant#31644, timezonecode#31658, outboundUnit#31675]
(1814) Project
Arguments: [plant#31633]
(1815) Deduplicate
Arguments: [plant#31633]
(1816) Join
Arguments: Inner, (plantUuid#31629 = plant#31633)
(1817) Project
Arguments: [plantId#31628, plantUuid#31629, storageLocId#31630, storageLocUuid#31631]
(1818) Join
Arguments: Inner, (plant#31601.internalRefUUID <=> plantUuid#31629)
(1819) Generate
Arguments: explode(filter(stockQuantities#31603, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#31631) AND (lambda x#26016.storageLocation.Id = storageLocId#31630)), lambda x#26016, false))), false, [stockQuantity#31676]
(1820) Project
Arguments: [systemId#31598, internalUUID#31599, product#31600, plant#31601, calculationDateTime#31602, stockQuantities#31603, plantId#31628, plantUuid#31629, storageLocId#31630, storageLocUuid#31631, stockQuantity#31676]
(1821) Aggregate
Arguments: [plantUuid#31629, internalUUID#31599, plant#31601, product#31600, systemId#31598], [plantUuid#31629, internalUUID#31599, plant#31601, product#31600, systemId#31598, first(calculationDateTime#31602, false) AS calculationDateTime#31677, collect_list(stockQuantity#31676, 0, 0) AS stockQuantities#31678]
(1822) Project
Arguments: [systemId#31598, internalUUID#31599, product#31600, plant#31601, calculationDateTime#31677, stockQuantities#31678]
(1823) Generate
Arguments: explode(stockQuantities#31678), false, [stockQuantity#31679]
(1824) Project
Arguments: [systemId#31598, internalUUID#31599, product#31600, plant#31601, calculationDateTime#31677, stockQuantities#31678, stockQuantity#31679]
(1825) Project
Arguments: [plant#31601.id AS plant#31680, plant#31601.internalRefUUID AS plantUuid#31681, product#31600.id AS product#31682, product#31600.internalRefUUID AS productUuid#31683, calculationDateTime#31677, stockQuantity#31679.storagelocation.id AS storageLocId#31684, stockQuantity#31679.storagelocation.internalRefUUID AS storageLocUuid#31685, stockQuantity#31679.quantity.measure AS quantity#31686, stockQuantity#31679.specialStockIndicator.code AS specialStockIndicator#31687, stockQuantity#31679.stockType.code AS stockType#31688]
(1826) Filter
Arguments: ((specialStockIndicator#31687 = ) AND (stockType#31688 = 01))
(1827) LogicalRelation
Arguments: parquet, [product#31689, plant#31690, orderDateTime#31691, planningStartDateTime#31692], false
(1828) RepartitionByExpression
Arguments: [product#31689, plant#31690], 10
(1829) Project
Arguments: [product#31689, plant#31690, orderDateTime#31691]
(1830) LogicalRelation
Arguments: parquet, [systemId#31693, internalUUID#31694, plant#31695, product#31696, blockedForReplenishmentStartingFrom#31697, productionAspect#31698, salesPlant#31699, listing#31700], false
(1831) Repartition
Arguments: 10, true
(1832) Project
Arguments: [systemId#31693, internalUUID#31694, plant#31695, product#31696, blockedForReplenishmentStartingFrom#31697, productionAspect#31698, salesPlant#31699, listing#31700, struct(systemId, systemId#31693, internalUUID, internalUUID#31694, plant, plant#31695, product, product#31696, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31697, productionAspect, productionAspect#31698, salesPlant, salesPlant#31699, listing, listing#31700) AS productPlant#31701]
(1833) Project
Arguments: [productPlant#31701]
(1834) Join
Arguments: LeftOuter, ((product#31689 <=> productPlant#31701.product.internalRefUUID) AND (plant#31690 <=> productPlant#31701.plant.internalRefUUID))
(1835) Project
Arguments: [product#31689, plant#31690, orderDateTime#31691, productPlant#31701]
(1836) SubqueryAlias
Arguments: wl
(1837) LogicalRelation
Arguments: parquet, [systemId#31702, internalUUID#31703, id#31704, displayId#31705, name#31706, category#31707, companyCode#31708, address#31709, mainDistributionChain#31710, mainPurchasingOrganization#31711, validPurchasingOrganizations#31712, productGroup#31713], false
(1838) Repartition
Arguments: 10, true
(1839) Project
Arguments: [internalUUID#31703, address#31709.timeZone.code AS timezonecode#31714]
(1840) Join
Arguments: LeftOuter, (plant#31690 <=> internalUUID#31703)
(1841) Project
Arguments: [product#31689, plant#31690, orderDateTime#31691, productPlant#31701, internalUUID#31703, CASE WHEN isnotnull(timezonecode#31714) THEN timezonecode#31714 ELSE UTC END AS timezonecode#31715]
(1842) Project
Arguments: [product#31689, plant#31690, orderDateTime#31691, productPlant#31701, timezonecode#31715]
(1843) LogicalRelation
Arguments: parquet, [systemId#31716, internalUUID#31717, id#31718, displayId#31719, name#31720, baseUnitOfMeasure#31721, unitOfMeasures#31722, unitOfMeasureConversions#31723, productionAspect#31724, salesAspect#31725, procurementAspect#31726, productGroup#31727], false
(1844) Repartition
Arguments: 10, true
(1845) Join
Arguments: LeftOuter, (product#31689 = internalUUID#31717)
(1846) Project
Arguments: [product#31689, plant#31690, orderDateTime#31691, productPlant#31701, timezonecode#31715, systemId#31716, internalUUID#31717, id#31718, displayId#31719, name#31720, baseUnitOfMeasure#31721, unitOfMeasures#31722, unitOfMeasureConversions#31723, productionAspect#31724, salesAspect#31725, procurementAspect#31726, productGroup#31727, filter(unitOfMeasureConversions#31723, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31701.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31701.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31721.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31721.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31728]
(1847) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31728.quantityNumerator), true, [quantityNumerator#31729]
(1848) Project
Arguments: [product#31689, plant#31690, orderDateTime#31691, productPlant#31701, timezonecode#31715, systemId#31716, internalUUID#31717, id#31718, displayId#31719, name#31720, baseUnitOfMeasure#31721, unitOfMeasures#31722, unitOfMeasureConversions#31723, productionAspect#31724, salesAspect#31725, procurementAspect#31726, productGroup#31727, filteredUnitOfMeasureConversions#31728, quantityNumerator#31729]
(1849) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31728.quantityDenominator), true, [quantityDenominator#31730]
(1850) Project
Arguments: [product#31689, plant#31690, orderDateTime#31691, productPlant#31701, timezonecode#31715, systemId#31716, internalUUID#31717, id#31718, displayId#31719, name#31720, baseUnitOfMeasure#31721, unitOfMeasures#31722, unitOfMeasureConversions#31723, productionAspect#31724, salesAspect#31725, procurementAspect#31726, productGroup#31727, filteredUnitOfMeasureConversions#31728, quantityNumerator#31729, quantityDenominator#31730]
(1851) Project
Arguments: [product#31689, plant#31690, orderDateTime#31691, productPlant#31701, timezonecode#31715, systemId#31716, internalUUID#31717, id#31718, displayId#31719, name#31720, baseUnitOfMeasure#31721, unitOfMeasures#31722, unitOfMeasureConversions#31723, productionAspect#31724, salesAspect#31725, procurementAspect#31726, productGroup#31727, filteredUnitOfMeasureConversions#31728, quantityNumerator#31729, quantityDenominator#31730, (cast(quantityNumerator#31729 as double) / cast(quantityDenominator#31730 as double)) AS outboundUnit#31731]
(1852) Project
Arguments: [product#31689, plant#31690, orderDateTime#31691, productPlant#31701, timezonecode#31715, systemId#31716, internalUUID#31717, id#31718, displayId#31719, name#31720, baseUnitOfMeasure#31721, unitOfMeasures#31722, unitOfMeasureConversions#31723, productionAspect#31724, salesAspect#31725, procurementAspect#31726, productGroup#31727, filteredUnitOfMeasureConversions#31728, quantityNumerator#31729, quantityDenominator#31730, CASE WHEN (isnull(outboundUnit#31731) OR (outboundUnit#31731 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31731 END AS outboundUnit#31732]
(1853) Project
Arguments: [product#31689, plant#31690, orderDateTime#31691, productPlant#31701, timezonecode#31715, outboundUnit#31732]
(1854) Join
Arguments: Inner, ((plantUuid#31681 = plant#31690) AND (productUuid#31683 = product#31689))
(1855) Filter
Arguments: (calculationDateTime#31677 <= orderDateTime#31691)
(1856) Project
Arguments: [plantUuid#31681 AS plant#31733, productUuid#31683 AS product#31734, storageLocId#31684, calculationDateTime#31677, quantity#31686]
(1857) LogicalRelation
Arguments: parquet, [systemId#31735, internalUUID#31736, product#31737, plant#31738, calculationDateTime#31739, stockQuantities#31740], false
(1858) Repartition
Arguments: 10, true
(1859) LogicalRelation
Arguments: parquet, [marketUnit#31741, description#31742, articleHierarchy#31743, defaultCurrency#31744, responsibilities#31745, replenishmentTypes#31746, distributionCenters#31747, assignedArticleHierarchyNodes#31748, minOrderQtySetting#31749, minOrderQtySettingInternal#31750, listingCheck#31751, odsSelection#31752, demandProfiles#31753, constraintProfiles#31754, optimizationProfiles#31755, orderGroupSplitProfiles#31756, supplierMinimumProfiles#31757, multipleRestrictionProfiles#31758, preferredUomSource#31759, handlingOfUnfulfilledDemands#31760, negligibleQuantitiesThreshold#31761, eventtype#31762], false
(1860) Repartition
Arguments: 10, true
(1861) Filter
Arguments: (marketUnit#31741 <=> DIP_1691)
(1862) Project
Arguments: [marketUnit#31741, description#31742, articleHierarchy#31743, defaultCurrency#31744, responsibilities#31745, replenishmentTypes#31746, distributionCenters#31747, assignedArticleHierarchyNodes#31748, minOrderQtySetting#31749, minOrderQtySettingInternal#31750, listingCheck#31751, odsSelection#31752, demandProfiles#31753, constraintProfiles#31754, optimizationProfiles#31755, orderGroupSplitProfiles#31756, supplierMinimumProfiles#31757, multipleRestrictionProfiles#31758, preferredUomSource#31759, handlingOfUnfulfilledDemands#31760, negligibleQuantitiesThreshold#31761, eventtype#31762]
(1863) Project
Arguments: [distributionCenters#31747]
(1864) Generate
Arguments: explode(distributionCenters#31747), false, [distributionCenters#31763]
(1865) Project
Arguments: [distributionCenters#31763]
(1866) Generate
Arguments: explode(distributionCenters#31763.storageLocations), false, [storageLocations#31764]
(1867) Project
Arguments: [distributionCenters#31763.id AS plantId#31765, distributionCenters#31763.internalRefUUID AS plantUuid#31766, storageLocations#31764]
(1868) Project
Arguments: [plantId#31765, plantUuid#31766, storageLocations#31764.id AS storageLocId#31767, storageLocations#31764.internalRefUUID AS storageLocUuid#31768]
(1869) LogicalRelation
Arguments: parquet, [product#31769, plant#31770, orderDateTime#31771, planningStartDateTime#31772], false
(1870) RepartitionByExpression
Arguments: [product#31769, plant#31770], 10
(1871) Project
Arguments: [product#31769, plant#31770, orderDateTime#31771]
(1872) LogicalRelation
Arguments: parquet, [systemId#31773, internalUUID#31774, plant#31775, product#31776, blockedForReplenishmentStartingFrom#31777, productionAspect#31778, salesPlant#31779, listing#31780], false
(1873) Repartition
Arguments: 10, true
(1874) Project
Arguments: [systemId#31773, internalUUID#31774, plant#31775, product#31776, blockedForReplenishmentStartingFrom#31777, productionAspect#31778, salesPlant#31779, listing#31780, struct(systemId, systemId#31773, internalUUID, internalUUID#31774, plant, plant#31775, product, product#31776, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31777, productionAspect, productionAspect#31778, salesPlant, salesPlant#31779, listing, listing#31780) AS productPlant#31781]
(1875) Project
Arguments: [productPlant#31781]
(1876) Join
Arguments: LeftOuter, ((product#31769 <=> productPlant#31781.product.internalRefUUID) AND (plant#31770 <=> productPlant#31781.plant.internalRefUUID))
(1877) Project
Arguments: [product#31769, plant#31770, orderDateTime#31771, productPlant#31781]
(1878) SubqueryAlias
Arguments: wl
(1879) LogicalRelation
Arguments: parquet, [systemId#31782, internalUUID#31783, id#31784, displayId#31785, name#31786, category#31787, companyCode#31788, address#31789, mainDistributionChain#31790, mainPurchasingOrganization#31791, validPurchasingOrganizations#31792, productGroup#31793], false
(1880) Repartition
Arguments: 10, true
(1881) Project
Arguments: [internalUUID#31783, address#31789.timeZone.code AS timezonecode#31794]
(1882) Join
Arguments: LeftOuter, (plant#31770 <=> internalUUID#31783)
(1883) Project
Arguments: [product#31769, plant#31770, orderDateTime#31771, productPlant#31781, internalUUID#31783, CASE WHEN isnotnull(timezonecode#31794) THEN timezonecode#31794 ELSE UTC END AS timezonecode#31795]
(1884) Project
Arguments: [product#31769, plant#31770, orderDateTime#31771, productPlant#31781, timezonecode#31795]
(1885) LogicalRelation
Arguments: parquet, [systemId#31796, internalUUID#31797, id#31798, displayId#31799, name#31800, baseUnitOfMeasure#31801, unitOfMeasures#31802, unitOfMeasureConversions#31803, productionAspect#31804, salesAspect#31805, procurementAspect#31806, productGroup#31807], false
(1886) Repartition
Arguments: 10, true
(1887) Join
Arguments: LeftOuter, (product#31769 = internalUUID#31797)
(1888) Project
Arguments: [product#31769, plant#31770, orderDateTime#31771, productPlant#31781, timezonecode#31795, systemId#31796, internalUUID#31797, id#31798, displayId#31799, name#31800, baseUnitOfMeasure#31801, unitOfMeasures#31802, unitOfMeasureConversions#31803, productionAspect#31804, salesAspect#31805, procurementAspect#31806, productGroup#31807, filter(unitOfMeasureConversions#31803, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31781.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31781.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31801.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31801.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31808]
(1889) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31808.quantityNumerator), true, [quantityNumerator#31809]
(1890) Project
Arguments: [product#31769, plant#31770, orderDateTime#31771, productPlant#31781, timezonecode#31795, systemId#31796, internalUUID#31797, id#31798, displayId#31799, name#31800, baseUnitOfMeasure#31801, unitOfMeasures#31802, unitOfMeasureConversions#31803, productionAspect#31804, salesAspect#31805, procurementAspect#31806, productGroup#31807, filteredUnitOfMeasureConversions#31808, quantityNumerator#31809]
(1891) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31808.quantityDenominator), true, [quantityDenominator#31810]
(1892) Project
Arguments: [product#31769, plant#31770, orderDateTime#31771, productPlant#31781, timezonecode#31795, systemId#31796, internalUUID#31797, id#31798, displayId#31799, name#31800, baseUnitOfMeasure#31801, unitOfMeasures#31802, unitOfMeasureConversions#31803, productionAspect#31804, salesAspect#31805, procurementAspect#31806, productGroup#31807, filteredUnitOfMeasureConversions#31808, quantityNumerator#31809, quantityDenominator#31810]
(1893) Project
Arguments: [product#31769, plant#31770, orderDateTime#31771, productPlant#31781, timezonecode#31795, systemId#31796, internalUUID#31797, id#31798, displayId#31799, name#31800, baseUnitOfMeasure#31801, unitOfMeasures#31802, unitOfMeasureConversions#31803, productionAspect#31804, salesAspect#31805, procurementAspect#31806, productGroup#31807, filteredUnitOfMeasureConversions#31808, quantityNumerator#31809, quantityDenominator#31810, (cast(quantityNumerator#31809 as double) / cast(quantityDenominator#31810 as double)) AS outboundUnit#31811]
(1894) Project
Arguments: [product#31769, plant#31770, orderDateTime#31771, productPlant#31781, timezonecode#31795, systemId#31796, internalUUID#31797, id#31798, displayId#31799, name#31800, baseUnitOfMeasure#31801, unitOfMeasures#31802, unitOfMeasureConversions#31803, productionAspect#31804, salesAspect#31805, procurementAspect#31806, productGroup#31807, filteredUnitOfMeasureConversions#31808, quantityNumerator#31809, quantityDenominator#31810, CASE WHEN (isnull(outboundUnit#31811) OR (outboundUnit#31811 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31811 END AS outboundUnit#31812]
(1895) Project
Arguments: [product#31769, plant#31770, orderDateTime#31771, productPlant#31781, timezonecode#31795, outboundUnit#31812]
(1896) Project
Arguments: [plant#31770]
(1897) Deduplicate
Arguments: [plant#31770]
(1898) Join
Arguments: Inner, (plantUuid#31766 = plant#31770)
(1899) Project
Arguments: [plantId#31765, plantUuid#31766, storageLocId#31767, storageLocUuid#31768]
(1900) Join
Arguments: Inner, (plant#31738.internalRefUUID <=> plantUuid#31766)
(1901) Generate
Arguments: explode(filter(stockQuantities#31740, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#31768) AND (lambda x#26016.storageLocation.Id = storageLocId#31767)), lambda x#26016, false))), false, [stockQuantity#31813]
(1902) Project
Arguments: [systemId#31735, internalUUID#31736, product#31737, plant#31738, calculationDateTime#31739, stockQuantities#31740, plantId#31765, plantUuid#31766, storageLocId#31767, storageLocUuid#31768, stockQuantity#31813]
(1903) Aggregate
Arguments: [plantUuid#31766, internalUUID#31736, plant#31738, product#31737, systemId#31735], [plantUuid#31766, internalUUID#31736, plant#31738, product#31737, systemId#31735, first(calculationDateTime#31739, false) AS calculationDateTime#31814, collect_list(stockQuantity#31813, 0, 0) AS stockQuantities#31815]
(1904) Project
Arguments: [systemId#31735, internalUUID#31736, product#31737, plant#31738, calculationDateTime#31814, stockQuantities#31815]
(1905) Generate
Arguments: explode(stockQuantities#31815), false, [stockQuantity#31816]
(1906) Project
Arguments: [systemId#31735, internalUUID#31736, product#31737, plant#31738, calculationDateTime#31814, stockQuantities#31815, stockQuantity#31816]
(1907) Project
Arguments: [plant#31738.id AS plant#31817, plant#31738.internalRefUUID AS plantUuid#31818, product#31737.id AS product#31819, product#31737.internalRefUUID AS productUuid#31820, calculationDateTime#31814, stockQuantity#31816.storagelocation.id AS storageLocId#31821, stockQuantity#31816.storagelocation.internalRefUUID AS storageLocUuid#31822, stockQuantity#31816.quantity.measure AS quantity#31823, stockQuantity#31816.specialStockIndicator.code AS specialStockIndicator#31824, stockQuantity#31816.stockType.code AS stockType#31825]
(1908) Filter
Arguments: ((specialStockIndicator#31824 = ) AND (stockType#31825 = 01))
(1909) LogicalRelation
Arguments: parquet, [product#31826, plant#31827, orderDateTime#31828, planningStartDateTime#31829], false
(1910) RepartitionByExpression
Arguments: [product#31826, plant#31827], 10
(1911) Project
Arguments: [product#31826, plant#31827, orderDateTime#31828]
(1912) LogicalRelation
Arguments: parquet, [systemId#31830, internalUUID#31831, plant#31832, product#31833, blockedForReplenishmentStartingFrom#31834, productionAspect#31835, salesPlant#31836, listing#31837], false
(1913) Repartition
Arguments: 10, true
(1914) Project
Arguments: [systemId#31830, internalUUID#31831, plant#31832, product#31833, blockedForReplenishmentStartingFrom#31834, productionAspect#31835, salesPlant#31836, listing#31837, struct(systemId, systemId#31830, internalUUID, internalUUID#31831, plant, plant#31832, product, product#31833, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31834, productionAspect, productionAspect#31835, salesPlant, salesPlant#31836, listing, listing#31837) AS productPlant#31838]
(1915) Project
Arguments: [productPlant#31838]
(1916) Join
Arguments: LeftOuter, ((product#31826 <=> productPlant#31838.product.internalRefUUID) AND (plant#31827 <=> productPlant#31838.plant.internalRefUUID))
(1917) Project
Arguments: [product#31826, plant#31827, orderDateTime#31828, productPlant#31838]
(1918) SubqueryAlias
Arguments: wl
(1919) LogicalRelation
Arguments: parquet, [systemId#31839, internalUUID#31840, id#31841, displayId#31842, name#31843, category#31844, companyCode#31845, address#31846, mainDistributionChain#31847, mainPurchasingOrganization#31848, validPurchasingOrganizations#31849, productGroup#31850], false
(1920) Repartition
Arguments: 10, true
(1921) Project
Arguments: [internalUUID#31840, address#31846.timeZone.code AS timezonecode#31851]
(1922) Join
Arguments: LeftOuter, (plant#31827 <=> internalUUID#31840)
(1923) Project
Arguments: [product#31826, plant#31827, orderDateTime#31828, productPlant#31838, internalUUID#31840, CASE WHEN isnotnull(timezonecode#31851) THEN timezonecode#31851 ELSE UTC END AS timezonecode#31852]
(1924) Project
Arguments: [product#31826, plant#31827, orderDateTime#31828, productPlant#31838, timezonecode#31852]
(1925) LogicalRelation
Arguments: parquet, [systemId#31853, internalUUID#31854, id#31855, displayId#31856, name#31857, baseUnitOfMeasure#31858, unitOfMeasures#31859, unitOfMeasureConversions#31860, productionAspect#31861, salesAspect#31862, procurementAspect#31863, productGroup#31864], false
(1926) Repartition
Arguments: 10, true
(1927) Join
Arguments: LeftOuter, (product#31826 = internalUUID#31854)
(1928) Project
Arguments: [product#31826, plant#31827, orderDateTime#31828, productPlant#31838, timezonecode#31852, systemId#31853, internalUUID#31854, id#31855, displayId#31856, name#31857, baseUnitOfMeasure#31858, unitOfMeasures#31859, unitOfMeasureConversions#31860, productionAspect#31861, salesAspect#31862, procurementAspect#31863, productGroup#31864, filter(unitOfMeasureConversions#31860, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31838.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31838.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31858.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31858.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31865]
(1929) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31865.quantityNumerator), true, [quantityNumerator#31866]
(1930) Project
Arguments: [product#31826, plant#31827, orderDateTime#31828, productPlant#31838, timezonecode#31852, systemId#31853, internalUUID#31854, id#31855, displayId#31856, name#31857, baseUnitOfMeasure#31858, unitOfMeasures#31859, unitOfMeasureConversions#31860, productionAspect#31861, salesAspect#31862, procurementAspect#31863, productGroup#31864, filteredUnitOfMeasureConversions#31865, quantityNumerator#31866]
(1931) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31865.quantityDenominator), true, [quantityDenominator#31867]
(1932) Project
Arguments: [product#31826, plant#31827, orderDateTime#31828, productPlant#31838, timezonecode#31852, systemId#31853, internalUUID#31854, id#31855, displayId#31856, name#31857, baseUnitOfMeasure#31858, unitOfMeasures#31859, unitOfMeasureConversions#31860, productionAspect#31861, salesAspect#31862, procurementAspect#31863, productGroup#31864, filteredUnitOfMeasureConversions#31865, quantityNumerator#31866, quantityDenominator#31867]
(1933) Project
Arguments: [product#31826, plant#31827, orderDateTime#31828, productPlant#31838, timezonecode#31852, systemId#31853, internalUUID#31854, id#31855, displayId#31856, name#31857, baseUnitOfMeasure#31858, unitOfMeasures#31859, unitOfMeasureConversions#31860, productionAspect#31861, salesAspect#31862, procurementAspect#31863, productGroup#31864, filteredUnitOfMeasureConversions#31865, quantityNumerator#31866, quantityDenominator#31867, (cast(quantityNumerator#31866 as double) / cast(quantityDenominator#31867 as double)) AS outboundUnit#31868]
(1934) Project
Arguments: [product#31826, plant#31827, orderDateTime#31828, productPlant#31838, timezonecode#31852, systemId#31853, internalUUID#31854, id#31855, displayId#31856, name#31857, baseUnitOfMeasure#31858, unitOfMeasures#31859, unitOfMeasureConversions#31860, productionAspect#31861, salesAspect#31862, procurementAspect#31863, productGroup#31864, filteredUnitOfMeasureConversions#31865, quantityNumerator#31866, quantityDenominator#31867, CASE WHEN (isnull(outboundUnit#31868) OR (outboundUnit#31868 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31868 END AS outboundUnit#31869]
(1935) Project
Arguments: [product#31826, plant#31827, orderDateTime#31828, productPlant#31838, timezonecode#31852, outboundUnit#31869]
(1936) Join
Arguments: Inner, ((plantUuid#31818 = plant#31827) AND (productUuid#31820 = product#31826))
(1937) Filter
Arguments: (calculationDateTime#31814 <= orderDateTime#31828)
(1938) Project
Arguments: [plantUuid#31818 AS plant#31870, productUuid#31820 AS product#31871, storageLocId#31821, calculationDateTime#31814, quantity#31823]
(1939) Aggregate
Arguments: [plant#31870, product#31871, storageLocId#31821], [plant#31870, product#31871, storageLocId#31821, max(calculationDateTime#31814) AS max_calc_datetime#31872]
(1940) Join
Arguments: Inner, ((((plant#31733 <=> plant#31870) AND (product#31734 <=> product#31871)) AND (storageLocId#31684 <=> storageLocId#31821)) AND (calculationDateTime#31677 <=> max_calc_datetime#31872))
(1941) Project
Arguments: [plant#31733, product#31734, storageLocId#31684, calculationDateTime#31677, quantity#31686]
(1942) Aggregate
Arguments: [product#31734, plant#31733], [product#31734, plant#31733, sum(quantity#31686) AS quantitySum#31873, min(calculationDateTime#31677) AS minCalculationDateTime#31874]
(1943) Project
Arguments: [product#31734, plant#31733, quantitySum#31873, minCalculationDateTime#31874, round(quantitySum#31873, 0) AS roundedQuantitySum#31875]
(1944) Join
Arguments: LeftOuter, ((plant#31555 = plant#31733) AND (product#31554 = product#31734))
(1945) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, outboundUnit#31597, roundedQuantitySum#31875, minCalculationDateTime#31874]
(1946) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, outboundUnit#31597, roundedQuantitySum#31875, minCalculationDateTime#31874, CASE WHEN isnotnull(minCalculationDateTime#31874) THEN minCalculationDateTime#31874 ELSE orderDateTime#31556 END AS stockDatetime#31876]
(1947) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, outboundUnit#31597, roundedQuantitySum#31875, minCalculationDateTime#31874, stockDatetime#31876, CASE WHEN isnotnull(roundedQuantitySum#31875) THEN array(roundedQuantitySum#31875) ELSE array(0.0) END AS stockBatchQuantities#31877]
(1948) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, outboundUnit#31597, roundedQuantitySum#31875, minCalculationDateTime#31874, stockDatetime#31876, stockBatchQuantities#31877, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#31878]
(1949) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, outboundUnit#31597, roundedQuantitySum#31875, stockDatetime#31876, stockBatchQuantities#31877, stockBatchShelfLifeEndDatetimes#31878]
(1950) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, outboundUnit#31597, stockDatetime#31876, stockBatchQuantities#31877, stockBatchShelfLifeEndDatetimes#31878]
(1951) LogicalRelation
Arguments: parquet, [product#31879, plant#31880, orderDateTime#31881, planningStartDateTime#31882], false
(1952) RepartitionByExpression
Arguments: [product#31879, plant#31880], 10
(1953) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881]
(1954) LogicalRelation
Arguments: parquet, [systemId#31883, internalUUID#31884, plant#31885, product#31886, blockedForReplenishmentStartingFrom#31887, productionAspect#31888, salesPlant#31889, listing#31890], false
(1955) Repartition
Arguments: 10, true
(1956) Project
Arguments: [systemId#31883, internalUUID#31884, plant#31885, product#31886, blockedForReplenishmentStartingFrom#31887, productionAspect#31888, salesPlant#31889, listing#31890, struct(systemId, systemId#31883, internalUUID, internalUUID#31884, plant, plant#31885, product, product#31886, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31887, productionAspect, productionAspect#31888, salesPlant, salesPlant#31889, listing, listing#31890) AS productPlant#31891]
(1957) Project
Arguments: [productPlant#31891]
(1958) Join
Arguments: LeftOuter, ((product#31879 <=> productPlant#31891.product.internalRefUUID) AND (plant#31880 <=> productPlant#31891.plant.internalRefUUID))
(1959) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891]
(1960) SubqueryAlias
Arguments: wl
(1961) LogicalRelation
Arguments: parquet, [systemId#31892, internalUUID#31893, id#31894, displayId#31895, name#31896, category#31897, companyCode#31898, address#31899, mainDistributionChain#31900, mainPurchasingOrganization#31901, validPurchasingOrganizations#31902, productGroup#31903], false
(1962) Repartition
Arguments: 10, true
(1963) Project
Arguments: [internalUUID#31893, address#31899.timeZone.code AS timezonecode#31904]
(1964) Join
Arguments: LeftOuter, (plant#31880 <=> internalUUID#31893)
(1965) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, internalUUID#31893, CASE WHEN isnotnull(timezonecode#31904) THEN timezonecode#31904 ELSE UTC END AS timezonecode#31905]
(1966) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905]
(1967) LogicalRelation
Arguments: parquet, [systemId#31906, internalUUID#31907, id#31908, displayId#31909, name#31910, baseUnitOfMeasure#31911, unitOfMeasures#31912, unitOfMeasureConversions#31913, productionAspect#31914, salesAspect#31915, procurementAspect#31916, productGroup#31917], false
(1968) Repartition
Arguments: 10, true
(1969) Join
Arguments: LeftOuter, (product#31879 = internalUUID#31907)
(1970) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, systemId#31906, internalUUID#31907, id#31908, displayId#31909, name#31910, baseUnitOfMeasure#31911, unitOfMeasures#31912, unitOfMeasureConversions#31913, productionAspect#31914, salesAspect#31915, procurementAspect#31916, productGroup#31917, filter(unitOfMeasureConversions#31913, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31891.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31891.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31911.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31911.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31918]
(1971) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31918.quantityNumerator), true, [quantityNumerator#31919]
(1972) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, systemId#31906, internalUUID#31907, id#31908, displayId#31909, name#31910, baseUnitOfMeasure#31911, unitOfMeasures#31912, unitOfMeasureConversions#31913, productionAspect#31914, salesAspect#31915, procurementAspect#31916, productGroup#31917, filteredUnitOfMeasureConversions#31918, quantityNumerator#31919]
(1973) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31918.quantityDenominator), true, [quantityDenominator#31920]
(1974) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, systemId#31906, internalUUID#31907, id#31908, displayId#31909, name#31910, baseUnitOfMeasure#31911, unitOfMeasures#31912, unitOfMeasureConversions#31913, productionAspect#31914, salesAspect#31915, procurementAspect#31916, productGroup#31917, filteredUnitOfMeasureConversions#31918, quantityNumerator#31919, quantityDenominator#31920]
(1975) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, systemId#31906, internalUUID#31907, id#31908, displayId#31909, name#31910, baseUnitOfMeasure#31911, unitOfMeasures#31912, unitOfMeasureConversions#31913, productionAspect#31914, salesAspect#31915, procurementAspect#31916, productGroup#31917, filteredUnitOfMeasureConversions#31918, quantityNumerator#31919, quantityDenominator#31920, (cast(quantityNumerator#31919 as double) / cast(quantityDenominator#31920 as double)) AS outboundUnit#31921]
(1976) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, systemId#31906, internalUUID#31907, id#31908, displayId#31909, name#31910, baseUnitOfMeasure#31911, unitOfMeasures#31912, unitOfMeasureConversions#31913, productionAspect#31914, salesAspect#31915, procurementAspect#31916, productGroup#31917, filteredUnitOfMeasureConversions#31918, quantityNumerator#31919, quantityDenominator#31920, CASE WHEN (isnull(outboundUnit#31921) OR (outboundUnit#31921 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31921 END AS outboundUnit#31922]
(1977) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, outboundUnit#31922]
(1978) LogicalRelation
Arguments: parquet, [systemId#31923, internalUUID#31924, product#31925, plant#31926, calculationDateTime#31927, stockQuantities#31928], false
(1979) Repartition
Arguments: 10, true
(1980) LogicalRelation
Arguments: parquet, [marketUnit#31929, description#31930, articleHierarchy#31931, defaultCurrency#31932, responsibilities#31933, replenishmentTypes#31934, distributionCenters#31935, assignedArticleHierarchyNodes#31936, minOrderQtySetting#31937, minOrderQtySettingInternal#31938, listingCheck#31939, odsSelection#31940, demandProfiles#31941, constraintProfiles#31942, optimizationProfiles#31943, orderGroupSplitProfiles#31944, supplierMinimumProfiles#31945, multipleRestrictionProfiles#31946, preferredUomSource#31947, handlingOfUnfulfilledDemands#31948, negligibleQuantitiesThreshold#31949, eventtype#31950], false
(1981) Repartition
Arguments: 10, true
(1982) Filter
Arguments: (marketUnit#31929 <=> DIP_1691)
(1983) Project
Arguments: [marketUnit#31929, description#31930, articleHierarchy#31931, defaultCurrency#31932, responsibilities#31933, replenishmentTypes#31934, distributionCenters#31935, assignedArticleHierarchyNodes#31936, minOrderQtySetting#31937, minOrderQtySettingInternal#31938, listingCheck#31939, odsSelection#31940, demandProfiles#31941, constraintProfiles#31942, optimizationProfiles#31943, orderGroupSplitProfiles#31944, supplierMinimumProfiles#31945, multipleRestrictionProfiles#31946, preferredUomSource#31947, handlingOfUnfulfilledDemands#31948, negligibleQuantitiesThreshold#31949, eventtype#31950]
(1984) Project
Arguments: [distributionCenters#31935]
(1985) Generate
Arguments: explode(distributionCenters#31935), false, [distributionCenters#31951]
(1986) Project
Arguments: [distributionCenters#31951]
(1987) Generate
Arguments: explode(distributionCenters#31951.storageLocations), false, [storageLocations#31952]
(1988) Project
Arguments: [distributionCenters#31951.id AS plantId#31953, distributionCenters#31951.internalRefUUID AS plantUuid#31954, storageLocations#31952]
(1989) Project
Arguments: [plantId#31953, plantUuid#31954, storageLocations#31952.id AS storageLocId#31955, storageLocations#31952.internalRefUUID AS storageLocUuid#31956]
(1990) LogicalRelation
Arguments: parquet, [product#31957, plant#31958, orderDateTime#31959, planningStartDateTime#31960], false
(1991) RepartitionByExpression
Arguments: [product#31957, plant#31958], 10
(1992) Project
Arguments: [product#31957, plant#31958, orderDateTime#31959]
(1993) LogicalRelation
Arguments: parquet, [systemId#31961, internalUUID#31962, plant#31963, product#31964, blockedForReplenishmentStartingFrom#31965, productionAspect#31966, salesPlant#31967, listing#31968], false
(1994) Repartition
Arguments: 10, true
(1995) Project
Arguments: [systemId#31961, internalUUID#31962, plant#31963, product#31964, blockedForReplenishmentStartingFrom#31965, productionAspect#31966, salesPlant#31967, listing#31968, struct(systemId, systemId#31961, internalUUID, internalUUID#31962, plant, plant#31963, product, product#31964, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#31965, productionAspect, productionAspect#31966, salesPlant, salesPlant#31967, listing, listing#31968) AS productPlant#31969]
(1996) Project
Arguments: [productPlant#31969]
(1997) Join
Arguments: LeftOuter, ((product#31957 <=> productPlant#31969.product.internalRefUUID) AND (plant#31958 <=> productPlant#31969.plant.internalRefUUID))
(1998) Project
Arguments: [product#31957, plant#31958, orderDateTime#31959, productPlant#31969]
(1999) SubqueryAlias
Arguments: wl
(2000) LogicalRelation
Arguments: parquet, [systemId#31970, internalUUID#31971, id#31972, displayId#31973, name#31974, category#31975, companyCode#31976, address#31977, mainDistributionChain#31978, mainPurchasingOrganization#31979, validPurchasingOrganizations#31980, productGroup#31981], false
(2001) Repartition
Arguments: 10, true
(2002) Project
Arguments: [internalUUID#31971, address#31977.timeZone.code AS timezonecode#31982]
(2003) Join
Arguments: LeftOuter, (plant#31958 <=> internalUUID#31971)
(2004) Project
Arguments: [product#31957, plant#31958, orderDateTime#31959, productPlant#31969, internalUUID#31971, CASE WHEN isnotnull(timezonecode#31982) THEN timezonecode#31982 ELSE UTC END AS timezonecode#31983]
(2005) Project
Arguments: [product#31957, plant#31958, orderDateTime#31959, productPlant#31969, timezonecode#31983]
(2006) LogicalRelation
Arguments: parquet, [systemId#31984, internalUUID#31985, id#31986, displayId#31987, name#31988, baseUnitOfMeasure#31989, unitOfMeasures#31990, unitOfMeasureConversions#31991, productionAspect#31992, salesAspect#31993, procurementAspect#31994, productGroup#31995], false
(2007) Repartition
Arguments: 10, true
(2008) Join
Arguments: LeftOuter, (product#31957 = internalUUID#31985)
(2009) Project
Arguments: [product#31957, plant#31958, orderDateTime#31959, productPlant#31969, timezonecode#31983, systemId#31984, internalUUID#31985, id#31986, displayId#31987, name#31988, baseUnitOfMeasure#31989, unitOfMeasures#31990, unitOfMeasureConversions#31991, productionAspect#31992, salesAspect#31993, procurementAspect#31994, productGroup#31995, filter(unitOfMeasureConversions#31991, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#31969.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#31969.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#31989.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#31989.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#31996]
(2010) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31996.quantityNumerator), true, [quantityNumerator#31997]
(2011) Project
Arguments: [product#31957, plant#31958, orderDateTime#31959, productPlant#31969, timezonecode#31983, systemId#31984, internalUUID#31985, id#31986, displayId#31987, name#31988, baseUnitOfMeasure#31989, unitOfMeasures#31990, unitOfMeasureConversions#31991, productionAspect#31992, salesAspect#31993, procurementAspect#31994, productGroup#31995, filteredUnitOfMeasureConversions#31996, quantityNumerator#31997]
(2012) Generate
Arguments: explode(filteredUnitOfMeasureConversions#31996.quantityDenominator), true, [quantityDenominator#31998]
(2013) Project
Arguments: [product#31957, plant#31958, orderDateTime#31959, productPlant#31969, timezonecode#31983, systemId#31984, internalUUID#31985, id#31986, displayId#31987, name#31988, baseUnitOfMeasure#31989, unitOfMeasures#31990, unitOfMeasureConversions#31991, productionAspect#31992, salesAspect#31993, procurementAspect#31994, productGroup#31995, filteredUnitOfMeasureConversions#31996, quantityNumerator#31997, quantityDenominator#31998]
(2014) Project
Arguments: [product#31957, plant#31958, orderDateTime#31959, productPlant#31969, timezonecode#31983, systemId#31984, internalUUID#31985, id#31986, displayId#31987, name#31988, baseUnitOfMeasure#31989, unitOfMeasures#31990, unitOfMeasureConversions#31991, productionAspect#31992, salesAspect#31993, procurementAspect#31994, productGroup#31995, filteredUnitOfMeasureConversions#31996, quantityNumerator#31997, quantityDenominator#31998, (cast(quantityNumerator#31997 as double) / cast(quantityDenominator#31998 as double)) AS outboundUnit#31999]
(2015) Project
Arguments: [product#31957, plant#31958, orderDateTime#31959, productPlant#31969, timezonecode#31983, systemId#31984, internalUUID#31985, id#31986, displayId#31987, name#31988, baseUnitOfMeasure#31989, unitOfMeasures#31990, unitOfMeasureConversions#31991, productionAspect#31992, salesAspect#31993, procurementAspect#31994, productGroup#31995, filteredUnitOfMeasureConversions#31996, quantityNumerator#31997, quantityDenominator#31998, CASE WHEN (isnull(outboundUnit#31999) OR (outboundUnit#31999 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#31999 END AS outboundUnit#32000]
(2016) Project
Arguments: [product#31957, plant#31958, orderDateTime#31959, productPlant#31969, timezonecode#31983, outboundUnit#32000]
(2017) Project
Arguments: [plant#31958]
(2018) Deduplicate
Arguments: [plant#31958]
(2019) Join
Arguments: Inner, (plantUuid#31954 = plant#31958)
(2020) Project
Arguments: [plantId#31953, plantUuid#31954, storageLocId#31955, storageLocUuid#31956]
(2021) Join
Arguments: Inner, (plant#31926.internalRefUUID <=> plantUuid#31954)
(2022) Generate
Arguments: explode(filter(stockQuantities#31928, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#31956) AND (lambda x#26016.storageLocation.Id = storageLocId#31955)), lambda x#26016, false))), false, [stockQuantity#32001]
(2023) Project
Arguments: [systemId#31923, internalUUID#31924, product#31925, plant#31926, calculationDateTime#31927, stockQuantities#31928, plantId#31953, plantUuid#31954, storageLocId#31955, storageLocUuid#31956, stockQuantity#32001]
(2024) Aggregate
Arguments: [plantUuid#31954, internalUUID#31924, plant#31926, product#31925, systemId#31923], [plantUuid#31954, internalUUID#31924, plant#31926, product#31925, systemId#31923, first(calculationDateTime#31927, false) AS calculationDateTime#32002, collect_list(stockQuantity#32001, 0, 0) AS stockQuantities#32003]
(2025) Project
Arguments: [systemId#31923, internalUUID#31924, product#31925, plant#31926, calculationDateTime#32002, stockQuantities#32003]
(2026) Generate
Arguments: explode(stockQuantities#32003), false, [stockQuantity#32004]
(2027) Project
Arguments: [systemId#31923, internalUUID#31924, product#31925, plant#31926, calculationDateTime#32002, stockQuantities#32003, stockQuantity#32004]
(2028) Project
Arguments: [plant#31926.id AS plant#32005, plant#31926.internalRefUUID AS plantUuid#32006, product#31925.id AS product#32007, product#31925.internalRefUUID AS productUuid#32008, calculationDateTime#32002, stockQuantity#32004.storagelocation.id AS storageLocId#32009, stockQuantity#32004.storagelocation.internalRefUUID AS storageLocUuid#32010, stockQuantity#32004.quantity.measure AS quantity#32011, stockQuantity#32004.specialStockIndicator.code AS specialStockIndicator#32012, stockQuantity#32004.stockType.code AS stockType#32013]
(2029) Filter
Arguments: ((specialStockIndicator#32012 = ) AND (stockType#32013 = 01))
(2030) LogicalRelation
Arguments: parquet, [product#32014, plant#32015, orderDateTime#32016, planningStartDateTime#32017], false
(2031) RepartitionByExpression
Arguments: [product#32014, plant#32015], 10
(2032) Project
Arguments: [product#32014, plant#32015, orderDateTime#32016]
(2033) LogicalRelation
Arguments: parquet, [systemId#32018, internalUUID#32019, plant#32020, product#32021, blockedForReplenishmentStartingFrom#32022, productionAspect#32023, salesPlant#32024, listing#32025], false
(2034) Repartition
Arguments: 10, true
(2035) Project
Arguments: [systemId#32018, internalUUID#32019, plant#32020, product#32021, blockedForReplenishmentStartingFrom#32022, productionAspect#32023, salesPlant#32024, listing#32025, struct(systemId, systemId#32018, internalUUID, internalUUID#32019, plant, plant#32020, product, product#32021, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32022, productionAspect, productionAspect#32023, salesPlant, salesPlant#32024, listing, listing#32025) AS productPlant#32026]
(2036) Project
Arguments: [productPlant#32026]
(2037) Join
Arguments: LeftOuter, ((product#32014 <=> productPlant#32026.product.internalRefUUID) AND (plant#32015 <=> productPlant#32026.plant.internalRefUUID))
(2038) Project
Arguments: [product#32014, plant#32015, orderDateTime#32016, productPlant#32026]
(2039) SubqueryAlias
Arguments: wl
(2040) LogicalRelation
Arguments: parquet, [systemId#32027, internalUUID#32028, id#32029, displayId#32030, name#32031, category#32032, companyCode#32033, address#32034, mainDistributionChain#32035, mainPurchasingOrganization#32036, validPurchasingOrganizations#32037, productGroup#32038], false
(2041) Repartition
Arguments: 10, true
(2042) Project
Arguments: [internalUUID#32028, address#32034.timeZone.code AS timezonecode#32039]
(2043) Join
Arguments: LeftOuter, (plant#32015 <=> internalUUID#32028)
(2044) Project
Arguments: [product#32014, plant#32015, orderDateTime#32016, productPlant#32026, internalUUID#32028, CASE WHEN isnotnull(timezonecode#32039) THEN timezonecode#32039 ELSE UTC END AS timezonecode#32040]
(2045) Project
Arguments: [product#32014, plant#32015, orderDateTime#32016, productPlant#32026, timezonecode#32040]
(2046) LogicalRelation
Arguments: parquet, [systemId#32041, internalUUID#32042, id#32043, displayId#32044, name#32045, baseUnitOfMeasure#32046, unitOfMeasures#32047, unitOfMeasureConversions#32048, productionAspect#32049, salesAspect#32050, procurementAspect#32051, productGroup#32052], false
(2047) Repartition
Arguments: 10, true
(2048) Join
Arguments: LeftOuter, (product#32014 = internalUUID#32042)
(2049) Project
Arguments: [product#32014, plant#32015, orderDateTime#32016, productPlant#32026, timezonecode#32040, systemId#32041, internalUUID#32042, id#32043, displayId#32044, name#32045, baseUnitOfMeasure#32046, unitOfMeasures#32047, unitOfMeasureConversions#32048, productionAspect#32049, salesAspect#32050, procurementAspect#32051, productGroup#32052, filter(unitOfMeasureConversions#32048, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32026.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32026.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32046.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32046.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32053]
(2050) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32053.quantityNumerator), true, [quantityNumerator#32054]
(2051) Project
Arguments: [product#32014, plant#32015, orderDateTime#32016, productPlant#32026, timezonecode#32040, systemId#32041, internalUUID#32042, id#32043, displayId#32044, name#32045, baseUnitOfMeasure#32046, unitOfMeasures#32047, unitOfMeasureConversions#32048, productionAspect#32049, salesAspect#32050, procurementAspect#32051, productGroup#32052, filteredUnitOfMeasureConversions#32053, quantityNumerator#32054]
(2052) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32053.quantityDenominator), true, [quantityDenominator#32055]
(2053) Project
Arguments: [product#32014, plant#32015, orderDateTime#32016, productPlant#32026, timezonecode#32040, systemId#32041, internalUUID#32042, id#32043, displayId#32044, name#32045, baseUnitOfMeasure#32046, unitOfMeasures#32047, unitOfMeasureConversions#32048, productionAspect#32049, salesAspect#32050, procurementAspect#32051, productGroup#32052, filteredUnitOfMeasureConversions#32053, quantityNumerator#32054, quantityDenominator#32055]
(2054) Project
Arguments: [product#32014, plant#32015, orderDateTime#32016, productPlant#32026, timezonecode#32040, systemId#32041, internalUUID#32042, id#32043, displayId#32044, name#32045, baseUnitOfMeasure#32046, unitOfMeasures#32047, unitOfMeasureConversions#32048, productionAspect#32049, salesAspect#32050, procurementAspect#32051, productGroup#32052, filteredUnitOfMeasureConversions#32053, quantityNumerator#32054, quantityDenominator#32055, (cast(quantityNumerator#32054 as double) / cast(quantityDenominator#32055 as double)) AS outboundUnit#32056]
(2055) Project
Arguments: [product#32014, plant#32015, orderDateTime#32016, productPlant#32026, timezonecode#32040, systemId#32041, internalUUID#32042, id#32043, displayId#32044, name#32045, baseUnitOfMeasure#32046, unitOfMeasures#32047, unitOfMeasureConversions#32048, productionAspect#32049, salesAspect#32050, procurementAspect#32051, productGroup#32052, filteredUnitOfMeasureConversions#32053, quantityNumerator#32054, quantityDenominator#32055, CASE WHEN (isnull(outboundUnit#32056) OR (outboundUnit#32056 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32056 END AS outboundUnit#32057]
(2056) Project
Arguments: [product#32014, plant#32015, orderDateTime#32016, productPlant#32026, timezonecode#32040, outboundUnit#32057]
(2057) Join
Arguments: Inner, ((plantUuid#32006 = plant#32015) AND (productUuid#32008 = product#32014))
(2058) Filter
Arguments: (calculationDateTime#32002 <= orderDateTime#32016)
(2059) Project
Arguments: [plantUuid#32006 AS plant#32058, productUuid#32008 AS product#32059, storageLocId#32009, calculationDateTime#32002, quantity#32011]
(2060) LogicalRelation
Arguments: parquet, [systemId#32060, internalUUID#32061, product#32062, plant#32063, calculationDateTime#32064, stockQuantities#32065], false
(2061) Repartition
Arguments: 10, true
(2062) LogicalRelation
Arguments: parquet, [marketUnit#32066, description#32067, articleHierarchy#32068, defaultCurrency#32069, responsibilities#32070, replenishmentTypes#32071, distributionCenters#32072, assignedArticleHierarchyNodes#32073, minOrderQtySetting#32074, minOrderQtySettingInternal#32075, listingCheck#32076, odsSelection#32077, demandProfiles#32078, constraintProfiles#32079, optimizationProfiles#32080, orderGroupSplitProfiles#32081, supplierMinimumProfiles#32082, multipleRestrictionProfiles#32083, preferredUomSource#32084, handlingOfUnfulfilledDemands#32085, negligibleQuantitiesThreshold#32086, eventtype#32087], false
(2063) Repartition
Arguments: 10, true
(2064) Filter
Arguments: (marketUnit#32066 <=> DIP_1691)
(2065) Project
Arguments: [marketUnit#32066, description#32067, articleHierarchy#32068, defaultCurrency#32069, responsibilities#32070, replenishmentTypes#32071, distributionCenters#32072, assignedArticleHierarchyNodes#32073, minOrderQtySetting#32074, minOrderQtySettingInternal#32075, listingCheck#32076, odsSelection#32077, demandProfiles#32078, constraintProfiles#32079, optimizationProfiles#32080, orderGroupSplitProfiles#32081, supplierMinimumProfiles#32082, multipleRestrictionProfiles#32083, preferredUomSource#32084, handlingOfUnfulfilledDemands#32085, negligibleQuantitiesThreshold#32086, eventtype#32087]
(2066) Project
Arguments: [distributionCenters#32072]
(2067) Generate
Arguments: explode(distributionCenters#32072), false, [distributionCenters#32088]
(2068) Project
Arguments: [distributionCenters#32088]
(2069) Generate
Arguments: explode(distributionCenters#32088.storageLocations), false, [storageLocations#32089]
(2070) Project
Arguments: [distributionCenters#32088.id AS plantId#32090, distributionCenters#32088.internalRefUUID AS plantUuid#32091, storageLocations#32089]
(2071) Project
Arguments: [plantId#32090, plantUuid#32091, storageLocations#32089.id AS storageLocId#32092, storageLocations#32089.internalRefUUID AS storageLocUuid#32093]
(2072) LogicalRelation
Arguments: parquet, [product#32094, plant#32095, orderDateTime#32096, planningStartDateTime#32097], false
(2073) RepartitionByExpression
Arguments: [product#32094, plant#32095], 10
(2074) Project
Arguments: [product#32094, plant#32095, orderDateTime#32096]
(2075) LogicalRelation
Arguments: parquet, [systemId#32098, internalUUID#32099, plant#32100, product#32101, blockedForReplenishmentStartingFrom#32102, productionAspect#32103, salesPlant#32104, listing#32105], false
(2076) Repartition
Arguments: 10, true
(2077) Project
Arguments: [systemId#32098, internalUUID#32099, plant#32100, product#32101, blockedForReplenishmentStartingFrom#32102, productionAspect#32103, salesPlant#32104, listing#32105, struct(systemId, systemId#32098, internalUUID, internalUUID#32099, plant, plant#32100, product, product#32101, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32102, productionAspect, productionAspect#32103, salesPlant, salesPlant#32104, listing, listing#32105) AS productPlant#32106]
(2078) Project
Arguments: [productPlant#32106]
(2079) Join
Arguments: LeftOuter, ((product#32094 <=> productPlant#32106.product.internalRefUUID) AND (plant#32095 <=> productPlant#32106.plant.internalRefUUID))
(2080) Project
Arguments: [product#32094, plant#32095, orderDateTime#32096, productPlant#32106]
(2081) SubqueryAlias
Arguments: wl
(2082) LogicalRelation
Arguments: parquet, [systemId#32107, internalUUID#32108, id#32109, displayId#32110, name#32111, category#32112, companyCode#32113, address#32114, mainDistributionChain#32115, mainPurchasingOrganization#32116, validPurchasingOrganizations#32117, productGroup#32118], false
(2083) Repartition
Arguments: 10, true
(2084) Project
Arguments: [internalUUID#32108, address#32114.timeZone.code AS timezonecode#32119]
(2085) Join
Arguments: LeftOuter, (plant#32095 <=> internalUUID#32108)
(2086) Project
Arguments: [product#32094, plant#32095, orderDateTime#32096, productPlant#32106, internalUUID#32108, CASE WHEN isnotnull(timezonecode#32119) THEN timezonecode#32119 ELSE UTC END AS timezonecode#32120]
(2087) Project
Arguments: [product#32094, plant#32095, orderDateTime#32096, productPlant#32106, timezonecode#32120]
(2088) LogicalRelation
Arguments: parquet, [systemId#32121, internalUUID#32122, id#32123, displayId#32124, name#32125, baseUnitOfMeasure#32126, unitOfMeasures#32127, unitOfMeasureConversions#32128, productionAspect#32129, salesAspect#32130, procurementAspect#32131, productGroup#32132], false
(2089) Repartition
Arguments: 10, true
(2090) Join
Arguments: LeftOuter, (product#32094 = internalUUID#32122)
(2091) Project
Arguments: [product#32094, plant#32095, orderDateTime#32096, productPlant#32106, timezonecode#32120, systemId#32121, internalUUID#32122, id#32123, displayId#32124, name#32125, baseUnitOfMeasure#32126, unitOfMeasures#32127, unitOfMeasureConversions#32128, productionAspect#32129, salesAspect#32130, procurementAspect#32131, productGroup#32132, filter(unitOfMeasureConversions#32128, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32106.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32106.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32126.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32126.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32133]
(2092) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32133.quantityNumerator), true, [quantityNumerator#32134]
(2093) Project
Arguments: [product#32094, plant#32095, orderDateTime#32096, productPlant#32106, timezonecode#32120, systemId#32121, internalUUID#32122, id#32123, displayId#32124, name#32125, baseUnitOfMeasure#32126, unitOfMeasures#32127, unitOfMeasureConversions#32128, productionAspect#32129, salesAspect#32130, procurementAspect#32131, productGroup#32132, filteredUnitOfMeasureConversions#32133, quantityNumerator#32134]
(2094) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32133.quantityDenominator), true, [quantityDenominator#32135]
(2095) Project
Arguments: [product#32094, plant#32095, orderDateTime#32096, productPlant#32106, timezonecode#32120, systemId#32121, internalUUID#32122, id#32123, displayId#32124, name#32125, baseUnitOfMeasure#32126, unitOfMeasures#32127, unitOfMeasureConversions#32128, productionAspect#32129, salesAspect#32130, procurementAspect#32131, productGroup#32132, filteredUnitOfMeasureConversions#32133, quantityNumerator#32134, quantityDenominator#32135]
(2096) Project
Arguments: [product#32094, plant#32095, orderDateTime#32096, productPlant#32106, timezonecode#32120, systemId#32121, internalUUID#32122, id#32123, displayId#32124, name#32125, baseUnitOfMeasure#32126, unitOfMeasures#32127, unitOfMeasureConversions#32128, productionAspect#32129, salesAspect#32130, procurementAspect#32131, productGroup#32132, filteredUnitOfMeasureConversions#32133, quantityNumerator#32134, quantityDenominator#32135, (cast(quantityNumerator#32134 as double) / cast(quantityDenominator#32135 as double)) AS outboundUnit#32136]
(2097) Project
Arguments: [product#32094, plant#32095, orderDateTime#32096, productPlant#32106, timezonecode#32120, systemId#32121, internalUUID#32122, id#32123, displayId#32124, name#32125, baseUnitOfMeasure#32126, unitOfMeasures#32127, unitOfMeasureConversions#32128, productionAspect#32129, salesAspect#32130, procurementAspect#32131, productGroup#32132, filteredUnitOfMeasureConversions#32133, quantityNumerator#32134, quantityDenominator#32135, CASE WHEN (isnull(outboundUnit#32136) OR (outboundUnit#32136 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32136 END AS outboundUnit#32137]
(2098) Project
Arguments: [product#32094, plant#32095, orderDateTime#32096, productPlant#32106, timezonecode#32120, outboundUnit#32137]
(2099) Project
Arguments: [plant#32095]
(2100) Deduplicate
Arguments: [plant#32095]
(2101) Join
Arguments: Inner, (plantUuid#32091 = plant#32095)
(2102) Project
Arguments: [plantId#32090, plantUuid#32091, storageLocId#32092, storageLocUuid#32093]
(2103) Join
Arguments: Inner, (plant#32063.internalRefUUID <=> plantUuid#32091)
(2104) Generate
Arguments: explode(filter(stockQuantities#32065, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#32093) AND (lambda x#26016.storageLocation.Id = storageLocId#32092)), lambda x#26016, false))), false, [stockQuantity#32138]
(2105) Project
Arguments: [systemId#32060, internalUUID#32061, product#32062, plant#32063, calculationDateTime#32064, stockQuantities#32065, plantId#32090, plantUuid#32091, storageLocId#32092, storageLocUuid#32093, stockQuantity#32138]
(2106) Aggregate
Arguments: [plantUuid#32091, internalUUID#32061, plant#32063, product#32062, systemId#32060], [plantUuid#32091, internalUUID#32061, plant#32063, product#32062, systemId#32060, first(calculationDateTime#32064, false) AS calculationDateTime#32139, collect_list(stockQuantity#32138, 0, 0) AS stockQuantities#32140]
(2107) Project
Arguments: [systemId#32060, internalUUID#32061, product#32062, plant#32063, calculationDateTime#32139, stockQuantities#32140]
(2108) Generate
Arguments: explode(stockQuantities#32140), false, [stockQuantity#32141]
(2109) Project
Arguments: [systemId#32060, internalUUID#32061, product#32062, plant#32063, calculationDateTime#32139, stockQuantities#32140, stockQuantity#32141]
(2110) Project
Arguments: [plant#32063.id AS plant#32142, plant#32063.internalRefUUID AS plantUuid#32143, product#32062.id AS product#32144, product#32062.internalRefUUID AS productUuid#32145, calculationDateTime#32139, stockQuantity#32141.storagelocation.id AS storageLocId#32146, stockQuantity#32141.storagelocation.internalRefUUID AS storageLocUuid#32147, stockQuantity#32141.quantity.measure AS quantity#32148, stockQuantity#32141.specialStockIndicator.code AS specialStockIndicator#32149, stockQuantity#32141.stockType.code AS stockType#32150]
(2111) Filter
Arguments: ((specialStockIndicator#32149 = ) AND (stockType#32150 = 01))
(2112) LogicalRelation
Arguments: parquet, [product#32151, plant#32152, orderDateTime#32153, planningStartDateTime#32154], false
(2113) RepartitionByExpression
Arguments: [product#32151, plant#32152], 10
(2114) Project
Arguments: [product#32151, plant#32152, orderDateTime#32153]
(2115) LogicalRelation
Arguments: parquet, [systemId#32155, internalUUID#32156, plant#32157, product#32158, blockedForReplenishmentStartingFrom#32159, productionAspect#32160, salesPlant#32161, listing#32162], false
(2116) Repartition
Arguments: 10, true
(2117) Project
Arguments: [systemId#32155, internalUUID#32156, plant#32157, product#32158, blockedForReplenishmentStartingFrom#32159, productionAspect#32160, salesPlant#32161, listing#32162, struct(systemId, systemId#32155, internalUUID, internalUUID#32156, plant, plant#32157, product, product#32158, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32159, productionAspect, productionAspect#32160, salesPlant, salesPlant#32161, listing, listing#32162) AS productPlant#32163]
(2118) Project
Arguments: [productPlant#32163]
(2119) Join
Arguments: LeftOuter, ((product#32151 <=> productPlant#32163.product.internalRefUUID) AND (plant#32152 <=> productPlant#32163.plant.internalRefUUID))
(2120) Project
Arguments: [product#32151, plant#32152, orderDateTime#32153, productPlant#32163]
(2121) SubqueryAlias
Arguments: wl
(2122) LogicalRelation
Arguments: parquet, [systemId#32164, internalUUID#32165, id#32166, displayId#32167, name#32168, category#32169, companyCode#32170, address#32171, mainDistributionChain#32172, mainPurchasingOrganization#32173, validPurchasingOrganizations#32174, productGroup#32175], false
(2123) Repartition
Arguments: 10, true
(2124) Project
Arguments: [internalUUID#32165, address#32171.timeZone.code AS timezonecode#32176]
(2125) Join
Arguments: LeftOuter, (plant#32152 <=> internalUUID#32165)
(2126) Project
Arguments: [product#32151, plant#32152, orderDateTime#32153, productPlant#32163, internalUUID#32165, CASE WHEN isnotnull(timezonecode#32176) THEN timezonecode#32176 ELSE UTC END AS timezonecode#32177]
(2127) Project
Arguments: [product#32151, plant#32152, orderDateTime#32153, productPlant#32163, timezonecode#32177]
(2128) LogicalRelation
Arguments: parquet, [systemId#32178, internalUUID#32179, id#32180, displayId#32181, name#32182, baseUnitOfMeasure#32183, unitOfMeasures#32184, unitOfMeasureConversions#32185, productionAspect#32186, salesAspect#32187, procurementAspect#32188, productGroup#32189], false
(2129) Repartition
Arguments: 10, true
(2130) Join
Arguments: LeftOuter, (product#32151 = internalUUID#32179)
(2131) Project
Arguments: [product#32151, plant#32152, orderDateTime#32153, productPlant#32163, timezonecode#32177, systemId#32178, internalUUID#32179, id#32180, displayId#32181, name#32182, baseUnitOfMeasure#32183, unitOfMeasures#32184, unitOfMeasureConversions#32185, productionAspect#32186, salesAspect#32187, procurementAspect#32188, productGroup#32189, filter(unitOfMeasureConversions#32185, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32163.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32163.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32183.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32183.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32190]
(2132) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32190.quantityNumerator), true, [quantityNumerator#32191]
(2133) Project
Arguments: [product#32151, plant#32152, orderDateTime#32153, productPlant#32163, timezonecode#32177, systemId#32178, internalUUID#32179, id#32180, displayId#32181, name#32182, baseUnitOfMeasure#32183, unitOfMeasures#32184, unitOfMeasureConversions#32185, productionAspect#32186, salesAspect#32187, procurementAspect#32188, productGroup#32189, filteredUnitOfMeasureConversions#32190, quantityNumerator#32191]
(2134) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32190.quantityDenominator), true, [quantityDenominator#32192]
(2135) Project
Arguments: [product#32151, plant#32152, orderDateTime#32153, productPlant#32163, timezonecode#32177, systemId#32178, internalUUID#32179, id#32180, displayId#32181, name#32182, baseUnitOfMeasure#32183, unitOfMeasures#32184, unitOfMeasureConversions#32185, productionAspect#32186, salesAspect#32187, procurementAspect#32188, productGroup#32189, filteredUnitOfMeasureConversions#32190, quantityNumerator#32191, quantityDenominator#32192]
(2136) Project
Arguments: [product#32151, plant#32152, orderDateTime#32153, productPlant#32163, timezonecode#32177, systemId#32178, internalUUID#32179, id#32180, displayId#32181, name#32182, baseUnitOfMeasure#32183, unitOfMeasures#32184, unitOfMeasureConversions#32185, productionAspect#32186, salesAspect#32187, procurementAspect#32188, productGroup#32189, filteredUnitOfMeasureConversions#32190, quantityNumerator#32191, quantityDenominator#32192, (cast(quantityNumerator#32191 as double) / cast(quantityDenominator#32192 as double)) AS outboundUnit#32193]
(2137) Project
Arguments: [product#32151, plant#32152, orderDateTime#32153, productPlant#32163, timezonecode#32177, systemId#32178, internalUUID#32179, id#32180, displayId#32181, name#32182, baseUnitOfMeasure#32183, unitOfMeasures#32184, unitOfMeasureConversions#32185, productionAspect#32186, salesAspect#32187, procurementAspect#32188, productGroup#32189, filteredUnitOfMeasureConversions#32190, quantityNumerator#32191, quantityDenominator#32192, CASE WHEN (isnull(outboundUnit#32193) OR (outboundUnit#32193 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32193 END AS outboundUnit#32194]
(2138) Project
Arguments: [product#32151, plant#32152, orderDateTime#32153, productPlant#32163, timezonecode#32177, outboundUnit#32194]
(2139) Join
Arguments: Inner, ((plantUuid#32143 = plant#32152) AND (productUuid#32145 = product#32151))
(2140) Filter
Arguments: (calculationDateTime#32139 <= orderDateTime#32153)
(2141) Project
Arguments: [plantUuid#32143 AS plant#32195, productUuid#32145 AS product#32196, storageLocId#32146, calculationDateTime#32139, quantity#32148]
(2142) Aggregate
Arguments: [plant#32195, product#32196, storageLocId#32146], [plant#32195, product#32196, storageLocId#32146, max(calculationDateTime#32139) AS max_calc_datetime#32197]
(2143) Join
Arguments: Inner, ((((plant#32058 <=> plant#32195) AND (product#32059 <=> product#32196)) AND (storageLocId#32009 <=> storageLocId#32146)) AND (calculationDateTime#32002 <=> max_calc_datetime#32197))
(2144) Project
Arguments: [plant#32058, product#32059, storageLocId#32009, calculationDateTime#32002, quantity#32011]
(2145) Aggregate
Arguments: [product#32059, plant#32058], [product#32059, plant#32058, sum(quantity#32011) AS quantitySum#32198, min(calculationDateTime#32002) AS minCalculationDateTime#32199]
(2146) Project
Arguments: [product#32059, plant#32058, quantitySum#32198, minCalculationDateTime#32199, round(quantitySum#32198, 0) AS roundedQuantitySum#32200]
(2147) Join
Arguments: LeftOuter, ((plant#31880 = plant#32058) AND (product#31879 = product#32059))
(2148) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, outboundUnit#31922, roundedQuantitySum#32200, minCalculationDateTime#32199]
(2149) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, outboundUnit#31922, roundedQuantitySum#32200, minCalculationDateTime#32199, CASE WHEN isnotnull(minCalculationDateTime#32199) THEN minCalculationDateTime#32199 ELSE orderDateTime#31881 END AS stockDatetime#32201]
(2150) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, outboundUnit#31922, roundedQuantitySum#32200, minCalculationDateTime#32199, stockDatetime#32201, CASE WHEN isnotnull(roundedQuantitySum#32200) THEN array(roundedQuantitySum#32200) ELSE array(0.0) END AS stockBatchQuantities#32202]
(2151) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, outboundUnit#31922, roundedQuantitySum#32200, minCalculationDateTime#32199, stockDatetime#32201, stockBatchQuantities#32202, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#32203]
(2152) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, outboundUnit#31922, roundedQuantitySum#32200, stockDatetime#32201, stockBatchQuantities#32202, stockBatchShelfLifeEndDatetimes#32203]
(2153) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, outboundUnit#31922, stockDatetime#32201, stockBatchQuantities#32202, stockBatchShelfLifeEndDatetimes#32203]
(2154) LogicalRelation
Arguments: parquet, [product#32204, plant#32205, demandChannel#32206, demandStream#32207, considerVariance#32208, demandTimeBuckets#32209, demandPointInTimeStart#32210, demandPointInTimeEnd#32211, demandPointInTime#32212], false
(2155) Join
Arguments: LeftOuter, ((product#31879 = product#32204) AND (plant#31880 = plant#32205))
(2156) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, outboundUnit#31922, stockDatetime#32201, stockBatchQuantities#32202, stockBatchShelfLifeEndDatetimes#32203, demandChannel#32206, demandStream#32207, considerVariance#32208, demandTimeBuckets#32209, demandPointInTimeStart#32210, demandPointInTimeEnd#32211, demandPointInTime#32212, product#32204, plant#32205]
(2157) Project
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, outboundUnit#31922, stockDatetime#32201, stockBatchQuantities#32202, stockBatchShelfLifeEndDatetimes#32203, demandChannel#32206, demandStream#32207, considerVariance#32208, demandTimeBuckets#32209, demandPointInTimeStart#32210, demandPointInTimeEnd#32211, demandPointInTime#32212, CASE WHEN isnotnull(product#32204) THEN struct(demandChannel, demandChannel#32206, demandStream, demandStream#32207, considerVariance, considerVariance#32208, demandTimeBuckets, demandTimeBuckets#32209, demandPointInTimeStart, demandPointInTimeStart#32210, demandPointInTimeEnd, demandPointInTimeEnd#32211, demandPointInTime, demandPointInTime#32212) 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#32213]
(2158) Aggregate
Arguments: [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, outboundUnit#31922, stockDatetime#32201, stockBatchQuantities#32202, stockBatchShelfLifeEndDatetimes#32203], [product#31879, plant#31880, orderDateTime#31881, productPlant#31891, timezonecode#31905, outboundUnit#31922, stockDatetime#32201, stockBatchQuantities#32202, stockBatchShelfLifeEndDatetimes#32203, collect_list(rawDemands#32213, 0, 0) AS rawDemands#32214]
(2159) DeserializeToObject
Arguments: createexternalrow(invoke(product#31879.toString()), invoke(plant#31880.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#31881)), if (isnull(productPlant#31891)) null else createexternalrow(invoke(productPlant#31891.systemId.toString()), invoke(productPlant#31891.internalUUID.toString()), if (isnull(productPlant#31891.plant)) null else createexternalrow(invoke(productPlant#31891.plant.internalRefUUID.toString()), invoke(productPlant#31891.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#31891.product)) null else createexternalrow(invoke(productPlant#31891.product.internalRefUUID.toString()), invoke(productPlant#31891.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#31891.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#31891.productionAspect)) null else createexternalrow(if (isnull(productPlant#31891.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#31891.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#31891.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#31891.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#31891.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#31891.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#31891.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#31891.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#31891.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#31891.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#31891.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#31891.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#31891.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#31891.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#31891.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#31891.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#31891.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#31891.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#31891.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#31891.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#31891.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#31891.salesPlant)) null else createexternalrow(if (isnull(productPlant#31891.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#31891.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#31891.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, 3800), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#31891.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#31905.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#31922)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#32201)), mapobjects(lambdavariable(MapObject, DoubleType, true, 3801), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 3801) as double))), stockBatchQuantities#32202, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 3802), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 3802) as timestamp)))), stockBatchShelfLifeEndDatetimes#32203, 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, 3803), 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, 3803))) 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, 3803).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, 3803).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, 3803).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).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, 3803).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, 3803).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, 3803).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).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, 3803).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#32214, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#26378: org.apache.spark.sql.Row
(2160) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, interface org.apache.spark.sql.Row, [StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)], obj#26383: org.apache.spark.sql.Row
(2161) 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#32215, 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#32216, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3791), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3791), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3792), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3792), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3793), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3793), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3794), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3794), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3795), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3795), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#32217, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3797), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3797), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3798), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3798), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3799), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3799), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#32218]
(2162) Join
Arguments: LeftOuter, ((plant#32216 <=> plant#31555) AND (product#32215 <=> product#31554))
(2163) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, outboundUnit#31597, stockDatetime#31876, stockBatchQuantities#31877, stockBatchShelfLifeEndDatetimes#31878, plant#32216, dayBucketDemands#32217, pointInTimeDemands#32218]
(2164) Project
Arguments: [product#31554, plant#31555, orderDateTime#31556, productPlant#31566, timezonecode#31580, outboundUnit#31597, stockDatetime#31876, stockBatchQuantities#31877, stockBatchShelfLifeEndDatetimes#31878, dayBucketDemands#32217, pointInTimeDemands#32218]
(2165) LogicalRelation
Arguments: parquet, [marketUnit#32219, description#32220, articleHierarchy#32221, defaultCurrency#32222, responsibilities#32223, replenishmentTypes#32224, distributionCenters#32225, assignedArticleHierarchyNodes#32226, minOrderQtySetting#32227, minOrderQtySettingInternal#32228, listingCheck#32229, odsSelection#32230, demandProfiles#32231, constraintProfiles#32232, optimizationProfiles#32233, orderGroupSplitProfiles#32234, supplierMinimumProfiles#32235, multipleRestrictionProfiles#32236, preferredUomSource#32237, handlingOfUnfulfilledDemands#32238, negligibleQuantitiesThreshold#32239, eventtype#32240], false
(2166) Repartition
Arguments: 10, true
(2167) Filter
Arguments: (marketUnit#32219 <=> DIP_1691)
(2168) Project
Arguments: [marketUnit#32219, description#32220, articleHierarchy#32221, defaultCurrency#32222, responsibilities#32223, replenishmentTypes#32224, distributionCenters#32225, assignedArticleHierarchyNodes#32226, minOrderQtySetting#32227, minOrderQtySettingInternal#32228, listingCheck#32229, odsSelection#32230, demandProfiles#32231, constraintProfiles#32232, optimizationProfiles#32233, orderGroupSplitProfiles#32234, supplierMinimumProfiles#32235, multipleRestrictionProfiles#32236, preferredUomSource#32237, handlingOfUnfulfilledDemands#32238, negligibleQuantitiesThreshold#32239, eventtype#32240]
(2169) Project
Arguments: [distributionCenters#32225]
(2170) Generate
Arguments: explode(distributionCenters#32225), false, [distributionCenters#32241]
(2171) Project
Arguments: [distributionCenters#32241]
(2172) Generate
Arguments: explode(distributionCenters#32241.storageLocations), false, [storageLocations#32242]
(2173) Project
Arguments: [distributionCenters#32241.id AS plantId#32243, distributionCenters#32241.internalRefUUID AS plantUuid#32244, storageLocations#32242]
(2174) Project
Arguments: [plantId#32243, plantUuid#32244, storageLocations#32242.id AS storageLocId#32245, storageLocations#32242.internalRefUUID AS storageLocUuid#32246]
(2175) LogicalRelation
Arguments: parquet, [product#32247, plant#32248, orderDateTime#32249, planningStartDateTime#32250], false
(2176) RepartitionByExpression
Arguments: [product#32247, plant#32248], 10
(2177) Project
Arguments: [product#32247, plant#32248, orderDateTime#32249]
(2178) LogicalRelation
Arguments: parquet, [systemId#32251, internalUUID#32252, plant#32253, product#32254, blockedForReplenishmentStartingFrom#32255, productionAspect#32256, salesPlant#32257, listing#32258], false
(2179) Repartition
Arguments: 10, true
(2180) Project
Arguments: [systemId#32251, internalUUID#32252, plant#32253, product#32254, blockedForReplenishmentStartingFrom#32255, productionAspect#32256, salesPlant#32257, listing#32258, struct(systemId, systemId#32251, internalUUID, internalUUID#32252, plant, plant#32253, product, product#32254, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32255, productionAspect, productionAspect#32256, salesPlant, salesPlant#32257, listing, listing#32258) AS productPlant#32259]
(2181) Project
Arguments: [productPlant#32259]
(2182) Join
Arguments: LeftOuter, ((product#32247 <=> productPlant#32259.product.internalRefUUID) AND (plant#32248 <=> productPlant#32259.plant.internalRefUUID))
(2183) Project
Arguments: [product#32247, plant#32248, orderDateTime#32249, productPlant#32259]
(2184) SubqueryAlias
Arguments: wl
(2185) LogicalRelation
Arguments: parquet, [systemId#32260, internalUUID#32261, id#32262, displayId#32263, name#32264, category#32265, companyCode#32266, address#32267, mainDistributionChain#32268, mainPurchasingOrganization#32269, validPurchasingOrganizations#32270, productGroup#32271], false
(2186) Repartition
Arguments: 10, true
(2187) Project
Arguments: [internalUUID#32261, address#32267.timeZone.code AS timezonecode#32272]
(2188) Join
Arguments: LeftOuter, (plant#32248 <=> internalUUID#32261)
(2189) Project
Arguments: [product#32247, plant#32248, orderDateTime#32249, productPlant#32259, internalUUID#32261, CASE WHEN isnotnull(timezonecode#32272) THEN timezonecode#32272 ELSE UTC END AS timezonecode#32273]
(2190) Project
Arguments: [product#32247, plant#32248, orderDateTime#32249, productPlant#32259, timezonecode#32273]
(2191) LogicalRelation
Arguments: parquet, [systemId#32274, internalUUID#32275, id#32276, displayId#32277, name#32278, baseUnitOfMeasure#32279, unitOfMeasures#32280, unitOfMeasureConversions#32281, productionAspect#32282, salesAspect#32283, procurementAspect#32284, productGroup#32285], false
(2192) Repartition
Arguments: 10, true
(2193) Join
Arguments: LeftOuter, (product#32247 = internalUUID#32275)
(2194) Project
Arguments: [product#32247, plant#32248, orderDateTime#32249, productPlant#32259, timezonecode#32273, systemId#32274, internalUUID#32275, id#32276, displayId#32277, name#32278, baseUnitOfMeasure#32279, unitOfMeasures#32280, unitOfMeasureConversions#32281, productionAspect#32282, salesAspect#32283, procurementAspect#32284, productGroup#32285, filter(unitOfMeasureConversions#32281, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32259.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32259.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32279.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32279.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32286]
(2195) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32286.quantityNumerator), true, [quantityNumerator#32287]
(2196) Project
Arguments: [product#32247, plant#32248, orderDateTime#32249, productPlant#32259, timezonecode#32273, systemId#32274, internalUUID#32275, id#32276, displayId#32277, name#32278, baseUnitOfMeasure#32279, unitOfMeasures#32280, unitOfMeasureConversions#32281, productionAspect#32282, salesAspect#32283, procurementAspect#32284, productGroup#32285, filteredUnitOfMeasureConversions#32286, quantityNumerator#32287]
(2197) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32286.quantityDenominator), true, [quantityDenominator#32288]
(2198) Project
Arguments: [product#32247, plant#32248, orderDateTime#32249, productPlant#32259, timezonecode#32273, systemId#32274, internalUUID#32275, id#32276, displayId#32277, name#32278, baseUnitOfMeasure#32279, unitOfMeasures#32280, unitOfMeasureConversions#32281, productionAspect#32282, salesAspect#32283, procurementAspect#32284, productGroup#32285, filteredUnitOfMeasureConversions#32286, quantityNumerator#32287, quantityDenominator#32288]
(2199) Project
Arguments: [product#32247, plant#32248, orderDateTime#32249, productPlant#32259, timezonecode#32273, systemId#32274, internalUUID#32275, id#32276, displayId#32277, name#32278, baseUnitOfMeasure#32279, unitOfMeasures#32280, unitOfMeasureConversions#32281, productionAspect#32282, salesAspect#32283, procurementAspect#32284, productGroup#32285, filteredUnitOfMeasureConversions#32286, quantityNumerator#32287, quantityDenominator#32288, (cast(quantityNumerator#32287 as double) / cast(quantityDenominator#32288 as double)) AS outboundUnit#32289]
(2200) Project
Arguments: [product#32247, plant#32248, orderDateTime#32249, productPlant#32259, timezonecode#32273, systemId#32274, internalUUID#32275, id#32276, displayId#32277, name#32278, baseUnitOfMeasure#32279, unitOfMeasures#32280, unitOfMeasureConversions#32281, productionAspect#32282, salesAspect#32283, procurementAspect#32284, productGroup#32285, filteredUnitOfMeasureConversions#32286, quantityNumerator#32287, quantityDenominator#32288, CASE WHEN (isnull(outboundUnit#32289) OR (outboundUnit#32289 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32289 END AS outboundUnit#32290]
(2201) Project
Arguments: [product#32247, plant#32248, orderDateTime#32249, productPlant#32259, timezonecode#32273, outboundUnit#32290]
(2202) Project
Arguments: [plant#32248]
(2203) Deduplicate
Arguments: [plant#32248]
(2204) Join
Arguments: Inner, (plantUuid#32244 = plant#32248)
(2205) Project
Arguments: [plantId#32243, plantUuid#32244, storageLocId#32245, storageLocUuid#32246]
(2206) Project
Arguments: [plantId#32243, plantUuid#32244 AS plant#32291, storageLocId#32245, storageLocUuid#32246]
(2207) Join
Arguments: Inner, (plant#31555 = plant#32291)
(2208) Project
Arguments: [plant#31555, product#31554, orderDateTime#31556, productPlant#31566, timezonecode#31580, outboundUnit#31597, stockDatetime#31876, stockBatchQuantities#31877, stockBatchShelfLifeEndDatetimes#31878, dayBucketDemands#32217, pointInTimeDemands#32218, plantId#32243, storageLocId#32245, storageLocUuid#32246, plant#32291]
(2209) LogicalRelation
Arguments: parquet, [systemId#32292, internalUUID#32293, id#32294, displayId#32295, supplier#32296, type#32297, status#32298, isMarkedForDeletion#32299, items#32300], false
(2210) Repartition
Arguments: 10, true
(2211) Generate
Arguments: explode(items#32300), false, [item#32301]
(2212) Project
Arguments: [id#32294, internalUUID#32293, isMarkedForDeletion#32299, supplier#32296.internalRefUUID AS supplierUuid#32302, item#32301]
(2213) Filter
Arguments: (((NOT isMarkedForDeletion#32299 AND NOT item#32301.deletionIndicator) AND NOT item#32301.completeIndicator) AND NOT item#32301.returnIndicator)
(2214) Project
Arguments: [id#32294, internalUUID#32293, supplierUuid#32302, item#32301.plant.internalRefUUID AS plant#32303, item#32301.product.internalRefUUID AS product#32304, item#32301.storageLocation.internalRefUUID AS storageLocUuid#32305, item#32301.quantityUnit.code AS quantityUom#32306, item#32301.quantityUnit.internalRefUUID AS quantityUomUuid#32307, item#32301.quantityNumerator AS quantityNumerator#32308, item#32301.quantityDenominator AS quantityDenominator#32309, item#32301.scheduleLines AS scheduleLines#32310, item#32301.confirmations AS confirmations#32311]
(2215) Join
Arguments: Inner, (((product#31554 = product#32304) AND (plant#31555 = plant#32303)) AND (storageLocUuid#32246 = storageLocUuid#32305))
(2216) Project
Arguments: [product#31554, plant#31555, storageLocUuid#32246, orderDateTime#31556, productPlant#31566, timezonecode#31580, outboundUnit#31597, stockDatetime#31876, stockBatchQuantities#31877, stockBatchShelfLifeEndDatetimes#31878, dayBucketDemands#32217, pointInTimeDemands#32218, plantId#32243, storageLocId#32245, id#32294, internalUUID#32293, supplierUuid#32302, quantityUom#32306, quantityUomUuid#32307, quantityNumerator#32308, quantityDenominator#32309, scheduleLines#32310, confirmations#32311, product#32304, plant#32303, ... 2 more fields]
(2217) Project
Arguments: [id#32294, internalUUID#32293, supplierUuid#32302, plant#32303, product#32304, storageLocUuid#32305, quantityUom#32306, quantityUomUuid#32307, quantityNumerator#32308, quantityDenominator#32309, scheduleLines#32310, confirmations#32311, stockDatetime#31876, timezonecode#31580]
(2218) Project
Arguments: [id#32294, internalUUID#32293, supplierUuid#32302, plant#32303, product#32304, storageLocUuid#32305, quantityUom#32306, quantityUomUuid#32307, quantityNumerator#32308, quantityDenominator#32309, scheduleLines#32310, confirmations#32311, stockDatetime#31876, timezonecode#31580, array_size(filter(confirmations#32311, lambdafunction((((lambda x_12#27127.deletionIndicator = false) AND (lambda x_12#27127.isRelevantForConfirmation = true)) AND isnotnull(lambda x_12#27127.confirmedDeliveryAt)), lambda x_12#27127, false))) AS _w0#32312]
(2219) Window
Arguments: [sum(_w0#32312) windowspecdefinition(internalUUID#32293, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#32313L], [internalUUID#32293]
(2220) Project
Arguments: [id#32294, internalUUID#32293, supplierUuid#32302, plant#32303, product#32304, storageLocUuid#32305, quantityUom#32306, quantityUomUuid#32307, quantityNumerator#32308, quantityDenominator#32309, scheduleLines#32310, confirmations#32311, stockDatetime#31876, timezonecode#31580, _w0#32312, _we0#32313L, filter(transform(CASE WHEN (_we0#32313L > cast(0 as bigint)) THEN transform(filter(confirmations#32311, lambdafunction((((lambda x_12#27128.deletionIndicator = false) AND (lambda x_12#27128.isRelevantForConfirmation = true)) AND isnotnull(lambda x_12#27128.confirmedDeliveryAt)), lambda x_12#27128, false)), lambdafunction(struct(openQty, greatest((lambda x_13#27131.confirmedQuantity - coalesce(lambda x_13#27131.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_13#27131.confirmedDeliveryAt), lambda x_13#27131, false)) ELSE transform(scheduleLines#32310, lambdafunction(struct(openQty, greatest((lambda x_11#27129.quantity - coalesce(lambda x_11#27129.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_11#27129.deliveryAt), lambda x_11#27129, false)) END, lambdafunction(struct(documentId, id#32294, documentUuid, internalUUID#32293, openQty, lambda x_14#27132.openQty, openQtyInBaseUnit, ((lambda x_14#27132.openQty * quantityNumerator#32308) / quantityDenominator#32309), qtyUom, quantityUom#32306, qtyUomUuid, quantityUomUuid#32307, availabilityDatetime, lambda x_14#27132.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_14#27132, false)), lambdafunction(NOT (lambda x_15#27133.openQty = 0.0), lambda x_15#27133, false)) AS openGoodsMovements#32314]
(2221) Project
Arguments: [id#32294, internalUUID#32293, supplierUuid#32302, plant#32303, product#32304, storageLocUuid#32305, quantityUom#32306, quantityUomUuid#32307, quantityNumerator#32308, quantityDenominator#32309, scheduleLines#32310, confirmations#32311, stockDatetime#31876, timezonecode#31580, openGoodsMovements#32314]
(2222) Aggregate
Arguments: [product#32304, plant#32303], [product#32304, plant#32303, flatten(collect_list(openGoodsMovements#32314, 0, 0)) AS openGoodsMovements#32315]
(2223) Filter
Arguments: (array_size(openGoodsMovements#32315) > 0)
(2224) LogicalRelation
Arguments: parquet, [product#32316, plant#32317, orderDateTime#32318, planningStartDateTime#32319], false
(2225) RepartitionByExpression
Arguments: [product#32316, plant#32317], 10
(2226) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318]
(2227) LogicalRelation
Arguments: parquet, [systemId#32320, internalUUID#32321, plant#32322, product#32323, blockedForReplenishmentStartingFrom#32324, productionAspect#32325, salesPlant#32326, listing#32327], false
(2228) Repartition
Arguments: 10, true
(2229) Project
Arguments: [systemId#32320, internalUUID#32321, plant#32322, product#32323, blockedForReplenishmentStartingFrom#32324, productionAspect#32325, salesPlant#32326, listing#32327, struct(systemId, systemId#32320, internalUUID, internalUUID#32321, plant, plant#32322, product, product#32323, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32324, productionAspect, productionAspect#32325, salesPlant, salesPlant#32326, listing, listing#32327) AS productPlant#32328]
(2230) Project
Arguments: [productPlant#32328]
(2231) Join
Arguments: LeftOuter, ((product#32316 <=> productPlant#32328.product.internalRefUUID) AND (plant#32317 <=> productPlant#32328.plant.internalRefUUID))
(2232) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328]
(2233) SubqueryAlias
Arguments: wl
(2234) LogicalRelation
Arguments: parquet, [systemId#32329, internalUUID#32330, id#32331, displayId#32332, name#32333, category#32334, companyCode#32335, address#32336, mainDistributionChain#32337, mainPurchasingOrganization#32338, validPurchasingOrganizations#32339, productGroup#32340], false
(2235) Repartition
Arguments: 10, true
(2236) Project
Arguments: [internalUUID#32330, address#32336.timeZone.code AS timezonecode#32341]
(2237) Join
Arguments: LeftOuter, (plant#32317 <=> internalUUID#32330)
(2238) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, internalUUID#32330, CASE WHEN isnotnull(timezonecode#32341) THEN timezonecode#32341 ELSE UTC END AS timezonecode#32342]
(2239) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342]
(2240) LogicalRelation
Arguments: parquet, [systemId#32343, internalUUID#32344, id#32345, displayId#32346, name#32347, baseUnitOfMeasure#32348, unitOfMeasures#32349, unitOfMeasureConversions#32350, productionAspect#32351, salesAspect#32352, procurementAspect#32353, productGroup#32354], false
(2241) Repartition
Arguments: 10, true
(2242) Join
Arguments: LeftOuter, (product#32316 = internalUUID#32344)
(2243) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, systemId#32343, internalUUID#32344, id#32345, displayId#32346, name#32347, baseUnitOfMeasure#32348, unitOfMeasures#32349, unitOfMeasureConversions#32350, productionAspect#32351, salesAspect#32352, procurementAspect#32353, productGroup#32354, filter(unitOfMeasureConversions#32350, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32328.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32328.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32348.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32348.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32355]
(2244) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32355.quantityNumerator), true, [quantityNumerator#32356]
(2245) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, systemId#32343, internalUUID#32344, id#32345, displayId#32346, name#32347, baseUnitOfMeasure#32348, unitOfMeasures#32349, unitOfMeasureConversions#32350, productionAspect#32351, salesAspect#32352, procurementAspect#32353, productGroup#32354, filteredUnitOfMeasureConversions#32355, quantityNumerator#32356]
(2246) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32355.quantityDenominator), true, [quantityDenominator#32357]
(2247) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, systemId#32343, internalUUID#32344, id#32345, displayId#32346, name#32347, baseUnitOfMeasure#32348, unitOfMeasures#32349, unitOfMeasureConversions#32350, productionAspect#32351, salesAspect#32352, procurementAspect#32353, productGroup#32354, filteredUnitOfMeasureConversions#32355, quantityNumerator#32356, quantityDenominator#32357]
(2248) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, systemId#32343, internalUUID#32344, id#32345, displayId#32346, name#32347, baseUnitOfMeasure#32348, unitOfMeasures#32349, unitOfMeasureConversions#32350, productionAspect#32351, salesAspect#32352, procurementAspect#32353, productGroup#32354, filteredUnitOfMeasureConversions#32355, quantityNumerator#32356, quantityDenominator#32357, (cast(quantityNumerator#32356 as double) / cast(quantityDenominator#32357 as double)) AS outboundUnit#32358]
(2249) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, systemId#32343, internalUUID#32344, id#32345, displayId#32346, name#32347, baseUnitOfMeasure#32348, unitOfMeasures#32349, unitOfMeasureConversions#32350, productionAspect#32351, salesAspect#32352, procurementAspect#32353, productGroup#32354, filteredUnitOfMeasureConversions#32355, quantityNumerator#32356, quantityDenominator#32357, CASE WHEN (isnull(outboundUnit#32358) OR (outboundUnit#32358 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32358 END AS outboundUnit#32359]
(2250) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, outboundUnit#32359]
(2251) LogicalRelation
Arguments: parquet, [systemId#32360, internalUUID#32361, product#32362, plant#32363, calculationDateTime#32364, stockQuantities#32365], false
(2252) Repartition
Arguments: 10, true
(2253) LogicalRelation
Arguments: parquet, [marketUnit#32366, description#32367, articleHierarchy#32368, defaultCurrency#32369, responsibilities#32370, replenishmentTypes#32371, distributionCenters#32372, assignedArticleHierarchyNodes#32373, minOrderQtySetting#32374, minOrderQtySettingInternal#32375, listingCheck#32376, odsSelection#32377, demandProfiles#32378, constraintProfiles#32379, optimizationProfiles#32380, orderGroupSplitProfiles#32381, supplierMinimumProfiles#32382, multipleRestrictionProfiles#32383, preferredUomSource#32384, handlingOfUnfulfilledDemands#32385, negligibleQuantitiesThreshold#32386, eventtype#32387], false
(2254) Repartition
Arguments: 10, true
(2255) Filter
Arguments: (marketUnit#32366 <=> DIP_1691)
(2256) Project
Arguments: [marketUnit#32366, description#32367, articleHierarchy#32368, defaultCurrency#32369, responsibilities#32370, replenishmentTypes#32371, distributionCenters#32372, assignedArticleHierarchyNodes#32373, minOrderQtySetting#32374, minOrderQtySettingInternal#32375, listingCheck#32376, odsSelection#32377, demandProfiles#32378, constraintProfiles#32379, optimizationProfiles#32380, orderGroupSplitProfiles#32381, supplierMinimumProfiles#32382, multipleRestrictionProfiles#32383, preferredUomSource#32384, handlingOfUnfulfilledDemands#32385, negligibleQuantitiesThreshold#32386, eventtype#32387]
(2257) Project
Arguments: [distributionCenters#32372]
(2258) Generate
Arguments: explode(distributionCenters#32372), false, [distributionCenters#32388]
(2259) Project
Arguments: [distributionCenters#32388]
(2260) Generate
Arguments: explode(distributionCenters#32388.storageLocations), false, [storageLocations#32389]
(2261) Project
Arguments: [distributionCenters#32388.id AS plantId#32390, distributionCenters#32388.internalRefUUID AS plantUuid#32391, storageLocations#32389]
(2262) Project
Arguments: [plantId#32390, plantUuid#32391, storageLocations#32389.id AS storageLocId#32392, storageLocations#32389.internalRefUUID AS storageLocUuid#32393]
(2263) LogicalRelation
Arguments: parquet, [product#32394, plant#32395, orderDateTime#32396, planningStartDateTime#32397], false
(2264) RepartitionByExpression
Arguments: [product#32394, plant#32395], 10
(2265) Project
Arguments: [product#32394, plant#32395, orderDateTime#32396]
(2266) LogicalRelation
Arguments: parquet, [systemId#32398, internalUUID#32399, plant#32400, product#32401, blockedForReplenishmentStartingFrom#32402, productionAspect#32403, salesPlant#32404, listing#32405], false
(2267) Repartition
Arguments: 10, true
(2268) Project
Arguments: [systemId#32398, internalUUID#32399, plant#32400, product#32401, blockedForReplenishmentStartingFrom#32402, productionAspect#32403, salesPlant#32404, listing#32405, struct(systemId, systemId#32398, internalUUID, internalUUID#32399, plant, plant#32400, product, product#32401, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32402, productionAspect, productionAspect#32403, salesPlant, salesPlant#32404, listing, listing#32405) AS productPlant#32406]
(2269) Project
Arguments: [productPlant#32406]
(2270) Join
Arguments: LeftOuter, ((product#32394 <=> productPlant#32406.product.internalRefUUID) AND (plant#32395 <=> productPlant#32406.plant.internalRefUUID))
(2271) Project
Arguments: [product#32394, plant#32395, orderDateTime#32396, productPlant#32406]
(2272) SubqueryAlias
Arguments: wl
(2273) LogicalRelation
Arguments: parquet, [systemId#32407, internalUUID#32408, id#32409, displayId#32410, name#32411, category#32412, companyCode#32413, address#32414, mainDistributionChain#32415, mainPurchasingOrganization#32416, validPurchasingOrganizations#32417, productGroup#32418], false
(2274) Repartition
Arguments: 10, true
(2275) Project
Arguments: [internalUUID#32408, address#32414.timeZone.code AS timezonecode#32419]
(2276) Join
Arguments: LeftOuter, (plant#32395 <=> internalUUID#32408)
(2277) Project
Arguments: [product#32394, plant#32395, orderDateTime#32396, productPlant#32406, internalUUID#32408, CASE WHEN isnotnull(timezonecode#32419) THEN timezonecode#32419 ELSE UTC END AS timezonecode#32420]
(2278) Project
Arguments: [product#32394, plant#32395, orderDateTime#32396, productPlant#32406, timezonecode#32420]
(2279) LogicalRelation
Arguments: parquet, [systemId#32421, internalUUID#32422, id#32423, displayId#32424, name#32425, baseUnitOfMeasure#32426, unitOfMeasures#32427, unitOfMeasureConversions#32428, productionAspect#32429, salesAspect#32430, procurementAspect#32431, productGroup#32432], false
(2280) Repartition
Arguments: 10, true
(2281) Join
Arguments: LeftOuter, (product#32394 = internalUUID#32422)
(2282) Project
Arguments: [product#32394, plant#32395, orderDateTime#32396, productPlant#32406, timezonecode#32420, systemId#32421, internalUUID#32422, id#32423, displayId#32424, name#32425, baseUnitOfMeasure#32426, unitOfMeasures#32427, unitOfMeasureConversions#32428, productionAspect#32429, salesAspect#32430, procurementAspect#32431, productGroup#32432, filter(unitOfMeasureConversions#32428, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32406.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32406.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32426.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32426.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32433]
(2283) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32433.quantityNumerator), true, [quantityNumerator#32434]
(2284) Project
Arguments: [product#32394, plant#32395, orderDateTime#32396, productPlant#32406, timezonecode#32420, systemId#32421, internalUUID#32422, id#32423, displayId#32424, name#32425, baseUnitOfMeasure#32426, unitOfMeasures#32427, unitOfMeasureConversions#32428, productionAspect#32429, salesAspect#32430, procurementAspect#32431, productGroup#32432, filteredUnitOfMeasureConversions#32433, quantityNumerator#32434]
(2285) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32433.quantityDenominator), true, [quantityDenominator#32435]
(2286) Project
Arguments: [product#32394, plant#32395, orderDateTime#32396, productPlant#32406, timezonecode#32420, systemId#32421, internalUUID#32422, id#32423, displayId#32424, name#32425, baseUnitOfMeasure#32426, unitOfMeasures#32427, unitOfMeasureConversions#32428, productionAspect#32429, salesAspect#32430, procurementAspect#32431, productGroup#32432, filteredUnitOfMeasureConversions#32433, quantityNumerator#32434, quantityDenominator#32435]
(2287) Project
Arguments: [product#32394, plant#32395, orderDateTime#32396, productPlant#32406, timezonecode#32420, systemId#32421, internalUUID#32422, id#32423, displayId#32424, name#32425, baseUnitOfMeasure#32426, unitOfMeasures#32427, unitOfMeasureConversions#32428, productionAspect#32429, salesAspect#32430, procurementAspect#32431, productGroup#32432, filteredUnitOfMeasureConversions#32433, quantityNumerator#32434, quantityDenominator#32435, (cast(quantityNumerator#32434 as double) / cast(quantityDenominator#32435 as double)) AS outboundUnit#32436]
(2288) Project
Arguments: [product#32394, plant#32395, orderDateTime#32396, productPlant#32406, timezonecode#32420, systemId#32421, internalUUID#32422, id#32423, displayId#32424, name#32425, baseUnitOfMeasure#32426, unitOfMeasures#32427, unitOfMeasureConversions#32428, productionAspect#32429, salesAspect#32430, procurementAspect#32431, productGroup#32432, filteredUnitOfMeasureConversions#32433, quantityNumerator#32434, quantityDenominator#32435, CASE WHEN (isnull(outboundUnit#32436) OR (outboundUnit#32436 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32436 END AS outboundUnit#32437]
(2289) Project
Arguments: [product#32394, plant#32395, orderDateTime#32396, productPlant#32406, timezonecode#32420, outboundUnit#32437]
(2290) Project
Arguments: [plant#32395]
(2291) Deduplicate
Arguments: [plant#32395]
(2292) Join
Arguments: Inner, (plantUuid#32391 = plant#32395)
(2293) Project
Arguments: [plantId#32390, plantUuid#32391, storageLocId#32392, storageLocUuid#32393]
(2294) Join
Arguments: Inner, (plant#32363.internalRefUUID <=> plantUuid#32391)
(2295) Generate
Arguments: explode(filter(stockQuantities#32365, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#32393) AND (lambda x#26016.storageLocation.Id = storageLocId#32392)), lambda x#26016, false))), false, [stockQuantity#32438]
(2296) Project
Arguments: [systemId#32360, internalUUID#32361, product#32362, plant#32363, calculationDateTime#32364, stockQuantities#32365, plantId#32390, plantUuid#32391, storageLocId#32392, storageLocUuid#32393, stockQuantity#32438]
(2297) Aggregate
Arguments: [plantUuid#32391, internalUUID#32361, plant#32363, product#32362, systemId#32360], [plantUuid#32391, internalUUID#32361, plant#32363, product#32362, systemId#32360, first(calculationDateTime#32364, false) AS calculationDateTime#32439, collect_list(stockQuantity#32438, 0, 0) AS stockQuantities#32440]
(2298) Project
Arguments: [systemId#32360, internalUUID#32361, product#32362, plant#32363, calculationDateTime#32439, stockQuantities#32440]
(2299) Generate
Arguments: explode(stockQuantities#32440), false, [stockQuantity#32441]
(2300) Project
Arguments: [systemId#32360, internalUUID#32361, product#32362, plant#32363, calculationDateTime#32439, stockQuantities#32440, stockQuantity#32441]
(2301) Project
Arguments: [plant#32363.id AS plant#32442, plant#32363.internalRefUUID AS plantUuid#32443, product#32362.id AS product#32444, product#32362.internalRefUUID AS productUuid#32445, calculationDateTime#32439, stockQuantity#32441.storagelocation.id AS storageLocId#32446, stockQuantity#32441.storagelocation.internalRefUUID AS storageLocUuid#32447, stockQuantity#32441.quantity.measure AS quantity#32448, stockQuantity#32441.specialStockIndicator.code AS specialStockIndicator#32449, stockQuantity#32441.stockType.code AS stockType#32450]
(2302) Filter
Arguments: ((specialStockIndicator#32449 = ) AND (stockType#32450 = 01))
(2303) LogicalRelation
Arguments: parquet, [product#32451, plant#32452, orderDateTime#32453, planningStartDateTime#32454], false
(2304) RepartitionByExpression
Arguments: [product#32451, plant#32452], 10
(2305) Project
Arguments: [product#32451, plant#32452, orderDateTime#32453]
(2306) LogicalRelation
Arguments: parquet, [systemId#32455, internalUUID#32456, plant#32457, product#32458, blockedForReplenishmentStartingFrom#32459, productionAspect#32460, salesPlant#32461, listing#32462], false
(2307) Repartition
Arguments: 10, true
(2308) Project
Arguments: [systemId#32455, internalUUID#32456, plant#32457, product#32458, blockedForReplenishmentStartingFrom#32459, productionAspect#32460, salesPlant#32461, listing#32462, struct(systemId, systemId#32455, internalUUID, internalUUID#32456, plant, plant#32457, product, product#32458, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32459, productionAspect, productionAspect#32460, salesPlant, salesPlant#32461, listing, listing#32462) AS productPlant#32463]
(2309) Project
Arguments: [productPlant#32463]
(2310) Join
Arguments: LeftOuter, ((product#32451 <=> productPlant#32463.product.internalRefUUID) AND (plant#32452 <=> productPlant#32463.plant.internalRefUUID))
(2311) Project
Arguments: [product#32451, plant#32452, orderDateTime#32453, productPlant#32463]
(2312) SubqueryAlias
Arguments: wl
(2313) LogicalRelation
Arguments: parquet, [systemId#32464, internalUUID#32465, id#32466, displayId#32467, name#32468, category#32469, companyCode#32470, address#32471, mainDistributionChain#32472, mainPurchasingOrganization#32473, validPurchasingOrganizations#32474, productGroup#32475], false
(2314) Repartition
Arguments: 10, true
(2315) Project
Arguments: [internalUUID#32465, address#32471.timeZone.code AS timezonecode#32476]
(2316) Join
Arguments: LeftOuter, (plant#32452 <=> internalUUID#32465)
(2317) Project
Arguments: [product#32451, plant#32452, orderDateTime#32453, productPlant#32463, internalUUID#32465, CASE WHEN isnotnull(timezonecode#32476) THEN timezonecode#32476 ELSE UTC END AS timezonecode#32477]
(2318) Project
Arguments: [product#32451, plant#32452, orderDateTime#32453, productPlant#32463, timezonecode#32477]
(2319) LogicalRelation
Arguments: parquet, [systemId#32478, internalUUID#32479, id#32480, displayId#32481, name#32482, baseUnitOfMeasure#32483, unitOfMeasures#32484, unitOfMeasureConversions#32485, productionAspect#32486, salesAspect#32487, procurementAspect#32488, productGroup#32489], false
(2320) Repartition
Arguments: 10, true
(2321) Join
Arguments: LeftOuter, (product#32451 = internalUUID#32479)
(2322) Project
Arguments: [product#32451, plant#32452, orderDateTime#32453, productPlant#32463, timezonecode#32477, systemId#32478, internalUUID#32479, id#32480, displayId#32481, name#32482, baseUnitOfMeasure#32483, unitOfMeasures#32484, unitOfMeasureConversions#32485, productionAspect#32486, salesAspect#32487, procurementAspect#32488, productGroup#32489, filter(unitOfMeasureConversions#32485, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32463.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32463.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32483.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32483.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32490]
(2323) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32490.quantityNumerator), true, [quantityNumerator#32491]
(2324) Project
Arguments: [product#32451, plant#32452, orderDateTime#32453, productPlant#32463, timezonecode#32477, systemId#32478, internalUUID#32479, id#32480, displayId#32481, name#32482, baseUnitOfMeasure#32483, unitOfMeasures#32484, unitOfMeasureConversions#32485, productionAspect#32486, salesAspect#32487, procurementAspect#32488, productGroup#32489, filteredUnitOfMeasureConversions#32490, quantityNumerator#32491]
(2325) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32490.quantityDenominator), true, [quantityDenominator#32492]
(2326) Project
Arguments: [product#32451, plant#32452, orderDateTime#32453, productPlant#32463, timezonecode#32477, systemId#32478, internalUUID#32479, id#32480, displayId#32481, name#32482, baseUnitOfMeasure#32483, unitOfMeasures#32484, unitOfMeasureConversions#32485, productionAspect#32486, salesAspect#32487, procurementAspect#32488, productGroup#32489, filteredUnitOfMeasureConversions#32490, quantityNumerator#32491, quantityDenominator#32492]
(2327) Project
Arguments: [product#32451, plant#32452, orderDateTime#32453, productPlant#32463, timezonecode#32477, systemId#32478, internalUUID#32479, id#32480, displayId#32481, name#32482, baseUnitOfMeasure#32483, unitOfMeasures#32484, unitOfMeasureConversions#32485, productionAspect#32486, salesAspect#32487, procurementAspect#32488, productGroup#32489, filteredUnitOfMeasureConversions#32490, quantityNumerator#32491, quantityDenominator#32492, (cast(quantityNumerator#32491 as double) / cast(quantityDenominator#32492 as double)) AS outboundUnit#32493]
(2328) Project
Arguments: [product#32451, plant#32452, orderDateTime#32453, productPlant#32463, timezonecode#32477, systemId#32478, internalUUID#32479, id#32480, displayId#32481, name#32482, baseUnitOfMeasure#32483, unitOfMeasures#32484, unitOfMeasureConversions#32485, productionAspect#32486, salesAspect#32487, procurementAspect#32488, productGroup#32489, filteredUnitOfMeasureConversions#32490, quantityNumerator#32491, quantityDenominator#32492, CASE WHEN (isnull(outboundUnit#32493) OR (outboundUnit#32493 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32493 END AS outboundUnit#32494]
(2329) Project
Arguments: [product#32451, plant#32452, orderDateTime#32453, productPlant#32463, timezonecode#32477, outboundUnit#32494]
(2330) Join
Arguments: Inner, ((plantUuid#32443 = plant#32452) AND (productUuid#32445 = product#32451))
(2331) Filter
Arguments: (calculationDateTime#32439 <= orderDateTime#32453)
(2332) Project
Arguments: [plantUuid#32443 AS plant#32495, productUuid#32445 AS product#32496, storageLocId#32446, calculationDateTime#32439, quantity#32448]
(2333) LogicalRelation
Arguments: parquet, [systemId#32497, internalUUID#32498, product#32499, plant#32500, calculationDateTime#32501, stockQuantities#32502], false
(2334) Repartition
Arguments: 10, true
(2335) LogicalRelation
Arguments: parquet, [marketUnit#32503, description#32504, articleHierarchy#32505, defaultCurrency#32506, responsibilities#32507, replenishmentTypes#32508, distributionCenters#32509, assignedArticleHierarchyNodes#32510, minOrderQtySetting#32511, minOrderQtySettingInternal#32512, listingCheck#32513, odsSelection#32514, demandProfiles#32515, constraintProfiles#32516, optimizationProfiles#32517, orderGroupSplitProfiles#32518, supplierMinimumProfiles#32519, multipleRestrictionProfiles#32520, preferredUomSource#32521, handlingOfUnfulfilledDemands#32522, negligibleQuantitiesThreshold#32523, eventtype#32524], false
(2336) Repartition
Arguments: 10, true
(2337) Filter
Arguments: (marketUnit#32503 <=> DIP_1691)
(2338) Project
Arguments: [marketUnit#32503, description#32504, articleHierarchy#32505, defaultCurrency#32506, responsibilities#32507, replenishmentTypes#32508, distributionCenters#32509, assignedArticleHierarchyNodes#32510, minOrderQtySetting#32511, minOrderQtySettingInternal#32512, listingCheck#32513, odsSelection#32514, demandProfiles#32515, constraintProfiles#32516, optimizationProfiles#32517, orderGroupSplitProfiles#32518, supplierMinimumProfiles#32519, multipleRestrictionProfiles#32520, preferredUomSource#32521, handlingOfUnfulfilledDemands#32522, negligibleQuantitiesThreshold#32523, eventtype#32524]
(2339) Project
Arguments: [distributionCenters#32509]
(2340) Generate
Arguments: explode(distributionCenters#32509), false, [distributionCenters#32525]
(2341) Project
Arguments: [distributionCenters#32525]
(2342) Generate
Arguments: explode(distributionCenters#32525.storageLocations), false, [storageLocations#32526]
(2343) Project
Arguments: [distributionCenters#32525.id AS plantId#32527, distributionCenters#32525.internalRefUUID AS plantUuid#32528, storageLocations#32526]
(2344) Project
Arguments: [plantId#32527, plantUuid#32528, storageLocations#32526.id AS storageLocId#32529, storageLocations#32526.internalRefUUID AS storageLocUuid#32530]
(2345) LogicalRelation
Arguments: parquet, [product#32531, plant#32532, orderDateTime#32533, planningStartDateTime#32534], false
(2346) RepartitionByExpression
Arguments: [product#32531, plant#32532], 10
(2347) Project
Arguments: [product#32531, plant#32532, orderDateTime#32533]
(2348) LogicalRelation
Arguments: parquet, [systemId#32535, internalUUID#32536, plant#32537, product#32538, blockedForReplenishmentStartingFrom#32539, productionAspect#32540, salesPlant#32541, listing#32542], false
(2349) Repartition
Arguments: 10, true
(2350) Project
Arguments: [systemId#32535, internalUUID#32536, plant#32537, product#32538, blockedForReplenishmentStartingFrom#32539, productionAspect#32540, salesPlant#32541, listing#32542, struct(systemId, systemId#32535, internalUUID, internalUUID#32536, plant, plant#32537, product, product#32538, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32539, productionAspect, productionAspect#32540, salesPlant, salesPlant#32541, listing, listing#32542) AS productPlant#32543]
(2351) Project
Arguments: [productPlant#32543]
(2352) Join
Arguments: LeftOuter, ((product#32531 <=> productPlant#32543.product.internalRefUUID) AND (plant#32532 <=> productPlant#32543.plant.internalRefUUID))
(2353) Project
Arguments: [product#32531, plant#32532, orderDateTime#32533, productPlant#32543]
(2354) SubqueryAlias
Arguments: wl
(2355) LogicalRelation
Arguments: parquet, [systemId#32544, internalUUID#32545, id#32546, displayId#32547, name#32548, category#32549, companyCode#32550, address#32551, mainDistributionChain#32552, mainPurchasingOrganization#32553, validPurchasingOrganizations#32554, productGroup#32555], false
(2356) Repartition
Arguments: 10, true
(2357) Project
Arguments: [internalUUID#32545, address#32551.timeZone.code AS timezonecode#32556]
(2358) Join
Arguments: LeftOuter, (plant#32532 <=> internalUUID#32545)
(2359) Project
Arguments: [product#32531, plant#32532, orderDateTime#32533, productPlant#32543, internalUUID#32545, CASE WHEN isnotnull(timezonecode#32556) THEN timezonecode#32556 ELSE UTC END AS timezonecode#32557]
(2360) Project
Arguments: [product#32531, plant#32532, orderDateTime#32533, productPlant#32543, timezonecode#32557]
(2361) LogicalRelation
Arguments: parquet, [systemId#32558, internalUUID#32559, id#32560, displayId#32561, name#32562, baseUnitOfMeasure#32563, unitOfMeasures#32564, unitOfMeasureConversions#32565, productionAspect#32566, salesAspect#32567, procurementAspect#32568, productGroup#32569], false
(2362) Repartition
Arguments: 10, true
(2363) Join
Arguments: LeftOuter, (product#32531 = internalUUID#32559)
(2364) Project
Arguments: [product#32531, plant#32532, orderDateTime#32533, productPlant#32543, timezonecode#32557, systemId#32558, internalUUID#32559, id#32560, displayId#32561, name#32562, baseUnitOfMeasure#32563, unitOfMeasures#32564, unitOfMeasureConversions#32565, productionAspect#32566, salesAspect#32567, procurementAspect#32568, productGroup#32569, filter(unitOfMeasureConversions#32565, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32543.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32543.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32563.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32563.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32570]
(2365) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32570.quantityNumerator), true, [quantityNumerator#32571]
(2366) Project
Arguments: [product#32531, plant#32532, orderDateTime#32533, productPlant#32543, timezonecode#32557, systemId#32558, internalUUID#32559, id#32560, displayId#32561, name#32562, baseUnitOfMeasure#32563, unitOfMeasures#32564, unitOfMeasureConversions#32565, productionAspect#32566, salesAspect#32567, procurementAspect#32568, productGroup#32569, filteredUnitOfMeasureConversions#32570, quantityNumerator#32571]
(2367) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32570.quantityDenominator), true, [quantityDenominator#32572]
(2368) Project
Arguments: [product#32531, plant#32532, orderDateTime#32533, productPlant#32543, timezonecode#32557, systemId#32558, internalUUID#32559, id#32560, displayId#32561, name#32562, baseUnitOfMeasure#32563, unitOfMeasures#32564, unitOfMeasureConversions#32565, productionAspect#32566, salesAspect#32567, procurementAspect#32568, productGroup#32569, filteredUnitOfMeasureConversions#32570, quantityNumerator#32571, quantityDenominator#32572]
(2369) Project
Arguments: [product#32531, plant#32532, orderDateTime#32533, productPlant#32543, timezonecode#32557, systemId#32558, internalUUID#32559, id#32560, displayId#32561, name#32562, baseUnitOfMeasure#32563, unitOfMeasures#32564, unitOfMeasureConversions#32565, productionAspect#32566, salesAspect#32567, procurementAspect#32568, productGroup#32569, filteredUnitOfMeasureConversions#32570, quantityNumerator#32571, quantityDenominator#32572, (cast(quantityNumerator#32571 as double) / cast(quantityDenominator#32572 as double)) AS outboundUnit#32573]
(2370) Project
Arguments: [product#32531, plant#32532, orderDateTime#32533, productPlant#32543, timezonecode#32557, systemId#32558, internalUUID#32559, id#32560, displayId#32561, name#32562, baseUnitOfMeasure#32563, unitOfMeasures#32564, unitOfMeasureConversions#32565, productionAspect#32566, salesAspect#32567, procurementAspect#32568, productGroup#32569, filteredUnitOfMeasureConversions#32570, quantityNumerator#32571, quantityDenominator#32572, CASE WHEN (isnull(outboundUnit#32573) OR (outboundUnit#32573 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32573 END AS outboundUnit#32574]
(2371) Project
Arguments: [product#32531, plant#32532, orderDateTime#32533, productPlant#32543, timezonecode#32557, outboundUnit#32574]
(2372) Project
Arguments: [plant#32532]
(2373) Deduplicate
Arguments: [plant#32532]
(2374) Join
Arguments: Inner, (plantUuid#32528 = plant#32532)
(2375) Project
Arguments: [plantId#32527, plantUuid#32528, storageLocId#32529, storageLocUuid#32530]
(2376) Join
Arguments: Inner, (plant#32500.internalRefUUID <=> plantUuid#32528)
(2377) Generate
Arguments: explode(filter(stockQuantities#32502, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#32530) AND (lambda x#26016.storageLocation.Id = storageLocId#32529)), lambda x#26016, false))), false, [stockQuantity#32575]
(2378) Project
Arguments: [systemId#32497, internalUUID#32498, product#32499, plant#32500, calculationDateTime#32501, stockQuantities#32502, plantId#32527, plantUuid#32528, storageLocId#32529, storageLocUuid#32530, stockQuantity#32575]
(2379) Aggregate
Arguments: [plantUuid#32528, internalUUID#32498, plant#32500, product#32499, systemId#32497], [plantUuid#32528, internalUUID#32498, plant#32500, product#32499, systemId#32497, first(calculationDateTime#32501, false) AS calculationDateTime#32576, collect_list(stockQuantity#32575, 0, 0) AS stockQuantities#32577]
(2380) Project
Arguments: [systemId#32497, internalUUID#32498, product#32499, plant#32500, calculationDateTime#32576, stockQuantities#32577]
(2381) Generate
Arguments: explode(stockQuantities#32577), false, [stockQuantity#32578]
(2382) Project
Arguments: [systemId#32497, internalUUID#32498, product#32499, plant#32500, calculationDateTime#32576, stockQuantities#32577, stockQuantity#32578]
(2383) Project
Arguments: [plant#32500.id AS plant#32579, plant#32500.internalRefUUID AS plantUuid#32580, product#32499.id AS product#32581, product#32499.internalRefUUID AS productUuid#32582, calculationDateTime#32576, stockQuantity#32578.storagelocation.id AS storageLocId#32583, stockQuantity#32578.storagelocation.internalRefUUID AS storageLocUuid#32584, stockQuantity#32578.quantity.measure AS quantity#32585, stockQuantity#32578.specialStockIndicator.code AS specialStockIndicator#32586, stockQuantity#32578.stockType.code AS stockType#32587]
(2384) Filter
Arguments: ((specialStockIndicator#32586 = ) AND (stockType#32587 = 01))
(2385) LogicalRelation
Arguments: parquet, [product#32588, plant#32589, orderDateTime#32590, planningStartDateTime#32591], false
(2386) RepartitionByExpression
Arguments: [product#32588, plant#32589], 10
(2387) Project
Arguments: [product#32588, plant#32589, orderDateTime#32590]
(2388) LogicalRelation
Arguments: parquet, [systemId#32592, internalUUID#32593, plant#32594, product#32595, blockedForReplenishmentStartingFrom#32596, productionAspect#32597, salesPlant#32598, listing#32599], false
(2389) Repartition
Arguments: 10, true
(2390) Project
Arguments: [systemId#32592, internalUUID#32593, plant#32594, product#32595, blockedForReplenishmentStartingFrom#32596, productionAspect#32597, salesPlant#32598, listing#32599, struct(systemId, systemId#32592, internalUUID, internalUUID#32593, plant, plant#32594, product, product#32595, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32596, productionAspect, productionAspect#32597, salesPlant, salesPlant#32598, listing, listing#32599) AS productPlant#32600]
(2391) Project
Arguments: [productPlant#32600]
(2392) Join
Arguments: LeftOuter, ((product#32588 <=> productPlant#32600.product.internalRefUUID) AND (plant#32589 <=> productPlant#32600.plant.internalRefUUID))
(2393) Project
Arguments: [product#32588, plant#32589, orderDateTime#32590, productPlant#32600]
(2394) SubqueryAlias
Arguments: wl
(2395) LogicalRelation
Arguments: parquet, [systemId#32601, internalUUID#32602, id#32603, displayId#32604, name#32605, category#32606, companyCode#32607, address#32608, mainDistributionChain#32609, mainPurchasingOrganization#32610, validPurchasingOrganizations#32611, productGroup#32612], false
(2396) Repartition
Arguments: 10, true
(2397) Project
Arguments: [internalUUID#32602, address#32608.timeZone.code AS timezonecode#32613]
(2398) Join
Arguments: LeftOuter, (plant#32589 <=> internalUUID#32602)
(2399) Project
Arguments: [product#32588, plant#32589, orderDateTime#32590, productPlant#32600, internalUUID#32602, CASE WHEN isnotnull(timezonecode#32613) THEN timezonecode#32613 ELSE UTC END AS timezonecode#32614]
(2400) Project
Arguments: [product#32588, plant#32589, orderDateTime#32590, productPlant#32600, timezonecode#32614]
(2401) LogicalRelation
Arguments: parquet, [systemId#32615, internalUUID#32616, id#32617, displayId#32618, name#32619, baseUnitOfMeasure#32620, unitOfMeasures#32621, unitOfMeasureConversions#32622, productionAspect#32623, salesAspect#32624, procurementAspect#32625, productGroup#32626], false
(2402) Repartition
Arguments: 10, true
(2403) Join
Arguments: LeftOuter, (product#32588 = internalUUID#32616)
(2404) Project
Arguments: [product#32588, plant#32589, orderDateTime#32590, productPlant#32600, timezonecode#32614, systemId#32615, internalUUID#32616, id#32617, displayId#32618, name#32619, baseUnitOfMeasure#32620, unitOfMeasures#32621, unitOfMeasureConversions#32622, productionAspect#32623, salesAspect#32624, procurementAspect#32625, productGroup#32626, filter(unitOfMeasureConversions#32622, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32600.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32600.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32620.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32620.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32627]
(2405) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32627.quantityNumerator), true, [quantityNumerator#32628]
(2406) Project
Arguments: [product#32588, plant#32589, orderDateTime#32590, productPlant#32600, timezonecode#32614, systemId#32615, internalUUID#32616, id#32617, displayId#32618, name#32619, baseUnitOfMeasure#32620, unitOfMeasures#32621, unitOfMeasureConversions#32622, productionAspect#32623, salesAspect#32624, procurementAspect#32625, productGroup#32626, filteredUnitOfMeasureConversions#32627, quantityNumerator#32628]
(2407) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32627.quantityDenominator), true, [quantityDenominator#32629]
(2408) Project
Arguments: [product#32588, plant#32589, orderDateTime#32590, productPlant#32600, timezonecode#32614, systemId#32615, internalUUID#32616, id#32617, displayId#32618, name#32619, baseUnitOfMeasure#32620, unitOfMeasures#32621, unitOfMeasureConversions#32622, productionAspect#32623, salesAspect#32624, procurementAspect#32625, productGroup#32626, filteredUnitOfMeasureConversions#32627, quantityNumerator#32628, quantityDenominator#32629]
(2409) Project
Arguments: [product#32588, plant#32589, orderDateTime#32590, productPlant#32600, timezonecode#32614, systemId#32615, internalUUID#32616, id#32617, displayId#32618, name#32619, baseUnitOfMeasure#32620, unitOfMeasures#32621, unitOfMeasureConversions#32622, productionAspect#32623, salesAspect#32624, procurementAspect#32625, productGroup#32626, filteredUnitOfMeasureConversions#32627, quantityNumerator#32628, quantityDenominator#32629, (cast(quantityNumerator#32628 as double) / cast(quantityDenominator#32629 as double)) AS outboundUnit#32630]
(2410) Project
Arguments: [product#32588, plant#32589, orderDateTime#32590, productPlant#32600, timezonecode#32614, systemId#32615, internalUUID#32616, id#32617, displayId#32618, name#32619, baseUnitOfMeasure#32620, unitOfMeasures#32621, unitOfMeasureConversions#32622, productionAspect#32623, salesAspect#32624, procurementAspect#32625, productGroup#32626, filteredUnitOfMeasureConversions#32627, quantityNumerator#32628, quantityDenominator#32629, CASE WHEN (isnull(outboundUnit#32630) OR (outboundUnit#32630 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32630 END AS outboundUnit#32631]
(2411) Project
Arguments: [product#32588, plant#32589, orderDateTime#32590, productPlant#32600, timezonecode#32614, outboundUnit#32631]
(2412) Join
Arguments: Inner, ((plantUuid#32580 = plant#32589) AND (productUuid#32582 = product#32588))
(2413) Filter
Arguments: (calculationDateTime#32576 <= orderDateTime#32590)
(2414) Project
Arguments: [plantUuid#32580 AS plant#32632, productUuid#32582 AS product#32633, storageLocId#32583, calculationDateTime#32576, quantity#32585]
(2415) Aggregate
Arguments: [plant#32632, product#32633, storageLocId#32583], [plant#32632, product#32633, storageLocId#32583, max(calculationDateTime#32576) AS max_calc_datetime#32634]
(2416) Join
Arguments: Inner, ((((plant#32495 <=> plant#32632) AND (product#32496 <=> product#32633)) AND (storageLocId#32446 <=> storageLocId#32583)) AND (calculationDateTime#32439 <=> max_calc_datetime#32634))
(2417) Project
Arguments: [plant#32495, product#32496, storageLocId#32446, calculationDateTime#32439, quantity#32448]
(2418) Aggregate
Arguments: [product#32496, plant#32495], [product#32496, plant#32495, sum(quantity#32448) AS quantitySum#32635, min(calculationDateTime#32439) AS minCalculationDateTime#32636]
(2419) Project
Arguments: [product#32496, plant#32495, quantitySum#32635, minCalculationDateTime#32636, round(quantitySum#32635, 0) AS roundedQuantitySum#32637]
(2420) Join
Arguments: LeftOuter, ((plant#32317 = plant#32495) AND (product#32316 = product#32496))
(2421) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, outboundUnit#32359, roundedQuantitySum#32637, minCalculationDateTime#32636]
(2422) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, outboundUnit#32359, roundedQuantitySum#32637, minCalculationDateTime#32636, CASE WHEN isnotnull(minCalculationDateTime#32636) THEN minCalculationDateTime#32636 ELSE orderDateTime#32318 END AS stockDatetime#32638]
(2423) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, outboundUnit#32359, roundedQuantitySum#32637, minCalculationDateTime#32636, stockDatetime#32638, CASE WHEN isnotnull(roundedQuantitySum#32637) THEN array(roundedQuantitySum#32637) ELSE array(0.0) END AS stockBatchQuantities#32639]
(2424) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, outboundUnit#32359, roundedQuantitySum#32637, minCalculationDateTime#32636, stockDatetime#32638, stockBatchQuantities#32639, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#32640]
(2425) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, outboundUnit#32359, roundedQuantitySum#32637, stockDatetime#32638, stockBatchQuantities#32639, stockBatchShelfLifeEndDatetimes#32640]
(2426) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, outboundUnit#32359, stockDatetime#32638, stockBatchQuantities#32639, stockBatchShelfLifeEndDatetimes#32640]
(2427) LogicalRelation
Arguments: parquet, [product#32641, plant#32642, orderDateTime#32643, planningStartDateTime#32644], false
(2428) RepartitionByExpression
Arguments: [product#32641, plant#32642], 10
(2429) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643]
(2430) LogicalRelation
Arguments: parquet, [systemId#32645, internalUUID#32646, plant#32647, product#32648, blockedForReplenishmentStartingFrom#32649, productionAspect#32650, salesPlant#32651, listing#32652], false
(2431) Repartition
Arguments: 10, true
(2432) Project
Arguments: [systemId#32645, internalUUID#32646, plant#32647, product#32648, blockedForReplenishmentStartingFrom#32649, productionAspect#32650, salesPlant#32651, listing#32652, struct(systemId, systemId#32645, internalUUID, internalUUID#32646, plant, plant#32647, product, product#32648, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32649, productionAspect, productionAspect#32650, salesPlant, salesPlant#32651, listing, listing#32652) AS productPlant#32653]
(2433) Project
Arguments: [productPlant#32653]
(2434) Join
Arguments: LeftOuter, ((product#32641 <=> productPlant#32653.product.internalRefUUID) AND (plant#32642 <=> productPlant#32653.plant.internalRefUUID))
(2435) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653]
(2436) SubqueryAlias
Arguments: wl
(2437) LogicalRelation
Arguments: parquet, [systemId#32654, internalUUID#32655, id#32656, displayId#32657, name#32658, category#32659, companyCode#32660, address#32661, mainDistributionChain#32662, mainPurchasingOrganization#32663, validPurchasingOrganizations#32664, productGroup#32665], false
(2438) Repartition
Arguments: 10, true
(2439) Project
Arguments: [internalUUID#32655, address#32661.timeZone.code AS timezonecode#32666]
(2440) Join
Arguments: LeftOuter, (plant#32642 <=> internalUUID#32655)
(2441) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, internalUUID#32655, CASE WHEN isnotnull(timezonecode#32666) THEN timezonecode#32666 ELSE UTC END AS timezonecode#32667]
(2442) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667]
(2443) LogicalRelation
Arguments: parquet, [systemId#32668, internalUUID#32669, id#32670, displayId#32671, name#32672, baseUnitOfMeasure#32673, unitOfMeasures#32674, unitOfMeasureConversions#32675, productionAspect#32676, salesAspect#32677, procurementAspect#32678, productGroup#32679], false
(2444) Repartition
Arguments: 10, true
(2445) Join
Arguments: LeftOuter, (product#32641 = internalUUID#32669)
(2446) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, systemId#32668, internalUUID#32669, id#32670, displayId#32671, name#32672, baseUnitOfMeasure#32673, unitOfMeasures#32674, unitOfMeasureConversions#32675, productionAspect#32676, salesAspect#32677, procurementAspect#32678, productGroup#32679, filter(unitOfMeasureConversions#32675, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32653.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32653.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32673.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32673.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32680]
(2447) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32680.quantityNumerator), true, [quantityNumerator#32681]
(2448) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, systemId#32668, internalUUID#32669, id#32670, displayId#32671, name#32672, baseUnitOfMeasure#32673, unitOfMeasures#32674, unitOfMeasureConversions#32675, productionAspect#32676, salesAspect#32677, procurementAspect#32678, productGroup#32679, filteredUnitOfMeasureConversions#32680, quantityNumerator#32681]
(2449) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32680.quantityDenominator), true, [quantityDenominator#32682]
(2450) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, systemId#32668, internalUUID#32669, id#32670, displayId#32671, name#32672, baseUnitOfMeasure#32673, unitOfMeasures#32674, unitOfMeasureConversions#32675, productionAspect#32676, salesAspect#32677, procurementAspect#32678, productGroup#32679, filteredUnitOfMeasureConversions#32680, quantityNumerator#32681, quantityDenominator#32682]
(2451) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, systemId#32668, internalUUID#32669, id#32670, displayId#32671, name#32672, baseUnitOfMeasure#32673, unitOfMeasures#32674, unitOfMeasureConversions#32675, productionAspect#32676, salesAspect#32677, procurementAspect#32678, productGroup#32679, filteredUnitOfMeasureConversions#32680, quantityNumerator#32681, quantityDenominator#32682, (cast(quantityNumerator#32681 as double) / cast(quantityDenominator#32682 as double)) AS outboundUnit#32683]
(2452) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, systemId#32668, internalUUID#32669, id#32670, displayId#32671, name#32672, baseUnitOfMeasure#32673, unitOfMeasures#32674, unitOfMeasureConversions#32675, productionAspect#32676, salesAspect#32677, procurementAspect#32678, productGroup#32679, filteredUnitOfMeasureConversions#32680, quantityNumerator#32681, quantityDenominator#32682, CASE WHEN (isnull(outboundUnit#32683) OR (outboundUnit#32683 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32683 END AS outboundUnit#32684]
(2453) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684]
(2454) LogicalRelation
Arguments: parquet, [systemId#32685, internalUUID#32686, product#32687, plant#32688, calculationDateTime#32689, stockQuantities#32690], false
(2455) Repartition
Arguments: 10, true
(2456) LogicalRelation
Arguments: parquet, [marketUnit#32691, description#32692, articleHierarchy#32693, defaultCurrency#32694, responsibilities#32695, replenishmentTypes#32696, distributionCenters#32697, assignedArticleHierarchyNodes#32698, minOrderQtySetting#32699, minOrderQtySettingInternal#32700, listingCheck#32701, odsSelection#32702, demandProfiles#32703, constraintProfiles#32704, optimizationProfiles#32705, orderGroupSplitProfiles#32706, supplierMinimumProfiles#32707, multipleRestrictionProfiles#32708, preferredUomSource#32709, handlingOfUnfulfilledDemands#32710, negligibleQuantitiesThreshold#32711, eventtype#32712], false
(2457) Repartition
Arguments: 10, true
(2458) Filter
Arguments: (marketUnit#32691 <=> DIP_1691)
(2459) Project
Arguments: [marketUnit#32691, description#32692, articleHierarchy#32693, defaultCurrency#32694, responsibilities#32695, replenishmentTypes#32696, distributionCenters#32697, assignedArticleHierarchyNodes#32698, minOrderQtySetting#32699, minOrderQtySettingInternal#32700, listingCheck#32701, odsSelection#32702, demandProfiles#32703, constraintProfiles#32704, optimizationProfiles#32705, orderGroupSplitProfiles#32706, supplierMinimumProfiles#32707, multipleRestrictionProfiles#32708, preferredUomSource#32709, handlingOfUnfulfilledDemands#32710, negligibleQuantitiesThreshold#32711, eventtype#32712]
(2460) Project
Arguments: [distributionCenters#32697]
(2461) Generate
Arguments: explode(distributionCenters#32697), false, [distributionCenters#32713]
(2462) Project
Arguments: [distributionCenters#32713]
(2463) Generate
Arguments: explode(distributionCenters#32713.storageLocations), false, [storageLocations#32714]
(2464) Project
Arguments: [distributionCenters#32713.id AS plantId#32715, distributionCenters#32713.internalRefUUID AS plantUuid#32716, storageLocations#32714]
(2465) Project
Arguments: [plantId#32715, plantUuid#32716, storageLocations#32714.id AS storageLocId#32717, storageLocations#32714.internalRefUUID AS storageLocUuid#32718]
(2466) LogicalRelation
Arguments: parquet, [product#32719, plant#32720, orderDateTime#32721, planningStartDateTime#32722], false
(2467) RepartitionByExpression
Arguments: [product#32719, plant#32720], 10
(2468) Project
Arguments: [product#32719, plant#32720, orderDateTime#32721]
(2469) LogicalRelation
Arguments: parquet, [systemId#32723, internalUUID#32724, plant#32725, product#32726, blockedForReplenishmentStartingFrom#32727, productionAspect#32728, salesPlant#32729, listing#32730], false
(2470) Repartition
Arguments: 10, true
(2471) Project
Arguments: [systemId#32723, internalUUID#32724, plant#32725, product#32726, blockedForReplenishmentStartingFrom#32727, productionAspect#32728, salesPlant#32729, listing#32730, struct(systemId, systemId#32723, internalUUID, internalUUID#32724, plant, plant#32725, product, product#32726, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32727, productionAspect, productionAspect#32728, salesPlant, salesPlant#32729, listing, listing#32730) AS productPlant#32731]
(2472) Project
Arguments: [productPlant#32731]
(2473) Join
Arguments: LeftOuter, ((product#32719 <=> productPlant#32731.product.internalRefUUID) AND (plant#32720 <=> productPlant#32731.plant.internalRefUUID))
(2474) Project
Arguments: [product#32719, plant#32720, orderDateTime#32721, productPlant#32731]
(2475) SubqueryAlias
Arguments: wl
(2476) LogicalRelation
Arguments: parquet, [systemId#32732, internalUUID#32733, id#32734, displayId#32735, name#32736, category#32737, companyCode#32738, address#32739, mainDistributionChain#32740, mainPurchasingOrganization#32741, validPurchasingOrganizations#32742, productGroup#32743], false
(2477) Repartition
Arguments: 10, true
(2478) Project
Arguments: [internalUUID#32733, address#32739.timeZone.code AS timezonecode#32744]
(2479) Join
Arguments: LeftOuter, (plant#32720 <=> internalUUID#32733)
(2480) Project
Arguments: [product#32719, plant#32720, orderDateTime#32721, productPlant#32731, internalUUID#32733, CASE WHEN isnotnull(timezonecode#32744) THEN timezonecode#32744 ELSE UTC END AS timezonecode#32745]
(2481) Project
Arguments: [product#32719, plant#32720, orderDateTime#32721, productPlant#32731, timezonecode#32745]
(2482) LogicalRelation
Arguments: parquet, [systemId#32746, internalUUID#32747, id#32748, displayId#32749, name#32750, baseUnitOfMeasure#32751, unitOfMeasures#32752, unitOfMeasureConversions#32753, productionAspect#32754, salesAspect#32755, procurementAspect#32756, productGroup#32757], false
(2483) Repartition
Arguments: 10, true
(2484) Join
Arguments: LeftOuter, (product#32719 = internalUUID#32747)
(2485) Project
Arguments: [product#32719, plant#32720, orderDateTime#32721, productPlant#32731, timezonecode#32745, systemId#32746, internalUUID#32747, id#32748, displayId#32749, name#32750, baseUnitOfMeasure#32751, unitOfMeasures#32752, unitOfMeasureConversions#32753, productionAspect#32754, salesAspect#32755, procurementAspect#32756, productGroup#32757, filter(unitOfMeasureConversions#32753, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32731.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32731.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32751.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32751.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32758]
(2486) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32758.quantityNumerator), true, [quantityNumerator#32759]
(2487) Project
Arguments: [product#32719, plant#32720, orderDateTime#32721, productPlant#32731, timezonecode#32745, systemId#32746, internalUUID#32747, id#32748, displayId#32749, name#32750, baseUnitOfMeasure#32751, unitOfMeasures#32752, unitOfMeasureConversions#32753, productionAspect#32754, salesAspect#32755, procurementAspect#32756, productGroup#32757, filteredUnitOfMeasureConversions#32758, quantityNumerator#32759]
(2488) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32758.quantityDenominator), true, [quantityDenominator#32760]
(2489) Project
Arguments: [product#32719, plant#32720, orderDateTime#32721, productPlant#32731, timezonecode#32745, systemId#32746, internalUUID#32747, id#32748, displayId#32749, name#32750, baseUnitOfMeasure#32751, unitOfMeasures#32752, unitOfMeasureConversions#32753, productionAspect#32754, salesAspect#32755, procurementAspect#32756, productGroup#32757, filteredUnitOfMeasureConversions#32758, quantityNumerator#32759, quantityDenominator#32760]
(2490) Project
Arguments: [product#32719, plant#32720, orderDateTime#32721, productPlant#32731, timezonecode#32745, systemId#32746, internalUUID#32747, id#32748, displayId#32749, name#32750, baseUnitOfMeasure#32751, unitOfMeasures#32752, unitOfMeasureConversions#32753, productionAspect#32754, salesAspect#32755, procurementAspect#32756, productGroup#32757, filteredUnitOfMeasureConversions#32758, quantityNumerator#32759, quantityDenominator#32760, (cast(quantityNumerator#32759 as double) / cast(quantityDenominator#32760 as double)) AS outboundUnit#32761]
(2491) Project
Arguments: [product#32719, plant#32720, orderDateTime#32721, productPlant#32731, timezonecode#32745, systemId#32746, internalUUID#32747, id#32748, displayId#32749, name#32750, baseUnitOfMeasure#32751, unitOfMeasures#32752, unitOfMeasureConversions#32753, productionAspect#32754, salesAspect#32755, procurementAspect#32756, productGroup#32757, filteredUnitOfMeasureConversions#32758, quantityNumerator#32759, quantityDenominator#32760, CASE WHEN (isnull(outboundUnit#32761) OR (outboundUnit#32761 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32761 END AS outboundUnit#32762]
(2492) Project
Arguments: [product#32719, plant#32720, orderDateTime#32721, productPlant#32731, timezonecode#32745, outboundUnit#32762]
(2493) Project
Arguments: [plant#32720]
(2494) Deduplicate
Arguments: [plant#32720]
(2495) Join
Arguments: Inner, (plantUuid#32716 = plant#32720)
(2496) Project
Arguments: [plantId#32715, plantUuid#32716, storageLocId#32717, storageLocUuid#32718]
(2497) Join
Arguments: Inner, (plant#32688.internalRefUUID <=> plantUuid#32716)
(2498) Generate
Arguments: explode(filter(stockQuantities#32690, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#32718) AND (lambda x#26016.storageLocation.Id = storageLocId#32717)), lambda x#26016, false))), false, [stockQuantity#32763]
(2499) Project
Arguments: [systemId#32685, internalUUID#32686, product#32687, plant#32688, calculationDateTime#32689, stockQuantities#32690, plantId#32715, plantUuid#32716, storageLocId#32717, storageLocUuid#32718, stockQuantity#32763]
(2500) Aggregate
Arguments: [plantUuid#32716, internalUUID#32686, plant#32688, product#32687, systemId#32685], [plantUuid#32716, internalUUID#32686, plant#32688, product#32687, systemId#32685, first(calculationDateTime#32689, false) AS calculationDateTime#32764, collect_list(stockQuantity#32763, 0, 0) AS stockQuantities#32765]
(2501) Project
Arguments: [systemId#32685, internalUUID#32686, product#32687, plant#32688, calculationDateTime#32764, stockQuantities#32765]
(2502) Generate
Arguments: explode(stockQuantities#32765), false, [stockQuantity#32766]
(2503) Project
Arguments: [systemId#32685, internalUUID#32686, product#32687, plant#32688, calculationDateTime#32764, stockQuantities#32765, stockQuantity#32766]
(2504) Project
Arguments: [plant#32688.id AS plant#32767, plant#32688.internalRefUUID AS plantUuid#32768, product#32687.id AS product#32769, product#32687.internalRefUUID AS productUuid#32770, calculationDateTime#32764, stockQuantity#32766.storagelocation.id AS storageLocId#32771, stockQuantity#32766.storagelocation.internalRefUUID AS storageLocUuid#32772, stockQuantity#32766.quantity.measure AS quantity#32773, stockQuantity#32766.specialStockIndicator.code AS specialStockIndicator#32774, stockQuantity#32766.stockType.code AS stockType#32775]
(2505) Filter
Arguments: ((specialStockIndicator#32774 = ) AND (stockType#32775 = 01))
(2506) LogicalRelation
Arguments: parquet, [product#32776, plant#32777, orderDateTime#32778, planningStartDateTime#32779], false
(2507) RepartitionByExpression
Arguments: [product#32776, plant#32777], 10
(2508) Project
Arguments: [product#32776, plant#32777, orderDateTime#32778]
(2509) LogicalRelation
Arguments: parquet, [systemId#32780, internalUUID#32781, plant#32782, product#32783, blockedForReplenishmentStartingFrom#32784, productionAspect#32785, salesPlant#32786, listing#32787], false
(2510) Repartition
Arguments: 10, true
(2511) Project
Arguments: [systemId#32780, internalUUID#32781, plant#32782, product#32783, blockedForReplenishmentStartingFrom#32784, productionAspect#32785, salesPlant#32786, listing#32787, struct(systemId, systemId#32780, internalUUID, internalUUID#32781, plant, plant#32782, product, product#32783, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32784, productionAspect, productionAspect#32785, salesPlant, salesPlant#32786, listing, listing#32787) AS productPlant#32788]
(2512) Project
Arguments: [productPlant#32788]
(2513) Join
Arguments: LeftOuter, ((product#32776 <=> productPlant#32788.product.internalRefUUID) AND (plant#32777 <=> productPlant#32788.plant.internalRefUUID))
(2514) Project
Arguments: [product#32776, plant#32777, orderDateTime#32778, productPlant#32788]
(2515) SubqueryAlias
Arguments: wl
(2516) LogicalRelation
Arguments: parquet, [systemId#32789, internalUUID#32790, id#32791, displayId#32792, name#32793, category#32794, companyCode#32795, address#32796, mainDistributionChain#32797, mainPurchasingOrganization#32798, validPurchasingOrganizations#32799, productGroup#32800], false
(2517) Repartition
Arguments: 10, true
(2518) Project
Arguments: [internalUUID#32790, address#32796.timeZone.code AS timezonecode#32801]
(2519) Join
Arguments: LeftOuter, (plant#32777 <=> internalUUID#32790)
(2520) Project
Arguments: [product#32776, plant#32777, orderDateTime#32778, productPlant#32788, internalUUID#32790, CASE WHEN isnotnull(timezonecode#32801) THEN timezonecode#32801 ELSE UTC END AS timezonecode#32802]
(2521) Project
Arguments: [product#32776, plant#32777, orderDateTime#32778, productPlant#32788, timezonecode#32802]
(2522) LogicalRelation
Arguments: parquet, [systemId#32803, internalUUID#32804, id#32805, displayId#32806, name#32807, baseUnitOfMeasure#32808, unitOfMeasures#32809, unitOfMeasureConversions#32810, productionAspect#32811, salesAspect#32812, procurementAspect#32813, productGroup#32814], false
(2523) Repartition
Arguments: 10, true
(2524) Join
Arguments: LeftOuter, (product#32776 = internalUUID#32804)
(2525) Project
Arguments: [product#32776, plant#32777, orderDateTime#32778, productPlant#32788, timezonecode#32802, systemId#32803, internalUUID#32804, id#32805, displayId#32806, name#32807, baseUnitOfMeasure#32808, unitOfMeasures#32809, unitOfMeasureConversions#32810, productionAspect#32811, salesAspect#32812, procurementAspect#32813, productGroup#32814, filter(unitOfMeasureConversions#32810, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32788.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32788.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32808.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32808.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32815]
(2526) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32815.quantityNumerator), true, [quantityNumerator#32816]
(2527) Project
Arguments: [product#32776, plant#32777, orderDateTime#32778, productPlant#32788, timezonecode#32802, systemId#32803, internalUUID#32804, id#32805, displayId#32806, name#32807, baseUnitOfMeasure#32808, unitOfMeasures#32809, unitOfMeasureConversions#32810, productionAspect#32811, salesAspect#32812, procurementAspect#32813, productGroup#32814, filteredUnitOfMeasureConversions#32815, quantityNumerator#32816]
(2528) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32815.quantityDenominator), true, [quantityDenominator#32817]
(2529) Project
Arguments: [product#32776, plant#32777, orderDateTime#32778, productPlant#32788, timezonecode#32802, systemId#32803, internalUUID#32804, id#32805, displayId#32806, name#32807, baseUnitOfMeasure#32808, unitOfMeasures#32809, unitOfMeasureConversions#32810, productionAspect#32811, salesAspect#32812, procurementAspect#32813, productGroup#32814, filteredUnitOfMeasureConversions#32815, quantityNumerator#32816, quantityDenominator#32817]
(2530) Project
Arguments: [product#32776, plant#32777, orderDateTime#32778, productPlant#32788, timezonecode#32802, systemId#32803, internalUUID#32804, id#32805, displayId#32806, name#32807, baseUnitOfMeasure#32808, unitOfMeasures#32809, unitOfMeasureConversions#32810, productionAspect#32811, salesAspect#32812, procurementAspect#32813, productGroup#32814, filteredUnitOfMeasureConversions#32815, quantityNumerator#32816, quantityDenominator#32817, (cast(quantityNumerator#32816 as double) / cast(quantityDenominator#32817 as double)) AS outboundUnit#32818]
(2531) Project
Arguments: [product#32776, plant#32777, orderDateTime#32778, productPlant#32788, timezonecode#32802, systemId#32803, internalUUID#32804, id#32805, displayId#32806, name#32807, baseUnitOfMeasure#32808, unitOfMeasures#32809, unitOfMeasureConversions#32810, productionAspect#32811, salesAspect#32812, procurementAspect#32813, productGroup#32814, filteredUnitOfMeasureConversions#32815, quantityNumerator#32816, quantityDenominator#32817, CASE WHEN (isnull(outboundUnit#32818) OR (outboundUnit#32818 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32818 END AS outboundUnit#32819]
(2532) Project
Arguments: [product#32776, plant#32777, orderDateTime#32778, productPlant#32788, timezonecode#32802, outboundUnit#32819]
(2533) Join
Arguments: Inner, ((plantUuid#32768 = plant#32777) AND (productUuid#32770 = product#32776))
(2534) Filter
Arguments: (calculationDateTime#32764 <= orderDateTime#32778)
(2535) Project
Arguments: [plantUuid#32768 AS plant#32820, productUuid#32770 AS product#32821, storageLocId#32771, calculationDateTime#32764, quantity#32773]
(2536) LogicalRelation
Arguments: parquet, [systemId#32822, internalUUID#32823, product#32824, plant#32825, calculationDateTime#32826, stockQuantities#32827], false
(2537) Repartition
Arguments: 10, true
(2538) LogicalRelation
Arguments: parquet, [marketUnit#32828, description#32829, articleHierarchy#32830, defaultCurrency#32831, responsibilities#32832, replenishmentTypes#32833, distributionCenters#32834, assignedArticleHierarchyNodes#32835, minOrderQtySetting#32836, minOrderQtySettingInternal#32837, listingCheck#32838, odsSelection#32839, demandProfiles#32840, constraintProfiles#32841, optimizationProfiles#32842, orderGroupSplitProfiles#32843, supplierMinimumProfiles#32844, multipleRestrictionProfiles#32845, preferredUomSource#32846, handlingOfUnfulfilledDemands#32847, negligibleQuantitiesThreshold#32848, eventtype#32849], false
(2539) Repartition
Arguments: 10, true
(2540) Filter
Arguments: (marketUnit#32828 <=> DIP_1691)
(2541) Project
Arguments: [marketUnit#32828, description#32829, articleHierarchy#32830, defaultCurrency#32831, responsibilities#32832, replenishmentTypes#32833, distributionCenters#32834, assignedArticleHierarchyNodes#32835, minOrderQtySetting#32836, minOrderQtySettingInternal#32837, listingCheck#32838, odsSelection#32839, demandProfiles#32840, constraintProfiles#32841, optimizationProfiles#32842, orderGroupSplitProfiles#32843, supplierMinimumProfiles#32844, multipleRestrictionProfiles#32845, preferredUomSource#32846, handlingOfUnfulfilledDemands#32847, negligibleQuantitiesThreshold#32848, eventtype#32849]
(2542) Project
Arguments: [distributionCenters#32834]
(2543) Generate
Arguments: explode(distributionCenters#32834), false, [distributionCenters#32850]
(2544) Project
Arguments: [distributionCenters#32850]
(2545) Generate
Arguments: explode(distributionCenters#32850.storageLocations), false, [storageLocations#32851]
(2546) Project
Arguments: [distributionCenters#32850.id AS plantId#32852, distributionCenters#32850.internalRefUUID AS plantUuid#32853, storageLocations#32851]
(2547) Project
Arguments: [plantId#32852, plantUuid#32853, storageLocations#32851.id AS storageLocId#32854, storageLocations#32851.internalRefUUID AS storageLocUuid#32855]
(2548) LogicalRelation
Arguments: parquet, [product#32856, plant#32857, orderDateTime#32858, planningStartDateTime#32859], false
(2549) RepartitionByExpression
Arguments: [product#32856, plant#32857], 10
(2550) Project
Arguments: [product#32856, plant#32857, orderDateTime#32858]
(2551) LogicalRelation
Arguments: parquet, [systemId#32860, internalUUID#32861, plant#32862, product#32863, blockedForReplenishmentStartingFrom#32864, productionAspect#32865, salesPlant#32866, listing#32867], false
(2552) Repartition
Arguments: 10, true
(2553) Project
Arguments: [systemId#32860, internalUUID#32861, plant#32862, product#32863, blockedForReplenishmentStartingFrom#32864, productionAspect#32865, salesPlant#32866, listing#32867, struct(systemId, systemId#32860, internalUUID, internalUUID#32861, plant, plant#32862, product, product#32863, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32864, productionAspect, productionAspect#32865, salesPlant, salesPlant#32866, listing, listing#32867) AS productPlant#32868]
(2554) Project
Arguments: [productPlant#32868]
(2555) Join
Arguments: LeftOuter, ((product#32856 <=> productPlant#32868.product.internalRefUUID) AND (plant#32857 <=> productPlant#32868.plant.internalRefUUID))
(2556) Project
Arguments: [product#32856, plant#32857, orderDateTime#32858, productPlant#32868]
(2557) SubqueryAlias
Arguments: wl
(2558) LogicalRelation
Arguments: parquet, [systemId#32869, internalUUID#32870, id#32871, displayId#32872, name#32873, category#32874, companyCode#32875, address#32876, mainDistributionChain#32877, mainPurchasingOrganization#32878, validPurchasingOrganizations#32879, productGroup#32880], false
(2559) Repartition
Arguments: 10, true
(2560) Project
Arguments: [internalUUID#32870, address#32876.timeZone.code AS timezonecode#32881]
(2561) Join
Arguments: LeftOuter, (plant#32857 <=> internalUUID#32870)
(2562) Project
Arguments: [product#32856, plant#32857, orderDateTime#32858, productPlant#32868, internalUUID#32870, CASE WHEN isnotnull(timezonecode#32881) THEN timezonecode#32881 ELSE UTC END AS timezonecode#32882]
(2563) Project
Arguments: [product#32856, plant#32857, orderDateTime#32858, productPlant#32868, timezonecode#32882]
(2564) LogicalRelation
Arguments: parquet, [systemId#32883, internalUUID#32884, id#32885, displayId#32886, name#32887, baseUnitOfMeasure#32888, unitOfMeasures#32889, unitOfMeasureConversions#32890, productionAspect#32891, salesAspect#32892, procurementAspect#32893, productGroup#32894], false
(2565) Repartition
Arguments: 10, true
(2566) Join
Arguments: LeftOuter, (product#32856 = internalUUID#32884)
(2567) Project
Arguments: [product#32856, plant#32857, orderDateTime#32858, productPlant#32868, timezonecode#32882, systemId#32883, internalUUID#32884, id#32885, displayId#32886, name#32887, baseUnitOfMeasure#32888, unitOfMeasures#32889, unitOfMeasureConversions#32890, productionAspect#32891, salesAspect#32892, procurementAspect#32893, productGroup#32894, filter(unitOfMeasureConversions#32890, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32868.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32868.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32888.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32888.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32895]
(2568) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32895.quantityNumerator), true, [quantityNumerator#32896]
(2569) Project
Arguments: [product#32856, plant#32857, orderDateTime#32858, productPlant#32868, timezonecode#32882, systemId#32883, internalUUID#32884, id#32885, displayId#32886, name#32887, baseUnitOfMeasure#32888, unitOfMeasures#32889, unitOfMeasureConversions#32890, productionAspect#32891, salesAspect#32892, procurementAspect#32893, productGroup#32894, filteredUnitOfMeasureConversions#32895, quantityNumerator#32896]
(2570) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32895.quantityDenominator), true, [quantityDenominator#32897]
(2571) Project
Arguments: [product#32856, plant#32857, orderDateTime#32858, productPlant#32868, timezonecode#32882, systemId#32883, internalUUID#32884, id#32885, displayId#32886, name#32887, baseUnitOfMeasure#32888, unitOfMeasures#32889, unitOfMeasureConversions#32890, productionAspect#32891, salesAspect#32892, procurementAspect#32893, productGroup#32894, filteredUnitOfMeasureConversions#32895, quantityNumerator#32896, quantityDenominator#32897]
(2572) Project
Arguments: [product#32856, plant#32857, orderDateTime#32858, productPlant#32868, timezonecode#32882, systemId#32883, internalUUID#32884, id#32885, displayId#32886, name#32887, baseUnitOfMeasure#32888, unitOfMeasures#32889, unitOfMeasureConversions#32890, productionAspect#32891, salesAspect#32892, procurementAspect#32893, productGroup#32894, filteredUnitOfMeasureConversions#32895, quantityNumerator#32896, quantityDenominator#32897, (cast(quantityNumerator#32896 as double) / cast(quantityDenominator#32897 as double)) AS outboundUnit#32898]
(2573) Project
Arguments: [product#32856, plant#32857, orderDateTime#32858, productPlant#32868, timezonecode#32882, systemId#32883, internalUUID#32884, id#32885, displayId#32886, name#32887, baseUnitOfMeasure#32888, unitOfMeasures#32889, unitOfMeasureConversions#32890, productionAspect#32891, salesAspect#32892, procurementAspect#32893, productGroup#32894, filteredUnitOfMeasureConversions#32895, quantityNumerator#32896, quantityDenominator#32897, CASE WHEN (isnull(outboundUnit#32898) OR (outboundUnit#32898 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32898 END AS outboundUnit#32899]
(2574) Project
Arguments: [product#32856, plant#32857, orderDateTime#32858, productPlant#32868, timezonecode#32882, outboundUnit#32899]
(2575) Project
Arguments: [plant#32857]
(2576) Deduplicate
Arguments: [plant#32857]
(2577) Join
Arguments: Inner, (plantUuid#32853 = plant#32857)
(2578) Project
Arguments: [plantId#32852, plantUuid#32853, storageLocId#32854, storageLocUuid#32855]
(2579) Join
Arguments: Inner, (plant#32825.internalRefUUID <=> plantUuid#32853)
(2580) Generate
Arguments: explode(filter(stockQuantities#32827, lambdafunction(((lambda x#26016.storageLocation.internalRefUuid = storageLocUuid#32855) AND (lambda x#26016.storageLocation.Id = storageLocId#32854)), lambda x#26016, false))), false, [stockQuantity#32900]
(2581) Project
Arguments: [systemId#32822, internalUUID#32823, product#32824, plant#32825, calculationDateTime#32826, stockQuantities#32827, plantId#32852, plantUuid#32853, storageLocId#32854, storageLocUuid#32855, stockQuantity#32900]
(2582) Aggregate
Arguments: [plantUuid#32853, internalUUID#32823, plant#32825, product#32824, systemId#32822], [plantUuid#32853, internalUUID#32823, plant#32825, product#32824, systemId#32822, first(calculationDateTime#32826, false) AS calculationDateTime#32901, collect_list(stockQuantity#32900, 0, 0) AS stockQuantities#32902]
(2583) Project
Arguments: [systemId#32822, internalUUID#32823, product#32824, plant#32825, calculationDateTime#32901, stockQuantities#32902]
(2584) Generate
Arguments: explode(stockQuantities#32902), false, [stockQuantity#32903]
(2585) Project
Arguments: [systemId#32822, internalUUID#32823, product#32824, plant#32825, calculationDateTime#32901, stockQuantities#32902, stockQuantity#32903]
(2586) Project
Arguments: [plant#32825.id AS plant#32904, plant#32825.internalRefUUID AS plantUuid#32905, product#32824.id AS product#32906, product#32824.internalRefUUID AS productUuid#32907, calculationDateTime#32901, stockQuantity#32903.storagelocation.id AS storageLocId#32908, stockQuantity#32903.storagelocation.internalRefUUID AS storageLocUuid#32909, stockQuantity#32903.quantity.measure AS quantity#32910, stockQuantity#32903.specialStockIndicator.code AS specialStockIndicator#32911, stockQuantity#32903.stockType.code AS stockType#32912]
(2587) Filter
Arguments: ((specialStockIndicator#32911 = ) AND (stockType#32912 = 01))
(2588) LogicalRelation
Arguments: parquet, [product#32913, plant#32914, orderDateTime#32915, planningStartDateTime#32916], false
(2589) RepartitionByExpression
Arguments: [product#32913, plant#32914], 10
(2590) Project
Arguments: [product#32913, plant#32914, orderDateTime#32915]
(2591) LogicalRelation
Arguments: parquet, [systemId#32917, internalUUID#32918, plant#32919, product#32920, blockedForReplenishmentStartingFrom#32921, productionAspect#32922, salesPlant#32923, listing#32924], false
(2592) Repartition
Arguments: 10, true
(2593) Project
Arguments: [systemId#32917, internalUUID#32918, plant#32919, product#32920, blockedForReplenishmentStartingFrom#32921, productionAspect#32922, salesPlant#32923, listing#32924, struct(systemId, systemId#32917, internalUUID, internalUUID#32918, plant, plant#32919, product, product#32920, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#32921, productionAspect, productionAspect#32922, salesPlant, salesPlant#32923, listing, listing#32924) AS productPlant#32925]
(2594) Project
Arguments: [productPlant#32925]
(2595) Join
Arguments: LeftOuter, ((product#32913 <=> productPlant#32925.product.internalRefUUID) AND (plant#32914 <=> productPlant#32925.plant.internalRefUUID))
(2596) Project
Arguments: [product#32913, plant#32914, orderDateTime#32915, productPlant#32925]
(2597) SubqueryAlias
Arguments: wl
(2598) LogicalRelation
Arguments: parquet, [systemId#32926, internalUUID#32927, id#32928, displayId#32929, name#32930, category#32931, companyCode#32932, address#32933, mainDistributionChain#32934, mainPurchasingOrganization#32935, validPurchasingOrganizations#32936, productGroup#32937], false
(2599) Repartition
Arguments: 10, true
(2600) Project
Arguments: [internalUUID#32927, address#32933.timeZone.code AS timezonecode#32938]
(2601) Join
Arguments: LeftOuter, (plant#32914 <=> internalUUID#32927)
(2602) Project
Arguments: [product#32913, plant#32914, orderDateTime#32915, productPlant#32925, internalUUID#32927, CASE WHEN isnotnull(timezonecode#32938) THEN timezonecode#32938 ELSE UTC END AS timezonecode#32939]
(2603) Project
Arguments: [product#32913, plant#32914, orderDateTime#32915, productPlant#32925, timezonecode#32939]
(2604) LogicalRelation
Arguments: parquet, [systemId#32940, internalUUID#32941, id#32942, displayId#32943, name#32944, baseUnitOfMeasure#32945, unitOfMeasures#32946, unitOfMeasureConversions#32947, productionAspect#32948, salesAspect#32949, procurementAspect#32950, productGroup#32951], false
(2605) Repartition
Arguments: 10, true
(2606) Join
Arguments: LeftOuter, (product#32913 = internalUUID#32941)
(2607) Project
Arguments: [product#32913, plant#32914, orderDateTime#32915, productPlant#32925, timezonecode#32939, systemId#32940, internalUUID#32941, id#32942, displayId#32943, name#32944, baseUnitOfMeasure#32945, unitOfMeasures#32946, unitOfMeasureConversions#32947, productionAspect#32948, salesAspect#32949, procurementAspect#32950, productGroup#32951, filter(unitOfMeasureConversions#32947, lambdafunction((((lambda u#25958.measurementUnit1.code = productPlant#32925.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#25958.measurementUnit1.internalRefUUID = productPlant#32925.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#25958.measurementUnit2.code = baseUnitOfMeasure#32945.code) AND (lambda u#25958.measurementUnit2.internalRefUUID = baseUnitOfMeasure#32945.internalRefUUID))), lambda u#25958, false)) AS filteredUnitOfMeasureConversions#32952]
(2608) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32952.quantityNumerator), true, [quantityNumerator#32953]
(2609) Project
Arguments: [product#32913, plant#32914, orderDateTime#32915, productPlant#32925, timezonecode#32939, systemId#32940, internalUUID#32941, id#32942, displayId#32943, name#32944, baseUnitOfMeasure#32945, unitOfMeasures#32946, unitOfMeasureConversions#32947, productionAspect#32948, salesAspect#32949, procurementAspect#32950, productGroup#32951, filteredUnitOfMeasureConversions#32952, quantityNumerator#32953]
(2610) Generate
Arguments: explode(filteredUnitOfMeasureConversions#32952.quantityDenominator), true, [quantityDenominator#32954]
(2611) Project
Arguments: [product#32913, plant#32914, orderDateTime#32915, productPlant#32925, timezonecode#32939, systemId#32940, internalUUID#32941, id#32942, displayId#32943, name#32944, baseUnitOfMeasure#32945, unitOfMeasures#32946, unitOfMeasureConversions#32947, productionAspect#32948, salesAspect#32949, procurementAspect#32950, productGroup#32951, filteredUnitOfMeasureConversions#32952, quantityNumerator#32953, quantityDenominator#32954]
(2612) Project
Arguments: [product#32913, plant#32914, orderDateTime#32915, productPlant#32925, timezonecode#32939, systemId#32940, internalUUID#32941, id#32942, displayId#32943, name#32944, baseUnitOfMeasure#32945, unitOfMeasures#32946, unitOfMeasureConversions#32947, productionAspect#32948, salesAspect#32949, procurementAspect#32950, productGroup#32951, filteredUnitOfMeasureConversions#32952, quantityNumerator#32953, quantityDenominator#32954, (cast(quantityNumerator#32953 as double) / cast(quantityDenominator#32954 as double)) AS outboundUnit#32955]
(2613) Project
Arguments: [product#32913, plant#32914, orderDateTime#32915, productPlant#32925, timezonecode#32939, systemId#32940, internalUUID#32941, id#32942, displayId#32943, name#32944, baseUnitOfMeasure#32945, unitOfMeasures#32946, unitOfMeasureConversions#32947, productionAspect#32948, salesAspect#32949, procurementAspect#32950, productGroup#32951, filteredUnitOfMeasureConversions#32952, quantityNumerator#32953, quantityDenominator#32954, CASE WHEN (isnull(outboundUnit#32955) OR (outboundUnit#32955 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#32955 END AS outboundUnit#32956]
(2614) Project
Arguments: [product#32913, plant#32914, orderDateTime#32915, productPlant#32925, timezonecode#32939, outboundUnit#32956]
(2615) Join
Arguments: Inner, ((plantUuid#32905 = plant#32914) AND (productUuid#32907 = product#32913))
(2616) Filter
Arguments: (calculationDateTime#32901 <= orderDateTime#32915)
(2617) Project
Arguments: [plantUuid#32905 AS plant#32957, productUuid#32907 AS product#32958, storageLocId#32908, calculationDateTime#32901, quantity#32910]
(2618) Aggregate
Arguments: [plant#32957, product#32958, storageLocId#32908], [plant#32957, product#32958, storageLocId#32908, max(calculationDateTime#32901) AS max_calc_datetime#32959]
(2619) Join
Arguments: Inner, ((((plant#32820 <=> plant#32957) AND (product#32821 <=> product#32958)) AND (storageLocId#32771 <=> storageLocId#32908)) AND (calculationDateTime#32764 <=> max_calc_datetime#32959))
(2620) Project
Arguments: [plant#32820, product#32821, storageLocId#32771, calculationDateTime#32764, quantity#32773]
(2621) Aggregate
Arguments: [product#32821, plant#32820], [product#32821, plant#32820, sum(quantity#32773) AS quantitySum#32960, min(calculationDateTime#32764) AS minCalculationDateTime#32961]
(2622) Project
Arguments: [product#32821, plant#32820, quantitySum#32960, minCalculationDateTime#32961, round(quantitySum#32960, 0) AS roundedQuantitySum#32962]
(2623) Join
Arguments: LeftOuter, ((plant#32642 = plant#32820) AND (product#32641 = product#32821))
(2624) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, roundedQuantitySum#32962, minCalculationDateTime#32961]
(2625) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, roundedQuantitySum#32962, minCalculationDateTime#32961, CASE WHEN isnotnull(minCalculationDateTime#32961) THEN minCalculationDateTime#32961 ELSE orderDateTime#32643 END AS stockDatetime#32963]
(2626) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, roundedQuantitySum#32962, minCalculationDateTime#32961, stockDatetime#32963, CASE WHEN isnotnull(roundedQuantitySum#32962) THEN array(roundedQuantitySum#32962) ELSE array(0.0) END AS stockBatchQuantities#32964]
(2627) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, roundedQuantitySum#32962, minCalculationDateTime#32961, stockDatetime#32963, stockBatchQuantities#32964, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#32965]
(2628) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, roundedQuantitySum#32962, stockDatetime#32963, stockBatchQuantities#32964, stockBatchShelfLifeEndDatetimes#32965]
(2629) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, stockDatetime#32963, stockBatchQuantities#32964, stockBatchShelfLifeEndDatetimes#32965]
(2630) LogicalRelation
Arguments: parquet, [product#32966, plant#32967, demandChannel#32968, demandStream#32969, considerVariance#32970, demandTimeBuckets#32971, demandPointInTimeStart#32972, demandPointInTimeEnd#32973, demandPointInTime#32974], false
(2631) Join
Arguments: LeftOuter, ((product#32641 = product#32966) AND (plant#32642 = plant#32967))
(2632) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, stockDatetime#32963, stockBatchQuantities#32964, stockBatchShelfLifeEndDatetimes#32965, demandChannel#32968, demandStream#32969, considerVariance#32970, demandTimeBuckets#32971, demandPointInTimeStart#32972, demandPointInTimeEnd#32973, demandPointInTime#32974, product#32966, plant#32967]
(2633) Project
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, stockDatetime#32963, stockBatchQuantities#32964, stockBatchShelfLifeEndDatetimes#32965, demandChannel#32968, demandStream#32969, considerVariance#32970, demandTimeBuckets#32971, demandPointInTimeStart#32972, demandPointInTimeEnd#32973, demandPointInTime#32974, CASE WHEN isnotnull(product#32966) THEN struct(demandChannel, demandChannel#32968, demandStream, demandStream#32969, considerVariance, considerVariance#32970, demandTimeBuckets, demandTimeBuckets#32971, demandPointInTimeStart, demandPointInTimeStart#32972, demandPointInTimeEnd, demandPointInTimeEnd#32973, demandPointInTime, demandPointInTime#32974) 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#32975]
(2634) Aggregate
Arguments: [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, stockDatetime#32963, stockBatchQuantities#32964, stockBatchShelfLifeEndDatetimes#32965], [product#32641, plant#32642, orderDateTime#32643, productPlant#32653, timezonecode#32667, outboundUnit#32684, stockDatetime#32963, stockBatchQuantities#32964, stockBatchShelfLifeEndDatetimes#32965, collect_list(rawDemands#32975, 0, 0) AS rawDemands#32976]
(2635) DeserializeToObject
Arguments: createexternalrow(invoke(product#32641.toString()), invoke(plant#32642.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#32643)), if (isnull(productPlant#32653)) null else createexternalrow(invoke(productPlant#32653.systemId.toString()), invoke(productPlant#32653.internalUUID.toString()), if (isnull(productPlant#32653.plant)) null else createexternalrow(invoke(productPlant#32653.plant.internalRefUUID.toString()), invoke(productPlant#32653.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#32653.product)) null else createexternalrow(invoke(productPlant#32653.product.internalRefUUID.toString()), invoke(productPlant#32653.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#32653.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#32653.productionAspect)) null else createexternalrow(if (isnull(productPlant#32653.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#32653.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#32653.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#32653.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#32653.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#32653.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#32653.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#32653.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#32653.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#32653.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#32653.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#32653.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#32653.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#32653.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#32653.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#32653.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#32653.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#32653.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#32653.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#32653.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#32653.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#32653.salesPlant)) null else createexternalrow(if (isnull(productPlant#32653.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#32653.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#32653.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, 3800), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 3800).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#32653.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#32667.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#32684)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#32963)), mapobjects(lambdavariable(MapObject, DoubleType, true, 3801), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 3801) as double))), stockBatchQuantities#32964, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 3802), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 3802) as timestamp)))), stockBatchShelfLifeEndDatetimes#32965, 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, 3803), 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, 3803))) 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, 3803).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, 3803).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, 3803).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3804).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, 3803).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, 3803).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, 3803).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 3805).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, 3803).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#32976, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)), obj#26378: org.apache.spark.sql.Row
(2636) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@5081ce9e, interface org.apache.spark.sql.Row, [StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(rawDemands,ArrayType(StructType(StructField(demandChannel,StringType,true),StructField(demandStream,StringType,true),StructField(considerVariance,BooleanType,true),StructField(demandTimeBuckets,ArrayType(StructType(StructField(demandStartDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true),StructField(demandPointInTimeStart,TimestampType,true),StructField(demandPointInTimeEnd,TimestampType,true),StructField(demandPointInTime,ArrayType(StructType(StructField(demandDateTime,TimestampType,true),StructField(demandQuantity,DoubleType,true),StructField(demandVariance,DoubleType,true)),true),true)),false),false)], obj#26383: org.apache.spark.sql.Row
(2637) 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#32977, 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#32978, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3791), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3791), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3792), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3792), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3793), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3793), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3794), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3794), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 3795), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3795), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3790), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#32979, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3797), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3797), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3798), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3798), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3799), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3799), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 3796), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#32980]
(2638) Join
Arguments: LeftOuter, ((plant#32978 <=> plant#32317) AND (product#32977 <=> product#32316))
(2639) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, outboundUnit#32359, stockDatetime#32638, stockBatchQuantities#32639, stockBatchShelfLifeEndDatetimes#32640, plant#32978, dayBucketDemands#32979, pointInTimeDemands#32980]
(2640) Project
Arguments: [product#32316, plant#32317, orderDateTime#32318, productPlant#32328, timezonecode#32342, outboundUnit#32359, stockDatetime#32638, stockBatchQuantities#32639, stockBatchShelfLifeEndDatetimes#32640, dayBucketDemands#32979, pointInTimeDemands#32980]
(2641) LogicalRelation
Arguments: parquet, [systemId#32981, internalUUID#32982, id#32983, displayId#32984, supplier#32985, type#32986, status#32987, isMarkedForDeletion#32988, items#32989], false
(2642) Repartition
Arguments: 10, true
(2643) Generate
Arguments: explode(items#32989), false, [item#32990]
(2644) Project
Arguments: [id#32983, internalUUID#32982, isMarkedForDeletion#32988, supplier#32985.internalRefUUID AS supplierUuid#32991, item#32990]
(2645) Filter
Arguments: (((NOT isMarkedForDeletion#32988 AND NOT item#32990.deletionIndicator) AND NOT item#32990.completeIndicator) AND NOT item#32990.returnIndicator)
(2646) Project
Arguments: [id#32983, internalUUID#32982, supplierUuid#32991, item#32990.plant.internalRefUUID AS plant#32992, item#32990.product.internalRefUUID AS product#32993, item#32990.storageLocation.internalRefUUID AS storageLocUuid#32994, item#32990.quantityUnit.code AS quantityUom#32995, item#32990.quantityUnit.internalRefUUID AS quantityUomUuid#32996, item#32990.quantityNumerator AS quantityNumerator#32997, item#32990.quantityDenominator AS quantityDenominator#32998, item#32990.scheduleLines AS scheduleLines#32999, item#32990.confirmations AS confirmations#33000]
(2647) Join
Arguments: Inner, ((product#32316 <=> product#32993) AND (plant#32317 <=> supplierUuid#32991))
(2648) Project
Arguments: [id#32983, internalUUID#32982, supplierUuid#32991, plant#32992, product#32993, storageLocUuid#32994, quantityUom#32995, quantityUomUuid#32996, quantityNumerator#32997, quantityDenominator#32998, scheduleLines#32999, confirmations#33000, stockDatetime#32638, plant#32317]
(2649) Project
Arguments: [id#32983, internalUUID#32982, supplierUuid#32991, product#32993, storageLocUuid#32994, quantityUom#32995, quantityUomUuid#32996, quantityNumerator#32997, quantityDenominator#32998, scheduleLines#32999, confirmations#33000, stockDatetime#32638, plant#32317]
(2650) Project
Arguments: [id#32983, internalUUID#32982, supplierUuid#32991, product#32993, storageLocUuid#32994, quantityUom#32995, quantityUomUuid#32996, quantityNumerator#32997, quantityDenominator#32998, scheduleLines#32999, confirmations#33000, stockDatetime#32638, plant#32317, filter(transform(filter(transform(scheduleLines#32999, lambdafunction(struct(openQty, (greatest((lambda x_16#29113.quantity - coalesce(lambda x_16#29113.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_16#29113.productAvailabilityDateTime, lambda x_16#29113.deliveryAt)), lambda x_16#29113, false)), lambdafunction((lambda x_17#29114.availabilityDatetime < stockDatetime#32638), lambda x_17#29114, false)), lambdafunction(struct(documentId, id#32983, documentUuid, internalUUID#32982, openQty, lambda x_18#29115.openQty, openQtyInBaseUnit, ((lambda x_18#29115.openQty * quantityNumerator#32997) / quantityDenominator#32998), qtyUom, quantityUom#32995, qtyUomUuid, quantityUomUuid#32996, availabilityDatetime, lambda x_18#29115.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_18#29115, false)), lambdafunction(NOT (lambda x_19#29116.openQty = 0.0), lambda x_19#29116, false)) AS openGoodsMovements#33001]
(2651) Aggregate
Arguments: [product#32993, plant#32317], [product#32993, plant#32317, flatten(collect_list(openGoodsMovements#33001, 0, 0)) AS openGoodsMovements#33002]
(2652) Filter
Arguments: (array_size(openGoodsMovements#33002) > 0)
(2653) Union
Arguments: false, false
(2654) Aggregate
Arguments: [product#32304, plant#32303], [product#32304, plant#32303, flatten(collect_list(openGoodsMovements#32315, 0, 0)) AS openGoodsMovements#33003]
(2655) Join
Arguments: LeftOuter, ((product#30889 = product#32304) AND (plant#30890 = plant#32303))
(2656) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, stockBatchShelfLifeEndDatetimes#31213, dayBucketDemands#31552, pointInTimeDemands#31553, openGoodsMovements#33003]
(2657) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, stockBatchShelfLifeEndDatetimes#31213, dayBucketDemands#31552, pointInTimeDemands#31553, coalesce(openGoodsMovements#33003.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#33004, coalesce(openGoodsMovements#33003.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#33005, coalesce(openGoodsMovements#33003.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#33006]
(2658) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, stockBatchShelfLifeEndDatetimes#31213, dayBucketDemands#31552, pointInTimeDemands#31553, openGoodsMovementQuantities#33004, openGoodsMovementAvailabilityDatetimes#33005, openGoodsMovementShelfLifeEndDatetimes#33006, 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#33007]
(2659) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, stockBatchShelfLifeEndDatetimes#31213, dayBucketDemands#31552, pointInTimeDemands#31553, openGoodsMovementQuantities#33004, openGoodsMovementAvailabilityDatetimes#33005, openGoodsMovementShelfLifeEndDatetimes#33006, configuration#33007, productPlant#30901.listing AS listing#30829]
(2660) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, stockBatchShelfLifeEndDatetimes#31213, dayBucketDemands#31552, pointInTimeDemands#31553, openGoodsMovementQuantities#33004, openGoodsMovementAvailabilityDatetimes#33005, openGoodsMovementShelfLifeEndDatetimes#33006, configuration#33007, CASE WHEN isnotnull(listing#30829) THEN listing#30829 ELSE cast(array() as array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>) END AS listing#30831]
(2661) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, stockBatchShelfLifeEndDatetimes#31213, dayBucketDemands#31552, pointInTimeDemands#31553, openGoodsMovementQuantities#33004, openGoodsMovementAvailabilityDatetimes#33005, openGoodsMovementShelfLifeEndDatetimes#33006, configuration#33007, filter(listing#30831, lambdafunction((lambda listing#30833.isListed = true), lambda listing#30833, false)) AS listing#30832]
(2662) Project
Arguments: [product#30889, plant#30890, orderDateTime#30891, productPlant#30901, timezonecode#30915, outboundUnit#30932, stockDatetime#31211, stockBatchQuantities#31212, stockBatchShelfLifeEndDatetimes#31213, dayBucketDemands#31552, pointInTimeDemands#31553, openGoodsMovementQuantities#33004, openGoodsMovementAvailabilityDatetimes#33005, openGoodsMovementShelfLifeEndDatetimes#33006, configuration#33007, array_sort(listing#30832, lambdafunction(if ((isnull(lambda left#30835) AND isnull(lambda right#30836))) 0 else if (isnull(lambda left#30835)) 1 else if (isnull(lambda right#30836)) -1 else if ((lambda left#30835 < lambda right#30836)) -1 else if ((lambda left#30835 > lambda right#30836)) 1 else 0, lambda left#30835, lambda right#30836, false), false) AS listing#30834]
(2663) DeserializeToObject
Arguments: createexternalrow(invoke(product#30889.toString()), invoke(plant#30890.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#30891)), if (isnull(productPlant#30901)) null else createexternalrow(invoke(productPlant#30901.systemId.toString()), invoke(productPlant#30901.internalUUID.toString()), if (isnull(productPlant#30901.plant)) null else createexternalrow(invoke(productPlant#30901.plant.internalRefUUID.toString()), invoke(productPlant#30901.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#30901.product)) null else createexternalrow(invoke(productPlant#30901.product.internalRefUUID.toString()), invoke(productPlant#30901.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#30901.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#30901.productionAspect)) null else createexternalrow(if (isnull(productPlant#30901.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#30901.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#30901.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#30901.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#30901.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#30901.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#30901.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#30901.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#30901.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#30901.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#30901.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#30901.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#30901.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#30901.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#30901.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#30901.productionAspect.productPlanningPlants.sourceOfSupplyCategory.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true), StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(minimumLotSize,DoubleType,true), StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true), StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)), StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)), if (isnull(productPlant#30901.salesPlant)) null else createexternalrow(if (isnull(productPlant#30901.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#30901.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#30901.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, 4888), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 4888))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 4888).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 4888).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 4888).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#30901.listing, Some(class scala.collection.mutable.ArraySeq)), StructField(systemId,StringType,true), StructField(internalUUID,StringType,true), StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true), StructField(blockedForReplenishmentStartingFrom,DateType,true), StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true), StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true), StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)), invoke(timezonecode#30915.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#30932)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#31211)), mapobjects(lambdavariable(MapObject, DoubleType, true, 4889), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 4889) as double))), stockBatchQuantities#31212, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 4890), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 4890) as timestamp)))), stockBatchShelfLifeEndDatetimes#31213, 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, 4891), 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, 4891))) 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, 4891).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, 4891).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, 4891).considerVariance)), mapobjects(lambdavariable(MapObject, DoubleType, false, 4892), assertnotnull(static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, false, 4892) 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, 4891).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 4893), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 4893) 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, 4891).demandVariances, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 4894), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 4894) 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, 4891).anchorDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StringType, false, 4895), assertnotnull(invoke(cast(lambdavariable(MapObject, StringType, false, 4895) 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, 4891).anchorWeekdays, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, IntegerType, false, 4896), assertnotnull(static_invoke(java.lang.Integer.valueOf(cast(lambdavariable(MapObject, IntegerType, false, 4896) 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, 4891).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#31552, 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, 4897), 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, 4897))) 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, 4897).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, 4897).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, 4897).considerVariance)), mapobjects(lambdavariable(MapObject, TimestampType, false, 4898), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 4898) 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, 4897).demandDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, false, 4899), assertnotnull(static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, false, 4899) 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, 4897).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 4900), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 4900) 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, 4897).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, 4897).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, 4897).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#31553, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 4901), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 4901) as double))), openGoodsMovementQuantities#33004, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, 4902), static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, true, 4902) as timestamp))), openGoodsMovementAvailabilityDatetimes#33005, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 4903), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 4903) as timestamp)))), openGoodsMovementShelfLifeEndDatetimes#33006, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 4904), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 4904))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 4904).configurationValidityDatetime)), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 4904).configurationName.toString()), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 4904).configurationValue.toString()), StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false))), configuration#33007, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 4905), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 4905))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 4905).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 4905).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 4905).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), listing#30834, Some(class scala.collection.mutable.ArraySeq)), StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), ... 7 more fields), obj#30869: org.apache.spark.sql.Row
(2664) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.ListingSnapshotEnhancementImpl$$Lambda/0x0000000801f6de40@134cd86f, interface org.apache.spark.sql.Row, [StructField(product,StringType,true), StructField(plant,StringType,true), StructField(orderDateTime,TimestampType,true), StructField(productPlant,StructType(StructField(systemId,StringType,true),StructField(internalUUID,StringType,true),StructField(plant,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(product,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(blockedForReplenishmentStartingFrom,DateType,true),StructField(productionAspect,StructType(StructField(productMovementPlants,StructType(StructField(unitOfIssue,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(productPlanningPlants,StructType(StructField(mrpType,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(abcIndicator,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true),StructField(mrpController,StructType(StructField(internalRefUUID,StringType,true),StructField(id,StringType,true)),true),StructField(minimumLotSize,DoubleType,true),StructField(logisticalRoundingProfile,StructType(StructField(internalRefUUID,StringType,true),StructField(logisticalRoundingProfile,StringType,true)),true),StructField(sourceOfSupplyCategory,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true)),true),StructField(salesPlant,StructType(StructField(loadingGroup,StructType(StructField(internalRefUUID,StringType,true),StructField(code,StringType,true)),true)),true),StructField(listing,ArrayType(StructType(StructField(validFrom,TimestampType,true),StructField(validTo,TimestampType,true),StructField(isListed,BooleanType,true)),true),true)),true), StructField(timezonecode,StringType,true), StructField(outboundUnit,DoubleType,true), StructField(stockDatetime,TimestampType,true), StructField(stockBatchQuantities,ArrayType(DoubleType,true),false), StructField(stockBatchShelfLifeEndDatetimes,ArrayType(TimestampType,false),false), StructField(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#30876: org.apache.spark.sql.Row
(2665) 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#30883, 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#30884, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 4884), static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 4884), 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#30885, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 4885), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 4885), 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#30886, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 4886), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 4886), 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#30887, 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, 4887), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 4887), 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#30888]
(2666) Join
Arguments: LeftOuter, ((product#25911 = product#30883) AND (plant#25912 = plant#30884))
(2667) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, configuration#30690, timeDependentSettingsName#30885, timeDependentSettingsStartDatetime#30886, timeDependentSettingsEndDatetime#30887, timeDependentSettingsValue#30888]
(2668) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, configuration#30690, CASE WHEN isnotnull(timeDependentSettingsName#30885) THEN timeDependentSettingsName#30885 ELSE cast(array() as array<string>) END AS timeDependentSettingsName#33162, timeDependentSettingsStartDatetime#30886, timeDependentSettingsEndDatetime#30887, timeDependentSettingsValue#30888]
(2669) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, configuration#30690, timeDependentSettingsName#33162, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#30886) THEN timeDependentSettingsStartDatetime#30886 ELSE cast(array() as array<timestamp>) END AS timeDependentSettingsStartDatetime#33163, timeDependentSettingsEndDatetime#30887, timeDependentSettingsValue#30888]
(2670) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, configuration#30690, timeDependentSettingsName#33162, timeDependentSettingsStartDatetime#33163, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#30887) THEN timeDependentSettingsEndDatetime#30887 ELSE cast(array() as array<timestamp>) END AS timeDependentSettingsEndDatetime#33164, timeDependentSettingsValue#30888]
(2671) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, productPlant#25925, timezonecode#25943, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, configuration#30690, timeDependentSettingsName#33162, timeDependentSettingsStartDatetime#33163, timeDependentSettingsEndDatetime#33164, CASE WHEN isnotnull(timeDependentSettingsValue#30888) THEN timeDependentSettingsValue#30888 ELSE cast(array() as array<double>) END AS timeDependentSettingsValue#33165]
(2672) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, timezonecode#25943, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, configuration#30690, timeDependentSettingsName#33162, timeDependentSettingsStartDatetime#33163, timeDependentSettingsEndDatetime#33164, timeDependentSettingsValue#33165]
(2673) Project
Arguments: [product#25911, plant#25912, orderDateTime#25913, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, configuration#30690, timeDependentSettingsName#33162, timeDependentSettingsStartDatetime#33163, timeDependentSettingsEndDatetime#33164, timeDependentSettingsValue#33165]
(2674) Project
Arguments: [product#25911, plant#25912, outboundUnit#25970, stockDatetime#26315, stockBatchQuantities#26316, stockBatchShelfLifeEndDatetimes#26317, dayBucketDemands#26390, pointInTimeDemands#26391, openGoodsMovementQuantities#30587, openGoodsMovementAvailabilityDatetimes#30588, openGoodsMovementShelfLifeEndDatetimes#30589, configuration#30690, timeDependentSettingsName#33162, timeDependentSettingsStartDatetime#33163, timeDependentSettingsEndDatetime#33164, timeDependentSettingsValue#33165]