== 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@c50c322, [path=hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-quantity-kpi-service/internal/data-snapshot/10000000004/0_1_10000000004], Overwrite
(3) LogicalRelation
Arguments: parquet, [product#1102, plant#1103, orderDateTime#1104, planningStartDateTime#1105], false
(4) RepartitionByExpression
Arguments: [product#1102, plant#1103], 10
(5) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104]
(6) LogicalRelation
Arguments: parquet, [systemId#1107, internalUUID#1108, plant#1109, product#1110, blockedForReplenishmentStartingFrom#1111, productionAspect#1112, salesPlant#1113, listing#1114], false
(7) Repartition
Arguments: 10, true
(8) Project
Arguments: [systemId#1107, internalUUID#1108, plant#1109, product#1110, blockedForReplenishmentStartingFrom#1111, productionAspect#1112, salesPlant#1113, listing#1114, struct(systemId, systemId#1107, internalUUID, internalUUID#1108, plant, plant#1109, product, product#1110, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1111, productionAspect, productionAspect#1112, salesPlant, salesPlant#1113, listing, listing#1114) AS productPlant#1116]
(9) Project
Arguments: [productPlant#1116]
(10) Join
Arguments: LeftOuter, ((product#1102 <=> productPlant#1116.product.internalRefUUID) AND (plant#1103 <=> productPlant#1116.plant.internalRefUUID))
(11) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116]
(12) SubqueryAlias
Arguments: wl
(13) LogicalRelation
Arguments: parquet, [systemId#1119, internalUUID#1120, id#1121, displayId#1122, name#1123, category#1124, companyCode#1125, address#1126, mainDistributionChain#1127, mainPurchasingOrganization#1128, validPurchasingOrganizations#1129, productGroup#1130], false
(14) Repartition
Arguments: 10, true
(15) Project
Arguments: [internalUUID#1120, address#1126.timeZone.code AS timezonecode#1131]
(16) Join
Arguments: LeftOuter, (plant#1103 <=> internalUUID#1120)
(17) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, internalUUID#1120, CASE WHEN isnotnull(timezonecode#1131) THEN timezonecode#1131 ELSE UTC END AS timezonecode#1134]
(18) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134]
(19) LogicalRelation
Arguments: parquet, [systemId#1135, internalUUID#1136, id#1137, displayId#1138, name#1139, baseUnitOfMeasure#1140, unitOfMeasures#1141, unitOfMeasureConversions#1142, productionAspect#1143, salesAspect#1144, procurementAspect#1145, productGroup#1146], false
(20) Repartition
Arguments: 10, true
(21) Join
Arguments: LeftOuter, (product#1102 = internalUUID#1136)
(22) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, systemId#1135, internalUUID#1136, id#1137, displayId#1138, name#1139, baseUnitOfMeasure#1140, unitOfMeasures#1141, unitOfMeasureConversions#1142, productionAspect#1143, salesAspect#1144, procurementAspect#1145, productGroup#1146, filter(unitOfMeasureConversions#1142, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1116.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1116.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1140.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1140.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1148]
(23) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1148.quantityNumerator), true, [quantityNumerator#1156]
(24) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, systemId#1135, internalUUID#1136, id#1137, displayId#1138, name#1139, baseUnitOfMeasure#1140, unitOfMeasures#1141, unitOfMeasureConversions#1142, productionAspect#1143, salesAspect#1144, procurementAspect#1145, productGroup#1146, filteredUnitOfMeasureConversions#1148, quantityNumerator#1156]
(25) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1148.quantityDenominator), true, [quantityDenominator#1159]
(26) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, systemId#1135, internalUUID#1136, id#1137, displayId#1138, name#1139, baseUnitOfMeasure#1140, unitOfMeasures#1141, unitOfMeasureConversions#1142, productionAspect#1143, salesAspect#1144, procurementAspect#1145, productGroup#1146, filteredUnitOfMeasureConversions#1148, quantityNumerator#1156, quantityDenominator#1159]
(27) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, systemId#1135, internalUUID#1136, id#1137, displayId#1138, name#1139, baseUnitOfMeasure#1140, unitOfMeasures#1141, unitOfMeasureConversions#1142, productionAspect#1143, salesAspect#1144, procurementAspect#1145, productGroup#1146, filteredUnitOfMeasureConversions#1148, quantityNumerator#1156, quantityDenominator#1159, (cast(quantityNumerator#1156 as double) / cast(quantityDenominator#1159 as double)) AS outboundUnit#1160]
(28) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, systemId#1135, internalUUID#1136, id#1137, displayId#1138, name#1139, baseUnitOfMeasure#1140, unitOfMeasures#1141, unitOfMeasureConversions#1142, productionAspect#1143, salesAspect#1144, procurementAspect#1145, productGroup#1146, filteredUnitOfMeasureConversions#1148, quantityNumerator#1156, quantityDenominator#1159, CASE WHEN (isnull(outboundUnit#1160) OR (outboundUnit#1160 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1160 END AS outboundUnit#1161]
(29) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161]
(30) LogicalRelation
Arguments: parquet, [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203], false
(31) Repartition
Arguments: 10, true
(32) LogicalRelation
Arguments: parquet, [marketUnit#1162, description#1163, articleHierarchy#1164, defaultCurrency#1165, responsibilities#1166, replenishmentTypes#1167, distributionCenters#1168, assignedArticleHierarchyNodes#1169, minOrderQtySetting#1170, minOrderQtySettingInternal#1171, listingCheck#1172, odsSelection#1173, demandProfiles#1174, constraintProfiles#1175, optimizationProfiles#1176, orderGroupSplitProfiles#1177, supplierMinimumProfiles#1178, multipleRestrictionProfiles#1179, preferredUomSource#1180, handlingOfUnfulfilledDemands#1181, negligibleQuantitiesThreshold#1182, eventtype#1183], false
(33) Repartition
Arguments: 10, true
(34) Filter
Arguments: (marketUnit#1162 <=> DIP_1691)
(35) Project
Arguments: [marketUnit#1162, description#1163, articleHierarchy#1164, defaultCurrency#1165, responsibilities#1166, replenishmentTypes#1167, distributionCenters#1168, assignedArticleHierarchyNodes#1169, minOrderQtySetting#1170, minOrderQtySettingInternal#1171, listingCheck#1172, odsSelection#1173, demandProfiles#1174, constraintProfiles#1175, optimizationProfiles#1176, orderGroupSplitProfiles#1177, supplierMinimumProfiles#1178, multipleRestrictionProfiles#1179, preferredUomSource#1180, handlingOfUnfulfilledDemands#1181, negligibleQuantitiesThreshold#1182, eventtype#1183]
(36) Project
Arguments: [distributionCenters#1168]
(37) Generate
Arguments: explode(distributionCenters#1168), false, [distributionCenters#1186]
(38) Project
Arguments: [distributionCenters#1186]
(39) Generate
Arguments: explode(distributionCenters#1186.storageLocations), false, [storageLocations#1193]
(40) Project
Arguments: [distributionCenters#1186.id AS plantId#1187, distributionCenters#1186.internalRefUUID AS plantUuid#1188, storageLocations#1193]
(41) Project
Arguments: [plantId#1187, plantUuid#1188, storageLocations#1193.id AS storageLocId#1194, storageLocations#1193.internalRefUUID AS storageLocUuid#1195]
(42) LogicalRelation
Arguments: parquet, [product#1458, plant#1459, orderDateTime#1460, planningStartDateTime#1461], false
(43) RepartitionByExpression
Arguments: [product#1458, plant#1459], 10
(44) Project
Arguments: [product#1458, plant#1459, orderDateTime#1460]
(45) LogicalRelation
Arguments: parquet, [systemId#1462, internalUUID#1463, plant#1464, product#1465, blockedForReplenishmentStartingFrom#1466, productionAspect#1467, salesPlant#1468, listing#1469], false
(46) Repartition
Arguments: 10, true
(47) Project
Arguments: [systemId#1462, internalUUID#1463, plant#1464, product#1465, blockedForReplenishmentStartingFrom#1466, productionAspect#1467, salesPlant#1468, listing#1469, struct(systemId, systemId#1462, internalUUID, internalUUID#1463, plant, plant#1464, product, product#1465, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1466, productionAspect, productionAspect#1467, salesPlant, salesPlant#1468, listing, listing#1469) AS productPlant#1470]
(48) Project
Arguments: [productPlant#1470]
(49) Join
Arguments: LeftOuter, ((product#1458 <=> productPlant#1470.product.internalRefUUID) AND (plant#1459 <=> productPlant#1470.plant.internalRefUUID))
(50) Project
Arguments: [product#1458, plant#1459, orderDateTime#1460, productPlant#1470]
(51) SubqueryAlias
Arguments: wl
(52) LogicalRelation
Arguments: parquet, [systemId#1471, internalUUID#1472, id#1473, displayId#1474, name#1475, category#1476, companyCode#1477, address#1478, mainDistributionChain#1479, mainPurchasingOrganization#1480, validPurchasingOrganizations#1481, productGroup#1482], false
(53) Repartition
Arguments: 10, true
(54) Project
Arguments: [internalUUID#1472, address#1478.timeZone.code AS timezonecode#1483]
(55) Join
Arguments: LeftOuter, (plant#1459 <=> internalUUID#1472)
(56) Project
Arguments: [product#1458, plant#1459, orderDateTime#1460, productPlant#1470, internalUUID#1472, CASE WHEN isnotnull(timezonecode#1483) THEN timezonecode#1483 ELSE UTC END AS timezonecode#1484]
(57) Project
Arguments: [product#1458, plant#1459, orderDateTime#1460, productPlant#1470, timezonecode#1484]
(58) LogicalRelation
Arguments: parquet, [systemId#1485, internalUUID#1486, id#1487, displayId#1488, name#1489, baseUnitOfMeasure#1490, unitOfMeasures#1491, unitOfMeasureConversions#1492, productionAspect#1493, salesAspect#1494, procurementAspect#1495, productGroup#1496], false
(59) Repartition
Arguments: 10, true
(60) Join
Arguments: LeftOuter, (product#1458 = internalUUID#1486)
(61) Project
Arguments: [product#1458, plant#1459, orderDateTime#1460, productPlant#1470, timezonecode#1484, systemId#1485, internalUUID#1486, id#1487, displayId#1488, name#1489, baseUnitOfMeasure#1490, unitOfMeasures#1491, unitOfMeasureConversions#1492, productionAspect#1493, salesAspect#1494, procurementAspect#1495, productGroup#1496, filter(unitOfMeasureConversions#1492, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1470.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1470.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1490.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1490.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1497]
(62) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1497.quantityNumerator), true, [quantityNumerator#1498]
(63) Project
Arguments: [product#1458, plant#1459, orderDateTime#1460, productPlant#1470, timezonecode#1484, systemId#1485, internalUUID#1486, id#1487, displayId#1488, name#1489, baseUnitOfMeasure#1490, unitOfMeasures#1491, unitOfMeasureConversions#1492, productionAspect#1493, salesAspect#1494, procurementAspect#1495, productGroup#1496, filteredUnitOfMeasureConversions#1497, quantityNumerator#1498]
(64) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1497.quantityDenominator), true, [quantityDenominator#1499]
(65) Project
Arguments: [product#1458, plant#1459, orderDateTime#1460, productPlant#1470, timezonecode#1484, systemId#1485, internalUUID#1486, id#1487, displayId#1488, name#1489, baseUnitOfMeasure#1490, unitOfMeasures#1491, unitOfMeasureConversions#1492, productionAspect#1493, salesAspect#1494, procurementAspect#1495, productGroup#1496, filteredUnitOfMeasureConversions#1497, quantityNumerator#1498, quantityDenominator#1499]
(66) Project
Arguments: [product#1458, plant#1459, orderDateTime#1460, productPlant#1470, timezonecode#1484, systemId#1485, internalUUID#1486, id#1487, displayId#1488, name#1489, baseUnitOfMeasure#1490, unitOfMeasures#1491, unitOfMeasureConversions#1492, productionAspect#1493, salesAspect#1494, procurementAspect#1495, productGroup#1496, filteredUnitOfMeasureConversions#1497, quantityNumerator#1498, quantityDenominator#1499, (cast(quantityNumerator#1498 as double) / cast(quantityDenominator#1499 as double)) AS outboundUnit#1500]
(67) Project
Arguments: [product#1458, plant#1459, orderDateTime#1460, productPlant#1470, timezonecode#1484, systemId#1485, internalUUID#1486, id#1487, displayId#1488, name#1489, baseUnitOfMeasure#1490, unitOfMeasures#1491, unitOfMeasureConversions#1492, productionAspect#1493, salesAspect#1494, procurementAspect#1495, productGroup#1496, filteredUnitOfMeasureConversions#1497, quantityNumerator#1498, quantityDenominator#1499, CASE WHEN (isnull(outboundUnit#1500) OR (outboundUnit#1500 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1500 END AS outboundUnit#1501]
(68) Project
Arguments: [product#1458, plant#1459, orderDateTime#1460, productPlant#1470, timezonecode#1484, outboundUnit#1501]
(69) Project
Arguments: [plant#1459]
(70) Deduplicate
Arguments: [plant#1459]
(71) Join
Arguments: Inner, (plantUuid#1188 = plant#1459)
(72) Project
Arguments: [plantId#1187, plantUuid#1188, storageLocId#1194, storageLocUuid#1195]
(73) Join
Arguments: Inner, (plant#1201.internalRefUUID <=> plantUuid#1188)
(74) Generate
Arguments: explode(filter(stockQuantities#1203, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1195) AND (lambda x#1207.storageLocation.Id = storageLocId#1194)), lambda x#1207, false))), false, [stockQuantity#1208]
(75) Project
Arguments: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1202, stockQuantities#1203, plantId#1187, plantUuid#1188, storageLocId#1194, storageLocUuid#1195, stockQuantity#1208]
(76) Aggregate
Arguments: [plantUuid#1188, internalUUID#1199, plant#1201, product#1200, systemId#1198], [plantUuid#1188, internalUUID#1199, plant#1201, product#1200, systemId#1198, first(calculationDateTime#1202, false) AS calculationDateTime#1209, collect_list(stockQuantity#1208, 0, 0) AS stockQuantities#1210]
(77) Project
Arguments: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1209, stockQuantities#1210]
(78) Generate
Arguments: explode(stockQuantities#1210), false, [stockQuantity#1225]
(79) Project
Arguments: [systemId#1198, internalUUID#1199, product#1200, plant#1201, calculationDateTime#1209, stockQuantities#1210, stockQuantity#1225]
(80) Project
Arguments: [plant#1201.id AS plant#1226, plant#1201.internalRefUUID AS plantUuid#1227, product#1200.id AS product#1228, product#1200.internalRefUUID AS productUuid#1229, calculationDateTime#1209, stockQuantity#1225.storagelocation.id AS storageLocId#1230, stockQuantity#1225.storagelocation.internalRefUUID AS storageLocUuid#1231, stockQuantity#1225.quantity.measure AS quantity#1232, stockQuantity#1225.specialStockIndicator.code AS specialStockIndicator#1233, stockQuantity#1225.stockType.code AS stockType#1234]
(81) Filter
Arguments: ((specialStockIndicator#1233 = ) AND (stockType#1234 = 01))
(82) LogicalRelation
Arguments: parquet, [product#1244, plant#1245, orderDateTime#1246, planningStartDateTime#1247], false
(83) RepartitionByExpression
Arguments: [product#1244, plant#1245], 10
(84) Project
Arguments: [product#1244, plant#1245, orderDateTime#1246]
(85) LogicalRelation
Arguments: parquet, [systemId#1248, internalUUID#1249, plant#1250, product#1251, blockedForReplenishmentStartingFrom#1252, productionAspect#1253, salesPlant#1254, listing#1255], false
(86) Repartition
Arguments: 10, true
(87) Project
Arguments: [systemId#1248, internalUUID#1249, plant#1250, product#1251, blockedForReplenishmentStartingFrom#1252, productionAspect#1253, salesPlant#1254, listing#1255, struct(systemId, systemId#1248, internalUUID, internalUUID#1249, plant, plant#1250, product, product#1251, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1252, productionAspect, productionAspect#1253, salesPlant, salesPlant#1254, listing, listing#1255) AS productPlant#1256]
(88) Project
Arguments: [productPlant#1256]
(89) Join
Arguments: LeftOuter, ((product#1244 <=> productPlant#1256.product.internalRefUUID) AND (plant#1245 <=> productPlant#1256.plant.internalRefUUID))
(90) Project
Arguments: [product#1244, plant#1245, orderDateTime#1246, productPlant#1256]
(91) SubqueryAlias
Arguments: wl
(92) LogicalRelation
Arguments: parquet, [systemId#1257, internalUUID#1258, id#1259, displayId#1260, name#1261, category#1262, companyCode#1263, address#1264, mainDistributionChain#1265, mainPurchasingOrganization#1266, validPurchasingOrganizations#1267, productGroup#1268], false
(93) Repartition
Arguments: 10, true
(94) Project
Arguments: [internalUUID#1258, address#1264.timeZone.code AS timezonecode#1269]
(95) Join
Arguments: LeftOuter, (plant#1245 <=> internalUUID#1258)
(96) Project
Arguments: [product#1244, plant#1245, orderDateTime#1246, productPlant#1256, internalUUID#1258, CASE WHEN isnotnull(timezonecode#1269) THEN timezonecode#1269 ELSE UTC END AS timezonecode#1270]
(97) Project
Arguments: [product#1244, plant#1245, orderDateTime#1246, productPlant#1256, timezonecode#1270]
(98) LogicalRelation
Arguments: parquet, [systemId#1271, internalUUID#1272, id#1273, displayId#1274, name#1275, baseUnitOfMeasure#1276, unitOfMeasures#1277, unitOfMeasureConversions#1278, productionAspect#1279, salesAspect#1280, procurementAspect#1281, productGroup#1282], false
(99) Repartition
Arguments: 10, true
(100) Join
Arguments: LeftOuter, (product#1244 = internalUUID#1272)
(101) Project
Arguments: [product#1244, plant#1245, orderDateTime#1246, productPlant#1256, timezonecode#1270, systemId#1271, internalUUID#1272, id#1273, displayId#1274, name#1275, baseUnitOfMeasure#1276, unitOfMeasures#1277, unitOfMeasureConversions#1278, productionAspect#1279, salesAspect#1280, procurementAspect#1281, productGroup#1282, filter(unitOfMeasureConversions#1278, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1256.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1256.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1276.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1276.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1283]
(102) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1283.quantityNumerator), true, [quantityNumerator#1284]
(103) Project
Arguments: [product#1244, plant#1245, orderDateTime#1246, productPlant#1256, timezonecode#1270, systemId#1271, internalUUID#1272, id#1273, displayId#1274, name#1275, baseUnitOfMeasure#1276, unitOfMeasures#1277, unitOfMeasureConversions#1278, productionAspect#1279, salesAspect#1280, procurementAspect#1281, productGroup#1282, filteredUnitOfMeasureConversions#1283, quantityNumerator#1284]
(104) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1283.quantityDenominator), true, [quantityDenominator#1285]
(105) Project
Arguments: [product#1244, plant#1245, orderDateTime#1246, productPlant#1256, timezonecode#1270, systemId#1271, internalUUID#1272, id#1273, displayId#1274, name#1275, baseUnitOfMeasure#1276, unitOfMeasures#1277, unitOfMeasureConversions#1278, productionAspect#1279, salesAspect#1280, procurementAspect#1281, productGroup#1282, filteredUnitOfMeasureConversions#1283, quantityNumerator#1284, quantityDenominator#1285]
(106) Project
Arguments: [product#1244, plant#1245, orderDateTime#1246, productPlant#1256, timezonecode#1270, systemId#1271, internalUUID#1272, id#1273, displayId#1274, name#1275, baseUnitOfMeasure#1276, unitOfMeasures#1277, unitOfMeasureConversions#1278, productionAspect#1279, salesAspect#1280, procurementAspect#1281, productGroup#1282, filteredUnitOfMeasureConversions#1283, quantityNumerator#1284, quantityDenominator#1285, (cast(quantityNumerator#1284 as double) / cast(quantityDenominator#1285 as double)) AS outboundUnit#1286]
(107) Project
Arguments: [product#1244, plant#1245, orderDateTime#1246, productPlant#1256, timezonecode#1270, systemId#1271, internalUUID#1272, id#1273, displayId#1274, name#1275, baseUnitOfMeasure#1276, unitOfMeasures#1277, unitOfMeasureConversions#1278, productionAspect#1279, salesAspect#1280, procurementAspect#1281, productGroup#1282, filteredUnitOfMeasureConversions#1283, quantityNumerator#1284, quantityDenominator#1285, CASE WHEN (isnull(outboundUnit#1286) OR (outboundUnit#1286 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1286 END AS outboundUnit#1287]
(108) Project
Arguments: [product#1244, plant#1245, orderDateTime#1246, productPlant#1256, timezonecode#1270, outboundUnit#1287]
(109) Join
Arguments: Inner, ((plantUuid#1227 = plant#1245) AND (productUuid#1229 = product#1244))
(110) Filter
Arguments: (calculationDateTime#1209 <= orderDateTime#1246)
(111) Project
Arguments: [plantUuid#1227 AS plant#1292, productUuid#1229 AS product#1293, storageLocId#1230, calculationDateTime#1209, quantity#1232]
(112) LogicalRelation
Arguments: parquet, [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, stockQuantities#1306], false
(113) Repartition
Arguments: 10, true
(114) LogicalRelation
Arguments: parquet, [marketUnit#1307, description#1308, articleHierarchy#1309, defaultCurrency#1310, responsibilities#1311, replenishmentTypes#1312, distributionCenters#1313, assignedArticleHierarchyNodes#1314, minOrderQtySetting#1315, minOrderQtySettingInternal#1316, listingCheck#1317, odsSelection#1318, demandProfiles#1319, constraintProfiles#1320, optimizationProfiles#1321, orderGroupSplitProfiles#1322, supplierMinimumProfiles#1323, multipleRestrictionProfiles#1324, preferredUomSource#1325, handlingOfUnfulfilledDemands#1326, negligibleQuantitiesThreshold#1327, eventtype#1328], false
(115) Repartition
Arguments: 10, true
(116) Filter
Arguments: (marketUnit#1307 <=> DIP_1691)
(117) Project
Arguments: [marketUnit#1307, description#1308, articleHierarchy#1309, defaultCurrency#1310, responsibilities#1311, replenishmentTypes#1312, distributionCenters#1313, assignedArticleHierarchyNodes#1314, minOrderQtySetting#1315, minOrderQtySettingInternal#1316, listingCheck#1317, odsSelection#1318, demandProfiles#1319, constraintProfiles#1320, optimizationProfiles#1321, orderGroupSplitProfiles#1322, supplierMinimumProfiles#1323, multipleRestrictionProfiles#1324, preferredUomSource#1325, handlingOfUnfulfilledDemands#1326, negligibleQuantitiesThreshold#1327, eventtype#1328]
(118) Project
Arguments: [distributionCenters#1313]
(119) Generate
Arguments: explode(distributionCenters#1313), false, [distributionCenters#1329]
(120) Project
Arguments: [distributionCenters#1329]
(121) Generate
Arguments: explode(distributionCenters#1329.storageLocations), false, [storageLocations#1330]
(122) Project
Arguments: [distributionCenters#1329.id AS plantId#1331, distributionCenters#1329.internalRefUUID AS plantUuid#1332, storageLocations#1330]
(123) Project
Arguments: [plantId#1331, plantUuid#1332, storageLocations#1330.id AS storageLocId#1333, storageLocations#1330.internalRefUUID AS storageLocUuid#1334]
(124) LogicalRelation
Arguments: parquet, [product#1335, plant#1336, orderDateTime#1337, planningStartDateTime#1338], false
(125) RepartitionByExpression
Arguments: [product#1335, plant#1336], 10
(126) Project
Arguments: [product#1335, plant#1336, orderDateTime#1337]
(127) LogicalRelation
Arguments: parquet, [systemId#1339, internalUUID#1340, plant#1341, product#1342, blockedForReplenishmentStartingFrom#1343, productionAspect#1344, salesPlant#1345, listing#1346], false
(128) Repartition
Arguments: 10, true
(129) Project
Arguments: [systemId#1339, internalUUID#1340, plant#1341, product#1342, blockedForReplenishmentStartingFrom#1343, productionAspect#1344, salesPlant#1345, listing#1346, struct(systemId, systemId#1339, internalUUID, internalUUID#1340, plant, plant#1341, product, product#1342, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1343, productionAspect, productionAspect#1344, salesPlant, salesPlant#1345, listing, listing#1346) AS productPlant#1347]
(130) Project
Arguments: [productPlant#1347]
(131) Join
Arguments: LeftOuter, ((product#1335 <=> productPlant#1347.product.internalRefUUID) AND (plant#1336 <=> productPlant#1347.plant.internalRefUUID))
(132) Project
Arguments: [product#1335, plant#1336, orderDateTime#1337, productPlant#1347]
(133) SubqueryAlias
Arguments: wl
(134) LogicalRelation
Arguments: parquet, [systemId#1348, internalUUID#1349, id#1350, displayId#1351, name#1352, category#1353, companyCode#1354, address#1355, mainDistributionChain#1356, mainPurchasingOrganization#1357, validPurchasingOrganizations#1358, productGroup#1359], false
(135) Repartition
Arguments: 10, true
(136) Project
Arguments: [internalUUID#1349, address#1355.timeZone.code AS timezonecode#1360]
(137) Join
Arguments: LeftOuter, (plant#1336 <=> internalUUID#1349)
(138) Project
Arguments: [product#1335, plant#1336, orderDateTime#1337, productPlant#1347, internalUUID#1349, CASE WHEN isnotnull(timezonecode#1360) THEN timezonecode#1360 ELSE UTC END AS timezonecode#1361]
(139) Project
Arguments: [product#1335, plant#1336, orderDateTime#1337, productPlant#1347, timezonecode#1361]
(140) LogicalRelation
Arguments: parquet, [systemId#1362, internalUUID#1363, id#1364, displayId#1365, name#1366, baseUnitOfMeasure#1367, unitOfMeasures#1368, unitOfMeasureConversions#1369, productionAspect#1370, salesAspect#1371, procurementAspect#1372, productGroup#1373], false
(141) Repartition
Arguments: 10, true
(142) Join
Arguments: LeftOuter, (product#1335 = internalUUID#1363)
(143) Project
Arguments: [product#1335, plant#1336, orderDateTime#1337, productPlant#1347, timezonecode#1361, systemId#1362, internalUUID#1363, id#1364, displayId#1365, name#1366, baseUnitOfMeasure#1367, unitOfMeasures#1368, unitOfMeasureConversions#1369, productionAspect#1370, salesAspect#1371, procurementAspect#1372, productGroup#1373, filter(unitOfMeasureConversions#1369, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1347.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1347.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1367.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1367.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1374]
(144) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1374.quantityNumerator), true, [quantityNumerator#1375]
(145) Project
Arguments: [product#1335, plant#1336, orderDateTime#1337, productPlant#1347, timezonecode#1361, systemId#1362, internalUUID#1363, id#1364, displayId#1365, name#1366, baseUnitOfMeasure#1367, unitOfMeasures#1368, unitOfMeasureConversions#1369, productionAspect#1370, salesAspect#1371, procurementAspect#1372, productGroup#1373, filteredUnitOfMeasureConversions#1374, quantityNumerator#1375]
(146) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1374.quantityDenominator), true, [quantityDenominator#1376]
(147) Project
Arguments: [product#1335, plant#1336, orderDateTime#1337, productPlant#1347, timezonecode#1361, systemId#1362, internalUUID#1363, id#1364, displayId#1365, name#1366, baseUnitOfMeasure#1367, unitOfMeasures#1368, unitOfMeasureConversions#1369, productionAspect#1370, salesAspect#1371, procurementAspect#1372, productGroup#1373, filteredUnitOfMeasureConversions#1374, quantityNumerator#1375, quantityDenominator#1376]
(148) Project
Arguments: [product#1335, plant#1336, orderDateTime#1337, productPlant#1347, timezonecode#1361, systemId#1362, internalUUID#1363, id#1364, displayId#1365, name#1366, baseUnitOfMeasure#1367, unitOfMeasures#1368, unitOfMeasureConversions#1369, productionAspect#1370, salesAspect#1371, procurementAspect#1372, productGroup#1373, filteredUnitOfMeasureConversions#1374, quantityNumerator#1375, quantityDenominator#1376, (cast(quantityNumerator#1375 as double) / cast(quantityDenominator#1376 as double)) AS outboundUnit#1377]
(149) Project
Arguments: [product#1335, plant#1336, orderDateTime#1337, productPlant#1347, timezonecode#1361, systemId#1362, internalUUID#1363, id#1364, displayId#1365, name#1366, baseUnitOfMeasure#1367, unitOfMeasures#1368, unitOfMeasureConversions#1369, productionAspect#1370, salesAspect#1371, procurementAspect#1372, productGroup#1373, filteredUnitOfMeasureConversions#1374, quantityNumerator#1375, quantityDenominator#1376, CASE WHEN (isnull(outboundUnit#1377) OR (outboundUnit#1377 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1377 END AS outboundUnit#1378]
(150) Project
Arguments: [product#1335, plant#1336, orderDateTime#1337, productPlant#1347, timezonecode#1361, outboundUnit#1378]
(151) Project
Arguments: [plant#1336]
(152) Deduplicate
Arguments: [plant#1336]
(153) Join
Arguments: Inner, (plantUuid#1332 = plant#1336)
(154) Project
Arguments: [plantId#1331, plantUuid#1332, storageLocId#1333, storageLocUuid#1334]
(155) Join
Arguments: Inner, (plant#1304.internalRefUUID <=> plantUuid#1332)
(156) Generate
Arguments: explode(filter(stockQuantities#1306, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1334) AND (lambda x#1207.storageLocation.Id = storageLocId#1333)), lambda x#1207, false))), false, [stockQuantity#1379]
(157) Project
Arguments: [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1305, stockQuantities#1306, plantId#1331, plantUuid#1332, storageLocId#1333, storageLocUuid#1334, stockQuantity#1379]
(158) Aggregate
Arguments: [plantUuid#1332, internalUUID#1302, plant#1304, product#1303, systemId#1301], [plantUuid#1332, internalUUID#1302, plant#1304, product#1303, systemId#1301, first(calculationDateTime#1305, false) AS calculationDateTime#1380, collect_list(stockQuantity#1379, 0, 0) AS stockQuantities#1381]
(159) Project
Arguments: [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1380, stockQuantities#1381]
(160) Generate
Arguments: explode(stockQuantities#1381), false, [stockQuantity#1382]
(161) Project
Arguments: [systemId#1301, internalUUID#1302, product#1303, plant#1304, calculationDateTime#1380, stockQuantities#1381, stockQuantity#1382]
(162) Project
Arguments: [plant#1304.id AS plant#1383, plant#1304.internalRefUUID AS plantUuid#1384, product#1303.id AS product#1385, product#1303.internalRefUUID AS productUuid#1386, calculationDateTime#1380, stockQuantity#1382.storagelocation.id AS storageLocId#1387, stockQuantity#1382.storagelocation.internalRefUUID AS storageLocUuid#1388, stockQuantity#1382.quantity.measure AS quantity#1389, stockQuantity#1382.specialStockIndicator.code AS specialStockIndicator#1390, stockQuantity#1382.stockType.code AS stockType#1391]
(163) Filter
Arguments: ((specialStockIndicator#1390 = ) AND (stockType#1391 = 01))
(164) LogicalRelation
Arguments: parquet, [product#1392, plant#1393, orderDateTime#1394, planningStartDateTime#1395], false
(165) RepartitionByExpression
Arguments: [product#1392, plant#1393], 10
(166) Project
Arguments: [product#1392, plant#1393, orderDateTime#1394]
(167) LogicalRelation
Arguments: parquet, [systemId#1396, internalUUID#1397, plant#1398, product#1399, blockedForReplenishmentStartingFrom#1400, productionAspect#1401, salesPlant#1402, listing#1403], false
(168) Repartition
Arguments: 10, true
(169) Project
Arguments: [systemId#1396, internalUUID#1397, plant#1398, product#1399, blockedForReplenishmentStartingFrom#1400, productionAspect#1401, salesPlant#1402, listing#1403, struct(systemId, systemId#1396, internalUUID, internalUUID#1397, plant, plant#1398, product, product#1399, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1400, productionAspect, productionAspect#1401, salesPlant, salesPlant#1402, listing, listing#1403) AS productPlant#1404]
(170) Project
Arguments: [productPlant#1404]
(171) Join
Arguments: LeftOuter, ((product#1392 <=> productPlant#1404.product.internalRefUUID) AND (plant#1393 <=> productPlant#1404.plant.internalRefUUID))
(172) Project
Arguments: [product#1392, plant#1393, orderDateTime#1394, productPlant#1404]
(173) SubqueryAlias
Arguments: wl
(174) LogicalRelation
Arguments: parquet, [systemId#1405, internalUUID#1406, id#1407, displayId#1408, name#1409, category#1410, companyCode#1411, address#1412, mainDistributionChain#1413, mainPurchasingOrganization#1414, validPurchasingOrganizations#1415, productGroup#1416], false
(175) Repartition
Arguments: 10, true
(176) Project
Arguments: [internalUUID#1406, address#1412.timeZone.code AS timezonecode#1417]
(177) Join
Arguments: LeftOuter, (plant#1393 <=> internalUUID#1406)
(178) Project
Arguments: [product#1392, plant#1393, orderDateTime#1394, productPlant#1404, internalUUID#1406, CASE WHEN isnotnull(timezonecode#1417) THEN timezonecode#1417 ELSE UTC END AS timezonecode#1418]
(179) Project
Arguments: [product#1392, plant#1393, orderDateTime#1394, productPlant#1404, timezonecode#1418]
(180) LogicalRelation
Arguments: parquet, [systemId#1419, internalUUID#1420, id#1421, displayId#1422, name#1423, baseUnitOfMeasure#1424, unitOfMeasures#1425, unitOfMeasureConversions#1426, productionAspect#1427, salesAspect#1428, procurementAspect#1429, productGroup#1430], false
(181) Repartition
Arguments: 10, true
(182) Join
Arguments: LeftOuter, (product#1392 = internalUUID#1420)
(183) Project
Arguments: [product#1392, plant#1393, orderDateTime#1394, productPlant#1404, timezonecode#1418, systemId#1419, internalUUID#1420, id#1421, displayId#1422, name#1423, baseUnitOfMeasure#1424, unitOfMeasures#1425, unitOfMeasureConversions#1426, productionAspect#1427, salesAspect#1428, procurementAspect#1429, productGroup#1430, filter(unitOfMeasureConversions#1426, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1404.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1404.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1424.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1424.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1431]
(184) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1431.quantityNumerator), true, [quantityNumerator#1432]
(185) Project
Arguments: [product#1392, plant#1393, orderDateTime#1394, productPlant#1404, timezonecode#1418, systemId#1419, internalUUID#1420, id#1421, displayId#1422, name#1423, baseUnitOfMeasure#1424, unitOfMeasures#1425, unitOfMeasureConversions#1426, productionAspect#1427, salesAspect#1428, procurementAspect#1429, productGroup#1430, filteredUnitOfMeasureConversions#1431, quantityNumerator#1432]
(186) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1431.quantityDenominator), true, [quantityDenominator#1433]
(187) Project
Arguments: [product#1392, plant#1393, orderDateTime#1394, productPlant#1404, timezonecode#1418, systemId#1419, internalUUID#1420, id#1421, displayId#1422, name#1423, baseUnitOfMeasure#1424, unitOfMeasures#1425, unitOfMeasureConversions#1426, productionAspect#1427, salesAspect#1428, procurementAspect#1429, productGroup#1430, filteredUnitOfMeasureConversions#1431, quantityNumerator#1432, quantityDenominator#1433]
(188) Project
Arguments: [product#1392, plant#1393, orderDateTime#1394, productPlant#1404, timezonecode#1418, systemId#1419, internalUUID#1420, id#1421, displayId#1422, name#1423, baseUnitOfMeasure#1424, unitOfMeasures#1425, unitOfMeasureConversions#1426, productionAspect#1427, salesAspect#1428, procurementAspect#1429, productGroup#1430, filteredUnitOfMeasureConversions#1431, quantityNumerator#1432, quantityDenominator#1433, (cast(quantityNumerator#1432 as double) / cast(quantityDenominator#1433 as double)) AS outboundUnit#1434]
(189) Project
Arguments: [product#1392, plant#1393, orderDateTime#1394, productPlant#1404, timezonecode#1418, systemId#1419, internalUUID#1420, id#1421, displayId#1422, name#1423, baseUnitOfMeasure#1424, unitOfMeasures#1425, unitOfMeasureConversions#1426, productionAspect#1427, salesAspect#1428, procurementAspect#1429, productGroup#1430, filteredUnitOfMeasureConversions#1431, quantityNumerator#1432, quantityDenominator#1433, CASE WHEN (isnull(outboundUnit#1434) OR (outboundUnit#1434 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1434 END AS outboundUnit#1435]
(190) Project
Arguments: [product#1392, plant#1393, orderDateTime#1394, productPlant#1404, timezonecode#1418, outboundUnit#1435]
(191) Join
Arguments: Inner, ((plantUuid#1384 = plant#1393) AND (productUuid#1386 = product#1392))
(192) Filter
Arguments: (calculationDateTime#1380 <= orderDateTime#1394)
(193) Project
Arguments: [plantUuid#1384 AS plant#1436, productUuid#1386 AS product#1437, storageLocId#1387, calculationDateTime#1380, quantity#1389]
(194) Aggregate
Arguments: [plant#1436, product#1437, storageLocId#1387], [plant#1436, product#1437, storageLocId#1387, max(calculationDateTime#1380) AS max_calc_datetime#1294]
(195) Join
Arguments: Inner, ((((plant#1292 <=> plant#1436) AND (product#1293 <=> product#1437)) AND (storageLocId#1230 <=> storageLocId#1387)) AND (calculationDateTime#1209 <=> max_calc_datetime#1294))
(196) Project
Arguments: [plant#1292, product#1293, storageLocId#1230, calculationDateTime#1209, quantity#1232]
(197) Aggregate
Arguments: [product#1293, plant#1292], [product#1293, plant#1292, sum(quantity#1232) AS quantitySum#1448, min(calculationDateTime#1209) AS minCalculationDateTime#1449]
(198) Project
Arguments: [product#1293, plant#1292, quantitySum#1448, minCalculationDateTime#1449, round(quantitySum#1448, 0) AS roundedQuantitySum#1457]
(199) Join
Arguments: LeftOuter, ((plant#1103 = plant#1292) AND (product#1102 = product#1293))
(200) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, roundedQuantitySum#1457, minCalculationDateTime#1449]
(201) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, roundedQuantitySum#1457, minCalculationDateTime#1449, CASE WHEN isnotnull(minCalculationDateTime#1449) THEN minCalculationDateTime#1449 ELSE orderDateTime#1104 END AS stockDatetime#1506]
(202) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, roundedQuantitySum#1457, minCalculationDateTime#1449, stockDatetime#1506, CASE WHEN isnotnull(roundedQuantitySum#1457) THEN array(roundedQuantitySum#1457) ELSE array(0.0) END AS stockBatchQuantities#1507]
(203) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, roundedQuantitySum#1457, minCalculationDateTime#1449, stockDatetime#1506, stockBatchQuantities#1507, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1508]
(204) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, roundedQuantitySum#1457, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508]
(205) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508]
(206) LogicalRelation
Arguments: parquet, [product#1583, plant#1584, orderDateTime#1585, planningStartDateTime#1586], false
(207) RepartitionByExpression
Arguments: [product#1583, plant#1584], 10
(208) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585]
(209) LogicalRelation
Arguments: parquet, [systemId#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594], false
(210) Repartition
Arguments: 10, true
(211) Project
Arguments: [systemId#1587, internalUUID#1588, plant#1589, product#1590, blockedForReplenishmentStartingFrom#1591, productionAspect#1592, salesPlant#1593, listing#1594, struct(systemId, systemId#1587, internalUUID, internalUUID#1588, plant, plant#1589, product, product#1590, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1591, productionAspect, productionAspect#1592, salesPlant, salesPlant#1593, listing, listing#1594) AS productPlant#1595]
(212) Project
Arguments: [productPlant#1595]
(213) Join
Arguments: LeftOuter, ((product#1583 <=> productPlant#1595.product.internalRefUUID) AND (plant#1584 <=> productPlant#1595.plant.internalRefUUID))
(214) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595]
(215) SubqueryAlias
Arguments: wl
(216) LogicalRelation
Arguments: parquet, [systemId#1596, internalUUID#1597, id#1598, displayId#1599, name#1600, category#1601, companyCode#1602, address#1603, mainDistributionChain#1604, mainPurchasingOrganization#1605, validPurchasingOrganizations#1606, productGroup#1607], false
(217) Repartition
Arguments: 10, true
(218) Project
Arguments: [internalUUID#1597, address#1603.timeZone.code AS timezonecode#1608]
(219) Join
Arguments: LeftOuter, (plant#1584 <=> internalUUID#1597)
(220) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, internalUUID#1597, CASE WHEN isnotnull(timezonecode#1608) THEN timezonecode#1608 ELSE UTC END AS timezonecode#1609]
(221) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609]
(222) LogicalRelation
Arguments: parquet, [systemId#1610, internalUUID#1611, id#1612, displayId#1613, name#1614, baseUnitOfMeasure#1615, unitOfMeasures#1616, unitOfMeasureConversions#1617, productionAspect#1618, salesAspect#1619, procurementAspect#1620, productGroup#1621], false
(223) Repartition
Arguments: 10, true
(224) Join
Arguments: LeftOuter, (product#1583 = internalUUID#1611)
(225) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, systemId#1610, internalUUID#1611, id#1612, displayId#1613, name#1614, baseUnitOfMeasure#1615, unitOfMeasures#1616, unitOfMeasureConversions#1617, productionAspect#1618, salesAspect#1619, procurementAspect#1620, productGroup#1621, filter(unitOfMeasureConversions#1617, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1615.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1615.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1622]
(226) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1622.quantityNumerator), true, [quantityNumerator#1623]
(227) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, systemId#1610, internalUUID#1611, id#1612, displayId#1613, name#1614, baseUnitOfMeasure#1615, unitOfMeasures#1616, unitOfMeasureConversions#1617, productionAspect#1618, salesAspect#1619, procurementAspect#1620, productGroup#1621, filteredUnitOfMeasureConversions#1622, quantityNumerator#1623]
(228) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1622.quantityDenominator), true, [quantityDenominator#1624]
(229) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, systemId#1610, internalUUID#1611, id#1612, displayId#1613, name#1614, baseUnitOfMeasure#1615, unitOfMeasures#1616, unitOfMeasureConversions#1617, productionAspect#1618, salesAspect#1619, procurementAspect#1620, productGroup#1621, filteredUnitOfMeasureConversions#1622, quantityNumerator#1623, quantityDenominator#1624]
(230) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, systemId#1610, internalUUID#1611, id#1612, displayId#1613, name#1614, baseUnitOfMeasure#1615, unitOfMeasures#1616, unitOfMeasureConversions#1617, productionAspect#1618, salesAspect#1619, procurementAspect#1620, productGroup#1621, filteredUnitOfMeasureConversions#1622, quantityNumerator#1623, quantityDenominator#1624, (cast(quantityNumerator#1623 as double) / cast(quantityDenominator#1624 as double)) AS outboundUnit#1625]
(231) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, systemId#1610, internalUUID#1611, id#1612, displayId#1613, name#1614, baseUnitOfMeasure#1615, unitOfMeasures#1616, unitOfMeasureConversions#1617, productionAspect#1618, salesAspect#1619, procurementAspect#1620, productGroup#1621, filteredUnitOfMeasureConversions#1622, quantityNumerator#1623, quantityDenominator#1624, CASE WHEN (isnull(outboundUnit#1625) OR (outboundUnit#1625 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1625 END AS outboundUnit#1626]
(232) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626]
(233) LogicalRelation
Arguments: parquet, [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632], false
(234) Repartition
Arguments: 10, true
(235) LogicalRelation
Arguments: parquet, [marketUnit#1633, description#1634, articleHierarchy#1635, defaultCurrency#1636, responsibilities#1637, replenishmentTypes#1638, distributionCenters#1639, assignedArticleHierarchyNodes#1640, minOrderQtySetting#1641, minOrderQtySettingInternal#1642, listingCheck#1643, odsSelection#1644, demandProfiles#1645, constraintProfiles#1646, optimizationProfiles#1647, orderGroupSplitProfiles#1648, supplierMinimumProfiles#1649, multipleRestrictionProfiles#1650, preferredUomSource#1651, handlingOfUnfulfilledDemands#1652, negligibleQuantitiesThreshold#1653, eventtype#1654], false
(236) Repartition
Arguments: 10, true
(237) Filter
Arguments: (marketUnit#1633 <=> DIP_1691)
(238) Project
Arguments: [marketUnit#1633, description#1634, articleHierarchy#1635, defaultCurrency#1636, responsibilities#1637, replenishmentTypes#1638, distributionCenters#1639, assignedArticleHierarchyNodes#1640, minOrderQtySetting#1641, minOrderQtySettingInternal#1642, listingCheck#1643, odsSelection#1644, demandProfiles#1645, constraintProfiles#1646, optimizationProfiles#1647, orderGroupSplitProfiles#1648, supplierMinimumProfiles#1649, multipleRestrictionProfiles#1650, preferredUomSource#1651, handlingOfUnfulfilledDemands#1652, negligibleQuantitiesThreshold#1653, eventtype#1654]
(239) Project
Arguments: [distributionCenters#1639]
(240) Generate
Arguments: explode(distributionCenters#1639), false, [distributionCenters#1655]
(241) Project
Arguments: [distributionCenters#1655]
(242) Generate
Arguments: explode(distributionCenters#1655.storageLocations), false, [storageLocations#1656]
(243) Project
Arguments: [distributionCenters#1655.id AS plantId#1657, distributionCenters#1655.internalRefUUID AS plantUuid#1658, storageLocations#1656]
(244) Project
Arguments: [plantId#1657, plantUuid#1658, storageLocations#1656.id AS storageLocId#1659, storageLocations#1656.internalRefUUID AS storageLocUuid#1660]
(245) LogicalRelation
Arguments: parquet, [product#1661, plant#1662, orderDateTime#1663, planningStartDateTime#1664], false
(246) RepartitionByExpression
Arguments: [product#1661, plant#1662], 10
(247) Project
Arguments: [product#1661, plant#1662, orderDateTime#1663]
(248) LogicalRelation
Arguments: parquet, [systemId#1665, internalUUID#1666, plant#1667, product#1668, blockedForReplenishmentStartingFrom#1669, productionAspect#1670, salesPlant#1671, listing#1672], false
(249) Repartition
Arguments: 10, true
(250) Project
Arguments: [systemId#1665, internalUUID#1666, plant#1667, product#1668, blockedForReplenishmentStartingFrom#1669, productionAspect#1670, salesPlant#1671, listing#1672, struct(systemId, systemId#1665, internalUUID, internalUUID#1666, plant, plant#1667, product, product#1668, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1669, productionAspect, productionAspect#1670, salesPlant, salesPlant#1671, listing, listing#1672) AS productPlant#1673]
(251) Project
Arguments: [productPlant#1673]
(252) Join
Arguments: LeftOuter, ((product#1661 <=> productPlant#1673.product.internalRefUUID) AND (plant#1662 <=> productPlant#1673.plant.internalRefUUID))
(253) Project
Arguments: [product#1661, plant#1662, orderDateTime#1663, productPlant#1673]
(254) SubqueryAlias
Arguments: wl
(255) LogicalRelation
Arguments: parquet, [systemId#1674, internalUUID#1675, id#1676, displayId#1677, name#1678, category#1679, companyCode#1680, address#1681, mainDistributionChain#1682, mainPurchasingOrganization#1683, validPurchasingOrganizations#1684, productGroup#1685], false
(256) Repartition
Arguments: 10, true
(257) Project
Arguments: [internalUUID#1675, address#1681.timeZone.code AS timezonecode#1686]
(258) Join
Arguments: LeftOuter, (plant#1662 <=> internalUUID#1675)
(259) Project
Arguments: [product#1661, plant#1662, orderDateTime#1663, productPlant#1673, internalUUID#1675, CASE WHEN isnotnull(timezonecode#1686) THEN timezonecode#1686 ELSE UTC END AS timezonecode#1687]
(260) Project
Arguments: [product#1661, plant#1662, orderDateTime#1663, productPlant#1673, timezonecode#1687]
(261) LogicalRelation
Arguments: parquet, [systemId#1688, internalUUID#1689, id#1690, displayId#1691, name#1692, baseUnitOfMeasure#1693, unitOfMeasures#1694, unitOfMeasureConversions#1695, productionAspect#1696, salesAspect#1697, procurementAspect#1698, productGroup#1699], false
(262) Repartition
Arguments: 10, true
(263) Join
Arguments: LeftOuter, (product#1661 = internalUUID#1689)
(264) Project
Arguments: [product#1661, plant#1662, orderDateTime#1663, productPlant#1673, timezonecode#1687, systemId#1688, internalUUID#1689, id#1690, displayId#1691, name#1692, baseUnitOfMeasure#1693, unitOfMeasures#1694, unitOfMeasureConversions#1695, productionAspect#1696, salesAspect#1697, procurementAspect#1698, productGroup#1699, filter(unitOfMeasureConversions#1695, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1673.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1673.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1693.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1693.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1700]
(265) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1700.quantityNumerator), true, [quantityNumerator#1701]
(266) Project
Arguments: [product#1661, plant#1662, orderDateTime#1663, productPlant#1673, timezonecode#1687, systemId#1688, internalUUID#1689, id#1690, displayId#1691, name#1692, baseUnitOfMeasure#1693, unitOfMeasures#1694, unitOfMeasureConversions#1695, productionAspect#1696, salesAspect#1697, procurementAspect#1698, productGroup#1699, filteredUnitOfMeasureConversions#1700, quantityNumerator#1701]
(267) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1700.quantityDenominator), true, [quantityDenominator#1702]
(268) Project
Arguments: [product#1661, plant#1662, orderDateTime#1663, productPlant#1673, timezonecode#1687, systemId#1688, internalUUID#1689, id#1690, displayId#1691, name#1692, baseUnitOfMeasure#1693, unitOfMeasures#1694, unitOfMeasureConversions#1695, productionAspect#1696, salesAspect#1697, procurementAspect#1698, productGroup#1699, filteredUnitOfMeasureConversions#1700, quantityNumerator#1701, quantityDenominator#1702]
(269) Project
Arguments: [product#1661, plant#1662, orderDateTime#1663, productPlant#1673, timezonecode#1687, systemId#1688, internalUUID#1689, id#1690, displayId#1691, name#1692, baseUnitOfMeasure#1693, unitOfMeasures#1694, unitOfMeasureConversions#1695, productionAspect#1696, salesAspect#1697, procurementAspect#1698, productGroup#1699, filteredUnitOfMeasureConversions#1700, quantityNumerator#1701, quantityDenominator#1702, (cast(quantityNumerator#1701 as double) / cast(quantityDenominator#1702 as double)) AS outboundUnit#1703]
(270) Project
Arguments: [product#1661, plant#1662, orderDateTime#1663, productPlant#1673, timezonecode#1687, systemId#1688, internalUUID#1689, id#1690, displayId#1691, name#1692, baseUnitOfMeasure#1693, unitOfMeasures#1694, unitOfMeasureConversions#1695, productionAspect#1696, salesAspect#1697, procurementAspect#1698, productGroup#1699, filteredUnitOfMeasureConversions#1700, quantityNumerator#1701, quantityDenominator#1702, CASE WHEN (isnull(outboundUnit#1703) OR (outboundUnit#1703 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1703 END AS outboundUnit#1704]
(271) Project
Arguments: [product#1661, plant#1662, orderDateTime#1663, productPlant#1673, timezonecode#1687, outboundUnit#1704]
(272) Project
Arguments: [plant#1662]
(273) Deduplicate
Arguments: [plant#1662]
(274) Join
Arguments: Inner, (plantUuid#1658 = plant#1662)
(275) Project
Arguments: [plantId#1657, plantUuid#1658, storageLocId#1659, storageLocUuid#1660]
(276) Join
Arguments: Inner, (plant#1630.internalRefUUID <=> plantUuid#1658)
(277) Generate
Arguments: explode(filter(stockQuantities#1632, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1660) AND (lambda x#1207.storageLocation.Id = storageLocId#1659)), lambda x#1207, false))), false, [stockQuantity#1705]
(278) Project
Arguments: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1631, stockQuantities#1632, plantId#1657, plantUuid#1658, storageLocId#1659, storageLocUuid#1660, stockQuantity#1705]
(279) Aggregate
Arguments: [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627], [plantUuid#1658, internalUUID#1628, plant#1630, product#1629, systemId#1627, first(calculationDateTime#1631, false) AS calculationDateTime#1706, collect_list(stockQuantity#1705, 0, 0) AS stockQuantities#1707]
(280) Project
Arguments: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1706, stockQuantities#1707]
(281) Generate
Arguments: explode(stockQuantities#1707), false, [stockQuantity#1708]
(282) Project
Arguments: [systemId#1627, internalUUID#1628, product#1629, plant#1630, calculationDateTime#1706, stockQuantities#1707, stockQuantity#1708]
(283) Project
Arguments: [plant#1630.id AS plant#1709, plant#1630.internalRefUUID AS plantUuid#1710, product#1629.id AS product#1711, product#1629.internalRefUUID AS productUuid#1712, calculationDateTime#1706, stockQuantity#1708.storagelocation.id AS storageLocId#1713, stockQuantity#1708.storagelocation.internalRefUUID AS storageLocUuid#1714, stockQuantity#1708.quantity.measure AS quantity#1715, stockQuantity#1708.specialStockIndicator.code AS specialStockIndicator#1716, stockQuantity#1708.stockType.code AS stockType#1717]
(284) Filter
Arguments: ((specialStockIndicator#1716 = ) AND (stockType#1717 = 01))
(285) LogicalRelation
Arguments: parquet, [product#1718, plant#1719, orderDateTime#1720, planningStartDateTime#1721], false
(286) RepartitionByExpression
Arguments: [product#1718, plant#1719], 10
(287) Project
Arguments: [product#1718, plant#1719, orderDateTime#1720]
(288) LogicalRelation
Arguments: parquet, [systemId#1722, internalUUID#1723, plant#1724, product#1725, blockedForReplenishmentStartingFrom#1726, productionAspect#1727, salesPlant#1728, listing#1729], false
(289) Repartition
Arguments: 10, true
(290) Project
Arguments: [systemId#1722, internalUUID#1723, plant#1724, product#1725, blockedForReplenishmentStartingFrom#1726, productionAspect#1727, salesPlant#1728, listing#1729, struct(systemId, systemId#1722, internalUUID, internalUUID#1723, plant, plant#1724, product, product#1725, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1726, productionAspect, productionAspect#1727, salesPlant, salesPlant#1728, listing, listing#1729) AS productPlant#1730]
(291) Project
Arguments: [productPlant#1730]
(292) Join
Arguments: LeftOuter, ((product#1718 <=> productPlant#1730.product.internalRefUUID) AND (plant#1719 <=> productPlant#1730.plant.internalRefUUID))
(293) Project
Arguments: [product#1718, plant#1719, orderDateTime#1720, productPlant#1730]
(294) SubqueryAlias
Arguments: wl
(295) LogicalRelation
Arguments: parquet, [systemId#1731, internalUUID#1732, id#1733, displayId#1734, name#1735, category#1736, companyCode#1737, address#1738, mainDistributionChain#1739, mainPurchasingOrganization#1740, validPurchasingOrganizations#1741, productGroup#1742], false
(296) Repartition
Arguments: 10, true
(297) Project
Arguments: [internalUUID#1732, address#1738.timeZone.code AS timezonecode#1743]
(298) Join
Arguments: LeftOuter, (plant#1719 <=> internalUUID#1732)
(299) Project
Arguments: [product#1718, plant#1719, orderDateTime#1720, productPlant#1730, internalUUID#1732, CASE WHEN isnotnull(timezonecode#1743) THEN timezonecode#1743 ELSE UTC END AS timezonecode#1744]
(300) Project
Arguments: [product#1718, plant#1719, orderDateTime#1720, productPlant#1730, timezonecode#1744]
(301) LogicalRelation
Arguments: parquet, [systemId#1745, internalUUID#1746, id#1747, displayId#1748, name#1749, baseUnitOfMeasure#1750, unitOfMeasures#1751, unitOfMeasureConversions#1752, productionAspect#1753, salesAspect#1754, procurementAspect#1755, productGroup#1756], false
(302) Repartition
Arguments: 10, true
(303) Join
Arguments: LeftOuter, (product#1718 = internalUUID#1746)
(304) Project
Arguments: [product#1718, plant#1719, orderDateTime#1720, productPlant#1730, timezonecode#1744, systemId#1745, internalUUID#1746, id#1747, displayId#1748, name#1749, baseUnitOfMeasure#1750, unitOfMeasures#1751, unitOfMeasureConversions#1752, productionAspect#1753, salesAspect#1754, procurementAspect#1755, productGroup#1756, filter(unitOfMeasureConversions#1752, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1730.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1730.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1750.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1750.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1757]
(305) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1757.quantityNumerator), true, [quantityNumerator#1758]
(306) Project
Arguments: [product#1718, plant#1719, orderDateTime#1720, productPlant#1730, timezonecode#1744, systemId#1745, internalUUID#1746, id#1747, displayId#1748, name#1749, baseUnitOfMeasure#1750, unitOfMeasures#1751, unitOfMeasureConversions#1752, productionAspect#1753, salesAspect#1754, procurementAspect#1755, productGroup#1756, filteredUnitOfMeasureConversions#1757, quantityNumerator#1758]
(307) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1757.quantityDenominator), true, [quantityDenominator#1759]
(308) Project
Arguments: [product#1718, plant#1719, orderDateTime#1720, productPlant#1730, timezonecode#1744, systemId#1745, internalUUID#1746, id#1747, displayId#1748, name#1749, baseUnitOfMeasure#1750, unitOfMeasures#1751, unitOfMeasureConversions#1752, productionAspect#1753, salesAspect#1754, procurementAspect#1755, productGroup#1756, filteredUnitOfMeasureConversions#1757, quantityNumerator#1758, quantityDenominator#1759]
(309) Project
Arguments: [product#1718, plant#1719, orderDateTime#1720, productPlant#1730, timezonecode#1744, systemId#1745, internalUUID#1746, id#1747, displayId#1748, name#1749, baseUnitOfMeasure#1750, unitOfMeasures#1751, unitOfMeasureConversions#1752, productionAspect#1753, salesAspect#1754, procurementAspect#1755, productGroup#1756, filteredUnitOfMeasureConversions#1757, quantityNumerator#1758, quantityDenominator#1759, (cast(quantityNumerator#1758 as double) / cast(quantityDenominator#1759 as double)) AS outboundUnit#1760]
(310) Project
Arguments: [product#1718, plant#1719, orderDateTime#1720, productPlant#1730, timezonecode#1744, systemId#1745, internalUUID#1746, id#1747, displayId#1748, name#1749, baseUnitOfMeasure#1750, unitOfMeasures#1751, unitOfMeasureConversions#1752, productionAspect#1753, salesAspect#1754, procurementAspect#1755, productGroup#1756, filteredUnitOfMeasureConversions#1757, quantityNumerator#1758, quantityDenominator#1759, CASE WHEN (isnull(outboundUnit#1760) OR (outboundUnit#1760 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1760 END AS outboundUnit#1761]
(311) Project
Arguments: [product#1718, plant#1719, orderDateTime#1720, productPlant#1730, timezonecode#1744, outboundUnit#1761]
(312) Join
Arguments: Inner, ((plantUuid#1710 = plant#1719) AND (productUuid#1712 = product#1718))
(313) Filter
Arguments: (calculationDateTime#1706 <= orderDateTime#1720)
(314) Project
Arguments: [plantUuid#1710 AS plant#1762, productUuid#1712 AS product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715]
(315) LogicalRelation
Arguments: parquet, [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769], false
(316) Repartition
Arguments: 10, true
(317) LogicalRelation
Arguments: parquet, [marketUnit#1770, description#1771, articleHierarchy#1772, defaultCurrency#1773, responsibilities#1774, replenishmentTypes#1775, distributionCenters#1776, assignedArticleHierarchyNodes#1777, minOrderQtySetting#1778, minOrderQtySettingInternal#1779, listingCheck#1780, odsSelection#1781, demandProfiles#1782, constraintProfiles#1783, optimizationProfiles#1784, orderGroupSplitProfiles#1785, supplierMinimumProfiles#1786, multipleRestrictionProfiles#1787, preferredUomSource#1788, handlingOfUnfulfilledDemands#1789, negligibleQuantitiesThreshold#1790, eventtype#1791], false
(318) Repartition
Arguments: 10, true
(319) Filter
Arguments: (marketUnit#1770 <=> DIP_1691)
(320) Project
Arguments: [marketUnit#1770, description#1771, articleHierarchy#1772, defaultCurrency#1773, responsibilities#1774, replenishmentTypes#1775, distributionCenters#1776, assignedArticleHierarchyNodes#1777, minOrderQtySetting#1778, minOrderQtySettingInternal#1779, listingCheck#1780, odsSelection#1781, demandProfiles#1782, constraintProfiles#1783, optimizationProfiles#1784, orderGroupSplitProfiles#1785, supplierMinimumProfiles#1786, multipleRestrictionProfiles#1787, preferredUomSource#1788, handlingOfUnfulfilledDemands#1789, negligibleQuantitiesThreshold#1790, eventtype#1791]
(321) Project
Arguments: [distributionCenters#1776]
(322) Generate
Arguments: explode(distributionCenters#1776), false, [distributionCenters#1792]
(323) Project
Arguments: [distributionCenters#1792]
(324) Generate
Arguments: explode(distributionCenters#1792.storageLocations), false, [storageLocations#1793]
(325) Project
Arguments: [distributionCenters#1792.id AS plantId#1794, distributionCenters#1792.internalRefUUID AS plantUuid#1795, storageLocations#1793]
(326) Project
Arguments: [plantId#1794, plantUuid#1795, storageLocations#1793.id AS storageLocId#1796, storageLocations#1793.internalRefUUID AS storageLocUuid#1797]
(327) LogicalRelation
Arguments: parquet, [product#1798, plant#1799, orderDateTime#1800, planningStartDateTime#1801], false
(328) RepartitionByExpression
Arguments: [product#1798, plant#1799], 10
(329) Project
Arguments: [product#1798, plant#1799, orderDateTime#1800]
(330) LogicalRelation
Arguments: parquet, [systemId#1802, internalUUID#1803, plant#1804, product#1805, blockedForReplenishmentStartingFrom#1806, productionAspect#1807, salesPlant#1808, listing#1809], false
(331) Repartition
Arguments: 10, true
(332) Project
Arguments: [systemId#1802, internalUUID#1803, plant#1804, product#1805, blockedForReplenishmentStartingFrom#1806, productionAspect#1807, salesPlant#1808, listing#1809, struct(systemId, systemId#1802, internalUUID, internalUUID#1803, plant, plant#1804, product, product#1805, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1806, productionAspect, productionAspect#1807, salesPlant, salesPlant#1808, listing, listing#1809) AS productPlant#1810]
(333) Project
Arguments: [productPlant#1810]
(334) Join
Arguments: LeftOuter, ((product#1798 <=> productPlant#1810.product.internalRefUUID) AND (plant#1799 <=> productPlant#1810.plant.internalRefUUID))
(335) Project
Arguments: [product#1798, plant#1799, orderDateTime#1800, productPlant#1810]
(336) SubqueryAlias
Arguments: wl
(337) LogicalRelation
Arguments: parquet, [systemId#1811, internalUUID#1812, id#1813, displayId#1814, name#1815, category#1816, companyCode#1817, address#1818, mainDistributionChain#1819, mainPurchasingOrganization#1820, validPurchasingOrganizations#1821, productGroup#1822], false
(338) Repartition
Arguments: 10, true
(339) Project
Arguments: [internalUUID#1812, address#1818.timeZone.code AS timezonecode#1823]
(340) Join
Arguments: LeftOuter, (plant#1799 <=> internalUUID#1812)
(341) Project
Arguments: [product#1798, plant#1799, orderDateTime#1800, productPlant#1810, internalUUID#1812, CASE WHEN isnotnull(timezonecode#1823) THEN timezonecode#1823 ELSE UTC END AS timezonecode#1824]
(342) Project
Arguments: [product#1798, plant#1799, orderDateTime#1800, productPlant#1810, timezonecode#1824]
(343) LogicalRelation
Arguments: parquet, [systemId#1825, internalUUID#1826, id#1827, displayId#1828, name#1829, baseUnitOfMeasure#1830, unitOfMeasures#1831, unitOfMeasureConversions#1832, productionAspect#1833, salesAspect#1834, procurementAspect#1835, productGroup#1836], false
(344) Repartition
Arguments: 10, true
(345) Join
Arguments: LeftOuter, (product#1798 = internalUUID#1826)
(346) Project
Arguments: [product#1798, plant#1799, orderDateTime#1800, productPlant#1810, timezonecode#1824, systemId#1825, internalUUID#1826, id#1827, displayId#1828, name#1829, baseUnitOfMeasure#1830, unitOfMeasures#1831, unitOfMeasureConversions#1832, productionAspect#1833, salesAspect#1834, procurementAspect#1835, productGroup#1836, filter(unitOfMeasureConversions#1832, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1810.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1810.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1830.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1830.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1837]
(347) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1837.quantityNumerator), true, [quantityNumerator#1838]
(348) Project
Arguments: [product#1798, plant#1799, orderDateTime#1800, productPlant#1810, timezonecode#1824, systemId#1825, internalUUID#1826, id#1827, displayId#1828, name#1829, baseUnitOfMeasure#1830, unitOfMeasures#1831, unitOfMeasureConversions#1832, productionAspect#1833, salesAspect#1834, procurementAspect#1835, productGroup#1836, filteredUnitOfMeasureConversions#1837, quantityNumerator#1838]
(349) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1837.quantityDenominator), true, [quantityDenominator#1839]
(350) Project
Arguments: [product#1798, plant#1799, orderDateTime#1800, productPlant#1810, timezonecode#1824, systemId#1825, internalUUID#1826, id#1827, displayId#1828, name#1829, baseUnitOfMeasure#1830, unitOfMeasures#1831, unitOfMeasureConversions#1832, productionAspect#1833, salesAspect#1834, procurementAspect#1835, productGroup#1836, filteredUnitOfMeasureConversions#1837, quantityNumerator#1838, quantityDenominator#1839]
(351) Project
Arguments: [product#1798, plant#1799, orderDateTime#1800, productPlant#1810, timezonecode#1824, systemId#1825, internalUUID#1826, id#1827, displayId#1828, name#1829, baseUnitOfMeasure#1830, unitOfMeasures#1831, unitOfMeasureConversions#1832, productionAspect#1833, salesAspect#1834, procurementAspect#1835, productGroup#1836, filteredUnitOfMeasureConversions#1837, quantityNumerator#1838, quantityDenominator#1839, (cast(quantityNumerator#1838 as double) / cast(quantityDenominator#1839 as double)) AS outboundUnit#1840]
(352) Project
Arguments: [product#1798, plant#1799, orderDateTime#1800, productPlant#1810, timezonecode#1824, systemId#1825, internalUUID#1826, id#1827, displayId#1828, name#1829, baseUnitOfMeasure#1830, unitOfMeasures#1831, unitOfMeasureConversions#1832, productionAspect#1833, salesAspect#1834, procurementAspect#1835, productGroup#1836, filteredUnitOfMeasureConversions#1837, quantityNumerator#1838, quantityDenominator#1839, CASE WHEN (isnull(outboundUnit#1840) OR (outboundUnit#1840 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1840 END AS outboundUnit#1841]
(353) Project
Arguments: [product#1798, plant#1799, orderDateTime#1800, productPlant#1810, timezonecode#1824, outboundUnit#1841]
(354) Project
Arguments: [plant#1799]
(355) Deduplicate
Arguments: [plant#1799]
(356) Join
Arguments: Inner, (plantUuid#1795 = plant#1799)
(357) Project
Arguments: [plantId#1794, plantUuid#1795, storageLocId#1796, storageLocUuid#1797]
(358) Join
Arguments: Inner, (plant#1767.internalRefUUID <=> plantUuid#1795)
(359) Generate
Arguments: explode(filter(stockQuantities#1769, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#1797) AND (lambda x#1207.storageLocation.Id = storageLocId#1796)), lambda x#1207, false))), false, [stockQuantity#1842]
(360) Project
Arguments: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1768, stockQuantities#1769, plantId#1794, plantUuid#1795, storageLocId#1796, storageLocUuid#1797, stockQuantity#1842]
(361) Aggregate
Arguments: [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764], [plantUuid#1795, internalUUID#1765, plant#1767, product#1766, systemId#1764, first(calculationDateTime#1768, false) AS calculationDateTime#1843, collect_list(stockQuantity#1842, 0, 0) AS stockQuantities#1844]
(362) Project
Arguments: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1843, stockQuantities#1844]
(363) Generate
Arguments: explode(stockQuantities#1844), false, [stockQuantity#1845]
(364) Project
Arguments: [systemId#1764, internalUUID#1765, product#1766, plant#1767, calculationDateTime#1843, stockQuantities#1844, stockQuantity#1845]
(365) Project
Arguments: [plant#1767.id AS plant#1846, plant#1767.internalRefUUID AS plantUuid#1847, product#1766.id AS product#1848, product#1766.internalRefUUID AS productUuid#1849, calculationDateTime#1843, stockQuantity#1845.storagelocation.id AS storageLocId#1850, stockQuantity#1845.storagelocation.internalRefUUID AS storageLocUuid#1851, stockQuantity#1845.quantity.measure AS quantity#1852, stockQuantity#1845.specialStockIndicator.code AS specialStockIndicator#1853, stockQuantity#1845.stockType.code AS stockType#1854]
(366) Filter
Arguments: ((specialStockIndicator#1853 = ) AND (stockType#1854 = 01))
(367) LogicalRelation
Arguments: parquet, [product#1855, plant#1856, orderDateTime#1857, planningStartDateTime#1858], false
(368) RepartitionByExpression
Arguments: [product#1855, plant#1856], 10
(369) Project
Arguments: [product#1855, plant#1856, orderDateTime#1857]
(370) LogicalRelation
Arguments: parquet, [systemId#1859, internalUUID#1860, plant#1861, product#1862, blockedForReplenishmentStartingFrom#1863, productionAspect#1864, salesPlant#1865, listing#1866], false
(371) Repartition
Arguments: 10, true
(372) Project
Arguments: [systemId#1859, internalUUID#1860, plant#1861, product#1862, blockedForReplenishmentStartingFrom#1863, productionAspect#1864, salesPlant#1865, listing#1866, struct(systemId, systemId#1859, internalUUID, internalUUID#1860, plant, plant#1861, product, product#1862, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#1863, productionAspect, productionAspect#1864, salesPlant, salesPlant#1865, listing, listing#1866) AS productPlant#1867]
(373) Project
Arguments: [productPlant#1867]
(374) Join
Arguments: LeftOuter, ((product#1855 <=> productPlant#1867.product.internalRefUUID) AND (plant#1856 <=> productPlant#1867.plant.internalRefUUID))
(375) Project
Arguments: [product#1855, plant#1856, orderDateTime#1857, productPlant#1867]
(376) SubqueryAlias
Arguments: wl
(377) LogicalRelation
Arguments: parquet, [systemId#1868, internalUUID#1869, id#1870, displayId#1871, name#1872, category#1873, companyCode#1874, address#1875, mainDistributionChain#1876, mainPurchasingOrganization#1877, validPurchasingOrganizations#1878, productGroup#1879], false
(378) Repartition
Arguments: 10, true
(379) Project
Arguments: [internalUUID#1869, address#1875.timeZone.code AS timezonecode#1880]
(380) Join
Arguments: LeftOuter, (plant#1856 <=> internalUUID#1869)
(381) Project
Arguments: [product#1855, plant#1856, orderDateTime#1857, productPlant#1867, internalUUID#1869, CASE WHEN isnotnull(timezonecode#1880) THEN timezonecode#1880 ELSE UTC END AS timezonecode#1881]
(382) Project
Arguments: [product#1855, plant#1856, orderDateTime#1857, productPlant#1867, timezonecode#1881]
(383) LogicalRelation
Arguments: parquet, [systemId#1882, internalUUID#1883, id#1884, displayId#1885, name#1886, baseUnitOfMeasure#1887, unitOfMeasures#1888, unitOfMeasureConversions#1889, productionAspect#1890, salesAspect#1891, procurementAspect#1892, productGroup#1893], false
(384) Repartition
Arguments: 10, true
(385) Join
Arguments: LeftOuter, (product#1855 = internalUUID#1883)
(386) Project
Arguments: [product#1855, plant#1856, orderDateTime#1857, productPlant#1867, timezonecode#1881, systemId#1882, internalUUID#1883, id#1884, displayId#1885, name#1886, baseUnitOfMeasure#1887, unitOfMeasures#1888, unitOfMeasureConversions#1889, productionAspect#1890, salesAspect#1891, procurementAspect#1892, productGroup#1893, filter(unitOfMeasureConversions#1889, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#1867.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#1867.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#1887.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#1887.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#1894]
(387) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1894.quantityNumerator), true, [quantityNumerator#1895]
(388) Project
Arguments: [product#1855, plant#1856, orderDateTime#1857, productPlant#1867, timezonecode#1881, systemId#1882, internalUUID#1883, id#1884, displayId#1885, name#1886, baseUnitOfMeasure#1887, unitOfMeasures#1888, unitOfMeasureConversions#1889, productionAspect#1890, salesAspect#1891, procurementAspect#1892, productGroup#1893, filteredUnitOfMeasureConversions#1894, quantityNumerator#1895]
(389) Generate
Arguments: explode(filteredUnitOfMeasureConversions#1894.quantityDenominator), true, [quantityDenominator#1896]
(390) Project
Arguments: [product#1855, plant#1856, orderDateTime#1857, productPlant#1867, timezonecode#1881, systemId#1882, internalUUID#1883, id#1884, displayId#1885, name#1886, baseUnitOfMeasure#1887, unitOfMeasures#1888, unitOfMeasureConversions#1889, productionAspect#1890, salesAspect#1891, procurementAspect#1892, productGroup#1893, filteredUnitOfMeasureConversions#1894, quantityNumerator#1895, quantityDenominator#1896]
(391) Project
Arguments: [product#1855, plant#1856, orderDateTime#1857, productPlant#1867, timezonecode#1881, systemId#1882, internalUUID#1883, id#1884, displayId#1885, name#1886, baseUnitOfMeasure#1887, unitOfMeasures#1888, unitOfMeasureConversions#1889, productionAspect#1890, salesAspect#1891, procurementAspect#1892, productGroup#1893, filteredUnitOfMeasureConversions#1894, quantityNumerator#1895, quantityDenominator#1896, (cast(quantityNumerator#1895 as double) / cast(quantityDenominator#1896 as double)) AS outboundUnit#1897]
(392) Project
Arguments: [product#1855, plant#1856, orderDateTime#1857, productPlant#1867, timezonecode#1881, systemId#1882, internalUUID#1883, id#1884, displayId#1885, name#1886, baseUnitOfMeasure#1887, unitOfMeasures#1888, unitOfMeasureConversions#1889, productionAspect#1890, salesAspect#1891, procurementAspect#1892, productGroup#1893, filteredUnitOfMeasureConversions#1894, quantityNumerator#1895, quantityDenominator#1896, CASE WHEN (isnull(outboundUnit#1897) OR (outboundUnit#1897 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#1897 END AS outboundUnit#1898]
(393) Project
Arguments: [product#1855, plant#1856, orderDateTime#1857, productPlant#1867, timezonecode#1881, outboundUnit#1898]
(394) Join
Arguments: Inner, ((plantUuid#1847 = plant#1856) AND (productUuid#1849 = product#1855))
(395) Filter
Arguments: (calculationDateTime#1843 <= orderDateTime#1857)
(396) Project
Arguments: [plantUuid#1847 AS plant#1899, productUuid#1849 AS product#1900, storageLocId#1850, calculationDateTime#1843, quantity#1852]
(397) Aggregate
Arguments: [plant#1899, product#1900, storageLocId#1850], [plant#1899, product#1900, storageLocId#1850, max(calculationDateTime#1843) AS max_calc_datetime#1901]
(398) Join
Arguments: Inner, ((((plant#1762 <=> plant#1899) AND (product#1763 <=> product#1900)) AND (storageLocId#1713 <=> storageLocId#1850)) AND (calculationDateTime#1706 <=> max_calc_datetime#1901))
(399) Project
Arguments: [plant#1762, product#1763, storageLocId#1713, calculationDateTime#1706, quantity#1715]
(400) Aggregate
Arguments: [product#1763, plant#1762], [product#1763, plant#1762, sum(quantity#1715) AS quantitySum#1902, min(calculationDateTime#1706) AS minCalculationDateTime#1903]
(401) Project
Arguments: [product#1763, plant#1762, quantitySum#1902, minCalculationDateTime#1903, round(quantitySum#1902, 0) AS roundedQuantitySum#1904]
(402) Join
Arguments: LeftOuter, ((plant#1584 = plant#1762) AND (product#1583 = product#1763))
(403) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, roundedQuantitySum#1904, minCalculationDateTime#1903]
(404) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, roundedQuantitySum#1904, minCalculationDateTime#1903, CASE WHEN isnotnull(minCalculationDateTime#1903) THEN minCalculationDateTime#1903 ELSE orderDateTime#1585 END AS stockDatetime#1905]
(405) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, roundedQuantitySum#1904, minCalculationDateTime#1903, stockDatetime#1905, CASE WHEN isnotnull(roundedQuantitySum#1904) THEN array(roundedQuantitySum#1904) ELSE array(0.0) END AS stockBatchQuantities#1906]
(406) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, roundedQuantitySum#1904, minCalculationDateTime#1903, stockDatetime#1905, stockBatchQuantities#1906, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#1907]
(407) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, roundedQuantitySum#1904, stockDatetime#1905, stockBatchQuantities#1906, stockBatchShelfLifeEndDatetimes#1907]
(408) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, stockBatchShelfLifeEndDatetimes#1907]
(409) LogicalRelation
Arguments: parquet, [product#1509, plant#1510, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517], false
(410) Join
Arguments: LeftOuter, ((product#1583 = product#1509) AND (plant#1584 = plant#1510))
(411) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, stockBatchShelfLifeEndDatetimes#1907, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517, product#1509, plant#1510]
(412) Project
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, stockBatchShelfLifeEndDatetimes#1907, demandChannel#1511, demandStream#1512, considerVariance#1513, demandTimeBuckets#1514, demandPointInTimeStart#1515, demandPointInTimeEnd#1516, demandPointInTime#1517, CASE WHEN isnotnull(product#1509) THEN struct(demandChannel, demandChannel#1511, demandStream, demandStream#1512, considerVariance, considerVariance#1513, demandTimeBuckets, demandTimeBuckets#1514, demandPointInTimeStart, demandPointInTimeStart#1515, demandPointInTimeEnd, demandPointInTimeEnd#1516, demandPointInTime, demandPointInTime#1517) 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#1529]
(413) Aggregate
Arguments: [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, stockBatchShelfLifeEndDatetimes#1907], [product#1583, plant#1584, orderDateTime#1585, productPlant#1595, timezonecode#1609, outboundUnit#1626, stockDatetime#1905, stockBatchQuantities#1906, stockBatchShelfLifeEndDatetimes#1907, collect_list(rawDemands#1529, 0, 0) AS rawDemands#1530]
(414) DeserializeToObject
Arguments: createexternalrow(invoke(product#1583.toString()), invoke(plant#1584.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#1585)), if (isnull(productPlant#1595)) null else createexternalrow(invoke(productPlant#1595.systemId.toString()), invoke(productPlant#1595.internalUUID.toString()), if (isnull(productPlant#1595.plant)) null else createexternalrow(invoke(productPlant#1595.plant.internalRefUUID.toString()), invoke(productPlant#1595.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#1595.product)) null else createexternalrow(invoke(productPlant#1595.product.internalRefUUID.toString()), invoke(productPlant#1595.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#1595.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#1595.productionAspect)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#1595.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#1595.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#1595.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#1595.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#1595.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#1595.salesPlant)) null else createexternalrow(if (isnull(productPlant#1595.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#1595.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#1595.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, 497), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#1595.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#1609.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#1626)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#1905)), mapobjects(lambdavariable(MapObject, DoubleType, true, 498), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 498) as double))), stockBatchQuantities#1906, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 499), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 499) as timestamp)))), stockBatchShelfLifeEndDatetimes#1907, 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, 500), 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, 500))) 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, 500).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, 500).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, 500).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).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, 500).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, 500).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, 500).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).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, 500).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#1530, 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#1569: org.apache.spark.sql.Row
(415) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@762840b4, 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#1574: 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#1579, 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#1580, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 488), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 488), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 489), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 489), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 490), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 490), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 491), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 491), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 492), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 492), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#1581, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 494), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 494), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 495), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 495), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 496), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 496), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#1582]
(417) Join
Arguments: LeftOuter, ((plant#1580 <=> plant#1103) AND (product#1579 <=> product#1102))
(418) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, plant#1580, dayBucketDemands#1581, pointInTimeDemands#1582]
(419) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582]
(420) LogicalRelation
Arguments: parquet, [product#5086, plant#5087, orderDateTime#5088, planningStartDateTime#5089], false
(421) RepartitionByExpression
Arguments: [product#5086, plant#5087], 10
(422) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088]
(423) LogicalRelation
Arguments: parquet, [systemId#5090, internalUUID#5091, plant#5092, product#5093, blockedForReplenishmentStartingFrom#5094, productionAspect#5095, salesPlant#5096, listing#5097], false
(424) Repartition
Arguments: 10, true
(425) Project
Arguments: [systemId#5090, internalUUID#5091, plant#5092, product#5093, blockedForReplenishmentStartingFrom#5094, productionAspect#5095, salesPlant#5096, listing#5097, struct(systemId, systemId#5090, internalUUID, internalUUID#5091, plant, plant#5092, product, product#5093, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#5094, productionAspect, productionAspect#5095, salesPlant, salesPlant#5096, listing, listing#5097) AS productPlant#5098]
(426) Project
Arguments: [productPlant#5098]
(427) Join
Arguments: LeftOuter, ((product#5086 <=> productPlant#5098.product.internalRefUUID) AND (plant#5087 <=> productPlant#5098.plant.internalRefUUID))
(428) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098]
(429) SubqueryAlias
Arguments: wl
(430) LogicalRelation
Arguments: parquet, [systemId#5099, internalUUID#5100, id#5101, displayId#5102, name#5103, category#5104, companyCode#5105, address#5106, mainDistributionChain#5107, mainPurchasingOrganization#5108, validPurchasingOrganizations#5109, productGroup#5110], false
(431) Repartition
Arguments: 10, true
(432) Project
Arguments: [internalUUID#5100, address#5106.timeZone.code AS timezonecode#5111]
(433) Join
Arguments: LeftOuter, (plant#5087 <=> internalUUID#5100)
(434) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, internalUUID#5100, CASE WHEN isnotnull(timezonecode#5111) THEN timezonecode#5111 ELSE UTC END AS timezonecode#5112]
(435) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112]
(436) LogicalRelation
Arguments: parquet, [systemId#5113, internalUUID#5114, id#5115, displayId#5116, name#5117, baseUnitOfMeasure#5118, unitOfMeasures#5119, unitOfMeasureConversions#5120, productionAspect#5121, salesAspect#5122, procurementAspect#5123, productGroup#5124], false
(437) Repartition
Arguments: 10, true
(438) Join
Arguments: LeftOuter, (product#5086 = internalUUID#5114)
(439) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, systemId#5113, internalUUID#5114, id#5115, displayId#5116, name#5117, baseUnitOfMeasure#5118, unitOfMeasures#5119, unitOfMeasureConversions#5120, productionAspect#5121, salesAspect#5122, procurementAspect#5123, productGroup#5124, filter(unitOfMeasureConversions#5120, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#5098.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#5098.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#5118.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5118.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#5125]
(440) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5125.quantityNumerator), true, [quantityNumerator#5126]
(441) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, systemId#5113, internalUUID#5114, id#5115, displayId#5116, name#5117, baseUnitOfMeasure#5118, unitOfMeasures#5119, unitOfMeasureConversions#5120, productionAspect#5121, salesAspect#5122, procurementAspect#5123, productGroup#5124, filteredUnitOfMeasureConversions#5125, quantityNumerator#5126]
(442) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5125.quantityDenominator), true, [quantityDenominator#5127]
(443) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, systemId#5113, internalUUID#5114, id#5115, displayId#5116, name#5117, baseUnitOfMeasure#5118, unitOfMeasures#5119, unitOfMeasureConversions#5120, productionAspect#5121, salesAspect#5122, procurementAspect#5123, productGroup#5124, filteredUnitOfMeasureConversions#5125, quantityNumerator#5126, quantityDenominator#5127]
(444) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, systemId#5113, internalUUID#5114, id#5115, displayId#5116, name#5117, baseUnitOfMeasure#5118, unitOfMeasures#5119, unitOfMeasureConversions#5120, productionAspect#5121, salesAspect#5122, procurementAspect#5123, productGroup#5124, filteredUnitOfMeasureConversions#5125, quantityNumerator#5126, quantityDenominator#5127, (cast(quantityNumerator#5126 as double) / cast(quantityDenominator#5127 as double)) AS outboundUnit#5128]
(445) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, systemId#5113, internalUUID#5114, id#5115, displayId#5116, name#5117, baseUnitOfMeasure#5118, unitOfMeasures#5119, unitOfMeasureConversions#5120, productionAspect#5121, salesAspect#5122, procurementAspect#5123, productGroup#5124, filteredUnitOfMeasureConversions#5125, quantityNumerator#5126, quantityDenominator#5127, CASE WHEN (isnull(outboundUnit#5128) OR (outboundUnit#5128 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#5128 END AS outboundUnit#5129]
(446) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, outboundUnit#5129]
(447) LogicalRelation
Arguments: parquet, [systemId#5130, internalUUID#5131, product#5132, plant#5133, calculationDateTime#5134, stockQuantities#5135], false
(448) Repartition
Arguments: 10, true
(449) LogicalRelation
Arguments: parquet, [marketUnit#5136, description#5137, articleHierarchy#5138, defaultCurrency#5139, responsibilities#5140, replenishmentTypes#5141, distributionCenters#5142, assignedArticleHierarchyNodes#5143, minOrderQtySetting#5144, minOrderQtySettingInternal#5145, listingCheck#5146, odsSelection#5147, demandProfiles#5148, constraintProfiles#5149, optimizationProfiles#5150, orderGroupSplitProfiles#5151, supplierMinimumProfiles#5152, multipleRestrictionProfiles#5153, preferredUomSource#5154, handlingOfUnfulfilledDemands#5155, negligibleQuantitiesThreshold#5156, eventtype#5157], false
(450) Repartition
Arguments: 10, true
(451) Filter
Arguments: (marketUnit#5136 <=> DIP_1691)
(452) Project
Arguments: [marketUnit#5136, description#5137, articleHierarchy#5138, defaultCurrency#5139, responsibilities#5140, replenishmentTypes#5141, distributionCenters#5142, assignedArticleHierarchyNodes#5143, minOrderQtySetting#5144, minOrderQtySettingInternal#5145, listingCheck#5146, odsSelection#5147, demandProfiles#5148, constraintProfiles#5149, optimizationProfiles#5150, orderGroupSplitProfiles#5151, supplierMinimumProfiles#5152, multipleRestrictionProfiles#5153, preferredUomSource#5154, handlingOfUnfulfilledDemands#5155, negligibleQuantitiesThreshold#5156, eventtype#5157]
(453) Project
Arguments: [distributionCenters#5142]
(454) Generate
Arguments: explode(distributionCenters#5142), false, [distributionCenters#5158]
(455) Project
Arguments: [distributionCenters#5158]
(456) Generate
Arguments: explode(distributionCenters#5158.storageLocations), false, [storageLocations#5159]
(457) Project
Arguments: [distributionCenters#5158.id AS plantId#5160, distributionCenters#5158.internalRefUUID AS plantUuid#5161, storageLocations#5159]
(458) Project
Arguments: [plantId#5160, plantUuid#5161, storageLocations#5159.id AS storageLocId#5162, storageLocations#5159.internalRefUUID AS storageLocUuid#5163]
(459) LogicalRelation
Arguments: parquet, [product#5164, plant#5165, orderDateTime#5166, planningStartDateTime#5167], false
(460) RepartitionByExpression
Arguments: [product#5164, plant#5165], 10
(461) Project
Arguments: [product#5164, plant#5165, orderDateTime#5166]
(462) LogicalRelation
Arguments: parquet, [systemId#5168, internalUUID#5169, plant#5170, product#5171, blockedForReplenishmentStartingFrom#5172, productionAspect#5173, salesPlant#5174, listing#5175], false
(463) Repartition
Arguments: 10, true
(464) Project
Arguments: [systemId#5168, internalUUID#5169, plant#5170, product#5171, blockedForReplenishmentStartingFrom#5172, productionAspect#5173, salesPlant#5174, listing#5175, struct(systemId, systemId#5168, internalUUID, internalUUID#5169, plant, plant#5170, product, product#5171, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#5172, productionAspect, productionAspect#5173, salesPlant, salesPlant#5174, listing, listing#5175) AS productPlant#5176]
(465) Project
Arguments: [productPlant#5176]
(466) Join
Arguments: LeftOuter, ((product#5164 <=> productPlant#5176.product.internalRefUUID) AND (plant#5165 <=> productPlant#5176.plant.internalRefUUID))
(467) Project
Arguments: [product#5164, plant#5165, orderDateTime#5166, productPlant#5176]
(468) SubqueryAlias
Arguments: wl
(469) LogicalRelation
Arguments: parquet, [systemId#5177, internalUUID#5178, id#5179, displayId#5180, name#5181, category#5182, companyCode#5183, address#5184, mainDistributionChain#5185, mainPurchasingOrganization#5186, validPurchasingOrganizations#5187, productGroup#5188], false
(470) Repartition
Arguments: 10, true
(471) Project
Arguments: [internalUUID#5178, address#5184.timeZone.code AS timezonecode#5189]
(472) Join
Arguments: LeftOuter, (plant#5165 <=> internalUUID#5178)
(473) Project
Arguments: [product#5164, plant#5165, orderDateTime#5166, productPlant#5176, internalUUID#5178, CASE WHEN isnotnull(timezonecode#5189) THEN timezonecode#5189 ELSE UTC END AS timezonecode#5190]
(474) Project
Arguments: [product#5164, plant#5165, orderDateTime#5166, productPlant#5176, timezonecode#5190]
(475) LogicalRelation
Arguments: parquet, [systemId#5191, internalUUID#5192, id#5193, displayId#5194, name#5195, baseUnitOfMeasure#5196, unitOfMeasures#5197, unitOfMeasureConversions#5198, productionAspect#5199, salesAspect#5200, procurementAspect#5201, productGroup#5202], false
(476) Repartition
Arguments: 10, true
(477) Join
Arguments: LeftOuter, (product#5164 = internalUUID#5192)
(478) Project
Arguments: [product#5164, plant#5165, orderDateTime#5166, productPlant#5176, timezonecode#5190, systemId#5191, internalUUID#5192, id#5193, displayId#5194, name#5195, baseUnitOfMeasure#5196, unitOfMeasures#5197, unitOfMeasureConversions#5198, productionAspect#5199, salesAspect#5200, procurementAspect#5201, productGroup#5202, filter(unitOfMeasureConversions#5198, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#5176.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#5176.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#5196.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5196.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#5203]
(479) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5203.quantityNumerator), true, [quantityNumerator#5204]
(480) Project
Arguments: [product#5164, plant#5165, orderDateTime#5166, productPlant#5176, timezonecode#5190, systemId#5191, internalUUID#5192, id#5193, displayId#5194, name#5195, baseUnitOfMeasure#5196, unitOfMeasures#5197, unitOfMeasureConversions#5198, productionAspect#5199, salesAspect#5200, procurementAspect#5201, productGroup#5202, filteredUnitOfMeasureConversions#5203, quantityNumerator#5204]
(481) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5203.quantityDenominator), true, [quantityDenominator#5205]
(482) Project
Arguments: [product#5164, plant#5165, orderDateTime#5166, productPlant#5176, timezonecode#5190, systemId#5191, internalUUID#5192, id#5193, displayId#5194, name#5195, baseUnitOfMeasure#5196, unitOfMeasures#5197, unitOfMeasureConversions#5198, productionAspect#5199, salesAspect#5200, procurementAspect#5201, productGroup#5202, filteredUnitOfMeasureConversions#5203, quantityNumerator#5204, quantityDenominator#5205]
(483) Project
Arguments: [product#5164, plant#5165, orderDateTime#5166, productPlant#5176, timezonecode#5190, systemId#5191, internalUUID#5192, id#5193, displayId#5194, name#5195, baseUnitOfMeasure#5196, unitOfMeasures#5197, unitOfMeasureConversions#5198, productionAspect#5199, salesAspect#5200, procurementAspect#5201, productGroup#5202, filteredUnitOfMeasureConversions#5203, quantityNumerator#5204, quantityDenominator#5205, (cast(quantityNumerator#5204 as double) / cast(quantityDenominator#5205 as double)) AS outboundUnit#5206]
(484) Project
Arguments: [product#5164, plant#5165, orderDateTime#5166, productPlant#5176, timezonecode#5190, systemId#5191, internalUUID#5192, id#5193, displayId#5194, name#5195, baseUnitOfMeasure#5196, unitOfMeasures#5197, unitOfMeasureConversions#5198, productionAspect#5199, salesAspect#5200, procurementAspect#5201, productGroup#5202, filteredUnitOfMeasureConversions#5203, quantityNumerator#5204, quantityDenominator#5205, CASE WHEN (isnull(outboundUnit#5206) OR (outboundUnit#5206 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#5206 END AS outboundUnit#5207]
(485) Project
Arguments: [product#5164, plant#5165, orderDateTime#5166, productPlant#5176, timezonecode#5190, outboundUnit#5207]
(486) Project
Arguments: [plant#5165]
(487) Deduplicate
Arguments: [plant#5165]
(488) Join
Arguments: Inner, (plantUuid#5161 = plant#5165)
(489) Project
Arguments: [plantId#5160, plantUuid#5161, storageLocId#5162, storageLocUuid#5163]
(490) Join
Arguments: Inner, (plant#5133.internalRefUUID <=> plantUuid#5161)
(491) Generate
Arguments: explode(filter(stockQuantities#5135, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#5163) AND (lambda x#1207.storageLocation.Id = storageLocId#5162)), lambda x#1207, false))), false, [stockQuantity#5208]
(492) Project
Arguments: [systemId#5130, internalUUID#5131, product#5132, plant#5133, calculationDateTime#5134, stockQuantities#5135, plantId#5160, plantUuid#5161, storageLocId#5162, storageLocUuid#5163, stockQuantity#5208]
(493) Aggregate
Arguments: [plantUuid#5161, internalUUID#5131, plant#5133, product#5132, systemId#5130], [plantUuid#5161, internalUUID#5131, plant#5133, product#5132, systemId#5130, first(calculationDateTime#5134, false) AS calculationDateTime#5209, collect_list(stockQuantity#5208, 0, 0) AS stockQuantities#5210]
(494) Project
Arguments: [systemId#5130, internalUUID#5131, product#5132, plant#5133, calculationDateTime#5209, stockQuantities#5210]
(495) Generate
Arguments: explode(stockQuantities#5210), false, [stockQuantity#5211]
(496) Project
Arguments: [systemId#5130, internalUUID#5131, product#5132, plant#5133, calculationDateTime#5209, stockQuantities#5210, stockQuantity#5211]
(497) Project
Arguments: [plant#5133.id AS plant#5212, plant#5133.internalRefUUID AS plantUuid#5213, product#5132.id AS product#5214, product#5132.internalRefUUID AS productUuid#5215, calculationDateTime#5209, stockQuantity#5211.storagelocation.id AS storageLocId#5216, stockQuantity#5211.storagelocation.internalRefUUID AS storageLocUuid#5217, stockQuantity#5211.quantity.measure AS quantity#5218, stockQuantity#5211.specialStockIndicator.code AS specialStockIndicator#5219, stockQuantity#5211.stockType.code AS stockType#5220]
(498) Filter
Arguments: ((specialStockIndicator#5219 = ) AND (stockType#5220 = 01))
(499) LogicalRelation
Arguments: parquet, [product#5221, plant#5222, orderDateTime#5223, planningStartDateTime#5224], false
(500) RepartitionByExpression
Arguments: [product#5221, plant#5222], 10
(501) Project
Arguments: [product#5221, plant#5222, orderDateTime#5223]
(502) LogicalRelation
Arguments: parquet, [systemId#5225, internalUUID#5226, plant#5227, product#5228, blockedForReplenishmentStartingFrom#5229, productionAspect#5230, salesPlant#5231, listing#5232], false
(503) Repartition
Arguments: 10, true
(504) Project
Arguments: [systemId#5225, internalUUID#5226, plant#5227, product#5228, blockedForReplenishmentStartingFrom#5229, productionAspect#5230, salesPlant#5231, listing#5232, struct(systemId, systemId#5225, internalUUID, internalUUID#5226, plant, plant#5227, product, product#5228, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#5229, productionAspect, productionAspect#5230, salesPlant, salesPlant#5231, listing, listing#5232) AS productPlant#5233]
(505) Project
Arguments: [productPlant#5233]
(506) Join
Arguments: LeftOuter, ((product#5221 <=> productPlant#5233.product.internalRefUUID) AND (plant#5222 <=> productPlant#5233.plant.internalRefUUID))
(507) Project
Arguments: [product#5221, plant#5222, orderDateTime#5223, productPlant#5233]
(508) SubqueryAlias
Arguments: wl
(509) LogicalRelation
Arguments: parquet, [systemId#5234, internalUUID#5235, id#5236, displayId#5237, name#5238, category#5239, companyCode#5240, address#5241, mainDistributionChain#5242, mainPurchasingOrganization#5243, validPurchasingOrganizations#5244, productGroup#5245], false
(510) Repartition
Arguments: 10, true
(511) Project
Arguments: [internalUUID#5235, address#5241.timeZone.code AS timezonecode#5246]
(512) Join
Arguments: LeftOuter, (plant#5222 <=> internalUUID#5235)
(513) Project
Arguments: [product#5221, plant#5222, orderDateTime#5223, productPlant#5233, internalUUID#5235, CASE WHEN isnotnull(timezonecode#5246) THEN timezonecode#5246 ELSE UTC END AS timezonecode#5247]
(514) Project
Arguments: [product#5221, plant#5222, orderDateTime#5223, productPlant#5233, timezonecode#5247]
(515) LogicalRelation
Arguments: parquet, [systemId#5248, internalUUID#5249, id#5250, displayId#5251, name#5252, baseUnitOfMeasure#5253, unitOfMeasures#5254, unitOfMeasureConversions#5255, productionAspect#5256, salesAspect#5257, procurementAspect#5258, productGroup#5259], false
(516) Repartition
Arguments: 10, true
(517) Join
Arguments: LeftOuter, (product#5221 = internalUUID#5249)
(518) Project
Arguments: [product#5221, plant#5222, orderDateTime#5223, productPlant#5233, timezonecode#5247, systemId#5248, internalUUID#5249, id#5250, displayId#5251, name#5252, baseUnitOfMeasure#5253, unitOfMeasures#5254, unitOfMeasureConversions#5255, productionAspect#5256, salesAspect#5257, procurementAspect#5258, productGroup#5259, filter(unitOfMeasureConversions#5255, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#5233.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#5233.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#5253.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5253.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#5260]
(519) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5260.quantityNumerator), true, [quantityNumerator#5261]
(520) Project
Arguments: [product#5221, plant#5222, orderDateTime#5223, productPlant#5233, timezonecode#5247, systemId#5248, internalUUID#5249, id#5250, displayId#5251, name#5252, baseUnitOfMeasure#5253, unitOfMeasures#5254, unitOfMeasureConversions#5255, productionAspect#5256, salesAspect#5257, procurementAspect#5258, productGroup#5259, filteredUnitOfMeasureConversions#5260, quantityNumerator#5261]
(521) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5260.quantityDenominator), true, [quantityDenominator#5262]
(522) Project
Arguments: [product#5221, plant#5222, orderDateTime#5223, productPlant#5233, timezonecode#5247, systemId#5248, internalUUID#5249, id#5250, displayId#5251, name#5252, baseUnitOfMeasure#5253, unitOfMeasures#5254, unitOfMeasureConversions#5255, productionAspect#5256, salesAspect#5257, procurementAspect#5258, productGroup#5259, filteredUnitOfMeasureConversions#5260, quantityNumerator#5261, quantityDenominator#5262]
(523) Project
Arguments: [product#5221, plant#5222, orderDateTime#5223, productPlant#5233, timezonecode#5247, systemId#5248, internalUUID#5249, id#5250, displayId#5251, name#5252, baseUnitOfMeasure#5253, unitOfMeasures#5254, unitOfMeasureConversions#5255, productionAspect#5256, salesAspect#5257, procurementAspect#5258, productGroup#5259, filteredUnitOfMeasureConversions#5260, quantityNumerator#5261, quantityDenominator#5262, (cast(quantityNumerator#5261 as double) / cast(quantityDenominator#5262 as double)) AS outboundUnit#5263]
(524) Project
Arguments: [product#5221, plant#5222, orderDateTime#5223, productPlant#5233, timezonecode#5247, systemId#5248, internalUUID#5249, id#5250, displayId#5251, name#5252, baseUnitOfMeasure#5253, unitOfMeasures#5254, unitOfMeasureConversions#5255, productionAspect#5256, salesAspect#5257, procurementAspect#5258, productGroup#5259, filteredUnitOfMeasureConversions#5260, quantityNumerator#5261, quantityDenominator#5262, CASE WHEN (isnull(outboundUnit#5263) OR (outboundUnit#5263 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#5263 END AS outboundUnit#5264]
(525) Project
Arguments: [product#5221, plant#5222, orderDateTime#5223, productPlant#5233, timezonecode#5247, outboundUnit#5264]
(526) Join
Arguments: Inner, ((plantUuid#5213 = plant#5222) AND (productUuid#5215 = product#5221))
(527) Filter
Arguments: (calculationDateTime#5209 <= orderDateTime#5223)
(528) Project
Arguments: [plantUuid#5213 AS plant#5265, productUuid#5215 AS product#5266, storageLocId#5216, calculationDateTime#5209, quantity#5218]
(529) LogicalRelation
Arguments: parquet, [systemId#5267, internalUUID#5268, product#5269, plant#5270, calculationDateTime#5271, stockQuantities#5272], false
(530) Repartition
Arguments: 10, true
(531) LogicalRelation
Arguments: parquet, [marketUnit#5273, description#5274, articleHierarchy#5275, defaultCurrency#5276, responsibilities#5277, replenishmentTypes#5278, distributionCenters#5279, assignedArticleHierarchyNodes#5280, minOrderQtySetting#5281, minOrderQtySettingInternal#5282, listingCheck#5283, odsSelection#5284, demandProfiles#5285, constraintProfiles#5286, optimizationProfiles#5287, orderGroupSplitProfiles#5288, supplierMinimumProfiles#5289, multipleRestrictionProfiles#5290, preferredUomSource#5291, handlingOfUnfulfilledDemands#5292, negligibleQuantitiesThreshold#5293, eventtype#5294], false
(532) Repartition
Arguments: 10, true
(533) Filter
Arguments: (marketUnit#5273 <=> DIP_1691)
(534) Project
Arguments: [marketUnit#5273, description#5274, articleHierarchy#5275, defaultCurrency#5276, responsibilities#5277, replenishmentTypes#5278, distributionCenters#5279, assignedArticleHierarchyNodes#5280, minOrderQtySetting#5281, minOrderQtySettingInternal#5282, listingCheck#5283, odsSelection#5284, demandProfiles#5285, constraintProfiles#5286, optimizationProfiles#5287, orderGroupSplitProfiles#5288, supplierMinimumProfiles#5289, multipleRestrictionProfiles#5290, preferredUomSource#5291, handlingOfUnfulfilledDemands#5292, negligibleQuantitiesThreshold#5293, eventtype#5294]
(535) Project
Arguments: [distributionCenters#5279]
(536) Generate
Arguments: explode(distributionCenters#5279), false, [distributionCenters#5295]
(537) Project
Arguments: [distributionCenters#5295]
(538) Generate
Arguments: explode(distributionCenters#5295.storageLocations), false, [storageLocations#5296]
(539) Project
Arguments: [distributionCenters#5295.id AS plantId#5297, distributionCenters#5295.internalRefUUID AS plantUuid#5298, storageLocations#5296]
(540) Project
Arguments: [plantId#5297, plantUuid#5298, storageLocations#5296.id AS storageLocId#5299, storageLocations#5296.internalRefUUID AS storageLocUuid#5300]
(541) LogicalRelation
Arguments: parquet, [product#5301, plant#5302, orderDateTime#5303, planningStartDateTime#5304], false
(542) RepartitionByExpression
Arguments: [product#5301, plant#5302], 10
(543) Project
Arguments: [product#5301, plant#5302, orderDateTime#5303]
(544) LogicalRelation
Arguments: parquet, [systemId#5305, internalUUID#5306, plant#5307, product#5308, blockedForReplenishmentStartingFrom#5309, productionAspect#5310, salesPlant#5311, listing#5312], false
(545) Repartition
Arguments: 10, true
(546) Project
Arguments: [systemId#5305, internalUUID#5306, plant#5307, product#5308, blockedForReplenishmentStartingFrom#5309, productionAspect#5310, salesPlant#5311, listing#5312, struct(systemId, systemId#5305, internalUUID, internalUUID#5306, plant, plant#5307, product, product#5308, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#5309, productionAspect, productionAspect#5310, salesPlant, salesPlant#5311, listing, listing#5312) AS productPlant#5313]
(547) Project
Arguments: [productPlant#5313]
(548) Join
Arguments: LeftOuter, ((product#5301 <=> productPlant#5313.product.internalRefUUID) AND (plant#5302 <=> productPlant#5313.plant.internalRefUUID))
(549) Project
Arguments: [product#5301, plant#5302, orderDateTime#5303, productPlant#5313]
(550) SubqueryAlias
Arguments: wl
(551) LogicalRelation
Arguments: parquet, [systemId#5314, internalUUID#5315, id#5316, displayId#5317, name#5318, category#5319, companyCode#5320, address#5321, mainDistributionChain#5322, mainPurchasingOrganization#5323, validPurchasingOrganizations#5324, productGroup#5325], false
(552) Repartition
Arguments: 10, true
(553) Project
Arguments: [internalUUID#5315, address#5321.timeZone.code AS timezonecode#5326]
(554) Join
Arguments: LeftOuter, (plant#5302 <=> internalUUID#5315)
(555) Project
Arguments: [product#5301, plant#5302, orderDateTime#5303, productPlant#5313, internalUUID#5315, CASE WHEN isnotnull(timezonecode#5326) THEN timezonecode#5326 ELSE UTC END AS timezonecode#5327]
(556) Project
Arguments: [product#5301, plant#5302, orderDateTime#5303, productPlant#5313, timezonecode#5327]
(557) LogicalRelation
Arguments: parquet, [systemId#5328, internalUUID#5329, id#5330, displayId#5331, name#5332, baseUnitOfMeasure#5333, unitOfMeasures#5334, unitOfMeasureConversions#5335, productionAspect#5336, salesAspect#5337, procurementAspect#5338, productGroup#5339], false
(558) Repartition
Arguments: 10, true
(559) Join
Arguments: LeftOuter, (product#5301 = internalUUID#5329)
(560) Project
Arguments: [product#5301, plant#5302, orderDateTime#5303, productPlant#5313, timezonecode#5327, systemId#5328, internalUUID#5329, id#5330, displayId#5331, name#5332, baseUnitOfMeasure#5333, unitOfMeasures#5334, unitOfMeasureConversions#5335, productionAspect#5336, salesAspect#5337, procurementAspect#5338, productGroup#5339, filter(unitOfMeasureConversions#5335, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#5313.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#5313.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#5333.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5333.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#5340]
(561) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5340.quantityNumerator), true, [quantityNumerator#5341]
(562) Project
Arguments: [product#5301, plant#5302, orderDateTime#5303, productPlant#5313, timezonecode#5327, systemId#5328, internalUUID#5329, id#5330, displayId#5331, name#5332, baseUnitOfMeasure#5333, unitOfMeasures#5334, unitOfMeasureConversions#5335, productionAspect#5336, salesAspect#5337, procurementAspect#5338, productGroup#5339, filteredUnitOfMeasureConversions#5340, quantityNumerator#5341]
(563) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5340.quantityDenominator), true, [quantityDenominator#5342]
(564) Project
Arguments: [product#5301, plant#5302, orderDateTime#5303, productPlant#5313, timezonecode#5327, systemId#5328, internalUUID#5329, id#5330, displayId#5331, name#5332, baseUnitOfMeasure#5333, unitOfMeasures#5334, unitOfMeasureConversions#5335, productionAspect#5336, salesAspect#5337, procurementAspect#5338, productGroup#5339, filteredUnitOfMeasureConversions#5340, quantityNumerator#5341, quantityDenominator#5342]
(565) Project
Arguments: [product#5301, plant#5302, orderDateTime#5303, productPlant#5313, timezonecode#5327, systemId#5328, internalUUID#5329, id#5330, displayId#5331, name#5332, baseUnitOfMeasure#5333, unitOfMeasures#5334, unitOfMeasureConversions#5335, productionAspect#5336, salesAspect#5337, procurementAspect#5338, productGroup#5339, filteredUnitOfMeasureConversions#5340, quantityNumerator#5341, quantityDenominator#5342, (cast(quantityNumerator#5341 as double) / cast(quantityDenominator#5342 as double)) AS outboundUnit#5343]
(566) Project
Arguments: [product#5301, plant#5302, orderDateTime#5303, productPlant#5313, timezonecode#5327, systemId#5328, internalUUID#5329, id#5330, displayId#5331, name#5332, baseUnitOfMeasure#5333, unitOfMeasures#5334, unitOfMeasureConversions#5335, productionAspect#5336, salesAspect#5337, procurementAspect#5338, productGroup#5339, filteredUnitOfMeasureConversions#5340, quantityNumerator#5341, quantityDenominator#5342, CASE WHEN (isnull(outboundUnit#5343) OR (outboundUnit#5343 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#5343 END AS outboundUnit#5344]
(567) Project
Arguments: [product#5301, plant#5302, orderDateTime#5303, productPlant#5313, timezonecode#5327, outboundUnit#5344]
(568) Project
Arguments: [plant#5302]
(569) Deduplicate
Arguments: [plant#5302]
(570) Join
Arguments: Inner, (plantUuid#5298 = plant#5302)
(571) Project
Arguments: [plantId#5297, plantUuid#5298, storageLocId#5299, storageLocUuid#5300]
(572) Join
Arguments: Inner, (plant#5270.internalRefUUID <=> plantUuid#5298)
(573) Generate
Arguments: explode(filter(stockQuantities#5272, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#5300) AND (lambda x#1207.storageLocation.Id = storageLocId#5299)), lambda x#1207, false))), false, [stockQuantity#5345]
(574) Project
Arguments: [systemId#5267, internalUUID#5268, product#5269, plant#5270, calculationDateTime#5271, stockQuantities#5272, plantId#5297, plantUuid#5298, storageLocId#5299, storageLocUuid#5300, stockQuantity#5345]
(575) Aggregate
Arguments: [plantUuid#5298, internalUUID#5268, plant#5270, product#5269, systemId#5267], [plantUuid#5298, internalUUID#5268, plant#5270, product#5269, systemId#5267, first(calculationDateTime#5271, false) AS calculationDateTime#5346, collect_list(stockQuantity#5345, 0, 0) AS stockQuantities#5347]
(576) Project
Arguments: [systemId#5267, internalUUID#5268, product#5269, plant#5270, calculationDateTime#5346, stockQuantities#5347]
(577) Generate
Arguments: explode(stockQuantities#5347), false, [stockQuantity#5348]
(578) Project
Arguments: [systemId#5267, internalUUID#5268, product#5269, plant#5270, calculationDateTime#5346, stockQuantities#5347, stockQuantity#5348]
(579) Project
Arguments: [plant#5270.id AS plant#5349, plant#5270.internalRefUUID AS plantUuid#5350, product#5269.id AS product#5351, product#5269.internalRefUUID AS productUuid#5352, calculationDateTime#5346, stockQuantity#5348.storagelocation.id AS storageLocId#5353, stockQuantity#5348.storagelocation.internalRefUUID AS storageLocUuid#5354, stockQuantity#5348.quantity.measure AS quantity#5355, stockQuantity#5348.specialStockIndicator.code AS specialStockIndicator#5356, stockQuantity#5348.stockType.code AS stockType#5357]
(580) Filter
Arguments: ((specialStockIndicator#5356 = ) AND (stockType#5357 = 01))
(581) LogicalRelation
Arguments: parquet, [product#5358, plant#5359, orderDateTime#5360, planningStartDateTime#5361], false
(582) RepartitionByExpression
Arguments: [product#5358, plant#5359], 10
(583) Project
Arguments: [product#5358, plant#5359, orderDateTime#5360]
(584) LogicalRelation
Arguments: parquet, [systemId#5362, internalUUID#5363, plant#5364, product#5365, blockedForReplenishmentStartingFrom#5366, productionAspect#5367, salesPlant#5368, listing#5369], false
(585) Repartition
Arguments: 10, true
(586) Project
Arguments: [systemId#5362, internalUUID#5363, plant#5364, product#5365, blockedForReplenishmentStartingFrom#5366, productionAspect#5367, salesPlant#5368, listing#5369, struct(systemId, systemId#5362, internalUUID, internalUUID#5363, plant, plant#5364, product, product#5365, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#5366, productionAspect, productionAspect#5367, salesPlant, salesPlant#5368, listing, listing#5369) AS productPlant#5370]
(587) Project
Arguments: [productPlant#5370]
(588) Join
Arguments: LeftOuter, ((product#5358 <=> productPlant#5370.product.internalRefUUID) AND (plant#5359 <=> productPlant#5370.plant.internalRefUUID))
(589) Project
Arguments: [product#5358, plant#5359, orderDateTime#5360, productPlant#5370]
(590) SubqueryAlias
Arguments: wl
(591) LogicalRelation
Arguments: parquet, [systemId#5371, internalUUID#5372, id#5373, displayId#5374, name#5375, category#5376, companyCode#5377, address#5378, mainDistributionChain#5379, mainPurchasingOrganization#5380, validPurchasingOrganizations#5381, productGroup#5382], false
(592) Repartition
Arguments: 10, true
(593) Project
Arguments: [internalUUID#5372, address#5378.timeZone.code AS timezonecode#5383]
(594) Join
Arguments: LeftOuter, (plant#5359 <=> internalUUID#5372)
(595) Project
Arguments: [product#5358, plant#5359, orderDateTime#5360, productPlant#5370, internalUUID#5372, CASE WHEN isnotnull(timezonecode#5383) THEN timezonecode#5383 ELSE UTC END AS timezonecode#5384]
(596) Project
Arguments: [product#5358, plant#5359, orderDateTime#5360, productPlant#5370, timezonecode#5384]
(597) LogicalRelation
Arguments: parquet, [systemId#5385, internalUUID#5386, id#5387, displayId#5388, name#5389, baseUnitOfMeasure#5390, unitOfMeasures#5391, unitOfMeasureConversions#5392, productionAspect#5393, salesAspect#5394, procurementAspect#5395, productGroup#5396], false
(598) Repartition
Arguments: 10, true
(599) Join
Arguments: LeftOuter, (product#5358 = internalUUID#5386)
(600) Project
Arguments: [product#5358, plant#5359, orderDateTime#5360, productPlant#5370, timezonecode#5384, systemId#5385, internalUUID#5386, id#5387, displayId#5388, name#5389, baseUnitOfMeasure#5390, unitOfMeasures#5391, unitOfMeasureConversions#5392, productionAspect#5393, salesAspect#5394, procurementAspect#5395, productGroup#5396, filter(unitOfMeasureConversions#5392, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#5370.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#5370.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#5390.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5390.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#5397]
(601) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5397.quantityNumerator), true, [quantityNumerator#5398]
(602) Project
Arguments: [product#5358, plant#5359, orderDateTime#5360, productPlant#5370, timezonecode#5384, systemId#5385, internalUUID#5386, id#5387, displayId#5388, name#5389, baseUnitOfMeasure#5390, unitOfMeasures#5391, unitOfMeasureConversions#5392, productionAspect#5393, salesAspect#5394, procurementAspect#5395, productGroup#5396, filteredUnitOfMeasureConversions#5397, quantityNumerator#5398]
(603) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5397.quantityDenominator), true, [quantityDenominator#5399]
(604) Project
Arguments: [product#5358, plant#5359, orderDateTime#5360, productPlant#5370, timezonecode#5384, systemId#5385, internalUUID#5386, id#5387, displayId#5388, name#5389, baseUnitOfMeasure#5390, unitOfMeasures#5391, unitOfMeasureConversions#5392, productionAspect#5393, salesAspect#5394, procurementAspect#5395, productGroup#5396, filteredUnitOfMeasureConversions#5397, quantityNumerator#5398, quantityDenominator#5399]
(605) Project
Arguments: [product#5358, plant#5359, orderDateTime#5360, productPlant#5370, timezonecode#5384, systemId#5385, internalUUID#5386, id#5387, displayId#5388, name#5389, baseUnitOfMeasure#5390, unitOfMeasures#5391, unitOfMeasureConversions#5392, productionAspect#5393, salesAspect#5394, procurementAspect#5395, productGroup#5396, filteredUnitOfMeasureConversions#5397, quantityNumerator#5398, quantityDenominator#5399, (cast(quantityNumerator#5398 as double) / cast(quantityDenominator#5399 as double)) AS outboundUnit#5400]
(606) Project
Arguments: [product#5358, plant#5359, orderDateTime#5360, productPlant#5370, timezonecode#5384, systemId#5385, internalUUID#5386, id#5387, displayId#5388, name#5389, baseUnitOfMeasure#5390, unitOfMeasures#5391, unitOfMeasureConversions#5392, productionAspect#5393, salesAspect#5394, procurementAspect#5395, productGroup#5396, filteredUnitOfMeasureConversions#5397, quantityNumerator#5398, quantityDenominator#5399, CASE WHEN (isnull(outboundUnit#5400) OR (outboundUnit#5400 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#5400 END AS outboundUnit#5401]
(607) Project
Arguments: [product#5358, plant#5359, orderDateTime#5360, productPlant#5370, timezonecode#5384, outboundUnit#5401]
(608) Join
Arguments: Inner, ((plantUuid#5350 = plant#5359) AND (productUuid#5352 = product#5358))
(609) Filter
Arguments: (calculationDateTime#5346 <= orderDateTime#5360)
(610) Project
Arguments: [plantUuid#5350 AS plant#5402, productUuid#5352 AS product#5403, storageLocId#5353, calculationDateTime#5346, quantity#5355]
(611) Aggregate
Arguments: [plant#5402, product#5403, storageLocId#5353], [plant#5402, product#5403, storageLocId#5353, max(calculationDateTime#5346) AS max_calc_datetime#5404]
(612) Join
Arguments: Inner, ((((plant#5265 <=> plant#5402) AND (product#5266 <=> product#5403)) AND (storageLocId#5216 <=> storageLocId#5353)) AND (calculationDateTime#5209 <=> max_calc_datetime#5404))
(613) Project
Arguments: [plant#5265, product#5266, storageLocId#5216, calculationDateTime#5209, quantity#5218]
(614) Aggregate
Arguments: [product#5266, plant#5265], [product#5266, plant#5265, sum(quantity#5218) AS quantitySum#5405, min(calculationDateTime#5209) AS minCalculationDateTime#5406]
(615) Project
Arguments: [product#5266, plant#5265, quantitySum#5405, minCalculationDateTime#5406, round(quantitySum#5405, 0) AS roundedQuantitySum#5407]
(616) Join
Arguments: LeftOuter, ((plant#5087 = plant#5265) AND (product#5086 = product#5266))
(617) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, outboundUnit#5129, roundedQuantitySum#5407, minCalculationDateTime#5406]
(618) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, outboundUnit#5129, roundedQuantitySum#5407, minCalculationDateTime#5406, CASE WHEN isnotnull(minCalculationDateTime#5406) THEN minCalculationDateTime#5406 ELSE orderDateTime#5088 END AS stockDatetime#5408]
(619) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, outboundUnit#5129, roundedQuantitySum#5407, minCalculationDateTime#5406, stockDatetime#5408, CASE WHEN isnotnull(roundedQuantitySum#5407) THEN array(roundedQuantitySum#5407) ELSE array(0.0) END AS stockBatchQuantities#5409]
(620) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, outboundUnit#5129, roundedQuantitySum#5407, minCalculationDateTime#5406, stockDatetime#5408, stockBatchQuantities#5409, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#5410]
(621) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, outboundUnit#5129, roundedQuantitySum#5407, stockDatetime#5408, stockBatchQuantities#5409, stockBatchShelfLifeEndDatetimes#5410]
(622) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, outboundUnit#5129, stockDatetime#5408, stockBatchQuantities#5409, stockBatchShelfLifeEndDatetimes#5410]
(623) LogicalRelation
Arguments: parquet, [product#5411, plant#5412, orderDateTime#5413, planningStartDateTime#5414], false
(624) RepartitionByExpression
Arguments: [product#5411, plant#5412], 10
(625) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413]
(626) LogicalRelation
Arguments: parquet, [systemId#5415, internalUUID#5416, plant#5417, product#5418, blockedForReplenishmentStartingFrom#5419, productionAspect#5420, salesPlant#5421, listing#5422], false
(627) Repartition
Arguments: 10, true
(628) Project
Arguments: [systemId#5415, internalUUID#5416, plant#5417, product#5418, blockedForReplenishmentStartingFrom#5419, productionAspect#5420, salesPlant#5421, listing#5422, struct(systemId, systemId#5415, internalUUID, internalUUID#5416, plant, plant#5417, product, product#5418, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#5419, productionAspect, productionAspect#5420, salesPlant, salesPlant#5421, listing, listing#5422) AS productPlant#5423]
(629) Project
Arguments: [productPlant#5423]
(630) Join
Arguments: LeftOuter, ((product#5411 <=> productPlant#5423.product.internalRefUUID) AND (plant#5412 <=> productPlant#5423.plant.internalRefUUID))
(631) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423]
(632) SubqueryAlias
Arguments: wl
(633) LogicalRelation
Arguments: parquet, [systemId#5424, internalUUID#5425, id#5426, displayId#5427, name#5428, category#5429, companyCode#5430, address#5431, mainDistributionChain#5432, mainPurchasingOrganization#5433, validPurchasingOrganizations#5434, productGroup#5435], false
(634) Repartition
Arguments: 10, true
(635) Project
Arguments: [internalUUID#5425, address#5431.timeZone.code AS timezonecode#5436]
(636) Join
Arguments: LeftOuter, (plant#5412 <=> internalUUID#5425)
(637) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, internalUUID#5425, CASE WHEN isnotnull(timezonecode#5436) THEN timezonecode#5436 ELSE UTC END AS timezonecode#5437]
(638) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437]
(639) LogicalRelation
Arguments: parquet, [systemId#5438, internalUUID#5439, id#5440, displayId#5441, name#5442, baseUnitOfMeasure#5443, unitOfMeasures#5444, unitOfMeasureConversions#5445, productionAspect#5446, salesAspect#5447, procurementAspect#5448, productGroup#5449], false
(640) Repartition
Arguments: 10, true
(641) Join
Arguments: LeftOuter, (product#5411 = internalUUID#5439)
(642) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, systemId#5438, internalUUID#5439, id#5440, displayId#5441, name#5442, baseUnitOfMeasure#5443, unitOfMeasures#5444, unitOfMeasureConversions#5445, productionAspect#5446, salesAspect#5447, procurementAspect#5448, productGroup#5449, filter(unitOfMeasureConversions#5445, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#5423.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#5423.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#5443.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5443.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#5450]
(643) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5450.quantityNumerator), true, [quantityNumerator#5451]
(644) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, systemId#5438, internalUUID#5439, id#5440, displayId#5441, name#5442, baseUnitOfMeasure#5443, unitOfMeasures#5444, unitOfMeasureConversions#5445, productionAspect#5446, salesAspect#5447, procurementAspect#5448, productGroup#5449, filteredUnitOfMeasureConversions#5450, quantityNumerator#5451]
(645) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5450.quantityDenominator), true, [quantityDenominator#5452]
(646) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, systemId#5438, internalUUID#5439, id#5440, displayId#5441, name#5442, baseUnitOfMeasure#5443, unitOfMeasures#5444, unitOfMeasureConversions#5445, productionAspect#5446, salesAspect#5447, procurementAspect#5448, productGroup#5449, filteredUnitOfMeasureConversions#5450, quantityNumerator#5451, quantityDenominator#5452]
(647) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, systemId#5438, internalUUID#5439, id#5440, displayId#5441, name#5442, baseUnitOfMeasure#5443, unitOfMeasures#5444, unitOfMeasureConversions#5445, productionAspect#5446, salesAspect#5447, procurementAspect#5448, productGroup#5449, filteredUnitOfMeasureConversions#5450, quantityNumerator#5451, quantityDenominator#5452, (cast(quantityNumerator#5451 as double) / cast(quantityDenominator#5452 as double)) AS outboundUnit#5453]
(648) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, systemId#5438, internalUUID#5439, id#5440, displayId#5441, name#5442, baseUnitOfMeasure#5443, unitOfMeasures#5444, unitOfMeasureConversions#5445, productionAspect#5446, salesAspect#5447, procurementAspect#5448, productGroup#5449, filteredUnitOfMeasureConversions#5450, quantityNumerator#5451, quantityDenominator#5452, CASE WHEN (isnull(outboundUnit#5453) OR (outboundUnit#5453 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#5453 END AS outboundUnit#5454]
(649) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, outboundUnit#5454]
(650) LogicalRelation
Arguments: parquet, [systemId#5455, internalUUID#5456, product#5457, plant#5458, calculationDateTime#5459, stockQuantities#5460], false
(651) Repartition
Arguments: 10, true
(652) LogicalRelation
Arguments: parquet, [marketUnit#5461, description#5462, articleHierarchy#5463, defaultCurrency#5464, responsibilities#5465, replenishmentTypes#5466, distributionCenters#5467, assignedArticleHierarchyNodes#5468, minOrderQtySetting#5469, minOrderQtySettingInternal#5470, listingCheck#5471, odsSelection#5472, demandProfiles#5473, constraintProfiles#5474, optimizationProfiles#5475, orderGroupSplitProfiles#5476, supplierMinimumProfiles#5477, multipleRestrictionProfiles#5478, preferredUomSource#5479, handlingOfUnfulfilledDemands#5480, negligibleQuantitiesThreshold#5481, eventtype#5482], false
(653) Repartition
Arguments: 10, true
(654) Filter
Arguments: (marketUnit#5461 <=> DIP_1691)
(655) Project
Arguments: [marketUnit#5461, description#5462, articleHierarchy#5463, defaultCurrency#5464, responsibilities#5465, replenishmentTypes#5466, distributionCenters#5467, assignedArticleHierarchyNodes#5468, minOrderQtySetting#5469, minOrderQtySettingInternal#5470, listingCheck#5471, odsSelection#5472, demandProfiles#5473, constraintProfiles#5474, optimizationProfiles#5475, orderGroupSplitProfiles#5476, supplierMinimumProfiles#5477, multipleRestrictionProfiles#5478, preferredUomSource#5479, handlingOfUnfulfilledDemands#5480, negligibleQuantitiesThreshold#5481, eventtype#5482]
(656) Project
Arguments: [distributionCenters#5467]
(657) Generate
Arguments: explode(distributionCenters#5467), false, [distributionCenters#5483]
(658) Project
Arguments: [distributionCenters#5483]
(659) Generate
Arguments: explode(distributionCenters#5483.storageLocations), false, [storageLocations#5484]
(660) Project
Arguments: [distributionCenters#5483.id AS plantId#5485, distributionCenters#5483.internalRefUUID AS plantUuid#5486, storageLocations#5484]
(661) Project
Arguments: [plantId#5485, plantUuid#5486, storageLocations#5484.id AS storageLocId#5487, storageLocations#5484.internalRefUUID AS storageLocUuid#5488]
(662) LogicalRelation
Arguments: parquet, [product#5489, plant#5490, orderDateTime#5491, planningStartDateTime#5492], false
(663) RepartitionByExpression
Arguments: [product#5489, plant#5490], 10
(664) Project
Arguments: [product#5489, plant#5490, orderDateTime#5491]
(665) LogicalRelation
Arguments: parquet, [systemId#5493, internalUUID#5494, plant#5495, product#5496, blockedForReplenishmentStartingFrom#5497, productionAspect#5498, salesPlant#5499, listing#5500], false
(666) Repartition
Arguments: 10, true
(667) Project
Arguments: [systemId#5493, internalUUID#5494, plant#5495, product#5496, blockedForReplenishmentStartingFrom#5497, productionAspect#5498, salesPlant#5499, listing#5500, struct(systemId, systemId#5493, internalUUID, internalUUID#5494, plant, plant#5495, product, product#5496, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#5497, productionAspect, productionAspect#5498, salesPlant, salesPlant#5499, listing, listing#5500) AS productPlant#5501]
(668) Project
Arguments: [productPlant#5501]
(669) Join
Arguments: LeftOuter, ((product#5489 <=> productPlant#5501.product.internalRefUUID) AND (plant#5490 <=> productPlant#5501.plant.internalRefUUID))
(670) Project
Arguments: [product#5489, plant#5490, orderDateTime#5491, productPlant#5501]
(671) SubqueryAlias
Arguments: wl
(672) LogicalRelation
Arguments: parquet, [systemId#5502, internalUUID#5503, id#5504, displayId#5505, name#5506, category#5507, companyCode#5508, address#5509, mainDistributionChain#5510, mainPurchasingOrganization#5511, validPurchasingOrganizations#5512, productGroup#5513], false
(673) Repartition
Arguments: 10, true
(674) Project
Arguments: [internalUUID#5503, address#5509.timeZone.code AS timezonecode#5514]
(675) Join
Arguments: LeftOuter, (plant#5490 <=> internalUUID#5503)
(676) Project
Arguments: [product#5489, plant#5490, orderDateTime#5491, productPlant#5501, internalUUID#5503, CASE WHEN isnotnull(timezonecode#5514) THEN timezonecode#5514 ELSE UTC END AS timezonecode#5515]
(677) Project
Arguments: [product#5489, plant#5490, orderDateTime#5491, productPlant#5501, timezonecode#5515]
(678) LogicalRelation
Arguments: parquet, [systemId#5516, internalUUID#5517, id#5518, displayId#5519, name#5520, baseUnitOfMeasure#5521, unitOfMeasures#5522, unitOfMeasureConversions#5523, productionAspect#5524, salesAspect#5525, procurementAspect#5526, productGroup#5527], false
(679) Repartition
Arguments: 10, true
(680) Join
Arguments: LeftOuter, (product#5489 = internalUUID#5517)
(681) Project
Arguments: [product#5489, plant#5490, orderDateTime#5491, productPlant#5501, timezonecode#5515, systemId#5516, internalUUID#5517, id#5518, displayId#5519, name#5520, baseUnitOfMeasure#5521, unitOfMeasures#5522, unitOfMeasureConversions#5523, productionAspect#5524, salesAspect#5525, procurementAspect#5526, productGroup#5527, filter(unitOfMeasureConversions#5523, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#5501.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#5501.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#5521.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5521.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#5528]
(682) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5528.quantityNumerator), true, [quantityNumerator#5529]
(683) Project
Arguments: [product#5489, plant#5490, orderDateTime#5491, productPlant#5501, timezonecode#5515, systemId#5516, internalUUID#5517, id#5518, displayId#5519, name#5520, baseUnitOfMeasure#5521, unitOfMeasures#5522, unitOfMeasureConversions#5523, productionAspect#5524, salesAspect#5525, procurementAspect#5526, productGroup#5527, filteredUnitOfMeasureConversions#5528, quantityNumerator#5529]
(684) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5528.quantityDenominator), true, [quantityDenominator#5530]
(685) Project
Arguments: [product#5489, plant#5490, orderDateTime#5491, productPlant#5501, timezonecode#5515, systemId#5516, internalUUID#5517, id#5518, displayId#5519, name#5520, baseUnitOfMeasure#5521, unitOfMeasures#5522, unitOfMeasureConversions#5523, productionAspect#5524, salesAspect#5525, procurementAspect#5526, productGroup#5527, filteredUnitOfMeasureConversions#5528, quantityNumerator#5529, quantityDenominator#5530]
(686) Project
Arguments: [product#5489, plant#5490, orderDateTime#5491, productPlant#5501, timezonecode#5515, systemId#5516, internalUUID#5517, id#5518, displayId#5519, name#5520, baseUnitOfMeasure#5521, unitOfMeasures#5522, unitOfMeasureConversions#5523, productionAspect#5524, salesAspect#5525, procurementAspect#5526, productGroup#5527, filteredUnitOfMeasureConversions#5528, quantityNumerator#5529, quantityDenominator#5530, (cast(quantityNumerator#5529 as double) / cast(quantityDenominator#5530 as double)) AS outboundUnit#5531]
(687) Project
Arguments: [product#5489, plant#5490, orderDateTime#5491, productPlant#5501, timezonecode#5515, systemId#5516, internalUUID#5517, id#5518, displayId#5519, name#5520, baseUnitOfMeasure#5521, unitOfMeasures#5522, unitOfMeasureConversions#5523, productionAspect#5524, salesAspect#5525, procurementAspect#5526, productGroup#5527, filteredUnitOfMeasureConversions#5528, quantityNumerator#5529, quantityDenominator#5530, CASE WHEN (isnull(outboundUnit#5531) OR (outboundUnit#5531 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#5531 END AS outboundUnit#5532]
(688) Project
Arguments: [product#5489, plant#5490, orderDateTime#5491, productPlant#5501, timezonecode#5515, outboundUnit#5532]
(689) Project
Arguments: [plant#5490]
(690) Deduplicate
Arguments: [plant#5490]
(691) Join
Arguments: Inner, (plantUuid#5486 = plant#5490)
(692) Project
Arguments: [plantId#5485, plantUuid#5486, storageLocId#5487, storageLocUuid#5488]
(693) Join
Arguments: Inner, (plant#5458.internalRefUUID <=> plantUuid#5486)
(694) Generate
Arguments: explode(filter(stockQuantities#5460, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#5488) AND (lambda x#1207.storageLocation.Id = storageLocId#5487)), lambda x#1207, false))), false, [stockQuantity#5533]
(695) Project
Arguments: [systemId#5455, internalUUID#5456, product#5457, plant#5458, calculationDateTime#5459, stockQuantities#5460, plantId#5485, plantUuid#5486, storageLocId#5487, storageLocUuid#5488, stockQuantity#5533]
(696) Aggregate
Arguments: [plantUuid#5486, internalUUID#5456, plant#5458, product#5457, systemId#5455], [plantUuid#5486, internalUUID#5456, plant#5458, product#5457, systemId#5455, first(calculationDateTime#5459, false) AS calculationDateTime#5534, collect_list(stockQuantity#5533, 0, 0) AS stockQuantities#5535]
(697) Project
Arguments: [systemId#5455, internalUUID#5456, product#5457, plant#5458, calculationDateTime#5534, stockQuantities#5535]
(698) Generate
Arguments: explode(stockQuantities#5535), false, [stockQuantity#5536]
(699) Project
Arguments: [systemId#5455, internalUUID#5456, product#5457, plant#5458, calculationDateTime#5534, stockQuantities#5535, stockQuantity#5536]
(700) Project
Arguments: [plant#5458.id AS plant#5537, plant#5458.internalRefUUID AS plantUuid#5538, product#5457.id AS product#5539, product#5457.internalRefUUID AS productUuid#5540, calculationDateTime#5534, stockQuantity#5536.storagelocation.id AS storageLocId#5541, stockQuantity#5536.storagelocation.internalRefUUID AS storageLocUuid#5542, stockQuantity#5536.quantity.measure AS quantity#5543, stockQuantity#5536.specialStockIndicator.code AS specialStockIndicator#5544, stockQuantity#5536.stockType.code AS stockType#5545]
(701) Filter
Arguments: ((specialStockIndicator#5544 = ) AND (stockType#5545 = 01))
(702) LogicalRelation
Arguments: parquet, [product#5546, plant#5547, orderDateTime#5548, planningStartDateTime#5549], false
(703) RepartitionByExpression
Arguments: [product#5546, plant#5547], 10
(704) Project
Arguments: [product#5546, plant#5547, orderDateTime#5548]
(705) LogicalRelation
Arguments: parquet, [systemId#5550, internalUUID#5551, plant#5552, product#5553, blockedForReplenishmentStartingFrom#5554, productionAspect#5555, salesPlant#5556, listing#5557], false
(706) Repartition
Arguments: 10, true
(707) Project
Arguments: [systemId#5550, internalUUID#5551, plant#5552, product#5553, blockedForReplenishmentStartingFrom#5554, productionAspect#5555, salesPlant#5556, listing#5557, struct(systemId, systemId#5550, internalUUID, internalUUID#5551, plant, plant#5552, product, product#5553, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#5554, productionAspect, productionAspect#5555, salesPlant, salesPlant#5556, listing, listing#5557) AS productPlant#5558]
(708) Project
Arguments: [productPlant#5558]
(709) Join
Arguments: LeftOuter, ((product#5546 <=> productPlant#5558.product.internalRefUUID) AND (plant#5547 <=> productPlant#5558.plant.internalRefUUID))
(710) Project
Arguments: [product#5546, plant#5547, orderDateTime#5548, productPlant#5558]
(711) SubqueryAlias
Arguments: wl
(712) LogicalRelation
Arguments: parquet, [systemId#5559, internalUUID#5560, id#5561, displayId#5562, name#5563, category#5564, companyCode#5565, address#5566, mainDistributionChain#5567, mainPurchasingOrganization#5568, validPurchasingOrganizations#5569, productGroup#5570], false
(713) Repartition
Arguments: 10, true
(714) Project
Arguments: [internalUUID#5560, address#5566.timeZone.code AS timezonecode#5571]
(715) Join
Arguments: LeftOuter, (plant#5547 <=> internalUUID#5560)
(716) Project
Arguments: [product#5546, plant#5547, orderDateTime#5548, productPlant#5558, internalUUID#5560, CASE WHEN isnotnull(timezonecode#5571) THEN timezonecode#5571 ELSE UTC END AS timezonecode#5572]
(717) Project
Arguments: [product#5546, plant#5547, orderDateTime#5548, productPlant#5558, timezonecode#5572]
(718) LogicalRelation
Arguments: parquet, [systemId#5573, internalUUID#5574, id#5575, displayId#5576, name#5577, baseUnitOfMeasure#5578, unitOfMeasures#5579, unitOfMeasureConversions#5580, productionAspect#5581, salesAspect#5582, procurementAspect#5583, productGroup#5584], false
(719) Repartition
Arguments: 10, true
(720) Join
Arguments: LeftOuter, (product#5546 = internalUUID#5574)
(721) Project
Arguments: [product#5546, plant#5547, orderDateTime#5548, productPlant#5558, timezonecode#5572, systemId#5573, internalUUID#5574, id#5575, displayId#5576, name#5577, baseUnitOfMeasure#5578, unitOfMeasures#5579, unitOfMeasureConversions#5580, productionAspect#5581, salesAspect#5582, procurementAspect#5583, productGroup#5584, filter(unitOfMeasureConversions#5580, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#5558.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#5558.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#5578.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5578.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#5585]
(722) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5585.quantityNumerator), true, [quantityNumerator#5586]
(723) Project
Arguments: [product#5546, plant#5547, orderDateTime#5548, productPlant#5558, timezonecode#5572, systemId#5573, internalUUID#5574, id#5575, displayId#5576, name#5577, baseUnitOfMeasure#5578, unitOfMeasures#5579, unitOfMeasureConversions#5580, productionAspect#5581, salesAspect#5582, procurementAspect#5583, productGroup#5584, filteredUnitOfMeasureConversions#5585, quantityNumerator#5586]
(724) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5585.quantityDenominator), true, [quantityDenominator#5587]
(725) Project
Arguments: [product#5546, plant#5547, orderDateTime#5548, productPlant#5558, timezonecode#5572, systemId#5573, internalUUID#5574, id#5575, displayId#5576, name#5577, baseUnitOfMeasure#5578, unitOfMeasures#5579, unitOfMeasureConversions#5580, productionAspect#5581, salesAspect#5582, procurementAspect#5583, productGroup#5584, filteredUnitOfMeasureConversions#5585, quantityNumerator#5586, quantityDenominator#5587]
(726) Project
Arguments: [product#5546, plant#5547, orderDateTime#5548, productPlant#5558, timezonecode#5572, systemId#5573, internalUUID#5574, id#5575, displayId#5576, name#5577, baseUnitOfMeasure#5578, unitOfMeasures#5579, unitOfMeasureConversions#5580, productionAspect#5581, salesAspect#5582, procurementAspect#5583, productGroup#5584, filteredUnitOfMeasureConversions#5585, quantityNumerator#5586, quantityDenominator#5587, (cast(quantityNumerator#5586 as double) / cast(quantityDenominator#5587 as double)) AS outboundUnit#5588]
(727) Project
Arguments: [product#5546, plant#5547, orderDateTime#5548, productPlant#5558, timezonecode#5572, systemId#5573, internalUUID#5574, id#5575, displayId#5576, name#5577, baseUnitOfMeasure#5578, unitOfMeasures#5579, unitOfMeasureConversions#5580, productionAspect#5581, salesAspect#5582, procurementAspect#5583, productGroup#5584, filteredUnitOfMeasureConversions#5585, quantityNumerator#5586, quantityDenominator#5587, CASE WHEN (isnull(outboundUnit#5588) OR (outboundUnit#5588 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#5588 END AS outboundUnit#5589]
(728) Project
Arguments: [product#5546, plant#5547, orderDateTime#5548, productPlant#5558, timezonecode#5572, outboundUnit#5589]
(729) Join
Arguments: Inner, ((plantUuid#5538 = plant#5547) AND (productUuid#5540 = product#5546))
(730) Filter
Arguments: (calculationDateTime#5534 <= orderDateTime#5548)
(731) Project
Arguments: [plantUuid#5538 AS plant#5590, productUuid#5540 AS product#5591, storageLocId#5541, calculationDateTime#5534, quantity#5543]
(732) LogicalRelation
Arguments: parquet, [systemId#5592, internalUUID#5593, product#5594, plant#5595, calculationDateTime#5596, stockQuantities#5597], false
(733) Repartition
Arguments: 10, true
(734) LogicalRelation
Arguments: parquet, [marketUnit#5598, description#5599, articleHierarchy#5600, defaultCurrency#5601, responsibilities#5602, replenishmentTypes#5603, distributionCenters#5604, assignedArticleHierarchyNodes#5605, minOrderQtySetting#5606, minOrderQtySettingInternal#5607, listingCheck#5608, odsSelection#5609, demandProfiles#5610, constraintProfiles#5611, optimizationProfiles#5612, orderGroupSplitProfiles#5613, supplierMinimumProfiles#5614, multipleRestrictionProfiles#5615, preferredUomSource#5616, handlingOfUnfulfilledDemands#5617, negligibleQuantitiesThreshold#5618, eventtype#5619], false
(735) Repartition
Arguments: 10, true
(736) Filter
Arguments: (marketUnit#5598 <=> DIP_1691)
(737) Project
Arguments: [marketUnit#5598, description#5599, articleHierarchy#5600, defaultCurrency#5601, responsibilities#5602, replenishmentTypes#5603, distributionCenters#5604, assignedArticleHierarchyNodes#5605, minOrderQtySetting#5606, minOrderQtySettingInternal#5607, listingCheck#5608, odsSelection#5609, demandProfiles#5610, constraintProfiles#5611, optimizationProfiles#5612, orderGroupSplitProfiles#5613, supplierMinimumProfiles#5614, multipleRestrictionProfiles#5615, preferredUomSource#5616, handlingOfUnfulfilledDemands#5617, negligibleQuantitiesThreshold#5618, eventtype#5619]
(738) Project
Arguments: [distributionCenters#5604]
(739) Generate
Arguments: explode(distributionCenters#5604), false, [distributionCenters#5620]
(740) Project
Arguments: [distributionCenters#5620]
(741) Generate
Arguments: explode(distributionCenters#5620.storageLocations), false, [storageLocations#5621]
(742) Project
Arguments: [distributionCenters#5620.id AS plantId#5622, distributionCenters#5620.internalRefUUID AS plantUuid#5623, storageLocations#5621]
(743) Project
Arguments: [plantId#5622, plantUuid#5623, storageLocations#5621.id AS storageLocId#5624, storageLocations#5621.internalRefUUID AS storageLocUuid#5625]
(744) LogicalRelation
Arguments: parquet, [product#5626, plant#5627, orderDateTime#5628, planningStartDateTime#5629], false
(745) RepartitionByExpression
Arguments: [product#5626, plant#5627], 10
(746) Project
Arguments: [product#5626, plant#5627, orderDateTime#5628]
(747) LogicalRelation
Arguments: parquet, [systemId#5630, internalUUID#5631, plant#5632, product#5633, blockedForReplenishmentStartingFrom#5634, productionAspect#5635, salesPlant#5636, listing#5637], false
(748) Repartition
Arguments: 10, true
(749) Project
Arguments: [systemId#5630, internalUUID#5631, plant#5632, product#5633, blockedForReplenishmentStartingFrom#5634, productionAspect#5635, salesPlant#5636, listing#5637, struct(systemId, systemId#5630, internalUUID, internalUUID#5631, plant, plant#5632, product, product#5633, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#5634, productionAspect, productionAspect#5635, salesPlant, salesPlant#5636, listing, listing#5637) AS productPlant#5638]
(750) Project
Arguments: [productPlant#5638]
(751) Join
Arguments: LeftOuter, ((product#5626 <=> productPlant#5638.product.internalRefUUID) AND (plant#5627 <=> productPlant#5638.plant.internalRefUUID))
(752) Project
Arguments: [product#5626, plant#5627, orderDateTime#5628, productPlant#5638]
(753) SubqueryAlias
Arguments: wl
(754) LogicalRelation
Arguments: parquet, [systemId#5639, internalUUID#5640, id#5641, displayId#5642, name#5643, category#5644, companyCode#5645, address#5646, mainDistributionChain#5647, mainPurchasingOrganization#5648, validPurchasingOrganizations#5649, productGroup#5650], false
(755) Repartition
Arguments: 10, true
(756) Project
Arguments: [internalUUID#5640, address#5646.timeZone.code AS timezonecode#5651]
(757) Join
Arguments: LeftOuter, (plant#5627 <=> internalUUID#5640)
(758) Project
Arguments: [product#5626, plant#5627, orderDateTime#5628, productPlant#5638, internalUUID#5640, CASE WHEN isnotnull(timezonecode#5651) THEN timezonecode#5651 ELSE UTC END AS timezonecode#5652]
(759) Project
Arguments: [product#5626, plant#5627, orderDateTime#5628, productPlant#5638, timezonecode#5652]
(760) LogicalRelation
Arguments: parquet, [systemId#5653, internalUUID#5654, id#5655, displayId#5656, name#5657, baseUnitOfMeasure#5658, unitOfMeasures#5659, unitOfMeasureConversions#5660, productionAspect#5661, salesAspect#5662, procurementAspect#5663, productGroup#5664], false
(761) Repartition
Arguments: 10, true
(762) Join
Arguments: LeftOuter, (product#5626 = internalUUID#5654)
(763) Project
Arguments: [product#5626, plant#5627, orderDateTime#5628, productPlant#5638, timezonecode#5652, systemId#5653, internalUUID#5654, id#5655, displayId#5656, name#5657, baseUnitOfMeasure#5658, unitOfMeasures#5659, unitOfMeasureConversions#5660, productionAspect#5661, salesAspect#5662, procurementAspect#5663, productGroup#5664, filter(unitOfMeasureConversions#5660, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#5638.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#5638.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#5658.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5658.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#5665]
(764) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5665.quantityNumerator), true, [quantityNumerator#5666]
(765) Project
Arguments: [product#5626, plant#5627, orderDateTime#5628, productPlant#5638, timezonecode#5652, systemId#5653, internalUUID#5654, id#5655, displayId#5656, name#5657, baseUnitOfMeasure#5658, unitOfMeasures#5659, unitOfMeasureConversions#5660, productionAspect#5661, salesAspect#5662, procurementAspect#5663, productGroup#5664, filteredUnitOfMeasureConversions#5665, quantityNumerator#5666]
(766) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5665.quantityDenominator), true, [quantityDenominator#5667]
(767) Project
Arguments: [product#5626, plant#5627, orderDateTime#5628, productPlant#5638, timezonecode#5652, systemId#5653, internalUUID#5654, id#5655, displayId#5656, name#5657, baseUnitOfMeasure#5658, unitOfMeasures#5659, unitOfMeasureConversions#5660, productionAspect#5661, salesAspect#5662, procurementAspect#5663, productGroup#5664, filteredUnitOfMeasureConversions#5665, quantityNumerator#5666, quantityDenominator#5667]
(768) Project
Arguments: [product#5626, plant#5627, orderDateTime#5628, productPlant#5638, timezonecode#5652, systemId#5653, internalUUID#5654, id#5655, displayId#5656, name#5657, baseUnitOfMeasure#5658, unitOfMeasures#5659, unitOfMeasureConversions#5660, productionAspect#5661, salesAspect#5662, procurementAspect#5663, productGroup#5664, filteredUnitOfMeasureConversions#5665, quantityNumerator#5666, quantityDenominator#5667, (cast(quantityNumerator#5666 as double) / cast(quantityDenominator#5667 as double)) AS outboundUnit#5668]
(769) Project
Arguments: [product#5626, plant#5627, orderDateTime#5628, productPlant#5638, timezonecode#5652, systemId#5653, internalUUID#5654, id#5655, displayId#5656, name#5657, baseUnitOfMeasure#5658, unitOfMeasures#5659, unitOfMeasureConversions#5660, productionAspect#5661, salesAspect#5662, procurementAspect#5663, productGroup#5664, filteredUnitOfMeasureConversions#5665, quantityNumerator#5666, quantityDenominator#5667, CASE WHEN (isnull(outboundUnit#5668) OR (outboundUnit#5668 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#5668 END AS outboundUnit#5669]
(770) Project
Arguments: [product#5626, plant#5627, orderDateTime#5628, productPlant#5638, timezonecode#5652, outboundUnit#5669]
(771) Project
Arguments: [plant#5627]
(772) Deduplicate
Arguments: [plant#5627]
(773) Join
Arguments: Inner, (plantUuid#5623 = plant#5627)
(774) Project
Arguments: [plantId#5622, plantUuid#5623, storageLocId#5624, storageLocUuid#5625]
(775) Join
Arguments: Inner, (plant#5595.internalRefUUID <=> plantUuid#5623)
(776) Generate
Arguments: explode(filter(stockQuantities#5597, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#5625) AND (lambda x#1207.storageLocation.Id = storageLocId#5624)), lambda x#1207, false))), false, [stockQuantity#5670]
(777) Project
Arguments: [systemId#5592, internalUUID#5593, product#5594, plant#5595, calculationDateTime#5596, stockQuantities#5597, plantId#5622, plantUuid#5623, storageLocId#5624, storageLocUuid#5625, stockQuantity#5670]
(778) Aggregate
Arguments: [plantUuid#5623, internalUUID#5593, plant#5595, product#5594, systemId#5592], [plantUuid#5623, internalUUID#5593, plant#5595, product#5594, systemId#5592, first(calculationDateTime#5596, false) AS calculationDateTime#5671, collect_list(stockQuantity#5670, 0, 0) AS stockQuantities#5672]
(779) Project
Arguments: [systemId#5592, internalUUID#5593, product#5594, plant#5595, calculationDateTime#5671, stockQuantities#5672]
(780) Generate
Arguments: explode(stockQuantities#5672), false, [stockQuantity#5673]
(781) Project
Arguments: [systemId#5592, internalUUID#5593, product#5594, plant#5595, calculationDateTime#5671, stockQuantities#5672, stockQuantity#5673]
(782) Project
Arguments: [plant#5595.id AS plant#5674, plant#5595.internalRefUUID AS plantUuid#5675, product#5594.id AS product#5676, product#5594.internalRefUUID AS productUuid#5677, calculationDateTime#5671, stockQuantity#5673.storagelocation.id AS storageLocId#5678, stockQuantity#5673.storagelocation.internalRefUUID AS storageLocUuid#5679, stockQuantity#5673.quantity.measure AS quantity#5680, stockQuantity#5673.specialStockIndicator.code AS specialStockIndicator#5681, stockQuantity#5673.stockType.code AS stockType#5682]
(783) Filter
Arguments: ((specialStockIndicator#5681 = ) AND (stockType#5682 = 01))
(784) LogicalRelation
Arguments: parquet, [product#5683, plant#5684, orderDateTime#5685, planningStartDateTime#5686], false
(785) RepartitionByExpression
Arguments: [product#5683, plant#5684], 10
(786) Project
Arguments: [product#5683, plant#5684, orderDateTime#5685]
(787) LogicalRelation
Arguments: parquet, [systemId#5687, internalUUID#5688, plant#5689, product#5690, blockedForReplenishmentStartingFrom#5691, productionAspect#5692, salesPlant#5693, listing#5694], false
(788) Repartition
Arguments: 10, true
(789) Project
Arguments: [systemId#5687, internalUUID#5688, plant#5689, product#5690, blockedForReplenishmentStartingFrom#5691, productionAspect#5692, salesPlant#5693, listing#5694, struct(systemId, systemId#5687, internalUUID, internalUUID#5688, plant, plant#5689, product, product#5690, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#5691, productionAspect, productionAspect#5692, salesPlant, salesPlant#5693, listing, listing#5694) AS productPlant#5695]
(790) Project
Arguments: [productPlant#5695]
(791) Join
Arguments: LeftOuter, ((product#5683 <=> productPlant#5695.product.internalRefUUID) AND (plant#5684 <=> productPlant#5695.plant.internalRefUUID))
(792) Project
Arguments: [product#5683, plant#5684, orderDateTime#5685, productPlant#5695]
(793) SubqueryAlias
Arguments: wl
(794) LogicalRelation
Arguments: parquet, [systemId#5696, internalUUID#5697, id#5698, displayId#5699, name#5700, category#5701, companyCode#5702, address#5703, mainDistributionChain#5704, mainPurchasingOrganization#5705, validPurchasingOrganizations#5706, productGroup#5707], false
(795) Repartition
Arguments: 10, true
(796) Project
Arguments: [internalUUID#5697, address#5703.timeZone.code AS timezonecode#5708]
(797) Join
Arguments: LeftOuter, (plant#5684 <=> internalUUID#5697)
(798) Project
Arguments: [product#5683, plant#5684, orderDateTime#5685, productPlant#5695, internalUUID#5697, CASE WHEN isnotnull(timezonecode#5708) THEN timezonecode#5708 ELSE UTC END AS timezonecode#5709]
(799) Project
Arguments: [product#5683, plant#5684, orderDateTime#5685, productPlant#5695, timezonecode#5709]
(800) LogicalRelation
Arguments: parquet, [systemId#5710, internalUUID#5711, id#5712, displayId#5713, name#5714, baseUnitOfMeasure#5715, unitOfMeasures#5716, unitOfMeasureConversions#5717, productionAspect#5718, salesAspect#5719, procurementAspect#5720, productGroup#5721], false
(801) Repartition
Arguments: 10, true
(802) Join
Arguments: LeftOuter, (product#5683 = internalUUID#5711)
(803) Project
Arguments: [product#5683, plant#5684, orderDateTime#5685, productPlant#5695, timezonecode#5709, systemId#5710, internalUUID#5711, id#5712, displayId#5713, name#5714, baseUnitOfMeasure#5715, unitOfMeasures#5716, unitOfMeasureConversions#5717, productionAspect#5718, salesAspect#5719, procurementAspect#5720, productGroup#5721, filter(unitOfMeasureConversions#5717, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#5695.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#5695.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#5715.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#5715.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#5722]
(804) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5722.quantityNumerator), true, [quantityNumerator#5723]
(805) Project
Arguments: [product#5683, plant#5684, orderDateTime#5685, productPlant#5695, timezonecode#5709, systemId#5710, internalUUID#5711, id#5712, displayId#5713, name#5714, baseUnitOfMeasure#5715, unitOfMeasures#5716, unitOfMeasureConversions#5717, productionAspect#5718, salesAspect#5719, procurementAspect#5720, productGroup#5721, filteredUnitOfMeasureConversions#5722, quantityNumerator#5723]
(806) Generate
Arguments: explode(filteredUnitOfMeasureConversions#5722.quantityDenominator), true, [quantityDenominator#5724]
(807) Project
Arguments: [product#5683, plant#5684, orderDateTime#5685, productPlant#5695, timezonecode#5709, systemId#5710, internalUUID#5711, id#5712, displayId#5713, name#5714, baseUnitOfMeasure#5715, unitOfMeasures#5716, unitOfMeasureConversions#5717, productionAspect#5718, salesAspect#5719, procurementAspect#5720, productGroup#5721, filteredUnitOfMeasureConversions#5722, quantityNumerator#5723, quantityDenominator#5724]
(808) Project
Arguments: [product#5683, plant#5684, orderDateTime#5685, productPlant#5695, timezonecode#5709, systemId#5710, internalUUID#5711, id#5712, displayId#5713, name#5714, baseUnitOfMeasure#5715, unitOfMeasures#5716, unitOfMeasureConversions#5717, productionAspect#5718, salesAspect#5719, procurementAspect#5720, productGroup#5721, filteredUnitOfMeasureConversions#5722, quantityNumerator#5723, quantityDenominator#5724, (cast(quantityNumerator#5723 as double) / cast(quantityDenominator#5724 as double)) AS outboundUnit#5725]
(809) Project
Arguments: [product#5683, plant#5684, orderDateTime#5685, productPlant#5695, timezonecode#5709, systemId#5710, internalUUID#5711, id#5712, displayId#5713, name#5714, baseUnitOfMeasure#5715, unitOfMeasures#5716, unitOfMeasureConversions#5717, productionAspect#5718, salesAspect#5719, procurementAspect#5720, productGroup#5721, filteredUnitOfMeasureConversions#5722, quantityNumerator#5723, quantityDenominator#5724, CASE WHEN (isnull(outboundUnit#5725) OR (outboundUnit#5725 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#5725 END AS outboundUnit#5726]
(810) Project
Arguments: [product#5683, plant#5684, orderDateTime#5685, productPlant#5695, timezonecode#5709, outboundUnit#5726]
(811) Join
Arguments: Inner, ((plantUuid#5675 = plant#5684) AND (productUuid#5677 = product#5683))
(812) Filter
Arguments: (calculationDateTime#5671 <= orderDateTime#5685)
(813) Project
Arguments: [plantUuid#5675 AS plant#5727, productUuid#5677 AS product#5728, storageLocId#5678, calculationDateTime#5671, quantity#5680]
(814) Aggregate
Arguments: [plant#5727, product#5728, storageLocId#5678], [plant#5727, product#5728, storageLocId#5678, max(calculationDateTime#5671) AS max_calc_datetime#5729]
(815) Join
Arguments: Inner, ((((plant#5590 <=> plant#5727) AND (product#5591 <=> product#5728)) AND (storageLocId#5541 <=> storageLocId#5678)) AND (calculationDateTime#5534 <=> max_calc_datetime#5729))
(816) Project
Arguments: [plant#5590, product#5591, storageLocId#5541, calculationDateTime#5534, quantity#5543]
(817) Aggregate
Arguments: [product#5591, plant#5590], [product#5591, plant#5590, sum(quantity#5543) AS quantitySum#5730, min(calculationDateTime#5534) AS minCalculationDateTime#5731]
(818) Project
Arguments: [product#5591, plant#5590, quantitySum#5730, minCalculationDateTime#5731, round(quantitySum#5730, 0) AS roundedQuantitySum#5732]
(819) Join
Arguments: LeftOuter, ((plant#5412 = plant#5590) AND (product#5411 = product#5591))
(820) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, outboundUnit#5454, roundedQuantitySum#5732, minCalculationDateTime#5731]
(821) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, outboundUnit#5454, roundedQuantitySum#5732, minCalculationDateTime#5731, CASE WHEN isnotnull(minCalculationDateTime#5731) THEN minCalculationDateTime#5731 ELSE orderDateTime#5413 END AS stockDatetime#5733]
(822) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, outboundUnit#5454, roundedQuantitySum#5732, minCalculationDateTime#5731, stockDatetime#5733, CASE WHEN isnotnull(roundedQuantitySum#5732) THEN array(roundedQuantitySum#5732) ELSE array(0.0) END AS stockBatchQuantities#5734]
(823) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, outboundUnit#5454, roundedQuantitySum#5732, minCalculationDateTime#5731, stockDatetime#5733, stockBatchQuantities#5734, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#5735]
(824) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, outboundUnit#5454, roundedQuantitySum#5732, stockDatetime#5733, stockBatchQuantities#5734, stockBatchShelfLifeEndDatetimes#5735]
(825) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, outboundUnit#5454, stockDatetime#5733, stockBatchQuantities#5734, stockBatchShelfLifeEndDatetimes#5735]
(826) LogicalRelation
Arguments: parquet, [product#5736, plant#5737, demandChannel#5738, demandStream#5739, considerVariance#5740, demandTimeBuckets#5741, demandPointInTimeStart#5742, demandPointInTimeEnd#5743, demandPointInTime#5744], false
(827) Join
Arguments: LeftOuter, ((product#5411 = product#5736) AND (plant#5412 = plant#5737))
(828) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, outboundUnit#5454, stockDatetime#5733, stockBatchQuantities#5734, stockBatchShelfLifeEndDatetimes#5735, demandChannel#5738, demandStream#5739, considerVariance#5740, demandTimeBuckets#5741, demandPointInTimeStart#5742, demandPointInTimeEnd#5743, demandPointInTime#5744, product#5736, plant#5737]
(829) Project
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, outboundUnit#5454, stockDatetime#5733, stockBatchQuantities#5734, stockBatchShelfLifeEndDatetimes#5735, demandChannel#5738, demandStream#5739, considerVariance#5740, demandTimeBuckets#5741, demandPointInTimeStart#5742, demandPointInTimeEnd#5743, demandPointInTime#5744, CASE WHEN isnotnull(product#5736) THEN struct(demandChannel, demandChannel#5738, demandStream, demandStream#5739, considerVariance, considerVariance#5740, demandTimeBuckets, demandTimeBuckets#5741, demandPointInTimeStart, demandPointInTimeStart#5742, demandPointInTimeEnd, demandPointInTimeEnd#5743, demandPointInTime, demandPointInTime#5744) 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#5745]
(830) Aggregate
Arguments: [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, outboundUnit#5454, stockDatetime#5733, stockBatchQuantities#5734, stockBatchShelfLifeEndDatetimes#5735], [product#5411, plant#5412, orderDateTime#5413, productPlant#5423, timezonecode#5437, outboundUnit#5454, stockDatetime#5733, stockBatchQuantities#5734, stockBatchShelfLifeEndDatetimes#5735, collect_list(rawDemands#5745, 0, 0) AS rawDemands#5746]
(831) DeserializeToObject
Arguments: createexternalrow(invoke(product#5411.toString()), invoke(plant#5412.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#5413)), if (isnull(productPlant#5423)) null else createexternalrow(invoke(productPlant#5423.systemId.toString()), invoke(productPlant#5423.internalUUID.toString()), if (isnull(productPlant#5423.plant)) null else createexternalrow(invoke(productPlant#5423.plant.internalRefUUID.toString()), invoke(productPlant#5423.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#5423.product)) null else createexternalrow(invoke(productPlant#5423.product.internalRefUUID.toString()), invoke(productPlant#5423.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#5423.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#5423.productionAspect)) null else createexternalrow(if (isnull(productPlant#5423.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#5423.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#5423.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#5423.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#5423.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#5423.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#5423.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#5423.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#5423.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#5423.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#5423.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#5423.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#5423.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#5423.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#5423.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#5423.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#5423.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#5423.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#5423.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#5423.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#5423.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#5423.salesPlant)) null else createexternalrow(if (isnull(productPlant#5423.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#5423.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#5423.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, 497), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#5423.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#5437.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#5454)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#5733)), mapobjects(lambdavariable(MapObject, DoubleType, true, 498), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 498) as double))), stockBatchQuantities#5734, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 499), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 499) as timestamp)))), stockBatchShelfLifeEndDatetimes#5735, 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, 500), 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, 500))) 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, 500).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, 500).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, 500).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).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, 500).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, 500).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, 500).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).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, 500).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#5746, 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#1569: org.apache.spark.sql.Row
(832) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@762840b4, 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#1574: 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#5747, 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#5748, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 488), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 488), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 489), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 489), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 490), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 490), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 491), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 491), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 492), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 492), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#5749, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 494), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 494), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 495), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 495), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 496), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 496), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#5750]
(834) Join
Arguments: LeftOuter, ((plant#5748 <=> plant#5087) AND (product#5747 <=> product#5086))
(835) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, outboundUnit#5129, stockDatetime#5408, stockBatchQuantities#5409, stockBatchShelfLifeEndDatetimes#5410, plant#5748, dayBucketDemands#5749, pointInTimeDemands#5750]
(836) Project
Arguments: [product#5086, plant#5087, orderDateTime#5088, productPlant#5098, timezonecode#5112, outboundUnit#5129, stockDatetime#5408, stockBatchQuantities#5409, stockBatchShelfLifeEndDatetimes#5410, dayBucketDemands#5749, pointInTimeDemands#5750]
(837) LogicalRelation
Arguments: parquet, [marketUnit#1968, description#1969, articleHierarchy#1970, defaultCurrency#1971, responsibilities#1972, replenishmentTypes#1973, distributionCenters#1974, assignedArticleHierarchyNodes#1975, minOrderQtySetting#1976, minOrderQtySettingInternal#1977, listingCheck#1978, odsSelection#1979, demandProfiles#1980, constraintProfiles#1981, optimizationProfiles#1982, orderGroupSplitProfiles#1983, supplierMinimumProfiles#1984, multipleRestrictionProfiles#1985, preferredUomSource#1986, handlingOfUnfulfilledDemands#1987, negligibleQuantitiesThreshold#1988, eventtype#1989], false
(838) Repartition
Arguments: 10, true
(839) Filter
Arguments: (marketUnit#1968 <=> DIP_1691)
(840) Project
Arguments: [marketUnit#1968, description#1969, articleHierarchy#1970, defaultCurrency#1971, responsibilities#1972, replenishmentTypes#1973, distributionCenters#1974, assignedArticleHierarchyNodes#1975, minOrderQtySetting#1976, minOrderQtySettingInternal#1977, listingCheck#1978, odsSelection#1979, demandProfiles#1980, constraintProfiles#1981, optimizationProfiles#1982, orderGroupSplitProfiles#1983, supplierMinimumProfiles#1984, multipleRestrictionProfiles#1985, preferredUomSource#1986, handlingOfUnfulfilledDemands#1987, negligibleQuantitiesThreshold#1988, eventtype#1989]
(841) Project
Arguments: [distributionCenters#1974]
(842) Generate
Arguments: explode(distributionCenters#1974), false, [distributionCenters#1990]
(843) Project
Arguments: [distributionCenters#1990]
(844) Generate
Arguments: explode(distributionCenters#1990.storageLocations), false, [storageLocations#1991]
(845) Project
Arguments: [distributionCenters#1990.id AS plantId#1992, distributionCenters#1990.internalRefUUID AS plantUuid#1993, storageLocations#1991]
(846) Project
Arguments: [plantId#1992, plantUuid#1993, storageLocations#1991.id AS storageLocId#1994, storageLocations#1991.internalRefUUID AS storageLocUuid#1995]
(847) LogicalRelation
Arguments: parquet, [product#1996, plant#1997, orderDateTime#1998, planningStartDateTime#1999], false
(848) RepartitionByExpression
Arguments: [product#1996, plant#1997], 10
(849) Project
Arguments: [product#1996, plant#1997, orderDateTime#1998]
(850) LogicalRelation
Arguments: parquet, [systemId#2000, internalUUID#2001, plant#2002, product#2003, blockedForReplenishmentStartingFrom#2004, productionAspect#2005, salesPlant#2006, listing#2007], false
(851) Repartition
Arguments: 10, true
(852) Project
Arguments: [systemId#2000, internalUUID#2001, plant#2002, product#2003, blockedForReplenishmentStartingFrom#2004, productionAspect#2005, salesPlant#2006, listing#2007, struct(systemId, systemId#2000, internalUUID, internalUUID#2001, plant, plant#2002, product, product#2003, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#2004, productionAspect, productionAspect#2005, salesPlant, salesPlant#2006, listing, listing#2007) AS productPlant#2008]
(853) Project
Arguments: [productPlant#2008]
(854) Join
Arguments: LeftOuter, ((product#1996 <=> productPlant#2008.product.internalRefUUID) AND (plant#1997 <=> productPlant#2008.plant.internalRefUUID))
(855) Project
Arguments: [product#1996, plant#1997, orderDateTime#1998, productPlant#2008]
(856) SubqueryAlias
Arguments: wl
(857) LogicalRelation
Arguments: parquet, [systemId#2009, internalUUID#2010, id#2011, displayId#2012, name#2013, category#2014, companyCode#2015, address#2016, mainDistributionChain#2017, mainPurchasingOrganization#2018, validPurchasingOrganizations#2019, productGroup#2020], false
(858) Repartition
Arguments: 10, true
(859) Project
Arguments: [internalUUID#2010, address#2016.timeZone.code AS timezonecode#2021]
(860) Join
Arguments: LeftOuter, (plant#1997 <=> internalUUID#2010)
(861) Project
Arguments: [product#1996, plant#1997, orderDateTime#1998, productPlant#2008, internalUUID#2010, CASE WHEN isnotnull(timezonecode#2021) THEN timezonecode#2021 ELSE UTC END AS timezonecode#2022]
(862) Project
Arguments: [product#1996, plant#1997, orderDateTime#1998, productPlant#2008, timezonecode#2022]
(863) LogicalRelation
Arguments: parquet, [systemId#2023, internalUUID#2024, id#2025, displayId#2026, name#2027, baseUnitOfMeasure#2028, unitOfMeasures#2029, unitOfMeasureConversions#2030, productionAspect#2031, salesAspect#2032, procurementAspect#2033, productGroup#2034], false
(864) Repartition
Arguments: 10, true
(865) Join
Arguments: LeftOuter, (product#1996 = internalUUID#2024)
(866) Project
Arguments: [product#1996, plant#1997, orderDateTime#1998, productPlant#2008, timezonecode#2022, systemId#2023, internalUUID#2024, id#2025, displayId#2026, name#2027, baseUnitOfMeasure#2028, unitOfMeasures#2029, unitOfMeasureConversions#2030, productionAspect#2031, salesAspect#2032, procurementAspect#2033, productGroup#2034, filter(unitOfMeasureConversions#2030, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#2008.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#2008.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#2028.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#2028.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#2035]
(867) Generate
Arguments: explode(filteredUnitOfMeasureConversions#2035.quantityNumerator), true, [quantityNumerator#2036]
(868) Project
Arguments: [product#1996, plant#1997, orderDateTime#1998, productPlant#2008, timezonecode#2022, systemId#2023, internalUUID#2024, id#2025, displayId#2026, name#2027, baseUnitOfMeasure#2028, unitOfMeasures#2029, unitOfMeasureConversions#2030, productionAspect#2031, salesAspect#2032, procurementAspect#2033, productGroup#2034, filteredUnitOfMeasureConversions#2035, quantityNumerator#2036]
(869) Generate
Arguments: explode(filteredUnitOfMeasureConversions#2035.quantityDenominator), true, [quantityDenominator#2037]
(870) Project
Arguments: [product#1996, plant#1997, orderDateTime#1998, productPlant#2008, timezonecode#2022, systemId#2023, internalUUID#2024, id#2025, displayId#2026, name#2027, baseUnitOfMeasure#2028, unitOfMeasures#2029, unitOfMeasureConversions#2030, productionAspect#2031, salesAspect#2032, procurementAspect#2033, productGroup#2034, filteredUnitOfMeasureConversions#2035, quantityNumerator#2036, quantityDenominator#2037]
(871) Project
Arguments: [product#1996, plant#1997, orderDateTime#1998, productPlant#2008, timezonecode#2022, systemId#2023, internalUUID#2024, id#2025, displayId#2026, name#2027, baseUnitOfMeasure#2028, unitOfMeasures#2029, unitOfMeasureConversions#2030, productionAspect#2031, salesAspect#2032, procurementAspect#2033, productGroup#2034, filteredUnitOfMeasureConversions#2035, quantityNumerator#2036, quantityDenominator#2037, (cast(quantityNumerator#2036 as double) / cast(quantityDenominator#2037 as double)) AS outboundUnit#2038]
(872) Project
Arguments: [product#1996, plant#1997, orderDateTime#1998, productPlant#2008, timezonecode#2022, systemId#2023, internalUUID#2024, id#2025, displayId#2026, name#2027, baseUnitOfMeasure#2028, unitOfMeasures#2029, unitOfMeasureConversions#2030, productionAspect#2031, salesAspect#2032, procurementAspect#2033, productGroup#2034, filteredUnitOfMeasureConversions#2035, quantityNumerator#2036, quantityDenominator#2037, CASE WHEN (isnull(outboundUnit#2038) OR (outboundUnit#2038 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#2038 END AS outboundUnit#2039]
(873) Project
Arguments: [product#1996, plant#1997, orderDateTime#1998, productPlant#2008, timezonecode#2022, outboundUnit#2039]
(874) Project
Arguments: [plant#1997]
(875) Deduplicate
Arguments: [plant#1997]
(876) Join
Arguments: Inner, (plantUuid#1993 = plant#1997)
(877) Project
Arguments: [plantId#1992, plantUuid#1993, storageLocId#1994, storageLocUuid#1995]
(878) Project
Arguments: [plantId#1992, plantUuid#1993 AS plant#1967, storageLocId#1994, storageLocUuid#1995]
(879) Join
Arguments: Inner, (plant#5087 = plant#1967)
(880) Project
Arguments: [plant#5087, product#5086, orderDateTime#5088, productPlant#5098, timezonecode#5112, outboundUnit#5129, stockDatetime#5408, stockBatchQuantities#5409, stockBatchShelfLifeEndDatetimes#5410, dayBucketDemands#5749, pointInTimeDemands#5750, plantId#1992, storageLocId#1994, storageLocUuid#1995, plant#1967]
(881) LogicalRelation
Arguments: parquet, [systemId#1932, internalUUID#1933, id#1934, displayId#1935, supplier#1936, type#1937, status#1938, isMarkedForDeletion#1939, items#1940], false
(882) Repartition
Arguments: 10, true
(883) Generate
Arguments: explode(items#1940), false, [item#1944]
(884) Project
Arguments: [id#1934, internalUUID#1933, isMarkedForDeletion#1939, supplier#1936.internalRefUUID AS supplierUuid#1941, item#1944]
(885) Filter
Arguments: (((NOT isMarkedForDeletion#1939 AND NOT item#1944.deletionIndicator) AND NOT item#1944.completeIndicator) AND NOT item#1944.returnIndicator)
(886) Project
Arguments: [id#1934, internalUUID#1933, supplierUuid#1941, item#1944.plant.internalRefUUID AS plant#1949, item#1944.product.internalRefUUID AS product#1950, item#1944.storageLocation.internalRefUUID AS storageLocUuid#1951, item#1944.quantityUnit.code AS quantityUom#1952, item#1944.quantityUnit.internalRefUUID AS quantityUomUuid#1953, item#1944.quantityNumerator AS quantityNumerator#1954, item#1944.quantityDenominator AS quantityDenominator#1955, item#1944.scheduleLines AS scheduleLines#1956, item#1944.confirmations AS confirmations#1957]
(887) Join
Arguments: Inner, (((product#5086 = product#1950) AND (plant#5087 = plant#1949)) AND (storageLocUuid#1995 = storageLocUuid#1951))
(888) Project
Arguments: [product#5086, plant#5087, storageLocUuid#1995, orderDateTime#5088, productPlant#5098, timezonecode#5112, outboundUnit#5129, stockDatetime#5408, stockBatchQuantities#5409, stockBatchShelfLifeEndDatetimes#5410, dayBucketDemands#5749, pointInTimeDemands#5750, plantId#1992, storageLocId#1994, id#1934, internalUUID#1933, supplierUuid#1941, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, product#1950, plant#1949, ... 2 more fields]
(889) Project
Arguments: [id#1934, internalUUID#1933, supplierUuid#1941, plant#1949, product#1950, storageLocUuid#1951, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, stockDatetime#5408, timezonecode#5112]
(890) Project
Arguments: [id#1934, internalUUID#1933, supplierUuid#1941, plant#1949, product#1950, storageLocUuid#1951, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, stockDatetime#5408, timezonecode#5112, array_size(filter(confirmations#1957, lambdafunction((((lambda x_2#2322.deletionIndicator = false) AND (lambda x_2#2322.isRelevantForConfirmation = true)) AND isnotnull(lambda x_2#2322.confirmedDeliveryAt)), lambda x_2#2322, false))) AS _w0#2329]
(891) Window
Arguments: [sum(_w0#2329) windowspecdefinition(internalUUID#1933, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#2330L], [internalUUID#1933]
(892) Project
Arguments: [id#1934, internalUUID#1933, supplierUuid#1941, plant#1949, product#1950, storageLocUuid#1951, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, stockDatetime#5408, timezonecode#5112, _w0#2329, _we0#2330L, filter(transform(CASE WHEN (_we0#2330L > cast(0 as bigint)) THEN transform(filter(confirmations#1957, lambdafunction((((lambda x_2#2323.deletionIndicator = false) AND (lambda x_2#2323.isRelevantForConfirmation = true)) AND isnotnull(lambda x_2#2323.confirmedDeliveryAt)), lambda x_2#2323, false)), lambdafunction(struct(openQty, greatest((lambda x_3#2326.confirmedQuantity - coalesce(lambda x_3#2326.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_3#2326.confirmedDeliveryAt), lambda x_3#2326, false)) ELSE transform(scheduleLines#1956, lambdafunction(struct(openQty, greatest((lambda x_1#2324.quantity - coalesce(lambda x_1#2324.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1#2324.deliveryAt), lambda x_1#2324, false)) END, lambdafunction(struct(documentId, id#1934, documentUuid, internalUUID#1933, openQty, lambda x_4#2327.openQty, openQtyInBaseUnit, ((lambda x_4#2327.openQty * quantityNumerator#1954) / quantityDenominator#1955), qtyUom, quantityUom#1952, qtyUomUuid, quantityUomUuid#1953, availabilityDatetime, lambda x_4#2327.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_4#2327, false)), lambdafunction(NOT (lambda x_5#2328.openQty = 0.0), lambda x_5#2328, false)) AS openGoodsMovements#2321]
(893) Project
Arguments: [id#1934, internalUUID#1933, supplierUuid#1941, plant#1949, product#1950, storageLocUuid#1951, quantityUom#1952, quantityUomUuid#1953, quantityNumerator#1954, quantityDenominator#1955, scheduleLines#1956, confirmations#1957, stockDatetime#5408, timezonecode#5112, openGoodsMovements#2321]
(894) Aggregate
Arguments: [product#1950, plant#1949], [product#1950, plant#1949, flatten(collect_list(openGoodsMovements#2321, 0, 0)) AS openGoodsMovements#2331]
(895) Filter
Arguments: (array_size(openGoodsMovements#2331) > 0)
(896) LogicalRelation
Arguments: parquet, [product#4346, plant#4347, orderDateTime#4348, planningStartDateTime#4349], false
(897) RepartitionByExpression
Arguments: [product#4346, plant#4347], 10
(898) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348]
(899) LogicalRelation
Arguments: parquet, [systemId#4350, internalUUID#4351, plant#4352, product#4353, blockedForReplenishmentStartingFrom#4354, productionAspect#4355, salesPlant#4356, listing#4357], false
(900) Repartition
Arguments: 10, true
(901) Project
Arguments: [systemId#4350, internalUUID#4351, plant#4352, product#4353, blockedForReplenishmentStartingFrom#4354, productionAspect#4355, salesPlant#4356, listing#4357, struct(systemId, systemId#4350, internalUUID, internalUUID#4351, plant, plant#4352, product, product#4353, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#4354, productionAspect, productionAspect#4355, salesPlant, salesPlant#4356, listing, listing#4357) AS productPlant#4358]
(902) Project
Arguments: [productPlant#4358]
(903) Join
Arguments: LeftOuter, ((product#4346 <=> productPlant#4358.product.internalRefUUID) AND (plant#4347 <=> productPlant#4358.plant.internalRefUUID))
(904) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358]
(905) SubqueryAlias
Arguments: wl
(906) LogicalRelation
Arguments: parquet, [systemId#4359, internalUUID#4360, id#4361, displayId#4362, name#4363, category#4364, companyCode#4365, address#4366, mainDistributionChain#4367, mainPurchasingOrganization#4368, validPurchasingOrganizations#4369, productGroup#4370], false
(907) Repartition
Arguments: 10, true
(908) Project
Arguments: [internalUUID#4360, address#4366.timeZone.code AS timezonecode#4371]
(909) Join
Arguments: LeftOuter, (plant#4347 <=> internalUUID#4360)
(910) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, internalUUID#4360, CASE WHEN isnotnull(timezonecode#4371) THEN timezonecode#4371 ELSE UTC END AS timezonecode#4372]
(911) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372]
(912) LogicalRelation
Arguments: parquet, [systemId#4373, internalUUID#4374, id#4375, displayId#4376, name#4377, baseUnitOfMeasure#4378, unitOfMeasures#4379, unitOfMeasureConversions#4380, productionAspect#4381, salesAspect#4382, procurementAspect#4383, productGroup#4384], false
(913) Repartition
Arguments: 10, true
(914) Join
Arguments: LeftOuter, (product#4346 = internalUUID#4374)
(915) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, systemId#4373, internalUUID#4374, id#4375, displayId#4376, name#4377, baseUnitOfMeasure#4378, unitOfMeasures#4379, unitOfMeasureConversions#4380, productionAspect#4381, salesAspect#4382, procurementAspect#4383, productGroup#4384, filter(unitOfMeasureConversions#4380, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#4358.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#4358.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4378.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4378.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4385]
(916) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4385.quantityNumerator), true, [quantityNumerator#4386]
(917) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, systemId#4373, internalUUID#4374, id#4375, displayId#4376, name#4377, baseUnitOfMeasure#4378, unitOfMeasures#4379, unitOfMeasureConversions#4380, productionAspect#4381, salesAspect#4382, procurementAspect#4383, productGroup#4384, filteredUnitOfMeasureConversions#4385, quantityNumerator#4386]
(918) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4385.quantityDenominator), true, [quantityDenominator#4387]
(919) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, systemId#4373, internalUUID#4374, id#4375, displayId#4376, name#4377, baseUnitOfMeasure#4378, unitOfMeasures#4379, unitOfMeasureConversions#4380, productionAspect#4381, salesAspect#4382, procurementAspect#4383, productGroup#4384, filteredUnitOfMeasureConversions#4385, quantityNumerator#4386, quantityDenominator#4387]
(920) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, systemId#4373, internalUUID#4374, id#4375, displayId#4376, name#4377, baseUnitOfMeasure#4378, unitOfMeasures#4379, unitOfMeasureConversions#4380, productionAspect#4381, salesAspect#4382, procurementAspect#4383, productGroup#4384, filteredUnitOfMeasureConversions#4385, quantityNumerator#4386, quantityDenominator#4387, (cast(quantityNumerator#4386 as double) / cast(quantityDenominator#4387 as double)) AS outboundUnit#4388]
(921) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, systemId#4373, internalUUID#4374, id#4375, displayId#4376, name#4377, baseUnitOfMeasure#4378, unitOfMeasures#4379, unitOfMeasureConversions#4380, productionAspect#4381, salesAspect#4382, procurementAspect#4383, productGroup#4384, filteredUnitOfMeasureConversions#4385, quantityNumerator#4386, quantityDenominator#4387, CASE WHEN (isnull(outboundUnit#4388) OR (outboundUnit#4388 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#4388 END AS outboundUnit#4389]
(922) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, outboundUnit#4389]
(923) LogicalRelation
Arguments: parquet, [systemId#4390, internalUUID#4391, product#4392, plant#4393, calculationDateTime#4394, stockQuantities#4395], false
(924) Repartition
Arguments: 10, true
(925) LogicalRelation
Arguments: parquet, [marketUnit#4396, description#4397, articleHierarchy#4398, defaultCurrency#4399, responsibilities#4400, replenishmentTypes#4401, distributionCenters#4402, assignedArticleHierarchyNodes#4403, minOrderQtySetting#4404, minOrderQtySettingInternal#4405, listingCheck#4406, odsSelection#4407, demandProfiles#4408, constraintProfiles#4409, optimizationProfiles#4410, orderGroupSplitProfiles#4411, supplierMinimumProfiles#4412, multipleRestrictionProfiles#4413, preferredUomSource#4414, handlingOfUnfulfilledDemands#4415, negligibleQuantitiesThreshold#4416, eventtype#4417], false
(926) Repartition
Arguments: 10, true
(927) Filter
Arguments: (marketUnit#4396 <=> DIP_1691)
(928) Project
Arguments: [marketUnit#4396, description#4397, articleHierarchy#4398, defaultCurrency#4399, responsibilities#4400, replenishmentTypes#4401, distributionCenters#4402, assignedArticleHierarchyNodes#4403, minOrderQtySetting#4404, minOrderQtySettingInternal#4405, listingCheck#4406, odsSelection#4407, demandProfiles#4408, constraintProfiles#4409, optimizationProfiles#4410, orderGroupSplitProfiles#4411, supplierMinimumProfiles#4412, multipleRestrictionProfiles#4413, preferredUomSource#4414, handlingOfUnfulfilledDemands#4415, negligibleQuantitiesThreshold#4416, eventtype#4417]
(929) Project
Arguments: [distributionCenters#4402]
(930) Generate
Arguments: explode(distributionCenters#4402), false, [distributionCenters#4418]
(931) Project
Arguments: [distributionCenters#4418]
(932) Generate
Arguments: explode(distributionCenters#4418.storageLocations), false, [storageLocations#4419]
(933) Project
Arguments: [distributionCenters#4418.id AS plantId#4420, distributionCenters#4418.internalRefUUID AS plantUuid#4421, storageLocations#4419]
(934) Project
Arguments: [plantId#4420, plantUuid#4421, storageLocations#4419.id AS storageLocId#4422, storageLocations#4419.internalRefUUID AS storageLocUuid#4423]
(935) LogicalRelation
Arguments: parquet, [product#4424, plant#4425, orderDateTime#4426, planningStartDateTime#4427], false
(936) RepartitionByExpression
Arguments: [product#4424, plant#4425], 10
(937) Project
Arguments: [product#4424, plant#4425, orderDateTime#4426]
(938) LogicalRelation
Arguments: parquet, [systemId#4428, internalUUID#4429, plant#4430, product#4431, blockedForReplenishmentStartingFrom#4432, productionAspect#4433, salesPlant#4434, listing#4435], false
(939) Repartition
Arguments: 10, true
(940) Project
Arguments: [systemId#4428, internalUUID#4429, plant#4430, product#4431, blockedForReplenishmentStartingFrom#4432, productionAspect#4433, salesPlant#4434, listing#4435, struct(systemId, systemId#4428, internalUUID, internalUUID#4429, plant, plant#4430, product, product#4431, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#4432, productionAspect, productionAspect#4433, salesPlant, salesPlant#4434, listing, listing#4435) AS productPlant#4436]
(941) Project
Arguments: [productPlant#4436]
(942) Join
Arguments: LeftOuter, ((product#4424 <=> productPlant#4436.product.internalRefUUID) AND (plant#4425 <=> productPlant#4436.plant.internalRefUUID))
(943) Project
Arguments: [product#4424, plant#4425, orderDateTime#4426, productPlant#4436]
(944) SubqueryAlias
Arguments: wl
(945) LogicalRelation
Arguments: parquet, [systemId#4437, internalUUID#4438, id#4439, displayId#4440, name#4441, category#4442, companyCode#4443, address#4444, mainDistributionChain#4445, mainPurchasingOrganization#4446, validPurchasingOrganizations#4447, productGroup#4448], false
(946) Repartition
Arguments: 10, true
(947) Project
Arguments: [internalUUID#4438, address#4444.timeZone.code AS timezonecode#4449]
(948) Join
Arguments: LeftOuter, (plant#4425 <=> internalUUID#4438)
(949) Project
Arguments: [product#4424, plant#4425, orderDateTime#4426, productPlant#4436, internalUUID#4438, CASE WHEN isnotnull(timezonecode#4449) THEN timezonecode#4449 ELSE UTC END AS timezonecode#4450]
(950) Project
Arguments: [product#4424, plant#4425, orderDateTime#4426, productPlant#4436, timezonecode#4450]
(951) LogicalRelation
Arguments: parquet, [systemId#4451, internalUUID#4452, id#4453, displayId#4454, name#4455, baseUnitOfMeasure#4456, unitOfMeasures#4457, unitOfMeasureConversions#4458, productionAspect#4459, salesAspect#4460, procurementAspect#4461, productGroup#4462], false
(952) Repartition
Arguments: 10, true
(953) Join
Arguments: LeftOuter, (product#4424 = internalUUID#4452)
(954) Project
Arguments: [product#4424, plant#4425, orderDateTime#4426, productPlant#4436, timezonecode#4450, systemId#4451, internalUUID#4452, id#4453, displayId#4454, name#4455, baseUnitOfMeasure#4456, unitOfMeasures#4457, unitOfMeasureConversions#4458, productionAspect#4459, salesAspect#4460, procurementAspect#4461, productGroup#4462, filter(unitOfMeasureConversions#4458, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#4436.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#4436.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4456.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4456.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4463]
(955) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4463.quantityNumerator), true, [quantityNumerator#4464]
(956) Project
Arguments: [product#4424, plant#4425, orderDateTime#4426, productPlant#4436, timezonecode#4450, systemId#4451, internalUUID#4452, id#4453, displayId#4454, name#4455, baseUnitOfMeasure#4456, unitOfMeasures#4457, unitOfMeasureConversions#4458, productionAspect#4459, salesAspect#4460, procurementAspect#4461, productGroup#4462, filteredUnitOfMeasureConversions#4463, quantityNumerator#4464]
(957) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4463.quantityDenominator), true, [quantityDenominator#4465]
(958) Project
Arguments: [product#4424, plant#4425, orderDateTime#4426, productPlant#4436, timezonecode#4450, systemId#4451, internalUUID#4452, id#4453, displayId#4454, name#4455, baseUnitOfMeasure#4456, unitOfMeasures#4457, unitOfMeasureConversions#4458, productionAspect#4459, salesAspect#4460, procurementAspect#4461, productGroup#4462, filteredUnitOfMeasureConversions#4463, quantityNumerator#4464, quantityDenominator#4465]
(959) Project
Arguments: [product#4424, plant#4425, orderDateTime#4426, productPlant#4436, timezonecode#4450, systemId#4451, internalUUID#4452, id#4453, displayId#4454, name#4455, baseUnitOfMeasure#4456, unitOfMeasures#4457, unitOfMeasureConversions#4458, productionAspect#4459, salesAspect#4460, procurementAspect#4461, productGroup#4462, filteredUnitOfMeasureConversions#4463, quantityNumerator#4464, quantityDenominator#4465, (cast(quantityNumerator#4464 as double) / cast(quantityDenominator#4465 as double)) AS outboundUnit#4466]
(960) Project
Arguments: [product#4424, plant#4425, orderDateTime#4426, productPlant#4436, timezonecode#4450, systemId#4451, internalUUID#4452, id#4453, displayId#4454, name#4455, baseUnitOfMeasure#4456, unitOfMeasures#4457, unitOfMeasureConversions#4458, productionAspect#4459, salesAspect#4460, procurementAspect#4461, productGroup#4462, filteredUnitOfMeasureConversions#4463, quantityNumerator#4464, quantityDenominator#4465, CASE WHEN (isnull(outboundUnit#4466) OR (outboundUnit#4466 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#4466 END AS outboundUnit#4467]
(961) Project
Arguments: [product#4424, plant#4425, orderDateTime#4426, productPlant#4436, timezonecode#4450, outboundUnit#4467]
(962) Project
Arguments: [plant#4425]
(963) Deduplicate
Arguments: [plant#4425]
(964) Join
Arguments: Inner, (plantUuid#4421 = plant#4425)
(965) Project
Arguments: [plantId#4420, plantUuid#4421, storageLocId#4422, storageLocUuid#4423]
(966) Join
Arguments: Inner, (plant#4393.internalRefUUID <=> plantUuid#4421)
(967) Generate
Arguments: explode(filter(stockQuantities#4395, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#4423) AND (lambda x#1207.storageLocation.Id = storageLocId#4422)), lambda x#1207, false))), false, [stockQuantity#4468]
(968) Project
Arguments: [systemId#4390, internalUUID#4391, product#4392, plant#4393, calculationDateTime#4394, stockQuantities#4395, plantId#4420, plantUuid#4421, storageLocId#4422, storageLocUuid#4423, stockQuantity#4468]
(969) Aggregate
Arguments: [plantUuid#4421, internalUUID#4391, plant#4393, product#4392, systemId#4390], [plantUuid#4421, internalUUID#4391, plant#4393, product#4392, systemId#4390, first(calculationDateTime#4394, false) AS calculationDateTime#4469, collect_list(stockQuantity#4468, 0, 0) AS stockQuantities#4470]
(970) Project
Arguments: [systemId#4390, internalUUID#4391, product#4392, plant#4393, calculationDateTime#4469, stockQuantities#4470]
(971) Generate
Arguments: explode(stockQuantities#4470), false, [stockQuantity#4471]
(972) Project
Arguments: [systemId#4390, internalUUID#4391, product#4392, plant#4393, calculationDateTime#4469, stockQuantities#4470, stockQuantity#4471]
(973) Project
Arguments: [plant#4393.id AS plant#4472, plant#4393.internalRefUUID AS plantUuid#4473, product#4392.id AS product#4474, product#4392.internalRefUUID AS productUuid#4475, calculationDateTime#4469, stockQuantity#4471.storagelocation.id AS storageLocId#4476, stockQuantity#4471.storagelocation.internalRefUUID AS storageLocUuid#4477, stockQuantity#4471.quantity.measure AS quantity#4478, stockQuantity#4471.specialStockIndicator.code AS specialStockIndicator#4479, stockQuantity#4471.stockType.code AS stockType#4480]
(974) Filter
Arguments: ((specialStockIndicator#4479 = ) AND (stockType#4480 = 01))
(975) LogicalRelation
Arguments: parquet, [product#4481, plant#4482, orderDateTime#4483, planningStartDateTime#4484], false
(976) RepartitionByExpression
Arguments: [product#4481, plant#4482], 10
(977) Project
Arguments: [product#4481, plant#4482, orderDateTime#4483]
(978) LogicalRelation
Arguments: parquet, [systemId#4485, internalUUID#4486, plant#4487, product#4488, blockedForReplenishmentStartingFrom#4489, productionAspect#4490, salesPlant#4491, listing#4492], false
(979) Repartition
Arguments: 10, true
(980) Project
Arguments: [systemId#4485, internalUUID#4486, plant#4487, product#4488, blockedForReplenishmentStartingFrom#4489, productionAspect#4490, salesPlant#4491, listing#4492, struct(systemId, systemId#4485, internalUUID, internalUUID#4486, plant, plant#4487, product, product#4488, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#4489, productionAspect, productionAspect#4490, salesPlant, salesPlant#4491, listing, listing#4492) AS productPlant#4493]
(981) Project
Arguments: [productPlant#4493]
(982) Join
Arguments: LeftOuter, ((product#4481 <=> productPlant#4493.product.internalRefUUID) AND (plant#4482 <=> productPlant#4493.plant.internalRefUUID))
(983) Project
Arguments: [product#4481, plant#4482, orderDateTime#4483, productPlant#4493]
(984) SubqueryAlias
Arguments: wl
(985) LogicalRelation
Arguments: parquet, [systemId#4494, internalUUID#4495, id#4496, displayId#4497, name#4498, category#4499, companyCode#4500, address#4501, mainDistributionChain#4502, mainPurchasingOrganization#4503, validPurchasingOrganizations#4504, productGroup#4505], false
(986) Repartition
Arguments: 10, true
(987) Project
Arguments: [internalUUID#4495, address#4501.timeZone.code AS timezonecode#4506]
(988) Join
Arguments: LeftOuter, (plant#4482 <=> internalUUID#4495)
(989) Project
Arguments: [product#4481, plant#4482, orderDateTime#4483, productPlant#4493, internalUUID#4495, CASE WHEN isnotnull(timezonecode#4506) THEN timezonecode#4506 ELSE UTC END AS timezonecode#4507]
(990) Project
Arguments: [product#4481, plant#4482, orderDateTime#4483, productPlant#4493, timezonecode#4507]
(991) LogicalRelation
Arguments: parquet, [systemId#4508, internalUUID#4509, id#4510, displayId#4511, name#4512, baseUnitOfMeasure#4513, unitOfMeasures#4514, unitOfMeasureConversions#4515, productionAspect#4516, salesAspect#4517, procurementAspect#4518, productGroup#4519], false
(992) Repartition
Arguments: 10, true
(993) Join
Arguments: LeftOuter, (product#4481 = internalUUID#4509)
(994) Project
Arguments: [product#4481, plant#4482, orderDateTime#4483, productPlant#4493, timezonecode#4507, systemId#4508, internalUUID#4509, id#4510, displayId#4511, name#4512, baseUnitOfMeasure#4513, unitOfMeasures#4514, unitOfMeasureConversions#4515, productionAspect#4516, salesAspect#4517, procurementAspect#4518, productGroup#4519, filter(unitOfMeasureConversions#4515, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#4493.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#4493.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4513.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4513.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4520]
(995) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4520.quantityNumerator), true, [quantityNumerator#4521]
(996) Project
Arguments: [product#4481, plant#4482, orderDateTime#4483, productPlant#4493, timezonecode#4507, systemId#4508, internalUUID#4509, id#4510, displayId#4511, name#4512, baseUnitOfMeasure#4513, unitOfMeasures#4514, unitOfMeasureConversions#4515, productionAspect#4516, salesAspect#4517, procurementAspect#4518, productGroup#4519, filteredUnitOfMeasureConversions#4520, quantityNumerator#4521]
(997) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4520.quantityDenominator), true, [quantityDenominator#4522]
(998) Project
Arguments: [product#4481, plant#4482, orderDateTime#4483, productPlant#4493, timezonecode#4507, systemId#4508, internalUUID#4509, id#4510, displayId#4511, name#4512, baseUnitOfMeasure#4513, unitOfMeasures#4514, unitOfMeasureConversions#4515, productionAspect#4516, salesAspect#4517, procurementAspect#4518, productGroup#4519, filteredUnitOfMeasureConversions#4520, quantityNumerator#4521, quantityDenominator#4522]
(999) Project
Arguments: [product#4481, plant#4482, orderDateTime#4483, productPlant#4493, timezonecode#4507, systemId#4508, internalUUID#4509, id#4510, displayId#4511, name#4512, baseUnitOfMeasure#4513, unitOfMeasures#4514, unitOfMeasureConversions#4515, productionAspect#4516, salesAspect#4517, procurementAspect#4518, productGroup#4519, filteredUnitOfMeasureConversions#4520, quantityNumerator#4521, quantityDenominator#4522, (cast(quantityNumerator#4521 as double) / cast(quantityDenominator#4522 as double)) AS outboundUnit#4523]
(1000) Project
Arguments: [product#4481, plant#4482, orderDateTime#4483, productPlant#4493, timezonecode#4507, systemId#4508, internalUUID#4509, id#4510, displayId#4511, name#4512, baseUnitOfMeasure#4513, unitOfMeasures#4514, unitOfMeasureConversions#4515, productionAspect#4516, salesAspect#4517, procurementAspect#4518, productGroup#4519, filteredUnitOfMeasureConversions#4520, quantityNumerator#4521, quantityDenominator#4522, CASE WHEN (isnull(outboundUnit#4523) OR (outboundUnit#4523 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#4523 END AS outboundUnit#4524]
(1001) Project
Arguments: [product#4481, plant#4482, orderDateTime#4483, productPlant#4493, timezonecode#4507, outboundUnit#4524]
(1002) Join
Arguments: Inner, ((plantUuid#4473 = plant#4482) AND (productUuid#4475 = product#4481))
(1003) Filter
Arguments: (calculationDateTime#4469 <= orderDateTime#4483)
(1004) Project
Arguments: [plantUuid#4473 AS plant#4525, productUuid#4475 AS product#4526, storageLocId#4476, calculationDateTime#4469, quantity#4478]
(1005) LogicalRelation
Arguments: parquet, [systemId#4527, internalUUID#4528, product#4529, plant#4530, calculationDateTime#4531, stockQuantities#4532], false
(1006) Repartition
Arguments: 10, true
(1007) LogicalRelation
Arguments: parquet, [marketUnit#4533, description#4534, articleHierarchy#4535, defaultCurrency#4536, responsibilities#4537, replenishmentTypes#4538, distributionCenters#4539, assignedArticleHierarchyNodes#4540, minOrderQtySetting#4541, minOrderQtySettingInternal#4542, listingCheck#4543, odsSelection#4544, demandProfiles#4545, constraintProfiles#4546, optimizationProfiles#4547, orderGroupSplitProfiles#4548, supplierMinimumProfiles#4549, multipleRestrictionProfiles#4550, preferredUomSource#4551, handlingOfUnfulfilledDemands#4552, negligibleQuantitiesThreshold#4553, eventtype#4554], false
(1008) Repartition
Arguments: 10, true
(1009) Filter
Arguments: (marketUnit#4533 <=> DIP_1691)
(1010) Project
Arguments: [marketUnit#4533, description#4534, articleHierarchy#4535, defaultCurrency#4536, responsibilities#4537, replenishmentTypes#4538, distributionCenters#4539, assignedArticleHierarchyNodes#4540, minOrderQtySetting#4541, minOrderQtySettingInternal#4542, listingCheck#4543, odsSelection#4544, demandProfiles#4545, constraintProfiles#4546, optimizationProfiles#4547, orderGroupSplitProfiles#4548, supplierMinimumProfiles#4549, multipleRestrictionProfiles#4550, preferredUomSource#4551, handlingOfUnfulfilledDemands#4552, negligibleQuantitiesThreshold#4553, eventtype#4554]
(1011) Project
Arguments: [distributionCenters#4539]
(1012) Generate
Arguments: explode(distributionCenters#4539), false, [distributionCenters#4555]
(1013) Project
Arguments: [distributionCenters#4555]
(1014) Generate
Arguments: explode(distributionCenters#4555.storageLocations), false, [storageLocations#4556]
(1015) Project
Arguments: [distributionCenters#4555.id AS plantId#4557, distributionCenters#4555.internalRefUUID AS plantUuid#4558, storageLocations#4556]
(1016) Project
Arguments: [plantId#4557, plantUuid#4558, storageLocations#4556.id AS storageLocId#4559, storageLocations#4556.internalRefUUID AS storageLocUuid#4560]
(1017) LogicalRelation
Arguments: parquet, [product#4561, plant#4562, orderDateTime#4563, planningStartDateTime#4564], false
(1018) RepartitionByExpression
Arguments: [product#4561, plant#4562], 10
(1019) Project
Arguments: [product#4561, plant#4562, orderDateTime#4563]
(1020) LogicalRelation
Arguments: parquet, [systemId#4565, internalUUID#4566, plant#4567, product#4568, blockedForReplenishmentStartingFrom#4569, productionAspect#4570, salesPlant#4571, listing#4572], false
(1021) Repartition
Arguments: 10, true
(1022) Project
Arguments: [systemId#4565, internalUUID#4566, plant#4567, product#4568, blockedForReplenishmentStartingFrom#4569, productionAspect#4570, salesPlant#4571, listing#4572, struct(systemId, systemId#4565, internalUUID, internalUUID#4566, plant, plant#4567, product, product#4568, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#4569, productionAspect, productionAspect#4570, salesPlant, salesPlant#4571, listing, listing#4572) AS productPlant#4573]
(1023) Project
Arguments: [productPlant#4573]
(1024) Join
Arguments: LeftOuter, ((product#4561 <=> productPlant#4573.product.internalRefUUID) AND (plant#4562 <=> productPlant#4573.plant.internalRefUUID))
(1025) Project
Arguments: [product#4561, plant#4562, orderDateTime#4563, productPlant#4573]
(1026) SubqueryAlias
Arguments: wl
(1027) LogicalRelation
Arguments: parquet, [systemId#4574, internalUUID#4575, id#4576, displayId#4577, name#4578, category#4579, companyCode#4580, address#4581, mainDistributionChain#4582, mainPurchasingOrganization#4583, validPurchasingOrganizations#4584, productGroup#4585], false
(1028) Repartition
Arguments: 10, true
(1029) Project
Arguments: [internalUUID#4575, address#4581.timeZone.code AS timezonecode#4586]
(1030) Join
Arguments: LeftOuter, (plant#4562 <=> internalUUID#4575)
(1031) Project
Arguments: [product#4561, plant#4562, orderDateTime#4563, productPlant#4573, internalUUID#4575, CASE WHEN isnotnull(timezonecode#4586) THEN timezonecode#4586 ELSE UTC END AS timezonecode#4587]
(1032) Project
Arguments: [product#4561, plant#4562, orderDateTime#4563, productPlant#4573, timezonecode#4587]
(1033) LogicalRelation
Arguments: parquet, [systemId#4588, internalUUID#4589, id#4590, displayId#4591, name#4592, baseUnitOfMeasure#4593, unitOfMeasures#4594, unitOfMeasureConversions#4595, productionAspect#4596, salesAspect#4597, procurementAspect#4598, productGroup#4599], false
(1034) Repartition
Arguments: 10, true
(1035) Join
Arguments: LeftOuter, (product#4561 = internalUUID#4589)
(1036) Project
Arguments: [product#4561, plant#4562, orderDateTime#4563, productPlant#4573, timezonecode#4587, systemId#4588, internalUUID#4589, id#4590, displayId#4591, name#4592, baseUnitOfMeasure#4593, unitOfMeasures#4594, unitOfMeasureConversions#4595, productionAspect#4596, salesAspect#4597, procurementAspect#4598, productGroup#4599, filter(unitOfMeasureConversions#4595, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#4573.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#4573.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4593.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4593.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4600]
(1037) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4600.quantityNumerator), true, [quantityNumerator#4601]
(1038) Project
Arguments: [product#4561, plant#4562, orderDateTime#4563, productPlant#4573, timezonecode#4587, systemId#4588, internalUUID#4589, id#4590, displayId#4591, name#4592, baseUnitOfMeasure#4593, unitOfMeasures#4594, unitOfMeasureConversions#4595, productionAspect#4596, salesAspect#4597, procurementAspect#4598, productGroup#4599, filteredUnitOfMeasureConversions#4600, quantityNumerator#4601]
(1039) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4600.quantityDenominator), true, [quantityDenominator#4602]
(1040) Project
Arguments: [product#4561, plant#4562, orderDateTime#4563, productPlant#4573, timezonecode#4587, systemId#4588, internalUUID#4589, id#4590, displayId#4591, name#4592, baseUnitOfMeasure#4593, unitOfMeasures#4594, unitOfMeasureConversions#4595, productionAspect#4596, salesAspect#4597, procurementAspect#4598, productGroup#4599, filteredUnitOfMeasureConversions#4600, quantityNumerator#4601, quantityDenominator#4602]
(1041) Project
Arguments: [product#4561, plant#4562, orderDateTime#4563, productPlant#4573, timezonecode#4587, systemId#4588, internalUUID#4589, id#4590, displayId#4591, name#4592, baseUnitOfMeasure#4593, unitOfMeasures#4594, unitOfMeasureConversions#4595, productionAspect#4596, salesAspect#4597, procurementAspect#4598, productGroup#4599, filteredUnitOfMeasureConversions#4600, quantityNumerator#4601, quantityDenominator#4602, (cast(quantityNumerator#4601 as double) / cast(quantityDenominator#4602 as double)) AS outboundUnit#4603]
(1042) Project
Arguments: [product#4561, plant#4562, orderDateTime#4563, productPlant#4573, timezonecode#4587, systemId#4588, internalUUID#4589, id#4590, displayId#4591, name#4592, baseUnitOfMeasure#4593, unitOfMeasures#4594, unitOfMeasureConversions#4595, productionAspect#4596, salesAspect#4597, procurementAspect#4598, productGroup#4599, filteredUnitOfMeasureConversions#4600, quantityNumerator#4601, quantityDenominator#4602, CASE WHEN (isnull(outboundUnit#4603) OR (outboundUnit#4603 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#4603 END AS outboundUnit#4604]
(1043) Project
Arguments: [product#4561, plant#4562, orderDateTime#4563, productPlant#4573, timezonecode#4587, outboundUnit#4604]
(1044) Project
Arguments: [plant#4562]
(1045) Deduplicate
Arguments: [plant#4562]
(1046) Join
Arguments: Inner, (plantUuid#4558 = plant#4562)
(1047) Project
Arguments: [plantId#4557, plantUuid#4558, storageLocId#4559, storageLocUuid#4560]
(1048) Join
Arguments: Inner, (plant#4530.internalRefUUID <=> plantUuid#4558)
(1049) Generate
Arguments: explode(filter(stockQuantities#4532, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#4560) AND (lambda x#1207.storageLocation.Id = storageLocId#4559)), lambda x#1207, false))), false, [stockQuantity#4605]
(1050) Project
Arguments: [systemId#4527, internalUUID#4528, product#4529, plant#4530, calculationDateTime#4531, stockQuantities#4532, plantId#4557, plantUuid#4558, storageLocId#4559, storageLocUuid#4560, stockQuantity#4605]
(1051) Aggregate
Arguments: [plantUuid#4558, internalUUID#4528, plant#4530, product#4529, systemId#4527], [plantUuid#4558, internalUUID#4528, plant#4530, product#4529, systemId#4527, first(calculationDateTime#4531, false) AS calculationDateTime#4606, collect_list(stockQuantity#4605, 0, 0) AS stockQuantities#4607]
(1052) Project
Arguments: [systemId#4527, internalUUID#4528, product#4529, plant#4530, calculationDateTime#4606, stockQuantities#4607]
(1053) Generate
Arguments: explode(stockQuantities#4607), false, [stockQuantity#4608]
(1054) Project
Arguments: [systemId#4527, internalUUID#4528, product#4529, plant#4530, calculationDateTime#4606, stockQuantities#4607, stockQuantity#4608]
(1055) Project
Arguments: [plant#4530.id AS plant#4609, plant#4530.internalRefUUID AS plantUuid#4610, product#4529.id AS product#4611, product#4529.internalRefUUID AS productUuid#4612, calculationDateTime#4606, stockQuantity#4608.storagelocation.id AS storageLocId#4613, stockQuantity#4608.storagelocation.internalRefUUID AS storageLocUuid#4614, stockQuantity#4608.quantity.measure AS quantity#4615, stockQuantity#4608.specialStockIndicator.code AS specialStockIndicator#4616, stockQuantity#4608.stockType.code AS stockType#4617]
(1056) Filter
Arguments: ((specialStockIndicator#4616 = ) AND (stockType#4617 = 01))
(1057) LogicalRelation
Arguments: parquet, [product#4618, plant#4619, orderDateTime#4620, planningStartDateTime#4621], false
(1058) RepartitionByExpression
Arguments: [product#4618, plant#4619], 10
(1059) Project
Arguments: [product#4618, plant#4619, orderDateTime#4620]
(1060) LogicalRelation
Arguments: parquet, [systemId#4622, internalUUID#4623, plant#4624, product#4625, blockedForReplenishmentStartingFrom#4626, productionAspect#4627, salesPlant#4628, listing#4629], false
(1061) Repartition
Arguments: 10, true
(1062) Project
Arguments: [systemId#4622, internalUUID#4623, plant#4624, product#4625, blockedForReplenishmentStartingFrom#4626, productionAspect#4627, salesPlant#4628, listing#4629, struct(systemId, systemId#4622, internalUUID, internalUUID#4623, plant, plant#4624, product, product#4625, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#4626, productionAspect, productionAspect#4627, salesPlant, salesPlant#4628, listing, listing#4629) AS productPlant#4630]
(1063) Project
Arguments: [productPlant#4630]
(1064) Join
Arguments: LeftOuter, ((product#4618 <=> productPlant#4630.product.internalRefUUID) AND (plant#4619 <=> productPlant#4630.plant.internalRefUUID))
(1065) Project
Arguments: [product#4618, plant#4619, orderDateTime#4620, productPlant#4630]
(1066) SubqueryAlias
Arguments: wl
(1067) LogicalRelation
Arguments: parquet, [systemId#4631, internalUUID#4632, id#4633, displayId#4634, name#4635, category#4636, companyCode#4637, address#4638, mainDistributionChain#4639, mainPurchasingOrganization#4640, validPurchasingOrganizations#4641, productGroup#4642], false
(1068) Repartition
Arguments: 10, true
(1069) Project
Arguments: [internalUUID#4632, address#4638.timeZone.code AS timezonecode#4643]
(1070) Join
Arguments: LeftOuter, (plant#4619 <=> internalUUID#4632)
(1071) Project
Arguments: [product#4618, plant#4619, orderDateTime#4620, productPlant#4630, internalUUID#4632, CASE WHEN isnotnull(timezonecode#4643) THEN timezonecode#4643 ELSE UTC END AS timezonecode#4644]
(1072) Project
Arguments: [product#4618, plant#4619, orderDateTime#4620, productPlant#4630, timezonecode#4644]
(1073) LogicalRelation
Arguments: parquet, [systemId#4645, internalUUID#4646, id#4647, displayId#4648, name#4649, baseUnitOfMeasure#4650, unitOfMeasures#4651, unitOfMeasureConversions#4652, productionAspect#4653, salesAspect#4654, procurementAspect#4655, productGroup#4656], false
(1074) Repartition
Arguments: 10, true
(1075) Join
Arguments: LeftOuter, (product#4618 = internalUUID#4646)
(1076) Project
Arguments: [product#4618, plant#4619, orderDateTime#4620, productPlant#4630, timezonecode#4644, systemId#4645, internalUUID#4646, id#4647, displayId#4648, name#4649, baseUnitOfMeasure#4650, unitOfMeasures#4651, unitOfMeasureConversions#4652, productionAspect#4653, salesAspect#4654, procurementAspect#4655, productGroup#4656, filter(unitOfMeasureConversions#4652, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#4630.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#4630.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4650.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4650.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4657]
(1077) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4657.quantityNumerator), true, [quantityNumerator#4658]
(1078) Project
Arguments: [product#4618, plant#4619, orderDateTime#4620, productPlant#4630, timezonecode#4644, systemId#4645, internalUUID#4646, id#4647, displayId#4648, name#4649, baseUnitOfMeasure#4650, unitOfMeasures#4651, unitOfMeasureConversions#4652, productionAspect#4653, salesAspect#4654, procurementAspect#4655, productGroup#4656, filteredUnitOfMeasureConversions#4657, quantityNumerator#4658]
(1079) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4657.quantityDenominator), true, [quantityDenominator#4659]
(1080) Project
Arguments: [product#4618, plant#4619, orderDateTime#4620, productPlant#4630, timezonecode#4644, systemId#4645, internalUUID#4646, id#4647, displayId#4648, name#4649, baseUnitOfMeasure#4650, unitOfMeasures#4651, unitOfMeasureConversions#4652, productionAspect#4653, salesAspect#4654, procurementAspect#4655, productGroup#4656, filteredUnitOfMeasureConversions#4657, quantityNumerator#4658, quantityDenominator#4659]
(1081) Project
Arguments: [product#4618, plant#4619, orderDateTime#4620, productPlant#4630, timezonecode#4644, systemId#4645, internalUUID#4646, id#4647, displayId#4648, name#4649, baseUnitOfMeasure#4650, unitOfMeasures#4651, unitOfMeasureConversions#4652, productionAspect#4653, salesAspect#4654, procurementAspect#4655, productGroup#4656, filteredUnitOfMeasureConversions#4657, quantityNumerator#4658, quantityDenominator#4659, (cast(quantityNumerator#4658 as double) / cast(quantityDenominator#4659 as double)) AS outboundUnit#4660]
(1082) Project
Arguments: [product#4618, plant#4619, orderDateTime#4620, productPlant#4630, timezonecode#4644, systemId#4645, internalUUID#4646, id#4647, displayId#4648, name#4649, baseUnitOfMeasure#4650, unitOfMeasures#4651, unitOfMeasureConversions#4652, productionAspect#4653, salesAspect#4654, procurementAspect#4655, productGroup#4656, filteredUnitOfMeasureConversions#4657, quantityNumerator#4658, quantityDenominator#4659, CASE WHEN (isnull(outboundUnit#4660) OR (outboundUnit#4660 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#4660 END AS outboundUnit#4661]
(1083) Project
Arguments: [product#4618, plant#4619, orderDateTime#4620, productPlant#4630, timezonecode#4644, outboundUnit#4661]
(1084) Join
Arguments: Inner, ((plantUuid#4610 = plant#4619) AND (productUuid#4612 = product#4618))
(1085) Filter
Arguments: (calculationDateTime#4606 <= orderDateTime#4620)
(1086) Project
Arguments: [plantUuid#4610 AS plant#4662, productUuid#4612 AS product#4663, storageLocId#4613, calculationDateTime#4606, quantity#4615]
(1087) Aggregate
Arguments: [plant#4662, product#4663, storageLocId#4613], [plant#4662, product#4663, storageLocId#4613, max(calculationDateTime#4606) AS max_calc_datetime#4664]
(1088) Join
Arguments: Inner, ((((plant#4525 <=> plant#4662) AND (product#4526 <=> product#4663)) AND (storageLocId#4476 <=> storageLocId#4613)) AND (calculationDateTime#4469 <=> max_calc_datetime#4664))
(1089) Project
Arguments: [plant#4525, product#4526, storageLocId#4476, calculationDateTime#4469, quantity#4478]
(1090) Aggregate
Arguments: [product#4526, plant#4525], [product#4526, plant#4525, sum(quantity#4478) AS quantitySum#4665, min(calculationDateTime#4469) AS minCalculationDateTime#4666]
(1091) Project
Arguments: [product#4526, plant#4525, quantitySum#4665, minCalculationDateTime#4666, round(quantitySum#4665, 0) AS roundedQuantitySum#4667]
(1092) Join
Arguments: LeftOuter, ((plant#4347 = plant#4525) AND (product#4346 = product#4526))
(1093) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, outboundUnit#4389, roundedQuantitySum#4667, minCalculationDateTime#4666]
(1094) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, outboundUnit#4389, roundedQuantitySum#4667, minCalculationDateTime#4666, CASE WHEN isnotnull(minCalculationDateTime#4666) THEN minCalculationDateTime#4666 ELSE orderDateTime#4348 END AS stockDatetime#4668]
(1095) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, outboundUnit#4389, roundedQuantitySum#4667, minCalculationDateTime#4666, stockDatetime#4668, CASE WHEN isnotnull(roundedQuantitySum#4667) THEN array(roundedQuantitySum#4667) ELSE array(0.0) END AS stockBatchQuantities#4669]
(1096) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, outboundUnit#4389, roundedQuantitySum#4667, minCalculationDateTime#4666, stockDatetime#4668, stockBatchQuantities#4669, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#4670]
(1097) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, outboundUnit#4389, roundedQuantitySum#4667, stockDatetime#4668, stockBatchQuantities#4669, stockBatchShelfLifeEndDatetimes#4670]
(1098) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, outboundUnit#4389, stockDatetime#4668, stockBatchQuantities#4669, stockBatchShelfLifeEndDatetimes#4670]
(1099) LogicalRelation
Arguments: parquet, [product#4671, plant#4672, orderDateTime#4673, planningStartDateTime#4674], false
(1100) RepartitionByExpression
Arguments: [product#4671, plant#4672], 10
(1101) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673]
(1102) LogicalRelation
Arguments: parquet, [systemId#4675, internalUUID#4676, plant#4677, product#4678, blockedForReplenishmentStartingFrom#4679, productionAspect#4680, salesPlant#4681, listing#4682], false
(1103) Repartition
Arguments: 10, true
(1104) Project
Arguments: [systemId#4675, internalUUID#4676, plant#4677, product#4678, blockedForReplenishmentStartingFrom#4679, productionAspect#4680, salesPlant#4681, listing#4682, struct(systemId, systemId#4675, internalUUID, internalUUID#4676, plant, plant#4677, product, product#4678, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#4679, productionAspect, productionAspect#4680, salesPlant, salesPlant#4681, listing, listing#4682) AS productPlant#4683]
(1105) Project
Arguments: [productPlant#4683]
(1106) Join
Arguments: LeftOuter, ((product#4671 <=> productPlant#4683.product.internalRefUUID) AND (plant#4672 <=> productPlant#4683.plant.internalRefUUID))
(1107) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683]
(1108) SubqueryAlias
Arguments: wl
(1109) LogicalRelation
Arguments: parquet, [systemId#4684, internalUUID#4685, id#4686, displayId#4687, name#4688, category#4689, companyCode#4690, address#4691, mainDistributionChain#4692, mainPurchasingOrganization#4693, validPurchasingOrganizations#4694, productGroup#4695], false
(1110) Repartition
Arguments: 10, true
(1111) Project
Arguments: [internalUUID#4685, address#4691.timeZone.code AS timezonecode#4696]
(1112) Join
Arguments: LeftOuter, (plant#4672 <=> internalUUID#4685)
(1113) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, internalUUID#4685, CASE WHEN isnotnull(timezonecode#4696) THEN timezonecode#4696 ELSE UTC END AS timezonecode#4697]
(1114) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697]
(1115) LogicalRelation
Arguments: parquet, [systemId#4698, internalUUID#4699, id#4700, displayId#4701, name#4702, baseUnitOfMeasure#4703, unitOfMeasures#4704, unitOfMeasureConversions#4705, productionAspect#4706, salesAspect#4707, procurementAspect#4708, productGroup#4709], false
(1116) Repartition
Arguments: 10, true
(1117) Join
Arguments: LeftOuter, (product#4671 = internalUUID#4699)
(1118) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, systemId#4698, internalUUID#4699, id#4700, displayId#4701, name#4702, baseUnitOfMeasure#4703, unitOfMeasures#4704, unitOfMeasureConversions#4705, productionAspect#4706, salesAspect#4707, procurementAspect#4708, productGroup#4709, filter(unitOfMeasureConversions#4705, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#4683.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#4683.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4703.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4703.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4710]
(1119) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4710.quantityNumerator), true, [quantityNumerator#4711]
(1120) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, systemId#4698, internalUUID#4699, id#4700, displayId#4701, name#4702, baseUnitOfMeasure#4703, unitOfMeasures#4704, unitOfMeasureConversions#4705, productionAspect#4706, salesAspect#4707, procurementAspect#4708, productGroup#4709, filteredUnitOfMeasureConversions#4710, quantityNumerator#4711]
(1121) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4710.quantityDenominator), true, [quantityDenominator#4712]
(1122) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, systemId#4698, internalUUID#4699, id#4700, displayId#4701, name#4702, baseUnitOfMeasure#4703, unitOfMeasures#4704, unitOfMeasureConversions#4705, productionAspect#4706, salesAspect#4707, procurementAspect#4708, productGroup#4709, filteredUnitOfMeasureConversions#4710, quantityNumerator#4711, quantityDenominator#4712]
(1123) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, systemId#4698, internalUUID#4699, id#4700, displayId#4701, name#4702, baseUnitOfMeasure#4703, unitOfMeasures#4704, unitOfMeasureConversions#4705, productionAspect#4706, salesAspect#4707, procurementAspect#4708, productGroup#4709, filteredUnitOfMeasureConversions#4710, quantityNumerator#4711, quantityDenominator#4712, (cast(quantityNumerator#4711 as double) / cast(quantityDenominator#4712 as double)) AS outboundUnit#4713]
(1124) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, systemId#4698, internalUUID#4699, id#4700, displayId#4701, name#4702, baseUnitOfMeasure#4703, unitOfMeasures#4704, unitOfMeasureConversions#4705, productionAspect#4706, salesAspect#4707, procurementAspect#4708, productGroup#4709, filteredUnitOfMeasureConversions#4710, quantityNumerator#4711, quantityDenominator#4712, CASE WHEN (isnull(outboundUnit#4713) OR (outboundUnit#4713 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#4713 END AS outboundUnit#4714]
(1125) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714]
(1126) LogicalRelation
Arguments: parquet, [systemId#4715, internalUUID#4716, product#4717, plant#4718, calculationDateTime#4719, stockQuantities#4720], false
(1127) Repartition
Arguments: 10, true
(1128) LogicalRelation
Arguments: parquet, [marketUnit#4721, description#4722, articleHierarchy#4723, defaultCurrency#4724, responsibilities#4725, replenishmentTypes#4726, distributionCenters#4727, assignedArticleHierarchyNodes#4728, minOrderQtySetting#4729, minOrderQtySettingInternal#4730, listingCheck#4731, odsSelection#4732, demandProfiles#4733, constraintProfiles#4734, optimizationProfiles#4735, orderGroupSplitProfiles#4736, supplierMinimumProfiles#4737, multipleRestrictionProfiles#4738, preferredUomSource#4739, handlingOfUnfulfilledDemands#4740, negligibleQuantitiesThreshold#4741, eventtype#4742], false
(1129) Repartition
Arguments: 10, true
(1130) Filter
Arguments: (marketUnit#4721 <=> DIP_1691)
(1131) Project
Arguments: [marketUnit#4721, description#4722, articleHierarchy#4723, defaultCurrency#4724, responsibilities#4725, replenishmentTypes#4726, distributionCenters#4727, assignedArticleHierarchyNodes#4728, minOrderQtySetting#4729, minOrderQtySettingInternal#4730, listingCheck#4731, odsSelection#4732, demandProfiles#4733, constraintProfiles#4734, optimizationProfiles#4735, orderGroupSplitProfiles#4736, supplierMinimumProfiles#4737, multipleRestrictionProfiles#4738, preferredUomSource#4739, handlingOfUnfulfilledDemands#4740, negligibleQuantitiesThreshold#4741, eventtype#4742]
(1132) Project
Arguments: [distributionCenters#4727]
(1133) Generate
Arguments: explode(distributionCenters#4727), false, [distributionCenters#4743]
(1134) Project
Arguments: [distributionCenters#4743]
(1135) Generate
Arguments: explode(distributionCenters#4743.storageLocations), false, [storageLocations#4744]
(1136) Project
Arguments: [distributionCenters#4743.id AS plantId#4745, distributionCenters#4743.internalRefUUID AS plantUuid#4746, storageLocations#4744]
(1137) Project
Arguments: [plantId#4745, plantUuid#4746, storageLocations#4744.id AS storageLocId#4747, storageLocations#4744.internalRefUUID AS storageLocUuid#4748]
(1138) LogicalRelation
Arguments: parquet, [product#4749, plant#4750, orderDateTime#4751, planningStartDateTime#4752], false
(1139) RepartitionByExpression
Arguments: [product#4749, plant#4750], 10
(1140) Project
Arguments: [product#4749, plant#4750, orderDateTime#4751]
(1141) LogicalRelation
Arguments: parquet, [systemId#4753, internalUUID#4754, plant#4755, product#4756, blockedForReplenishmentStartingFrom#4757, productionAspect#4758, salesPlant#4759, listing#4760], false
(1142) Repartition
Arguments: 10, true
(1143) Project
Arguments: [systemId#4753, internalUUID#4754, plant#4755, product#4756, blockedForReplenishmentStartingFrom#4757, productionAspect#4758, salesPlant#4759, listing#4760, struct(systemId, systemId#4753, internalUUID, internalUUID#4754, plant, plant#4755, product, product#4756, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#4757, productionAspect, productionAspect#4758, salesPlant, salesPlant#4759, listing, listing#4760) AS productPlant#4761]
(1144) Project
Arguments: [productPlant#4761]
(1145) Join
Arguments: LeftOuter, ((product#4749 <=> productPlant#4761.product.internalRefUUID) AND (plant#4750 <=> productPlant#4761.plant.internalRefUUID))
(1146) Project
Arguments: [product#4749, plant#4750, orderDateTime#4751, productPlant#4761]
(1147) SubqueryAlias
Arguments: wl
(1148) LogicalRelation
Arguments: parquet, [systemId#4762, internalUUID#4763, id#4764, displayId#4765, name#4766, category#4767, companyCode#4768, address#4769, mainDistributionChain#4770, mainPurchasingOrganization#4771, validPurchasingOrganizations#4772, productGroup#4773], false
(1149) Repartition
Arguments: 10, true
(1150) Project
Arguments: [internalUUID#4763, address#4769.timeZone.code AS timezonecode#4774]
(1151) Join
Arguments: LeftOuter, (plant#4750 <=> internalUUID#4763)
(1152) Project
Arguments: [product#4749, plant#4750, orderDateTime#4751, productPlant#4761, internalUUID#4763, CASE WHEN isnotnull(timezonecode#4774) THEN timezonecode#4774 ELSE UTC END AS timezonecode#4775]
(1153) Project
Arguments: [product#4749, plant#4750, orderDateTime#4751, productPlant#4761, timezonecode#4775]
(1154) LogicalRelation
Arguments: parquet, [systemId#4776, internalUUID#4777, id#4778, displayId#4779, name#4780, baseUnitOfMeasure#4781, unitOfMeasures#4782, unitOfMeasureConversions#4783, productionAspect#4784, salesAspect#4785, procurementAspect#4786, productGroup#4787], false
(1155) Repartition
Arguments: 10, true
(1156) Join
Arguments: LeftOuter, (product#4749 = internalUUID#4777)
(1157) Project
Arguments: [product#4749, plant#4750, orderDateTime#4751, productPlant#4761, timezonecode#4775, systemId#4776, internalUUID#4777, id#4778, displayId#4779, name#4780, baseUnitOfMeasure#4781, unitOfMeasures#4782, unitOfMeasureConversions#4783, productionAspect#4784, salesAspect#4785, procurementAspect#4786, productGroup#4787, filter(unitOfMeasureConversions#4783, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#4761.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#4761.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4781.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4781.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4788]
(1158) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4788.quantityNumerator), true, [quantityNumerator#4789]
(1159) Project
Arguments: [product#4749, plant#4750, orderDateTime#4751, productPlant#4761, timezonecode#4775, systemId#4776, internalUUID#4777, id#4778, displayId#4779, name#4780, baseUnitOfMeasure#4781, unitOfMeasures#4782, unitOfMeasureConversions#4783, productionAspect#4784, salesAspect#4785, procurementAspect#4786, productGroup#4787, filteredUnitOfMeasureConversions#4788, quantityNumerator#4789]
(1160) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4788.quantityDenominator), true, [quantityDenominator#4790]
(1161) Project
Arguments: [product#4749, plant#4750, orderDateTime#4751, productPlant#4761, timezonecode#4775, systemId#4776, internalUUID#4777, id#4778, displayId#4779, name#4780, baseUnitOfMeasure#4781, unitOfMeasures#4782, unitOfMeasureConversions#4783, productionAspect#4784, salesAspect#4785, procurementAspect#4786, productGroup#4787, filteredUnitOfMeasureConversions#4788, quantityNumerator#4789, quantityDenominator#4790]
(1162) Project
Arguments: [product#4749, plant#4750, orderDateTime#4751, productPlant#4761, timezonecode#4775, systemId#4776, internalUUID#4777, id#4778, displayId#4779, name#4780, baseUnitOfMeasure#4781, unitOfMeasures#4782, unitOfMeasureConversions#4783, productionAspect#4784, salesAspect#4785, procurementAspect#4786, productGroup#4787, filteredUnitOfMeasureConversions#4788, quantityNumerator#4789, quantityDenominator#4790, (cast(quantityNumerator#4789 as double) / cast(quantityDenominator#4790 as double)) AS outboundUnit#4791]
(1163) Project
Arguments: [product#4749, plant#4750, orderDateTime#4751, productPlant#4761, timezonecode#4775, systemId#4776, internalUUID#4777, id#4778, displayId#4779, name#4780, baseUnitOfMeasure#4781, unitOfMeasures#4782, unitOfMeasureConversions#4783, productionAspect#4784, salesAspect#4785, procurementAspect#4786, productGroup#4787, filteredUnitOfMeasureConversions#4788, quantityNumerator#4789, quantityDenominator#4790, CASE WHEN (isnull(outboundUnit#4791) OR (outboundUnit#4791 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#4791 END AS outboundUnit#4792]
(1164) Project
Arguments: [product#4749, plant#4750, orderDateTime#4751, productPlant#4761, timezonecode#4775, outboundUnit#4792]
(1165) Project
Arguments: [plant#4750]
(1166) Deduplicate
Arguments: [plant#4750]
(1167) Join
Arguments: Inner, (plantUuid#4746 = plant#4750)
(1168) Project
Arguments: [plantId#4745, plantUuid#4746, storageLocId#4747, storageLocUuid#4748]
(1169) Join
Arguments: Inner, (plant#4718.internalRefUUID <=> plantUuid#4746)
(1170) Generate
Arguments: explode(filter(stockQuantities#4720, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#4748) AND (lambda x#1207.storageLocation.Id = storageLocId#4747)), lambda x#1207, false))), false, [stockQuantity#4793]
(1171) Project
Arguments: [systemId#4715, internalUUID#4716, product#4717, plant#4718, calculationDateTime#4719, stockQuantities#4720, plantId#4745, plantUuid#4746, storageLocId#4747, storageLocUuid#4748, stockQuantity#4793]
(1172) Aggregate
Arguments: [plantUuid#4746, internalUUID#4716, plant#4718, product#4717, systemId#4715], [plantUuid#4746, internalUUID#4716, plant#4718, product#4717, systemId#4715, first(calculationDateTime#4719, false) AS calculationDateTime#4794, collect_list(stockQuantity#4793, 0, 0) AS stockQuantities#4795]
(1173) Project
Arguments: [systemId#4715, internalUUID#4716, product#4717, plant#4718, calculationDateTime#4794, stockQuantities#4795]
(1174) Generate
Arguments: explode(stockQuantities#4795), false, [stockQuantity#4796]
(1175) Project
Arguments: [systemId#4715, internalUUID#4716, product#4717, plant#4718, calculationDateTime#4794, stockQuantities#4795, stockQuantity#4796]
(1176) Project
Arguments: [plant#4718.id AS plant#4797, plant#4718.internalRefUUID AS plantUuid#4798, product#4717.id AS product#4799, product#4717.internalRefUUID AS productUuid#4800, calculationDateTime#4794, stockQuantity#4796.storagelocation.id AS storageLocId#4801, stockQuantity#4796.storagelocation.internalRefUUID AS storageLocUuid#4802, stockQuantity#4796.quantity.measure AS quantity#4803, stockQuantity#4796.specialStockIndicator.code AS specialStockIndicator#4804, stockQuantity#4796.stockType.code AS stockType#4805]
(1177) Filter
Arguments: ((specialStockIndicator#4804 = ) AND (stockType#4805 = 01))
(1178) LogicalRelation
Arguments: parquet, [product#4806, plant#4807, orderDateTime#4808, planningStartDateTime#4809], false
(1179) RepartitionByExpression
Arguments: [product#4806, plant#4807], 10
(1180) Project
Arguments: [product#4806, plant#4807, orderDateTime#4808]
(1181) LogicalRelation
Arguments: parquet, [systemId#4810, internalUUID#4811, plant#4812, product#4813, blockedForReplenishmentStartingFrom#4814, productionAspect#4815, salesPlant#4816, listing#4817], false
(1182) Repartition
Arguments: 10, true
(1183) Project
Arguments: [systemId#4810, internalUUID#4811, plant#4812, product#4813, blockedForReplenishmentStartingFrom#4814, productionAspect#4815, salesPlant#4816, listing#4817, struct(systemId, systemId#4810, internalUUID, internalUUID#4811, plant, plant#4812, product, product#4813, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#4814, productionAspect, productionAspect#4815, salesPlant, salesPlant#4816, listing, listing#4817) AS productPlant#4818]
(1184) Project
Arguments: [productPlant#4818]
(1185) Join
Arguments: LeftOuter, ((product#4806 <=> productPlant#4818.product.internalRefUUID) AND (plant#4807 <=> productPlant#4818.plant.internalRefUUID))
(1186) Project
Arguments: [product#4806, plant#4807, orderDateTime#4808, productPlant#4818]
(1187) SubqueryAlias
Arguments: wl
(1188) LogicalRelation
Arguments: parquet, [systemId#4819, internalUUID#4820, id#4821, displayId#4822, name#4823, category#4824, companyCode#4825, address#4826, mainDistributionChain#4827, mainPurchasingOrganization#4828, validPurchasingOrganizations#4829, productGroup#4830], false
(1189) Repartition
Arguments: 10, true
(1190) Project
Arguments: [internalUUID#4820, address#4826.timeZone.code AS timezonecode#4831]
(1191) Join
Arguments: LeftOuter, (plant#4807 <=> internalUUID#4820)
(1192) Project
Arguments: [product#4806, plant#4807, orderDateTime#4808, productPlant#4818, internalUUID#4820, CASE WHEN isnotnull(timezonecode#4831) THEN timezonecode#4831 ELSE UTC END AS timezonecode#4832]
(1193) Project
Arguments: [product#4806, plant#4807, orderDateTime#4808, productPlant#4818, timezonecode#4832]
(1194) LogicalRelation
Arguments: parquet, [systemId#4833, internalUUID#4834, id#4835, displayId#4836, name#4837, baseUnitOfMeasure#4838, unitOfMeasures#4839, unitOfMeasureConversions#4840, productionAspect#4841, salesAspect#4842, procurementAspect#4843, productGroup#4844], false
(1195) Repartition
Arguments: 10, true
(1196) Join
Arguments: LeftOuter, (product#4806 = internalUUID#4834)
(1197) Project
Arguments: [product#4806, plant#4807, orderDateTime#4808, productPlant#4818, timezonecode#4832, systemId#4833, internalUUID#4834, id#4835, displayId#4836, name#4837, baseUnitOfMeasure#4838, unitOfMeasures#4839, unitOfMeasureConversions#4840, productionAspect#4841, salesAspect#4842, procurementAspect#4843, productGroup#4844, filter(unitOfMeasureConversions#4840, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#4818.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#4818.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4838.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4838.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4845]
(1198) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4845.quantityNumerator), true, [quantityNumerator#4846]
(1199) Project
Arguments: [product#4806, plant#4807, orderDateTime#4808, productPlant#4818, timezonecode#4832, systemId#4833, internalUUID#4834, id#4835, displayId#4836, name#4837, baseUnitOfMeasure#4838, unitOfMeasures#4839, unitOfMeasureConversions#4840, productionAspect#4841, salesAspect#4842, procurementAspect#4843, productGroup#4844, filteredUnitOfMeasureConversions#4845, quantityNumerator#4846]
(1200) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4845.quantityDenominator), true, [quantityDenominator#4847]
(1201) Project
Arguments: [product#4806, plant#4807, orderDateTime#4808, productPlant#4818, timezonecode#4832, systemId#4833, internalUUID#4834, id#4835, displayId#4836, name#4837, baseUnitOfMeasure#4838, unitOfMeasures#4839, unitOfMeasureConversions#4840, productionAspect#4841, salesAspect#4842, procurementAspect#4843, productGroup#4844, filteredUnitOfMeasureConversions#4845, quantityNumerator#4846, quantityDenominator#4847]
(1202) Project
Arguments: [product#4806, plant#4807, orderDateTime#4808, productPlant#4818, timezonecode#4832, systemId#4833, internalUUID#4834, id#4835, displayId#4836, name#4837, baseUnitOfMeasure#4838, unitOfMeasures#4839, unitOfMeasureConversions#4840, productionAspect#4841, salesAspect#4842, procurementAspect#4843, productGroup#4844, filteredUnitOfMeasureConversions#4845, quantityNumerator#4846, quantityDenominator#4847, (cast(quantityNumerator#4846 as double) / cast(quantityDenominator#4847 as double)) AS outboundUnit#4848]
(1203) Project
Arguments: [product#4806, plant#4807, orderDateTime#4808, productPlant#4818, timezonecode#4832, systemId#4833, internalUUID#4834, id#4835, displayId#4836, name#4837, baseUnitOfMeasure#4838, unitOfMeasures#4839, unitOfMeasureConversions#4840, productionAspect#4841, salesAspect#4842, procurementAspect#4843, productGroup#4844, filteredUnitOfMeasureConversions#4845, quantityNumerator#4846, quantityDenominator#4847, CASE WHEN (isnull(outboundUnit#4848) OR (outboundUnit#4848 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#4848 END AS outboundUnit#4849]
(1204) Project
Arguments: [product#4806, plant#4807, orderDateTime#4808, productPlant#4818, timezonecode#4832, outboundUnit#4849]
(1205) Join
Arguments: Inner, ((plantUuid#4798 = plant#4807) AND (productUuid#4800 = product#4806))
(1206) Filter
Arguments: (calculationDateTime#4794 <= orderDateTime#4808)
(1207) Project
Arguments: [plantUuid#4798 AS plant#4850, productUuid#4800 AS product#4851, storageLocId#4801, calculationDateTime#4794, quantity#4803]
(1208) LogicalRelation
Arguments: parquet, [systemId#4852, internalUUID#4853, product#4854, plant#4855, calculationDateTime#4856, stockQuantities#4857], false
(1209) Repartition
Arguments: 10, true
(1210) LogicalRelation
Arguments: parquet, [marketUnit#4858, description#4859, articleHierarchy#4860, defaultCurrency#4861, responsibilities#4862, replenishmentTypes#4863, distributionCenters#4864, assignedArticleHierarchyNodes#4865, minOrderQtySetting#4866, minOrderQtySettingInternal#4867, listingCheck#4868, odsSelection#4869, demandProfiles#4870, constraintProfiles#4871, optimizationProfiles#4872, orderGroupSplitProfiles#4873, supplierMinimumProfiles#4874, multipleRestrictionProfiles#4875, preferredUomSource#4876, handlingOfUnfulfilledDemands#4877, negligibleQuantitiesThreshold#4878, eventtype#4879], false
(1211) Repartition
Arguments: 10, true
(1212) Filter
Arguments: (marketUnit#4858 <=> DIP_1691)
(1213) Project
Arguments: [marketUnit#4858, description#4859, articleHierarchy#4860, defaultCurrency#4861, responsibilities#4862, replenishmentTypes#4863, distributionCenters#4864, assignedArticleHierarchyNodes#4865, minOrderQtySetting#4866, minOrderQtySettingInternal#4867, listingCheck#4868, odsSelection#4869, demandProfiles#4870, constraintProfiles#4871, optimizationProfiles#4872, orderGroupSplitProfiles#4873, supplierMinimumProfiles#4874, multipleRestrictionProfiles#4875, preferredUomSource#4876, handlingOfUnfulfilledDemands#4877, negligibleQuantitiesThreshold#4878, eventtype#4879]
(1214) Project
Arguments: [distributionCenters#4864]
(1215) Generate
Arguments: explode(distributionCenters#4864), false, [distributionCenters#4880]
(1216) Project
Arguments: [distributionCenters#4880]
(1217) Generate
Arguments: explode(distributionCenters#4880.storageLocations), false, [storageLocations#4881]
(1218) Project
Arguments: [distributionCenters#4880.id AS plantId#4882, distributionCenters#4880.internalRefUUID AS plantUuid#4883, storageLocations#4881]
(1219) Project
Arguments: [plantId#4882, plantUuid#4883, storageLocations#4881.id AS storageLocId#4884, storageLocations#4881.internalRefUUID AS storageLocUuid#4885]
(1220) LogicalRelation
Arguments: parquet, [product#4886, plant#4887, orderDateTime#4888, planningStartDateTime#4889], false
(1221) RepartitionByExpression
Arguments: [product#4886, plant#4887], 10
(1222) Project
Arguments: [product#4886, plant#4887, orderDateTime#4888]
(1223) LogicalRelation
Arguments: parquet, [systemId#4890, internalUUID#4891, plant#4892, product#4893, blockedForReplenishmentStartingFrom#4894, productionAspect#4895, salesPlant#4896, listing#4897], false
(1224) Repartition
Arguments: 10, true
(1225) Project
Arguments: [systemId#4890, internalUUID#4891, plant#4892, product#4893, blockedForReplenishmentStartingFrom#4894, productionAspect#4895, salesPlant#4896, listing#4897, struct(systemId, systemId#4890, internalUUID, internalUUID#4891, plant, plant#4892, product, product#4893, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#4894, productionAspect, productionAspect#4895, salesPlant, salesPlant#4896, listing, listing#4897) AS productPlant#4898]
(1226) Project
Arguments: [productPlant#4898]
(1227) Join
Arguments: LeftOuter, ((product#4886 <=> productPlant#4898.product.internalRefUUID) AND (plant#4887 <=> productPlant#4898.plant.internalRefUUID))
(1228) Project
Arguments: [product#4886, plant#4887, orderDateTime#4888, productPlant#4898]
(1229) SubqueryAlias
Arguments: wl
(1230) LogicalRelation
Arguments: parquet, [systemId#4899, internalUUID#4900, id#4901, displayId#4902, name#4903, category#4904, companyCode#4905, address#4906, mainDistributionChain#4907, mainPurchasingOrganization#4908, validPurchasingOrganizations#4909, productGroup#4910], false
(1231) Repartition
Arguments: 10, true
(1232) Project
Arguments: [internalUUID#4900, address#4906.timeZone.code AS timezonecode#4911]
(1233) Join
Arguments: LeftOuter, (plant#4887 <=> internalUUID#4900)
(1234) Project
Arguments: [product#4886, plant#4887, orderDateTime#4888, productPlant#4898, internalUUID#4900, CASE WHEN isnotnull(timezonecode#4911) THEN timezonecode#4911 ELSE UTC END AS timezonecode#4912]
(1235) Project
Arguments: [product#4886, plant#4887, orderDateTime#4888, productPlant#4898, timezonecode#4912]
(1236) LogicalRelation
Arguments: parquet, [systemId#4913, internalUUID#4914, id#4915, displayId#4916, name#4917, baseUnitOfMeasure#4918, unitOfMeasures#4919, unitOfMeasureConversions#4920, productionAspect#4921, salesAspect#4922, procurementAspect#4923, productGroup#4924], false
(1237) Repartition
Arguments: 10, true
(1238) Join
Arguments: LeftOuter, (product#4886 = internalUUID#4914)
(1239) Project
Arguments: [product#4886, plant#4887, orderDateTime#4888, productPlant#4898, timezonecode#4912, systemId#4913, internalUUID#4914, id#4915, displayId#4916, name#4917, baseUnitOfMeasure#4918, unitOfMeasures#4919, unitOfMeasureConversions#4920, productionAspect#4921, salesAspect#4922, procurementAspect#4923, productGroup#4924, filter(unitOfMeasureConversions#4920, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#4898.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#4898.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4918.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4918.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4925]
(1240) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4925.quantityNumerator), true, [quantityNumerator#4926]
(1241) Project
Arguments: [product#4886, plant#4887, orderDateTime#4888, productPlant#4898, timezonecode#4912, systemId#4913, internalUUID#4914, id#4915, displayId#4916, name#4917, baseUnitOfMeasure#4918, unitOfMeasures#4919, unitOfMeasureConversions#4920, productionAspect#4921, salesAspect#4922, procurementAspect#4923, productGroup#4924, filteredUnitOfMeasureConversions#4925, quantityNumerator#4926]
(1242) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4925.quantityDenominator), true, [quantityDenominator#4927]
(1243) Project
Arguments: [product#4886, plant#4887, orderDateTime#4888, productPlant#4898, timezonecode#4912, systemId#4913, internalUUID#4914, id#4915, displayId#4916, name#4917, baseUnitOfMeasure#4918, unitOfMeasures#4919, unitOfMeasureConversions#4920, productionAspect#4921, salesAspect#4922, procurementAspect#4923, productGroup#4924, filteredUnitOfMeasureConversions#4925, quantityNumerator#4926, quantityDenominator#4927]
(1244) Project
Arguments: [product#4886, plant#4887, orderDateTime#4888, productPlant#4898, timezonecode#4912, systemId#4913, internalUUID#4914, id#4915, displayId#4916, name#4917, baseUnitOfMeasure#4918, unitOfMeasures#4919, unitOfMeasureConversions#4920, productionAspect#4921, salesAspect#4922, procurementAspect#4923, productGroup#4924, filteredUnitOfMeasureConversions#4925, quantityNumerator#4926, quantityDenominator#4927, (cast(quantityNumerator#4926 as double) / cast(quantityDenominator#4927 as double)) AS outboundUnit#4928]
(1245) Project
Arguments: [product#4886, plant#4887, orderDateTime#4888, productPlant#4898, timezonecode#4912, systemId#4913, internalUUID#4914, id#4915, displayId#4916, name#4917, baseUnitOfMeasure#4918, unitOfMeasures#4919, unitOfMeasureConversions#4920, productionAspect#4921, salesAspect#4922, procurementAspect#4923, productGroup#4924, filteredUnitOfMeasureConversions#4925, quantityNumerator#4926, quantityDenominator#4927, CASE WHEN (isnull(outboundUnit#4928) OR (outboundUnit#4928 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#4928 END AS outboundUnit#4929]
(1246) Project
Arguments: [product#4886, plant#4887, orderDateTime#4888, productPlant#4898, timezonecode#4912, outboundUnit#4929]
(1247) Project
Arguments: [plant#4887]
(1248) Deduplicate
Arguments: [plant#4887]
(1249) Join
Arguments: Inner, (plantUuid#4883 = plant#4887)
(1250) Project
Arguments: [plantId#4882, plantUuid#4883, storageLocId#4884, storageLocUuid#4885]
(1251) Join
Arguments: Inner, (plant#4855.internalRefUUID <=> plantUuid#4883)
(1252) Generate
Arguments: explode(filter(stockQuantities#4857, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#4885) AND (lambda x#1207.storageLocation.Id = storageLocId#4884)), lambda x#1207, false))), false, [stockQuantity#4930]
(1253) Project
Arguments: [systemId#4852, internalUUID#4853, product#4854, plant#4855, calculationDateTime#4856, stockQuantities#4857, plantId#4882, plantUuid#4883, storageLocId#4884, storageLocUuid#4885, stockQuantity#4930]
(1254) Aggregate
Arguments: [plantUuid#4883, internalUUID#4853, plant#4855, product#4854, systemId#4852], [plantUuid#4883, internalUUID#4853, plant#4855, product#4854, systemId#4852, first(calculationDateTime#4856, false) AS calculationDateTime#4931, collect_list(stockQuantity#4930, 0, 0) AS stockQuantities#4932]
(1255) Project
Arguments: [systemId#4852, internalUUID#4853, product#4854, plant#4855, calculationDateTime#4931, stockQuantities#4932]
(1256) Generate
Arguments: explode(stockQuantities#4932), false, [stockQuantity#4933]
(1257) Project
Arguments: [systemId#4852, internalUUID#4853, product#4854, plant#4855, calculationDateTime#4931, stockQuantities#4932, stockQuantity#4933]
(1258) Project
Arguments: [plant#4855.id AS plant#4934, plant#4855.internalRefUUID AS plantUuid#4935, product#4854.id AS product#4936, product#4854.internalRefUUID AS productUuid#4937, calculationDateTime#4931, stockQuantity#4933.storagelocation.id AS storageLocId#4938, stockQuantity#4933.storagelocation.internalRefUUID AS storageLocUuid#4939, stockQuantity#4933.quantity.measure AS quantity#4940, stockQuantity#4933.specialStockIndicator.code AS specialStockIndicator#4941, stockQuantity#4933.stockType.code AS stockType#4942]
(1259) Filter
Arguments: ((specialStockIndicator#4941 = ) AND (stockType#4942 = 01))
(1260) LogicalRelation
Arguments: parquet, [product#4943, plant#4944, orderDateTime#4945, planningStartDateTime#4946], false
(1261) RepartitionByExpression
Arguments: [product#4943, plant#4944], 10
(1262) Project
Arguments: [product#4943, plant#4944, orderDateTime#4945]
(1263) LogicalRelation
Arguments: parquet, [systemId#4947, internalUUID#4948, plant#4949, product#4950, blockedForReplenishmentStartingFrom#4951, productionAspect#4952, salesPlant#4953, listing#4954], false
(1264) Repartition
Arguments: 10, true
(1265) Project
Arguments: [systemId#4947, internalUUID#4948, plant#4949, product#4950, blockedForReplenishmentStartingFrom#4951, productionAspect#4952, salesPlant#4953, listing#4954, struct(systemId, systemId#4947, internalUUID, internalUUID#4948, plant, plant#4949, product, product#4950, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#4951, productionAspect, productionAspect#4952, salesPlant, salesPlant#4953, listing, listing#4954) AS productPlant#4955]
(1266) Project
Arguments: [productPlant#4955]
(1267) Join
Arguments: LeftOuter, ((product#4943 <=> productPlant#4955.product.internalRefUUID) AND (plant#4944 <=> productPlant#4955.plant.internalRefUUID))
(1268) Project
Arguments: [product#4943, plant#4944, orderDateTime#4945, productPlant#4955]
(1269) SubqueryAlias
Arguments: wl
(1270) LogicalRelation
Arguments: parquet, [systemId#4956, internalUUID#4957, id#4958, displayId#4959, name#4960, category#4961, companyCode#4962, address#4963, mainDistributionChain#4964, mainPurchasingOrganization#4965, validPurchasingOrganizations#4966, productGroup#4967], false
(1271) Repartition
Arguments: 10, true
(1272) Project
Arguments: [internalUUID#4957, address#4963.timeZone.code AS timezonecode#4968]
(1273) Join
Arguments: LeftOuter, (plant#4944 <=> internalUUID#4957)
(1274) Project
Arguments: [product#4943, plant#4944, orderDateTime#4945, productPlant#4955, internalUUID#4957, CASE WHEN isnotnull(timezonecode#4968) THEN timezonecode#4968 ELSE UTC END AS timezonecode#4969]
(1275) Project
Arguments: [product#4943, plant#4944, orderDateTime#4945, productPlant#4955, timezonecode#4969]
(1276) LogicalRelation
Arguments: parquet, [systemId#4970, internalUUID#4971, id#4972, displayId#4973, name#4974, baseUnitOfMeasure#4975, unitOfMeasures#4976, unitOfMeasureConversions#4977, productionAspect#4978, salesAspect#4979, procurementAspect#4980, productGroup#4981], false
(1277) Repartition
Arguments: 10, true
(1278) Join
Arguments: LeftOuter, (product#4943 = internalUUID#4971)
(1279) Project
Arguments: [product#4943, plant#4944, orderDateTime#4945, productPlant#4955, timezonecode#4969, systemId#4970, internalUUID#4971, id#4972, displayId#4973, name#4974, baseUnitOfMeasure#4975, unitOfMeasures#4976, unitOfMeasureConversions#4977, productionAspect#4978, salesAspect#4979, procurementAspect#4980, productGroup#4981, filter(unitOfMeasureConversions#4977, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#4955.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#4955.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#4975.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#4975.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#4982]
(1280) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4982.quantityNumerator), true, [quantityNumerator#4983]
(1281) Project
Arguments: [product#4943, plant#4944, orderDateTime#4945, productPlant#4955, timezonecode#4969, systemId#4970, internalUUID#4971, id#4972, displayId#4973, name#4974, baseUnitOfMeasure#4975, unitOfMeasures#4976, unitOfMeasureConversions#4977, productionAspect#4978, salesAspect#4979, procurementAspect#4980, productGroup#4981, filteredUnitOfMeasureConversions#4982, quantityNumerator#4983]
(1282) Generate
Arguments: explode(filteredUnitOfMeasureConversions#4982.quantityDenominator), true, [quantityDenominator#4984]
(1283) Project
Arguments: [product#4943, plant#4944, orderDateTime#4945, productPlant#4955, timezonecode#4969, systemId#4970, internalUUID#4971, id#4972, displayId#4973, name#4974, baseUnitOfMeasure#4975, unitOfMeasures#4976, unitOfMeasureConversions#4977, productionAspect#4978, salesAspect#4979, procurementAspect#4980, productGroup#4981, filteredUnitOfMeasureConversions#4982, quantityNumerator#4983, quantityDenominator#4984]
(1284) Project
Arguments: [product#4943, plant#4944, orderDateTime#4945, productPlant#4955, timezonecode#4969, systemId#4970, internalUUID#4971, id#4972, displayId#4973, name#4974, baseUnitOfMeasure#4975, unitOfMeasures#4976, unitOfMeasureConversions#4977, productionAspect#4978, salesAspect#4979, procurementAspect#4980, productGroup#4981, filteredUnitOfMeasureConversions#4982, quantityNumerator#4983, quantityDenominator#4984, (cast(quantityNumerator#4983 as double) / cast(quantityDenominator#4984 as double)) AS outboundUnit#4985]
(1285) Project
Arguments: [product#4943, plant#4944, orderDateTime#4945, productPlant#4955, timezonecode#4969, systemId#4970, internalUUID#4971, id#4972, displayId#4973, name#4974, baseUnitOfMeasure#4975, unitOfMeasures#4976, unitOfMeasureConversions#4977, productionAspect#4978, salesAspect#4979, procurementAspect#4980, productGroup#4981, filteredUnitOfMeasureConversions#4982, quantityNumerator#4983, quantityDenominator#4984, CASE WHEN (isnull(outboundUnit#4985) OR (outboundUnit#4985 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#4985 END AS outboundUnit#4986]
(1286) Project
Arguments: [product#4943, plant#4944, orderDateTime#4945, productPlant#4955, timezonecode#4969, outboundUnit#4986]
(1287) Join
Arguments: Inner, ((plantUuid#4935 = plant#4944) AND (productUuid#4937 = product#4943))
(1288) Filter
Arguments: (calculationDateTime#4931 <= orderDateTime#4945)
(1289) Project
Arguments: [plantUuid#4935 AS plant#4987, productUuid#4937 AS product#4988, storageLocId#4938, calculationDateTime#4931, quantity#4940]
(1290) Aggregate
Arguments: [plant#4987, product#4988, storageLocId#4938], [plant#4987, product#4988, storageLocId#4938, max(calculationDateTime#4931) AS max_calc_datetime#4989]
(1291) Join
Arguments: Inner, ((((plant#4850 <=> plant#4987) AND (product#4851 <=> product#4988)) AND (storageLocId#4801 <=> storageLocId#4938)) AND (calculationDateTime#4794 <=> max_calc_datetime#4989))
(1292) Project
Arguments: [plant#4850, product#4851, storageLocId#4801, calculationDateTime#4794, quantity#4803]
(1293) Aggregate
Arguments: [product#4851, plant#4850], [product#4851, plant#4850, sum(quantity#4803) AS quantitySum#4990, min(calculationDateTime#4794) AS minCalculationDateTime#4991]
(1294) Project
Arguments: [product#4851, plant#4850, quantitySum#4990, minCalculationDateTime#4991, round(quantitySum#4990, 0) AS roundedQuantitySum#4992]
(1295) Join
Arguments: LeftOuter, ((plant#4672 = plant#4850) AND (product#4671 = product#4851))
(1296) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, roundedQuantitySum#4992, minCalculationDateTime#4991]
(1297) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, roundedQuantitySum#4992, minCalculationDateTime#4991, CASE WHEN isnotnull(minCalculationDateTime#4991) THEN minCalculationDateTime#4991 ELSE orderDateTime#4673 END AS stockDatetime#4993]
(1298) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, roundedQuantitySum#4992, minCalculationDateTime#4991, stockDatetime#4993, CASE WHEN isnotnull(roundedQuantitySum#4992) THEN array(roundedQuantitySum#4992) ELSE array(0.0) END AS stockBatchQuantities#4994]
(1299) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, roundedQuantitySum#4992, minCalculationDateTime#4991, stockDatetime#4993, stockBatchQuantities#4994, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#4995]
(1300) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, roundedQuantitySum#4992, stockDatetime#4993, stockBatchQuantities#4994, stockBatchShelfLifeEndDatetimes#4995]
(1301) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, stockDatetime#4993, stockBatchQuantities#4994, stockBatchShelfLifeEndDatetimes#4995]
(1302) LogicalRelation
Arguments: parquet, [product#4996, plant#4997, demandChannel#4998, demandStream#4999, considerVariance#5000, demandTimeBuckets#5001, demandPointInTimeStart#5002, demandPointInTimeEnd#5003, demandPointInTime#5004], false
(1303) Join
Arguments: LeftOuter, ((product#4671 = product#4996) AND (plant#4672 = plant#4997))
(1304) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, stockDatetime#4993, stockBatchQuantities#4994, stockBatchShelfLifeEndDatetimes#4995, demandChannel#4998, demandStream#4999, considerVariance#5000, demandTimeBuckets#5001, demandPointInTimeStart#5002, demandPointInTimeEnd#5003, demandPointInTime#5004, product#4996, plant#4997]
(1305) Project
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, stockDatetime#4993, stockBatchQuantities#4994, stockBatchShelfLifeEndDatetimes#4995, demandChannel#4998, demandStream#4999, considerVariance#5000, demandTimeBuckets#5001, demandPointInTimeStart#5002, demandPointInTimeEnd#5003, demandPointInTime#5004, CASE WHEN isnotnull(product#4996) THEN struct(demandChannel, demandChannel#4998, demandStream, demandStream#4999, considerVariance, considerVariance#5000, demandTimeBuckets, demandTimeBuckets#5001, demandPointInTimeStart, demandPointInTimeStart#5002, demandPointInTimeEnd, demandPointInTimeEnd#5003, demandPointInTime, demandPointInTime#5004) 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#5005]
(1306) Aggregate
Arguments: [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, stockDatetime#4993, stockBatchQuantities#4994, stockBatchShelfLifeEndDatetimes#4995], [product#4671, plant#4672, orderDateTime#4673, productPlant#4683, timezonecode#4697, outboundUnit#4714, stockDatetime#4993, stockBatchQuantities#4994, stockBatchShelfLifeEndDatetimes#4995, collect_list(rawDemands#5005, 0, 0) AS rawDemands#5006]
(1307) DeserializeToObject
Arguments: createexternalrow(invoke(product#4671.toString()), invoke(plant#4672.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#4673)), if (isnull(productPlant#4683)) null else createexternalrow(invoke(productPlant#4683.systemId.toString()), invoke(productPlant#4683.internalUUID.toString()), if (isnull(productPlant#4683.plant)) null else createexternalrow(invoke(productPlant#4683.plant.internalRefUUID.toString()), invoke(productPlant#4683.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#4683.product)) null else createexternalrow(invoke(productPlant#4683.product.internalRefUUID.toString()), invoke(productPlant#4683.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#4683.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#4683.productionAspect)) null else createexternalrow(if (isnull(productPlant#4683.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#4683.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#4683.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#4683.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#4683.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#4683.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#4683.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#4683.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#4683.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#4683.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#4683.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#4683.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#4683.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#4683.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#4683.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#4683.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#4683.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#4683.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#4683.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#4683.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#4683.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#4683.salesPlant)) null else createexternalrow(if (isnull(productPlant#4683.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#4683.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#4683.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, 497), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#4683.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#4697.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#4714)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#4993)), mapobjects(lambdavariable(MapObject, DoubleType, true, 498), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 498) as double))), stockBatchQuantities#4994, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 499), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 499) as timestamp)))), stockBatchShelfLifeEndDatetimes#4995, 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, 500), 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, 500))) 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, 500).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, 500).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, 500).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).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, 500).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, 500).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, 500).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).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, 500).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#5006, 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#1569: org.apache.spark.sql.Row
(1308) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@762840b4, 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#1574: 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#5007, 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#5008, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 488), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 488), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 489), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 489), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 490), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 490), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 491), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 491), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 492), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 492), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#5009, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 494), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 494), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 495), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 495), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 496), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 496), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#5010]
(1310) Join
Arguments: LeftOuter, ((plant#5008 <=> plant#4347) AND (product#5007 <=> product#4346))
(1311) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, outboundUnit#4389, stockDatetime#4668, stockBatchQuantities#4669, stockBatchShelfLifeEndDatetimes#4670, plant#5008, dayBucketDemands#5009, pointInTimeDemands#5010]
(1312) Project
Arguments: [product#4346, plant#4347, orderDateTime#4348, productPlant#4358, timezonecode#4372, outboundUnit#4389, stockDatetime#4668, stockBatchQuantities#4669, stockBatchShelfLifeEndDatetimes#4670, dayBucketDemands#5009, pointInTimeDemands#5010]
(1313) LogicalRelation
Arguments: parquet, [systemId#5011, internalUUID#5012, id#5013, displayId#5014, supplier#5015, type#5016, status#5017, isMarkedForDeletion#5018, items#5019], false
(1314) Repartition
Arguments: 10, true
(1315) Generate
Arguments: explode(items#5019), false, [item#5020]
(1316) Project
Arguments: [id#5013, internalUUID#5012, isMarkedForDeletion#5018, supplier#5015.internalRefUUID AS supplierUuid#5021, item#5020]
(1317) Filter
Arguments: (((NOT isMarkedForDeletion#5018 AND NOT item#5020.deletionIndicator) AND NOT item#5020.completeIndicator) AND NOT item#5020.returnIndicator)
(1318) Project
Arguments: [id#5013, internalUUID#5012, supplierUuid#5021, item#5020.plant.internalRefUUID AS plant#5022, item#5020.product.internalRefUUID AS product#5023, item#5020.storageLocation.internalRefUUID AS storageLocUuid#5024, item#5020.quantityUnit.code AS quantityUom#5025, item#5020.quantityUnit.internalRefUUID AS quantityUomUuid#5026, item#5020.quantityNumerator AS quantityNumerator#5027, item#5020.quantityDenominator AS quantityDenominator#5028, item#5020.scheduleLines AS scheduleLines#5029, item#5020.confirmations AS confirmations#5030]
(1319) Join
Arguments: Inner, ((product#4346 <=> product#5023) AND (plant#4347 <=> supplierUuid#5021))
(1320) Project
Arguments: [id#5013, internalUUID#5012, supplierUuid#5021, plant#5022, product#5023, storageLocUuid#5024, quantityUom#5025, quantityUomUuid#5026, quantityNumerator#5027, quantityDenominator#5028, scheduleLines#5029, confirmations#5030, stockDatetime#4668, plant#4347]
(1321) Project
Arguments: [id#5013, internalUUID#5012, supplierUuid#5021, product#5023, storageLocUuid#5024, quantityUom#5025, quantityUomUuid#5026, quantityNumerator#5027, quantityDenominator#5028, scheduleLines#5029, confirmations#5030, stockDatetime#4668, plant#4347]
(1322) Project
Arguments: [id#5013, internalUUID#5012, supplierUuid#5021, product#5023, storageLocUuid#5024, quantityUom#5025, quantityUomUuid#5026, quantityNumerator#5027, quantityDenominator#5028, scheduleLines#5029, confirmations#5030, stockDatetime#4668, plant#4347, filter(transform(filter(transform(scheduleLines#5029, lambdafunction(struct(openQty, (greatest((lambda x_6#4326.quantity - coalesce(lambda x_6#4326.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_6#4326.productAvailabilityDateTime, lambda x_6#4326.deliveryAt)), lambda x_6#4326, false)), lambdafunction((lambda x_7#4327.availabilityDatetime < stockDatetime#4668), lambda x_7#4327, false)), lambdafunction(struct(documentId, id#5013, documentUuid, internalUUID#5012, openQty, lambda x_8#4328.openQty, openQtyInBaseUnit, ((lambda x_8#4328.openQty * quantityNumerator#5027) / quantityDenominator#5028), qtyUom, quantityUom#5025, qtyUomUuid, quantityUomUuid#5026, availabilityDatetime, lambda x_8#4328.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_8#4328, false)), lambdafunction(NOT (lambda x_9#4329.openQty = 0.0), lambda x_9#4329, false)) AS openGoodsMovements#4325]
(1323) Aggregate
Arguments: [product#5023, plant#4347], [product#5023, plant#4347, flatten(collect_list(openGoodsMovements#4325, 0, 0)) AS openGoodsMovements#4330]
(1324) Filter
Arguments: (array_size(openGoodsMovements#4330) > 0)
(1325) Union
Arguments: false, false
(1326) Aggregate
Arguments: [product#1950, plant#1949], [product#1950, plant#1949, flatten(collect_list(openGoodsMovements#2331, 0, 0)) AS openGoodsMovements#5081]
(1327) Join
Arguments: LeftOuter, ((product#1102 = product#1950) AND (plant#1103 = plant#1949))
(1328) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovements#5081]
(1329) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, coalesce(openGoodsMovements#5081.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#5800, coalesce(openGoodsMovements#5081.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#5801, coalesce(openGoodsMovements#5081.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#5802]
(1330) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, 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#5903]
(1331) LogicalRelation
Arguments: parquet, [product#6102, plant#6103, orderDateTime#6104, planningStartDateTime#6105], false
(1332) RepartitionByExpression
Arguments: [product#6102, plant#6103], 10
(1333) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104]
(1334) LogicalRelation
Arguments: parquet, [systemId#6106, internalUUID#6107, plant#6108, product#6109, blockedForReplenishmentStartingFrom#6110, productionAspect#6111, salesPlant#6112, listing#6113], false
(1335) Repartition
Arguments: 10, true
(1336) Project
Arguments: [systemId#6106, internalUUID#6107, plant#6108, product#6109, blockedForReplenishmentStartingFrom#6110, productionAspect#6111, salesPlant#6112, listing#6113, struct(systemId, systemId#6106, internalUUID, internalUUID#6107, plant, plant#6108, product, product#6109, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6110, productionAspect, productionAspect#6111, salesPlant, salesPlant#6112, listing, listing#6113) AS productPlant#6114]
(1337) Project
Arguments: [productPlant#6114]
(1338) Join
Arguments: LeftOuter, ((product#6102 <=> productPlant#6114.product.internalRefUUID) AND (plant#6103 <=> productPlant#6114.plant.internalRefUUID))
(1339) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114]
(1340) SubqueryAlias
Arguments: wl
(1341) LogicalRelation
Arguments: parquet, [systemId#6115, internalUUID#6116, id#6117, displayId#6118, name#6119, category#6120, companyCode#6121, address#6122, mainDistributionChain#6123, mainPurchasingOrganization#6124, validPurchasingOrganizations#6125, productGroup#6126], false
(1342) Repartition
Arguments: 10, true
(1343) Project
Arguments: [internalUUID#6116, address#6122.timeZone.code AS timezonecode#6127]
(1344) Join
Arguments: LeftOuter, (plant#6103 <=> internalUUID#6116)
(1345) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, internalUUID#6116, CASE WHEN isnotnull(timezonecode#6127) THEN timezonecode#6127 ELSE UTC END AS timezonecode#6128]
(1346) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128]
(1347) LogicalRelation
Arguments: parquet, [systemId#6129, internalUUID#6130, id#6131, displayId#6132, name#6133, baseUnitOfMeasure#6134, unitOfMeasures#6135, unitOfMeasureConversions#6136, productionAspect#6137, salesAspect#6138, procurementAspect#6139, productGroup#6140], false
(1348) Repartition
Arguments: 10, true
(1349) Join
Arguments: LeftOuter, (product#6102 = internalUUID#6130)
(1350) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, systemId#6129, internalUUID#6130, id#6131, displayId#6132, name#6133, baseUnitOfMeasure#6134, unitOfMeasures#6135, unitOfMeasureConversions#6136, productionAspect#6137, salesAspect#6138, procurementAspect#6139, productGroup#6140, filter(unitOfMeasureConversions#6136, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6114.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6114.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6134.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6134.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6141]
(1351) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6141.quantityNumerator), true, [quantityNumerator#6142]
(1352) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, systemId#6129, internalUUID#6130, id#6131, displayId#6132, name#6133, baseUnitOfMeasure#6134, unitOfMeasures#6135, unitOfMeasureConversions#6136, productionAspect#6137, salesAspect#6138, procurementAspect#6139, productGroup#6140, filteredUnitOfMeasureConversions#6141, quantityNumerator#6142]
(1353) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6141.quantityDenominator), true, [quantityDenominator#6143]
(1354) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, systemId#6129, internalUUID#6130, id#6131, displayId#6132, name#6133, baseUnitOfMeasure#6134, unitOfMeasures#6135, unitOfMeasureConversions#6136, productionAspect#6137, salesAspect#6138, procurementAspect#6139, productGroup#6140, filteredUnitOfMeasureConversions#6141, quantityNumerator#6142, quantityDenominator#6143]
(1355) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, systemId#6129, internalUUID#6130, id#6131, displayId#6132, name#6133, baseUnitOfMeasure#6134, unitOfMeasures#6135, unitOfMeasureConversions#6136, productionAspect#6137, salesAspect#6138, procurementAspect#6139, productGroup#6140, filteredUnitOfMeasureConversions#6141, quantityNumerator#6142, quantityDenominator#6143, (cast(quantityNumerator#6142 as double) / cast(quantityDenominator#6143 as double)) AS outboundUnit#6144]
(1356) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, systemId#6129, internalUUID#6130, id#6131, displayId#6132, name#6133, baseUnitOfMeasure#6134, unitOfMeasures#6135, unitOfMeasureConversions#6136, productionAspect#6137, salesAspect#6138, procurementAspect#6139, productGroup#6140, filteredUnitOfMeasureConversions#6141, quantityNumerator#6142, quantityDenominator#6143, CASE WHEN (isnull(outboundUnit#6144) OR (outboundUnit#6144 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#6144 END AS outboundUnit#6145]
(1357) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145]
(1358) LogicalRelation
Arguments: parquet, [systemId#6146, internalUUID#6147, product#6148, plant#6149, calculationDateTime#6150, stockQuantities#6151], false
(1359) Repartition
Arguments: 10, true
(1360) LogicalRelation
Arguments: parquet, [marketUnit#6152, description#6153, articleHierarchy#6154, defaultCurrency#6155, responsibilities#6156, replenishmentTypes#6157, distributionCenters#6158, assignedArticleHierarchyNodes#6159, minOrderQtySetting#6160, minOrderQtySettingInternal#6161, listingCheck#6162, odsSelection#6163, demandProfiles#6164, constraintProfiles#6165, optimizationProfiles#6166, orderGroupSplitProfiles#6167, supplierMinimumProfiles#6168, multipleRestrictionProfiles#6169, preferredUomSource#6170, handlingOfUnfulfilledDemands#6171, negligibleQuantitiesThreshold#6172, eventtype#6173], false
(1361) Repartition
Arguments: 10, true
(1362) Filter
Arguments: (marketUnit#6152 <=> DIP_1691)
(1363) Project
Arguments: [marketUnit#6152, description#6153, articleHierarchy#6154, defaultCurrency#6155, responsibilities#6156, replenishmentTypes#6157, distributionCenters#6158, assignedArticleHierarchyNodes#6159, minOrderQtySetting#6160, minOrderQtySettingInternal#6161, listingCheck#6162, odsSelection#6163, demandProfiles#6164, constraintProfiles#6165, optimizationProfiles#6166, orderGroupSplitProfiles#6167, supplierMinimumProfiles#6168, multipleRestrictionProfiles#6169, preferredUomSource#6170, handlingOfUnfulfilledDemands#6171, negligibleQuantitiesThreshold#6172, eventtype#6173]
(1364) Project
Arguments: [distributionCenters#6158]
(1365) Generate
Arguments: explode(distributionCenters#6158), false, [distributionCenters#6174]
(1366) Project
Arguments: [distributionCenters#6174]
(1367) Generate
Arguments: explode(distributionCenters#6174.storageLocations), false, [storageLocations#6175]
(1368) Project
Arguments: [distributionCenters#6174.id AS plantId#6176, distributionCenters#6174.internalRefUUID AS plantUuid#6177, storageLocations#6175]
(1369) Project
Arguments: [plantId#6176, plantUuid#6177, storageLocations#6175.id AS storageLocId#6178, storageLocations#6175.internalRefUUID AS storageLocUuid#6179]
(1370) LogicalRelation
Arguments: parquet, [product#6180, plant#6181, orderDateTime#6182, planningStartDateTime#6183], false
(1371) RepartitionByExpression
Arguments: [product#6180, plant#6181], 10
(1372) Project
Arguments: [product#6180, plant#6181, orderDateTime#6182]
(1373) LogicalRelation
Arguments: parquet, [systemId#6184, internalUUID#6185, plant#6186, product#6187, blockedForReplenishmentStartingFrom#6188, productionAspect#6189, salesPlant#6190, listing#6191], false
(1374) Repartition
Arguments: 10, true
(1375) Project
Arguments: [systemId#6184, internalUUID#6185, plant#6186, product#6187, blockedForReplenishmentStartingFrom#6188, productionAspect#6189, salesPlant#6190, listing#6191, struct(systemId, systemId#6184, internalUUID, internalUUID#6185, plant, plant#6186, product, product#6187, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6188, productionAspect, productionAspect#6189, salesPlant, salesPlant#6190, listing, listing#6191) AS productPlant#6192]
(1376) Project
Arguments: [productPlant#6192]
(1377) Join
Arguments: LeftOuter, ((product#6180 <=> productPlant#6192.product.internalRefUUID) AND (plant#6181 <=> productPlant#6192.plant.internalRefUUID))
(1378) Project
Arguments: [product#6180, plant#6181, orderDateTime#6182, productPlant#6192]
(1379) SubqueryAlias
Arguments: wl
(1380) LogicalRelation
Arguments: parquet, [systemId#6193, internalUUID#6194, id#6195, displayId#6196, name#6197, category#6198, companyCode#6199, address#6200, mainDistributionChain#6201, mainPurchasingOrganization#6202, validPurchasingOrganizations#6203, productGroup#6204], false
(1381) Repartition
Arguments: 10, true
(1382) Project
Arguments: [internalUUID#6194, address#6200.timeZone.code AS timezonecode#6205]
(1383) Join
Arguments: LeftOuter, (plant#6181 <=> internalUUID#6194)
(1384) Project
Arguments: [product#6180, plant#6181, orderDateTime#6182, productPlant#6192, internalUUID#6194, CASE WHEN isnotnull(timezonecode#6205) THEN timezonecode#6205 ELSE UTC END AS timezonecode#6206]
(1385) Project
Arguments: [product#6180, plant#6181, orderDateTime#6182, productPlant#6192, timezonecode#6206]
(1386) LogicalRelation
Arguments: parquet, [systemId#6207, internalUUID#6208, id#6209, displayId#6210, name#6211, baseUnitOfMeasure#6212, unitOfMeasures#6213, unitOfMeasureConversions#6214, productionAspect#6215, salesAspect#6216, procurementAspect#6217, productGroup#6218], false
(1387) Repartition
Arguments: 10, true
(1388) Join
Arguments: LeftOuter, (product#6180 = internalUUID#6208)
(1389) Project
Arguments: [product#6180, plant#6181, orderDateTime#6182, productPlant#6192, timezonecode#6206, systemId#6207, internalUUID#6208, id#6209, displayId#6210, name#6211, baseUnitOfMeasure#6212, unitOfMeasures#6213, unitOfMeasureConversions#6214, productionAspect#6215, salesAspect#6216, procurementAspect#6217, productGroup#6218, filter(unitOfMeasureConversions#6214, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6192.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6192.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6212.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6212.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6219]
(1390) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6219.quantityNumerator), true, [quantityNumerator#6220]
(1391) Project
Arguments: [product#6180, plant#6181, orderDateTime#6182, productPlant#6192, timezonecode#6206, systemId#6207, internalUUID#6208, id#6209, displayId#6210, name#6211, baseUnitOfMeasure#6212, unitOfMeasures#6213, unitOfMeasureConversions#6214, productionAspect#6215, salesAspect#6216, procurementAspect#6217, productGroup#6218, filteredUnitOfMeasureConversions#6219, quantityNumerator#6220]
(1392) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6219.quantityDenominator), true, [quantityDenominator#6221]
(1393) Project
Arguments: [product#6180, plant#6181, orderDateTime#6182, productPlant#6192, timezonecode#6206, systemId#6207, internalUUID#6208, id#6209, displayId#6210, name#6211, baseUnitOfMeasure#6212, unitOfMeasures#6213, unitOfMeasureConversions#6214, productionAspect#6215, salesAspect#6216, procurementAspect#6217, productGroup#6218, filteredUnitOfMeasureConversions#6219, quantityNumerator#6220, quantityDenominator#6221]
(1394) Project
Arguments: [product#6180, plant#6181, orderDateTime#6182, productPlant#6192, timezonecode#6206, systemId#6207, internalUUID#6208, id#6209, displayId#6210, name#6211, baseUnitOfMeasure#6212, unitOfMeasures#6213, unitOfMeasureConversions#6214, productionAspect#6215, salesAspect#6216, procurementAspect#6217, productGroup#6218, filteredUnitOfMeasureConversions#6219, quantityNumerator#6220, quantityDenominator#6221, (cast(quantityNumerator#6220 as double) / cast(quantityDenominator#6221 as double)) AS outboundUnit#6222]
(1395) Project
Arguments: [product#6180, plant#6181, orderDateTime#6182, productPlant#6192, timezonecode#6206, systemId#6207, internalUUID#6208, id#6209, displayId#6210, name#6211, baseUnitOfMeasure#6212, unitOfMeasures#6213, unitOfMeasureConversions#6214, productionAspect#6215, salesAspect#6216, procurementAspect#6217, productGroup#6218, filteredUnitOfMeasureConversions#6219, quantityNumerator#6220, quantityDenominator#6221, CASE WHEN (isnull(outboundUnit#6222) OR (outboundUnit#6222 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#6222 END AS outboundUnit#6223]
(1396) Project
Arguments: [product#6180, plant#6181, orderDateTime#6182, productPlant#6192, timezonecode#6206, outboundUnit#6223]
(1397) Project
Arguments: [plant#6181]
(1398) Deduplicate
Arguments: [plant#6181]
(1399) Join
Arguments: Inner, (plantUuid#6177 = plant#6181)
(1400) Project
Arguments: [plantId#6176, plantUuid#6177, storageLocId#6178, storageLocUuid#6179]
(1401) Join
Arguments: Inner, (plant#6149.internalRefUUID <=> plantUuid#6177)
(1402) Generate
Arguments: explode(filter(stockQuantities#6151, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#6179) AND (lambda x#1207.storageLocation.Id = storageLocId#6178)), lambda x#1207, false))), false, [stockQuantity#6224]
(1403) Project
Arguments: [systemId#6146, internalUUID#6147, product#6148, plant#6149, calculationDateTime#6150, stockQuantities#6151, plantId#6176, plantUuid#6177, storageLocId#6178, storageLocUuid#6179, stockQuantity#6224]
(1404) Aggregate
Arguments: [plantUuid#6177, internalUUID#6147, plant#6149, product#6148, systemId#6146], [plantUuid#6177, internalUUID#6147, plant#6149, product#6148, systemId#6146, first(calculationDateTime#6150, false) AS calculationDateTime#6225, collect_list(stockQuantity#6224, 0, 0) AS stockQuantities#6226]
(1405) Project
Arguments: [systemId#6146, internalUUID#6147, product#6148, plant#6149, calculationDateTime#6225, stockQuantities#6226]
(1406) Generate
Arguments: explode(stockQuantities#6226), false, [stockQuantity#6227]
(1407) Project
Arguments: [systemId#6146, internalUUID#6147, product#6148, plant#6149, calculationDateTime#6225, stockQuantities#6226, stockQuantity#6227]
(1408) Project
Arguments: [plant#6149.id AS plant#6228, plant#6149.internalRefUUID AS plantUuid#6229, product#6148.id AS product#6230, product#6148.internalRefUUID AS productUuid#6231, calculationDateTime#6225, stockQuantity#6227.storagelocation.id AS storageLocId#6232, stockQuantity#6227.storagelocation.internalRefUUID AS storageLocUuid#6233, stockQuantity#6227.quantity.measure AS quantity#6234, stockQuantity#6227.specialStockIndicator.code AS specialStockIndicator#6235, stockQuantity#6227.stockType.code AS stockType#6236]
(1409) Filter
Arguments: ((specialStockIndicator#6235 = ) AND (stockType#6236 = 01))
(1410) LogicalRelation
Arguments: parquet, [product#6237, plant#6238, orderDateTime#6239, planningStartDateTime#6240], false
(1411) RepartitionByExpression
Arguments: [product#6237, plant#6238], 10
(1412) Project
Arguments: [product#6237, plant#6238, orderDateTime#6239]
(1413) LogicalRelation
Arguments: parquet, [systemId#6241, internalUUID#6242, plant#6243, product#6244, blockedForReplenishmentStartingFrom#6245, productionAspect#6246, salesPlant#6247, listing#6248], false
(1414) Repartition
Arguments: 10, true
(1415) Project
Arguments: [systemId#6241, internalUUID#6242, plant#6243, product#6244, blockedForReplenishmentStartingFrom#6245, productionAspect#6246, salesPlant#6247, listing#6248, struct(systemId, systemId#6241, internalUUID, internalUUID#6242, plant, plant#6243, product, product#6244, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6245, productionAspect, productionAspect#6246, salesPlant, salesPlant#6247, listing, listing#6248) AS productPlant#6249]
(1416) Project
Arguments: [productPlant#6249]
(1417) Join
Arguments: LeftOuter, ((product#6237 <=> productPlant#6249.product.internalRefUUID) AND (plant#6238 <=> productPlant#6249.plant.internalRefUUID))
(1418) Project
Arguments: [product#6237, plant#6238, orderDateTime#6239, productPlant#6249]
(1419) SubqueryAlias
Arguments: wl
(1420) LogicalRelation
Arguments: parquet, [systemId#6250, internalUUID#6251, id#6252, displayId#6253, name#6254, category#6255, companyCode#6256, address#6257, mainDistributionChain#6258, mainPurchasingOrganization#6259, validPurchasingOrganizations#6260, productGroup#6261], false
(1421) Repartition
Arguments: 10, true
(1422) Project
Arguments: [internalUUID#6251, address#6257.timeZone.code AS timezonecode#6262]
(1423) Join
Arguments: LeftOuter, (plant#6238 <=> internalUUID#6251)
(1424) Project
Arguments: [product#6237, plant#6238, orderDateTime#6239, productPlant#6249, internalUUID#6251, CASE WHEN isnotnull(timezonecode#6262) THEN timezonecode#6262 ELSE UTC END AS timezonecode#6263]
(1425) Project
Arguments: [product#6237, plant#6238, orderDateTime#6239, productPlant#6249, timezonecode#6263]
(1426) LogicalRelation
Arguments: parquet, [systemId#6264, internalUUID#6265, id#6266, displayId#6267, name#6268, baseUnitOfMeasure#6269, unitOfMeasures#6270, unitOfMeasureConversions#6271, productionAspect#6272, salesAspect#6273, procurementAspect#6274, productGroup#6275], false
(1427) Repartition
Arguments: 10, true
(1428) Join
Arguments: LeftOuter, (product#6237 = internalUUID#6265)
(1429) Project
Arguments: [product#6237, plant#6238, orderDateTime#6239, productPlant#6249, timezonecode#6263, systemId#6264, internalUUID#6265, id#6266, displayId#6267, name#6268, baseUnitOfMeasure#6269, unitOfMeasures#6270, unitOfMeasureConversions#6271, productionAspect#6272, salesAspect#6273, procurementAspect#6274, productGroup#6275, filter(unitOfMeasureConversions#6271, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6249.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6249.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6269.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6269.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6276]
(1430) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6276.quantityNumerator), true, [quantityNumerator#6277]
(1431) Project
Arguments: [product#6237, plant#6238, orderDateTime#6239, productPlant#6249, timezonecode#6263, systemId#6264, internalUUID#6265, id#6266, displayId#6267, name#6268, baseUnitOfMeasure#6269, unitOfMeasures#6270, unitOfMeasureConversions#6271, productionAspect#6272, salesAspect#6273, procurementAspect#6274, productGroup#6275, filteredUnitOfMeasureConversions#6276, quantityNumerator#6277]
(1432) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6276.quantityDenominator), true, [quantityDenominator#6278]
(1433) Project
Arguments: [product#6237, plant#6238, orderDateTime#6239, productPlant#6249, timezonecode#6263, systemId#6264, internalUUID#6265, id#6266, displayId#6267, name#6268, baseUnitOfMeasure#6269, unitOfMeasures#6270, unitOfMeasureConversions#6271, productionAspect#6272, salesAspect#6273, procurementAspect#6274, productGroup#6275, filteredUnitOfMeasureConversions#6276, quantityNumerator#6277, quantityDenominator#6278]
(1434) Project
Arguments: [product#6237, plant#6238, orderDateTime#6239, productPlant#6249, timezonecode#6263, systemId#6264, internalUUID#6265, id#6266, displayId#6267, name#6268, baseUnitOfMeasure#6269, unitOfMeasures#6270, unitOfMeasureConversions#6271, productionAspect#6272, salesAspect#6273, procurementAspect#6274, productGroup#6275, filteredUnitOfMeasureConversions#6276, quantityNumerator#6277, quantityDenominator#6278, (cast(quantityNumerator#6277 as double) / cast(quantityDenominator#6278 as double)) AS outboundUnit#6279]
(1435) Project
Arguments: [product#6237, plant#6238, orderDateTime#6239, productPlant#6249, timezonecode#6263, systemId#6264, internalUUID#6265, id#6266, displayId#6267, name#6268, baseUnitOfMeasure#6269, unitOfMeasures#6270, unitOfMeasureConversions#6271, productionAspect#6272, salesAspect#6273, procurementAspect#6274, productGroup#6275, filteredUnitOfMeasureConversions#6276, quantityNumerator#6277, quantityDenominator#6278, CASE WHEN (isnull(outboundUnit#6279) OR (outboundUnit#6279 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#6279 END AS outboundUnit#6280]
(1436) Project
Arguments: [product#6237, plant#6238, orderDateTime#6239, productPlant#6249, timezonecode#6263, outboundUnit#6280]
(1437) Join
Arguments: Inner, ((plantUuid#6229 = plant#6238) AND (productUuid#6231 = product#6237))
(1438) Filter
Arguments: (calculationDateTime#6225 <= orderDateTime#6239)
(1439) Project
Arguments: [plantUuid#6229 AS plant#6281, productUuid#6231 AS product#6282, storageLocId#6232, calculationDateTime#6225, quantity#6234]
(1440) LogicalRelation
Arguments: parquet, [systemId#6283, internalUUID#6284, product#6285, plant#6286, calculationDateTime#6287, stockQuantities#6288], false
(1441) Repartition
Arguments: 10, true
(1442) LogicalRelation
Arguments: parquet, [marketUnit#6289, description#6290, articleHierarchy#6291, defaultCurrency#6292, responsibilities#6293, replenishmentTypes#6294, distributionCenters#6295, assignedArticleHierarchyNodes#6296, minOrderQtySetting#6297, minOrderQtySettingInternal#6298, listingCheck#6299, odsSelection#6300, demandProfiles#6301, constraintProfiles#6302, optimizationProfiles#6303, orderGroupSplitProfiles#6304, supplierMinimumProfiles#6305, multipleRestrictionProfiles#6306, preferredUomSource#6307, handlingOfUnfulfilledDemands#6308, negligibleQuantitiesThreshold#6309, eventtype#6310], false
(1443) Repartition
Arguments: 10, true
(1444) Filter
Arguments: (marketUnit#6289 <=> DIP_1691)
(1445) Project
Arguments: [marketUnit#6289, description#6290, articleHierarchy#6291, defaultCurrency#6292, responsibilities#6293, replenishmentTypes#6294, distributionCenters#6295, assignedArticleHierarchyNodes#6296, minOrderQtySetting#6297, minOrderQtySettingInternal#6298, listingCheck#6299, odsSelection#6300, demandProfiles#6301, constraintProfiles#6302, optimizationProfiles#6303, orderGroupSplitProfiles#6304, supplierMinimumProfiles#6305, multipleRestrictionProfiles#6306, preferredUomSource#6307, handlingOfUnfulfilledDemands#6308, negligibleQuantitiesThreshold#6309, eventtype#6310]
(1446) Project
Arguments: [distributionCenters#6295]
(1447) Generate
Arguments: explode(distributionCenters#6295), false, [distributionCenters#6311]
(1448) Project
Arguments: [distributionCenters#6311]
(1449) Generate
Arguments: explode(distributionCenters#6311.storageLocations), false, [storageLocations#6312]
(1450) Project
Arguments: [distributionCenters#6311.id AS plantId#6313, distributionCenters#6311.internalRefUUID AS plantUuid#6314, storageLocations#6312]
(1451) Project
Arguments: [plantId#6313, plantUuid#6314, storageLocations#6312.id AS storageLocId#6315, storageLocations#6312.internalRefUUID AS storageLocUuid#6316]
(1452) LogicalRelation
Arguments: parquet, [product#6317, plant#6318, orderDateTime#6319, planningStartDateTime#6320], false
(1453) RepartitionByExpression
Arguments: [product#6317, plant#6318], 10
(1454) Project
Arguments: [product#6317, plant#6318, orderDateTime#6319]
(1455) LogicalRelation
Arguments: parquet, [systemId#6321, internalUUID#6322, plant#6323, product#6324, blockedForReplenishmentStartingFrom#6325, productionAspect#6326, salesPlant#6327, listing#6328], false
(1456) Repartition
Arguments: 10, true
(1457) Project
Arguments: [systemId#6321, internalUUID#6322, plant#6323, product#6324, blockedForReplenishmentStartingFrom#6325, productionAspect#6326, salesPlant#6327, listing#6328, struct(systemId, systemId#6321, internalUUID, internalUUID#6322, plant, plant#6323, product, product#6324, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6325, productionAspect, productionAspect#6326, salesPlant, salesPlant#6327, listing, listing#6328) AS productPlant#6329]
(1458) Project
Arguments: [productPlant#6329]
(1459) Join
Arguments: LeftOuter, ((product#6317 <=> productPlant#6329.product.internalRefUUID) AND (plant#6318 <=> productPlant#6329.plant.internalRefUUID))
(1460) Project
Arguments: [product#6317, plant#6318, orderDateTime#6319, productPlant#6329]
(1461) SubqueryAlias
Arguments: wl
(1462) LogicalRelation
Arguments: parquet, [systemId#6330, internalUUID#6331, id#6332, displayId#6333, name#6334, category#6335, companyCode#6336, address#6337, mainDistributionChain#6338, mainPurchasingOrganization#6339, validPurchasingOrganizations#6340, productGroup#6341], false
(1463) Repartition
Arguments: 10, true
(1464) Project
Arguments: [internalUUID#6331, address#6337.timeZone.code AS timezonecode#6342]
(1465) Join
Arguments: LeftOuter, (plant#6318 <=> internalUUID#6331)
(1466) Project
Arguments: [product#6317, plant#6318, orderDateTime#6319, productPlant#6329, internalUUID#6331, CASE WHEN isnotnull(timezonecode#6342) THEN timezonecode#6342 ELSE UTC END AS timezonecode#6343]
(1467) Project
Arguments: [product#6317, plant#6318, orderDateTime#6319, productPlant#6329, timezonecode#6343]
(1468) LogicalRelation
Arguments: parquet, [systemId#6344, internalUUID#6345, id#6346, displayId#6347, name#6348, baseUnitOfMeasure#6349, unitOfMeasures#6350, unitOfMeasureConversions#6351, productionAspect#6352, salesAspect#6353, procurementAspect#6354, productGroup#6355], false
(1469) Repartition
Arguments: 10, true
(1470) Join
Arguments: LeftOuter, (product#6317 = internalUUID#6345)
(1471) Project
Arguments: [product#6317, plant#6318, orderDateTime#6319, productPlant#6329, timezonecode#6343, systemId#6344, internalUUID#6345, id#6346, displayId#6347, name#6348, baseUnitOfMeasure#6349, unitOfMeasures#6350, unitOfMeasureConversions#6351, productionAspect#6352, salesAspect#6353, procurementAspect#6354, productGroup#6355, filter(unitOfMeasureConversions#6351, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6329.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6329.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6349.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6349.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6356]
(1472) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6356.quantityNumerator), true, [quantityNumerator#6357]
(1473) Project
Arguments: [product#6317, plant#6318, orderDateTime#6319, productPlant#6329, timezonecode#6343, systemId#6344, internalUUID#6345, id#6346, displayId#6347, name#6348, baseUnitOfMeasure#6349, unitOfMeasures#6350, unitOfMeasureConversions#6351, productionAspect#6352, salesAspect#6353, procurementAspect#6354, productGroup#6355, filteredUnitOfMeasureConversions#6356, quantityNumerator#6357]
(1474) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6356.quantityDenominator), true, [quantityDenominator#6358]
(1475) Project
Arguments: [product#6317, plant#6318, orderDateTime#6319, productPlant#6329, timezonecode#6343, systemId#6344, internalUUID#6345, id#6346, displayId#6347, name#6348, baseUnitOfMeasure#6349, unitOfMeasures#6350, unitOfMeasureConversions#6351, productionAspect#6352, salesAspect#6353, procurementAspect#6354, productGroup#6355, filteredUnitOfMeasureConversions#6356, quantityNumerator#6357, quantityDenominator#6358]
(1476) Project
Arguments: [product#6317, plant#6318, orderDateTime#6319, productPlant#6329, timezonecode#6343, systemId#6344, internalUUID#6345, id#6346, displayId#6347, name#6348, baseUnitOfMeasure#6349, unitOfMeasures#6350, unitOfMeasureConversions#6351, productionAspect#6352, salesAspect#6353, procurementAspect#6354, productGroup#6355, filteredUnitOfMeasureConversions#6356, quantityNumerator#6357, quantityDenominator#6358, (cast(quantityNumerator#6357 as double) / cast(quantityDenominator#6358 as double)) AS outboundUnit#6359]
(1477) Project
Arguments: [product#6317, plant#6318, orderDateTime#6319, productPlant#6329, timezonecode#6343, systemId#6344, internalUUID#6345, id#6346, displayId#6347, name#6348, baseUnitOfMeasure#6349, unitOfMeasures#6350, unitOfMeasureConversions#6351, productionAspect#6352, salesAspect#6353, procurementAspect#6354, productGroup#6355, filteredUnitOfMeasureConversions#6356, quantityNumerator#6357, quantityDenominator#6358, CASE WHEN (isnull(outboundUnit#6359) OR (outboundUnit#6359 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#6359 END AS outboundUnit#6360]
(1478) Project
Arguments: [product#6317, plant#6318, orderDateTime#6319, productPlant#6329, timezonecode#6343, outboundUnit#6360]
(1479) Project
Arguments: [plant#6318]
(1480) Deduplicate
Arguments: [plant#6318]
(1481) Join
Arguments: Inner, (plantUuid#6314 = plant#6318)
(1482) Project
Arguments: [plantId#6313, plantUuid#6314, storageLocId#6315, storageLocUuid#6316]
(1483) Join
Arguments: Inner, (plant#6286.internalRefUUID <=> plantUuid#6314)
(1484) Generate
Arguments: explode(filter(stockQuantities#6288, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#6316) AND (lambda x#1207.storageLocation.Id = storageLocId#6315)), lambda x#1207, false))), false, [stockQuantity#6361]
(1485) Project
Arguments: [systemId#6283, internalUUID#6284, product#6285, plant#6286, calculationDateTime#6287, stockQuantities#6288, plantId#6313, plantUuid#6314, storageLocId#6315, storageLocUuid#6316, stockQuantity#6361]
(1486) Aggregate
Arguments: [plantUuid#6314, internalUUID#6284, plant#6286, product#6285, systemId#6283], [plantUuid#6314, internalUUID#6284, plant#6286, product#6285, systemId#6283, first(calculationDateTime#6287, false) AS calculationDateTime#6362, collect_list(stockQuantity#6361, 0, 0) AS stockQuantities#6363]
(1487) Project
Arguments: [systemId#6283, internalUUID#6284, product#6285, plant#6286, calculationDateTime#6362, stockQuantities#6363]
(1488) Generate
Arguments: explode(stockQuantities#6363), false, [stockQuantity#6364]
(1489) Project
Arguments: [systemId#6283, internalUUID#6284, product#6285, plant#6286, calculationDateTime#6362, stockQuantities#6363, stockQuantity#6364]
(1490) Project
Arguments: [plant#6286.id AS plant#6365, plant#6286.internalRefUUID AS plantUuid#6366, product#6285.id AS product#6367, product#6285.internalRefUUID AS productUuid#6368, calculationDateTime#6362, stockQuantity#6364.storagelocation.id AS storageLocId#6369, stockQuantity#6364.storagelocation.internalRefUUID AS storageLocUuid#6370, stockQuantity#6364.quantity.measure AS quantity#6371, stockQuantity#6364.specialStockIndicator.code AS specialStockIndicator#6372, stockQuantity#6364.stockType.code AS stockType#6373]
(1491) Filter
Arguments: ((specialStockIndicator#6372 = ) AND (stockType#6373 = 01))
(1492) LogicalRelation
Arguments: parquet, [product#6374, plant#6375, orderDateTime#6376, planningStartDateTime#6377], false
(1493) RepartitionByExpression
Arguments: [product#6374, plant#6375], 10
(1494) Project
Arguments: [product#6374, plant#6375, orderDateTime#6376]
(1495) LogicalRelation
Arguments: parquet, [systemId#6378, internalUUID#6379, plant#6380, product#6381, blockedForReplenishmentStartingFrom#6382, productionAspect#6383, salesPlant#6384, listing#6385], false
(1496) Repartition
Arguments: 10, true
(1497) Project
Arguments: [systemId#6378, internalUUID#6379, plant#6380, product#6381, blockedForReplenishmentStartingFrom#6382, productionAspect#6383, salesPlant#6384, listing#6385, struct(systemId, systemId#6378, internalUUID, internalUUID#6379, plant, plant#6380, product, product#6381, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6382, productionAspect, productionAspect#6383, salesPlant, salesPlant#6384, listing, listing#6385) AS productPlant#6386]
(1498) Project
Arguments: [productPlant#6386]
(1499) Join
Arguments: LeftOuter, ((product#6374 <=> productPlant#6386.product.internalRefUUID) AND (plant#6375 <=> productPlant#6386.plant.internalRefUUID))
(1500) Project
Arguments: [product#6374, plant#6375, orderDateTime#6376, productPlant#6386]
(1501) SubqueryAlias
Arguments: wl
(1502) LogicalRelation
Arguments: parquet, [systemId#6387, internalUUID#6388, id#6389, displayId#6390, name#6391, category#6392, companyCode#6393, address#6394, mainDistributionChain#6395, mainPurchasingOrganization#6396, validPurchasingOrganizations#6397, productGroup#6398], false
(1503) Repartition
Arguments: 10, true
(1504) Project
Arguments: [internalUUID#6388, address#6394.timeZone.code AS timezonecode#6399]
(1505) Join
Arguments: LeftOuter, (plant#6375 <=> internalUUID#6388)
(1506) Project
Arguments: [product#6374, plant#6375, orderDateTime#6376, productPlant#6386, internalUUID#6388, CASE WHEN isnotnull(timezonecode#6399) THEN timezonecode#6399 ELSE UTC END AS timezonecode#6400]
(1507) Project
Arguments: [product#6374, plant#6375, orderDateTime#6376, productPlant#6386, timezonecode#6400]
(1508) LogicalRelation
Arguments: parquet, [systemId#6401, internalUUID#6402, id#6403, displayId#6404, name#6405, baseUnitOfMeasure#6406, unitOfMeasures#6407, unitOfMeasureConversions#6408, productionAspect#6409, salesAspect#6410, procurementAspect#6411, productGroup#6412], false
(1509) Repartition
Arguments: 10, true
(1510) Join
Arguments: LeftOuter, (product#6374 = internalUUID#6402)
(1511) Project
Arguments: [product#6374, plant#6375, orderDateTime#6376, productPlant#6386, timezonecode#6400, systemId#6401, internalUUID#6402, id#6403, displayId#6404, name#6405, baseUnitOfMeasure#6406, unitOfMeasures#6407, unitOfMeasureConversions#6408, productionAspect#6409, salesAspect#6410, procurementAspect#6411, productGroup#6412, filter(unitOfMeasureConversions#6408, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6386.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6386.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6406.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6406.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6413]
(1512) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6413.quantityNumerator), true, [quantityNumerator#6414]
(1513) Project
Arguments: [product#6374, plant#6375, orderDateTime#6376, productPlant#6386, timezonecode#6400, systemId#6401, internalUUID#6402, id#6403, displayId#6404, name#6405, baseUnitOfMeasure#6406, unitOfMeasures#6407, unitOfMeasureConversions#6408, productionAspect#6409, salesAspect#6410, procurementAspect#6411, productGroup#6412, filteredUnitOfMeasureConversions#6413, quantityNumerator#6414]
(1514) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6413.quantityDenominator), true, [quantityDenominator#6415]
(1515) Project
Arguments: [product#6374, plant#6375, orderDateTime#6376, productPlant#6386, timezonecode#6400, systemId#6401, internalUUID#6402, id#6403, displayId#6404, name#6405, baseUnitOfMeasure#6406, unitOfMeasures#6407, unitOfMeasureConversions#6408, productionAspect#6409, salesAspect#6410, procurementAspect#6411, productGroup#6412, filteredUnitOfMeasureConversions#6413, quantityNumerator#6414, quantityDenominator#6415]
(1516) Project
Arguments: [product#6374, plant#6375, orderDateTime#6376, productPlant#6386, timezonecode#6400, systemId#6401, internalUUID#6402, id#6403, displayId#6404, name#6405, baseUnitOfMeasure#6406, unitOfMeasures#6407, unitOfMeasureConversions#6408, productionAspect#6409, salesAspect#6410, procurementAspect#6411, productGroup#6412, filteredUnitOfMeasureConversions#6413, quantityNumerator#6414, quantityDenominator#6415, (cast(quantityNumerator#6414 as double) / cast(quantityDenominator#6415 as double)) AS outboundUnit#6416]
(1517) Project
Arguments: [product#6374, plant#6375, orderDateTime#6376, productPlant#6386, timezonecode#6400, systemId#6401, internalUUID#6402, id#6403, displayId#6404, name#6405, baseUnitOfMeasure#6406, unitOfMeasures#6407, unitOfMeasureConversions#6408, productionAspect#6409, salesAspect#6410, procurementAspect#6411, productGroup#6412, filteredUnitOfMeasureConversions#6413, quantityNumerator#6414, quantityDenominator#6415, CASE WHEN (isnull(outboundUnit#6416) OR (outboundUnit#6416 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#6416 END AS outboundUnit#6417]
(1518) Project
Arguments: [product#6374, plant#6375, orderDateTime#6376, productPlant#6386, timezonecode#6400, outboundUnit#6417]
(1519) Join
Arguments: Inner, ((plantUuid#6366 = plant#6375) AND (productUuid#6368 = product#6374))
(1520) Filter
Arguments: (calculationDateTime#6362 <= orderDateTime#6376)
(1521) Project
Arguments: [plantUuid#6366 AS plant#6418, productUuid#6368 AS product#6419, storageLocId#6369, calculationDateTime#6362, quantity#6371]
(1522) Aggregate
Arguments: [plant#6418, product#6419, storageLocId#6369], [plant#6418, product#6419, storageLocId#6369, max(calculationDateTime#6362) AS max_calc_datetime#6420]
(1523) Join
Arguments: Inner, ((((plant#6281 <=> plant#6418) AND (product#6282 <=> product#6419)) AND (storageLocId#6232 <=> storageLocId#6369)) AND (calculationDateTime#6225 <=> max_calc_datetime#6420))
(1524) Project
Arguments: [plant#6281, product#6282, storageLocId#6232, calculationDateTime#6225, quantity#6234]
(1525) Aggregate
Arguments: [product#6282, plant#6281], [product#6282, plant#6281, sum(quantity#6234) AS quantitySum#6421, min(calculationDateTime#6225) AS minCalculationDateTime#6422]
(1526) Project
Arguments: [product#6282, plant#6281, quantitySum#6421, minCalculationDateTime#6422, round(quantitySum#6421, 0) AS roundedQuantitySum#6423]
(1527) Join
Arguments: LeftOuter, ((plant#6103 = plant#6281) AND (product#6102 = product#6282))
(1528) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, roundedQuantitySum#6423, minCalculationDateTime#6422]
(1529) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, roundedQuantitySum#6423, minCalculationDateTime#6422, CASE WHEN isnotnull(minCalculationDateTime#6422) THEN minCalculationDateTime#6422 ELSE orderDateTime#6104 END AS stockDatetime#6424]
(1530) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, roundedQuantitySum#6423, minCalculationDateTime#6422, stockDatetime#6424, CASE WHEN isnotnull(roundedQuantitySum#6423) THEN array(roundedQuantitySum#6423) ELSE array(0.0) END AS stockBatchQuantities#6425]
(1531) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, roundedQuantitySum#6423, minCalculationDateTime#6422, stockDatetime#6424, stockBatchQuantities#6425, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#6426]
(1532) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, roundedQuantitySum#6423, stockDatetime#6424, stockBatchQuantities#6425, stockBatchShelfLifeEndDatetimes#6426]
(1533) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, stockBatchShelfLifeEndDatetimes#6426]
(1534) LogicalRelation
Arguments: parquet, [product#6427, plant#6428, orderDateTime#6429, planningStartDateTime#6430], false
(1535) RepartitionByExpression
Arguments: [product#6427, plant#6428], 10
(1536) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429]
(1537) LogicalRelation
Arguments: parquet, [systemId#6431, internalUUID#6432, plant#6433, product#6434, blockedForReplenishmentStartingFrom#6435, productionAspect#6436, salesPlant#6437, listing#6438], false
(1538) Repartition
Arguments: 10, true
(1539) Project
Arguments: [systemId#6431, internalUUID#6432, plant#6433, product#6434, blockedForReplenishmentStartingFrom#6435, productionAspect#6436, salesPlant#6437, listing#6438, struct(systemId, systemId#6431, internalUUID, internalUUID#6432, plant, plant#6433, product, product#6434, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6435, productionAspect, productionAspect#6436, salesPlant, salesPlant#6437, listing, listing#6438) AS productPlant#6439]
(1540) Project
Arguments: [productPlant#6439]
(1541) Join
Arguments: LeftOuter, ((product#6427 <=> productPlant#6439.product.internalRefUUID) AND (plant#6428 <=> productPlant#6439.plant.internalRefUUID))
(1542) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439]
(1543) SubqueryAlias
Arguments: wl
(1544) LogicalRelation
Arguments: parquet, [systemId#6440, internalUUID#6441, id#6442, displayId#6443, name#6444, category#6445, companyCode#6446, address#6447, mainDistributionChain#6448, mainPurchasingOrganization#6449, validPurchasingOrganizations#6450, productGroup#6451], false
(1545) Repartition
Arguments: 10, true
(1546) Project
Arguments: [internalUUID#6441, address#6447.timeZone.code AS timezonecode#6452]
(1547) Join
Arguments: LeftOuter, (plant#6428 <=> internalUUID#6441)
(1548) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, internalUUID#6441, CASE WHEN isnotnull(timezonecode#6452) THEN timezonecode#6452 ELSE UTC END AS timezonecode#6453]
(1549) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453]
(1550) LogicalRelation
Arguments: parquet, [systemId#6454, internalUUID#6455, id#6456, displayId#6457, name#6458, baseUnitOfMeasure#6459, unitOfMeasures#6460, unitOfMeasureConversions#6461, productionAspect#6462, salesAspect#6463, procurementAspect#6464, productGroup#6465], false
(1551) Repartition
Arguments: 10, true
(1552) Join
Arguments: LeftOuter, (product#6427 = internalUUID#6455)
(1553) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, systemId#6454, internalUUID#6455, id#6456, displayId#6457, name#6458, baseUnitOfMeasure#6459, unitOfMeasures#6460, unitOfMeasureConversions#6461, productionAspect#6462, salesAspect#6463, procurementAspect#6464, productGroup#6465, filter(unitOfMeasureConversions#6461, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6439.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6439.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6459.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6459.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6466]
(1554) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6466.quantityNumerator), true, [quantityNumerator#6467]
(1555) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, systemId#6454, internalUUID#6455, id#6456, displayId#6457, name#6458, baseUnitOfMeasure#6459, unitOfMeasures#6460, unitOfMeasureConversions#6461, productionAspect#6462, salesAspect#6463, procurementAspect#6464, productGroup#6465, filteredUnitOfMeasureConversions#6466, quantityNumerator#6467]
(1556) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6466.quantityDenominator), true, [quantityDenominator#6468]
(1557) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, systemId#6454, internalUUID#6455, id#6456, displayId#6457, name#6458, baseUnitOfMeasure#6459, unitOfMeasures#6460, unitOfMeasureConversions#6461, productionAspect#6462, salesAspect#6463, procurementAspect#6464, productGroup#6465, filteredUnitOfMeasureConversions#6466, quantityNumerator#6467, quantityDenominator#6468]
(1558) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, systemId#6454, internalUUID#6455, id#6456, displayId#6457, name#6458, baseUnitOfMeasure#6459, unitOfMeasures#6460, unitOfMeasureConversions#6461, productionAspect#6462, salesAspect#6463, procurementAspect#6464, productGroup#6465, filteredUnitOfMeasureConversions#6466, quantityNumerator#6467, quantityDenominator#6468, (cast(quantityNumerator#6467 as double) / cast(quantityDenominator#6468 as double)) AS outboundUnit#6469]
(1559) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, systemId#6454, internalUUID#6455, id#6456, displayId#6457, name#6458, baseUnitOfMeasure#6459, unitOfMeasures#6460, unitOfMeasureConversions#6461, productionAspect#6462, salesAspect#6463, procurementAspect#6464, productGroup#6465, filteredUnitOfMeasureConversions#6466, quantityNumerator#6467, quantityDenominator#6468, CASE WHEN (isnull(outboundUnit#6469) OR (outboundUnit#6469 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#6469 END AS outboundUnit#6470]
(1560) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470]
(1561) LogicalRelation
Arguments: parquet, [systemId#6471, internalUUID#6472, product#6473, plant#6474, calculationDateTime#6475, stockQuantities#6476], false
(1562) Repartition
Arguments: 10, true
(1563) LogicalRelation
Arguments: parquet, [marketUnit#6477, description#6478, articleHierarchy#6479, defaultCurrency#6480, responsibilities#6481, replenishmentTypes#6482, distributionCenters#6483, assignedArticleHierarchyNodes#6484, minOrderQtySetting#6485, minOrderQtySettingInternal#6486, listingCheck#6487, odsSelection#6488, demandProfiles#6489, constraintProfiles#6490, optimizationProfiles#6491, orderGroupSplitProfiles#6492, supplierMinimumProfiles#6493, multipleRestrictionProfiles#6494, preferredUomSource#6495, handlingOfUnfulfilledDemands#6496, negligibleQuantitiesThreshold#6497, eventtype#6498], false
(1564) Repartition
Arguments: 10, true
(1565) Filter
Arguments: (marketUnit#6477 <=> DIP_1691)
(1566) Project
Arguments: [marketUnit#6477, description#6478, articleHierarchy#6479, defaultCurrency#6480, responsibilities#6481, replenishmentTypes#6482, distributionCenters#6483, assignedArticleHierarchyNodes#6484, minOrderQtySetting#6485, minOrderQtySettingInternal#6486, listingCheck#6487, odsSelection#6488, demandProfiles#6489, constraintProfiles#6490, optimizationProfiles#6491, orderGroupSplitProfiles#6492, supplierMinimumProfiles#6493, multipleRestrictionProfiles#6494, preferredUomSource#6495, handlingOfUnfulfilledDemands#6496, negligibleQuantitiesThreshold#6497, eventtype#6498]
(1567) Project
Arguments: [distributionCenters#6483]
(1568) Generate
Arguments: explode(distributionCenters#6483), false, [distributionCenters#6499]
(1569) Project
Arguments: [distributionCenters#6499]
(1570) Generate
Arguments: explode(distributionCenters#6499.storageLocations), false, [storageLocations#6500]
(1571) Project
Arguments: [distributionCenters#6499.id AS plantId#6501, distributionCenters#6499.internalRefUUID AS plantUuid#6502, storageLocations#6500]
(1572) Project
Arguments: [plantId#6501, plantUuid#6502, storageLocations#6500.id AS storageLocId#6503, storageLocations#6500.internalRefUUID AS storageLocUuid#6504]
(1573) LogicalRelation
Arguments: parquet, [product#6505, plant#6506, orderDateTime#6507, planningStartDateTime#6508], false
(1574) RepartitionByExpression
Arguments: [product#6505, plant#6506], 10
(1575) Project
Arguments: [product#6505, plant#6506, orderDateTime#6507]
(1576) LogicalRelation
Arguments: parquet, [systemId#6509, internalUUID#6510, plant#6511, product#6512, blockedForReplenishmentStartingFrom#6513, productionAspect#6514, salesPlant#6515, listing#6516], false
(1577) Repartition
Arguments: 10, true
(1578) Project
Arguments: [systemId#6509, internalUUID#6510, plant#6511, product#6512, blockedForReplenishmentStartingFrom#6513, productionAspect#6514, salesPlant#6515, listing#6516, struct(systemId, systemId#6509, internalUUID, internalUUID#6510, plant, plant#6511, product, product#6512, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6513, productionAspect, productionAspect#6514, salesPlant, salesPlant#6515, listing, listing#6516) AS productPlant#6517]
(1579) Project
Arguments: [productPlant#6517]
(1580) Join
Arguments: LeftOuter, ((product#6505 <=> productPlant#6517.product.internalRefUUID) AND (plant#6506 <=> productPlant#6517.plant.internalRefUUID))
(1581) Project
Arguments: [product#6505, plant#6506, orderDateTime#6507, productPlant#6517]
(1582) SubqueryAlias
Arguments: wl
(1583) LogicalRelation
Arguments: parquet, [systemId#6518, internalUUID#6519, id#6520, displayId#6521, name#6522, category#6523, companyCode#6524, address#6525, mainDistributionChain#6526, mainPurchasingOrganization#6527, validPurchasingOrganizations#6528, productGroup#6529], false
(1584) Repartition
Arguments: 10, true
(1585) Project
Arguments: [internalUUID#6519, address#6525.timeZone.code AS timezonecode#6530]
(1586) Join
Arguments: LeftOuter, (plant#6506 <=> internalUUID#6519)
(1587) Project
Arguments: [product#6505, plant#6506, orderDateTime#6507, productPlant#6517, internalUUID#6519, CASE WHEN isnotnull(timezonecode#6530) THEN timezonecode#6530 ELSE UTC END AS timezonecode#6531]
(1588) Project
Arguments: [product#6505, plant#6506, orderDateTime#6507, productPlant#6517, timezonecode#6531]
(1589) LogicalRelation
Arguments: parquet, [systemId#6532, internalUUID#6533, id#6534, displayId#6535, name#6536, baseUnitOfMeasure#6537, unitOfMeasures#6538, unitOfMeasureConversions#6539, productionAspect#6540, salesAspect#6541, procurementAspect#6542, productGroup#6543], false
(1590) Repartition
Arguments: 10, true
(1591) Join
Arguments: LeftOuter, (product#6505 = internalUUID#6533)
(1592) Project
Arguments: [product#6505, plant#6506, orderDateTime#6507, productPlant#6517, timezonecode#6531, systemId#6532, internalUUID#6533, id#6534, displayId#6535, name#6536, baseUnitOfMeasure#6537, unitOfMeasures#6538, unitOfMeasureConversions#6539, productionAspect#6540, salesAspect#6541, procurementAspect#6542, productGroup#6543, filter(unitOfMeasureConversions#6539, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6517.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6517.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6537.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6537.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6544]
(1593) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6544.quantityNumerator), true, [quantityNumerator#6545]
(1594) Project
Arguments: [product#6505, plant#6506, orderDateTime#6507, productPlant#6517, timezonecode#6531, systemId#6532, internalUUID#6533, id#6534, displayId#6535, name#6536, baseUnitOfMeasure#6537, unitOfMeasures#6538, unitOfMeasureConversions#6539, productionAspect#6540, salesAspect#6541, procurementAspect#6542, productGroup#6543, filteredUnitOfMeasureConversions#6544, quantityNumerator#6545]
(1595) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6544.quantityDenominator), true, [quantityDenominator#6546]
(1596) Project
Arguments: [product#6505, plant#6506, orderDateTime#6507, productPlant#6517, timezonecode#6531, systemId#6532, internalUUID#6533, id#6534, displayId#6535, name#6536, baseUnitOfMeasure#6537, unitOfMeasures#6538, unitOfMeasureConversions#6539, productionAspect#6540, salesAspect#6541, procurementAspect#6542, productGroup#6543, filteredUnitOfMeasureConversions#6544, quantityNumerator#6545, quantityDenominator#6546]
(1597) Project
Arguments: [product#6505, plant#6506, orderDateTime#6507, productPlant#6517, timezonecode#6531, systemId#6532, internalUUID#6533, id#6534, displayId#6535, name#6536, baseUnitOfMeasure#6537, unitOfMeasures#6538, unitOfMeasureConversions#6539, productionAspect#6540, salesAspect#6541, procurementAspect#6542, productGroup#6543, filteredUnitOfMeasureConversions#6544, quantityNumerator#6545, quantityDenominator#6546, (cast(quantityNumerator#6545 as double) / cast(quantityDenominator#6546 as double)) AS outboundUnit#6547]
(1598) Project
Arguments: [product#6505, plant#6506, orderDateTime#6507, productPlant#6517, timezonecode#6531, systemId#6532, internalUUID#6533, id#6534, displayId#6535, name#6536, baseUnitOfMeasure#6537, unitOfMeasures#6538, unitOfMeasureConversions#6539, productionAspect#6540, salesAspect#6541, procurementAspect#6542, productGroup#6543, filteredUnitOfMeasureConversions#6544, quantityNumerator#6545, quantityDenominator#6546, CASE WHEN (isnull(outboundUnit#6547) OR (outboundUnit#6547 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#6547 END AS outboundUnit#6548]
(1599) Project
Arguments: [product#6505, plant#6506, orderDateTime#6507, productPlant#6517, timezonecode#6531, outboundUnit#6548]
(1600) Project
Arguments: [plant#6506]
(1601) Deduplicate
Arguments: [plant#6506]
(1602) Join
Arguments: Inner, (plantUuid#6502 = plant#6506)
(1603) Project
Arguments: [plantId#6501, plantUuid#6502, storageLocId#6503, storageLocUuid#6504]
(1604) Join
Arguments: Inner, (plant#6474.internalRefUUID <=> plantUuid#6502)
(1605) Generate
Arguments: explode(filter(stockQuantities#6476, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#6504) AND (lambda x#1207.storageLocation.Id = storageLocId#6503)), lambda x#1207, false))), false, [stockQuantity#6549]
(1606) Project
Arguments: [systemId#6471, internalUUID#6472, product#6473, plant#6474, calculationDateTime#6475, stockQuantities#6476, plantId#6501, plantUuid#6502, storageLocId#6503, storageLocUuid#6504, stockQuantity#6549]
(1607) Aggregate
Arguments: [plantUuid#6502, internalUUID#6472, plant#6474, product#6473, systemId#6471], [plantUuid#6502, internalUUID#6472, plant#6474, product#6473, systemId#6471, first(calculationDateTime#6475, false) AS calculationDateTime#6550, collect_list(stockQuantity#6549, 0, 0) AS stockQuantities#6551]
(1608) Project
Arguments: [systemId#6471, internalUUID#6472, product#6473, plant#6474, calculationDateTime#6550, stockQuantities#6551]
(1609) Generate
Arguments: explode(stockQuantities#6551), false, [stockQuantity#6552]
(1610) Project
Arguments: [systemId#6471, internalUUID#6472, product#6473, plant#6474, calculationDateTime#6550, stockQuantities#6551, stockQuantity#6552]
(1611) Project
Arguments: [plant#6474.id AS plant#6553, plant#6474.internalRefUUID AS plantUuid#6554, product#6473.id AS product#6555, product#6473.internalRefUUID AS productUuid#6556, calculationDateTime#6550, stockQuantity#6552.storagelocation.id AS storageLocId#6557, stockQuantity#6552.storagelocation.internalRefUUID AS storageLocUuid#6558, stockQuantity#6552.quantity.measure AS quantity#6559, stockQuantity#6552.specialStockIndicator.code AS specialStockIndicator#6560, stockQuantity#6552.stockType.code AS stockType#6561]
(1612) Filter
Arguments: ((specialStockIndicator#6560 = ) AND (stockType#6561 = 01))
(1613) LogicalRelation
Arguments: parquet, [product#6562, plant#6563, orderDateTime#6564, planningStartDateTime#6565], false
(1614) RepartitionByExpression
Arguments: [product#6562, plant#6563], 10
(1615) Project
Arguments: [product#6562, plant#6563, orderDateTime#6564]
(1616) LogicalRelation
Arguments: parquet, [systemId#6566, internalUUID#6567, plant#6568, product#6569, blockedForReplenishmentStartingFrom#6570, productionAspect#6571, salesPlant#6572, listing#6573], false
(1617) Repartition
Arguments: 10, true
(1618) Project
Arguments: [systemId#6566, internalUUID#6567, plant#6568, product#6569, blockedForReplenishmentStartingFrom#6570, productionAspect#6571, salesPlant#6572, listing#6573, struct(systemId, systemId#6566, internalUUID, internalUUID#6567, plant, plant#6568, product, product#6569, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6570, productionAspect, productionAspect#6571, salesPlant, salesPlant#6572, listing, listing#6573) AS productPlant#6574]
(1619) Project
Arguments: [productPlant#6574]
(1620) Join
Arguments: LeftOuter, ((product#6562 <=> productPlant#6574.product.internalRefUUID) AND (plant#6563 <=> productPlant#6574.plant.internalRefUUID))
(1621) Project
Arguments: [product#6562, plant#6563, orderDateTime#6564, productPlant#6574]
(1622) SubqueryAlias
Arguments: wl
(1623) LogicalRelation
Arguments: parquet, [systemId#6575, internalUUID#6576, id#6577, displayId#6578, name#6579, category#6580, companyCode#6581, address#6582, mainDistributionChain#6583, mainPurchasingOrganization#6584, validPurchasingOrganizations#6585, productGroup#6586], false
(1624) Repartition
Arguments: 10, true
(1625) Project
Arguments: [internalUUID#6576, address#6582.timeZone.code AS timezonecode#6587]
(1626) Join
Arguments: LeftOuter, (plant#6563 <=> internalUUID#6576)
(1627) Project
Arguments: [product#6562, plant#6563, orderDateTime#6564, productPlant#6574, internalUUID#6576, CASE WHEN isnotnull(timezonecode#6587) THEN timezonecode#6587 ELSE UTC END AS timezonecode#6588]
(1628) Project
Arguments: [product#6562, plant#6563, orderDateTime#6564, productPlant#6574, timezonecode#6588]
(1629) LogicalRelation
Arguments: parquet, [systemId#6589, internalUUID#6590, id#6591, displayId#6592, name#6593, baseUnitOfMeasure#6594, unitOfMeasures#6595, unitOfMeasureConversions#6596, productionAspect#6597, salesAspect#6598, procurementAspect#6599, productGroup#6600], false
(1630) Repartition
Arguments: 10, true
(1631) Join
Arguments: LeftOuter, (product#6562 = internalUUID#6590)
(1632) Project
Arguments: [product#6562, plant#6563, orderDateTime#6564, productPlant#6574, timezonecode#6588, systemId#6589, internalUUID#6590, id#6591, displayId#6592, name#6593, baseUnitOfMeasure#6594, unitOfMeasures#6595, unitOfMeasureConversions#6596, productionAspect#6597, salesAspect#6598, procurementAspect#6599, productGroup#6600, filter(unitOfMeasureConversions#6596, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6574.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6574.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6594.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6594.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6601]
(1633) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6601.quantityNumerator), true, [quantityNumerator#6602]
(1634) Project
Arguments: [product#6562, plant#6563, orderDateTime#6564, productPlant#6574, timezonecode#6588, systemId#6589, internalUUID#6590, id#6591, displayId#6592, name#6593, baseUnitOfMeasure#6594, unitOfMeasures#6595, unitOfMeasureConversions#6596, productionAspect#6597, salesAspect#6598, procurementAspect#6599, productGroup#6600, filteredUnitOfMeasureConversions#6601, quantityNumerator#6602]
(1635) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6601.quantityDenominator), true, [quantityDenominator#6603]
(1636) Project
Arguments: [product#6562, plant#6563, orderDateTime#6564, productPlant#6574, timezonecode#6588, systemId#6589, internalUUID#6590, id#6591, displayId#6592, name#6593, baseUnitOfMeasure#6594, unitOfMeasures#6595, unitOfMeasureConversions#6596, productionAspect#6597, salesAspect#6598, procurementAspect#6599, productGroup#6600, filteredUnitOfMeasureConversions#6601, quantityNumerator#6602, quantityDenominator#6603]
(1637) Project
Arguments: [product#6562, plant#6563, orderDateTime#6564, productPlant#6574, timezonecode#6588, systemId#6589, internalUUID#6590, id#6591, displayId#6592, name#6593, baseUnitOfMeasure#6594, unitOfMeasures#6595, unitOfMeasureConversions#6596, productionAspect#6597, salesAspect#6598, procurementAspect#6599, productGroup#6600, filteredUnitOfMeasureConversions#6601, quantityNumerator#6602, quantityDenominator#6603, (cast(quantityNumerator#6602 as double) / cast(quantityDenominator#6603 as double)) AS outboundUnit#6604]
(1638) Project
Arguments: [product#6562, plant#6563, orderDateTime#6564, productPlant#6574, timezonecode#6588, systemId#6589, internalUUID#6590, id#6591, displayId#6592, name#6593, baseUnitOfMeasure#6594, unitOfMeasures#6595, unitOfMeasureConversions#6596, productionAspect#6597, salesAspect#6598, procurementAspect#6599, productGroup#6600, filteredUnitOfMeasureConversions#6601, quantityNumerator#6602, quantityDenominator#6603, CASE WHEN (isnull(outboundUnit#6604) OR (outboundUnit#6604 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#6604 END AS outboundUnit#6605]
(1639) Project
Arguments: [product#6562, plant#6563, orderDateTime#6564, productPlant#6574, timezonecode#6588, outboundUnit#6605]
(1640) Join
Arguments: Inner, ((plantUuid#6554 = plant#6563) AND (productUuid#6556 = product#6562))
(1641) Filter
Arguments: (calculationDateTime#6550 <= orderDateTime#6564)
(1642) Project
Arguments: [plantUuid#6554 AS plant#6606, productUuid#6556 AS product#6607, storageLocId#6557, calculationDateTime#6550, quantity#6559]
(1643) LogicalRelation
Arguments: parquet, [systemId#6608, internalUUID#6609, product#6610, plant#6611, calculationDateTime#6612, stockQuantities#6613], false
(1644) Repartition
Arguments: 10, true
(1645) LogicalRelation
Arguments: parquet, [marketUnit#6614, description#6615, articleHierarchy#6616, defaultCurrency#6617, responsibilities#6618, replenishmentTypes#6619, distributionCenters#6620, assignedArticleHierarchyNodes#6621, minOrderQtySetting#6622, minOrderQtySettingInternal#6623, listingCheck#6624, odsSelection#6625, demandProfiles#6626, constraintProfiles#6627, optimizationProfiles#6628, orderGroupSplitProfiles#6629, supplierMinimumProfiles#6630, multipleRestrictionProfiles#6631, preferredUomSource#6632, handlingOfUnfulfilledDemands#6633, negligibleQuantitiesThreshold#6634, eventtype#6635], false
(1646) Repartition
Arguments: 10, true
(1647) Filter
Arguments: (marketUnit#6614 <=> DIP_1691)
(1648) Project
Arguments: [marketUnit#6614, description#6615, articleHierarchy#6616, defaultCurrency#6617, responsibilities#6618, replenishmentTypes#6619, distributionCenters#6620, assignedArticleHierarchyNodes#6621, minOrderQtySetting#6622, minOrderQtySettingInternal#6623, listingCheck#6624, odsSelection#6625, demandProfiles#6626, constraintProfiles#6627, optimizationProfiles#6628, orderGroupSplitProfiles#6629, supplierMinimumProfiles#6630, multipleRestrictionProfiles#6631, preferredUomSource#6632, handlingOfUnfulfilledDemands#6633, negligibleQuantitiesThreshold#6634, eventtype#6635]
(1649) Project
Arguments: [distributionCenters#6620]
(1650) Generate
Arguments: explode(distributionCenters#6620), false, [distributionCenters#6636]
(1651) Project
Arguments: [distributionCenters#6636]
(1652) Generate
Arguments: explode(distributionCenters#6636.storageLocations), false, [storageLocations#6637]
(1653) Project
Arguments: [distributionCenters#6636.id AS plantId#6638, distributionCenters#6636.internalRefUUID AS plantUuid#6639, storageLocations#6637]
(1654) Project
Arguments: [plantId#6638, plantUuid#6639, storageLocations#6637.id AS storageLocId#6640, storageLocations#6637.internalRefUUID AS storageLocUuid#6641]
(1655) LogicalRelation
Arguments: parquet, [product#6642, plant#6643, orderDateTime#6644, planningStartDateTime#6645], false
(1656) RepartitionByExpression
Arguments: [product#6642, plant#6643], 10
(1657) Project
Arguments: [product#6642, plant#6643, orderDateTime#6644]
(1658) LogicalRelation
Arguments: parquet, [systemId#6646, internalUUID#6647, plant#6648, product#6649, blockedForReplenishmentStartingFrom#6650, productionAspect#6651, salesPlant#6652, listing#6653], false
(1659) Repartition
Arguments: 10, true
(1660) Project
Arguments: [systemId#6646, internalUUID#6647, plant#6648, product#6649, blockedForReplenishmentStartingFrom#6650, productionAspect#6651, salesPlant#6652, listing#6653, struct(systemId, systemId#6646, internalUUID, internalUUID#6647, plant, plant#6648, product, product#6649, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6650, productionAspect, productionAspect#6651, salesPlant, salesPlant#6652, listing, listing#6653) AS productPlant#6654]
(1661) Project
Arguments: [productPlant#6654]
(1662) Join
Arguments: LeftOuter, ((product#6642 <=> productPlant#6654.product.internalRefUUID) AND (plant#6643 <=> productPlant#6654.plant.internalRefUUID))
(1663) Project
Arguments: [product#6642, plant#6643, orderDateTime#6644, productPlant#6654]
(1664) SubqueryAlias
Arguments: wl
(1665) LogicalRelation
Arguments: parquet, [systemId#6655, internalUUID#6656, id#6657, displayId#6658, name#6659, category#6660, companyCode#6661, address#6662, mainDistributionChain#6663, mainPurchasingOrganization#6664, validPurchasingOrganizations#6665, productGroup#6666], false
(1666) Repartition
Arguments: 10, true
(1667) Project
Arguments: [internalUUID#6656, address#6662.timeZone.code AS timezonecode#6667]
(1668) Join
Arguments: LeftOuter, (plant#6643 <=> internalUUID#6656)
(1669) Project
Arguments: [product#6642, plant#6643, orderDateTime#6644, productPlant#6654, internalUUID#6656, CASE WHEN isnotnull(timezonecode#6667) THEN timezonecode#6667 ELSE UTC END AS timezonecode#6668]
(1670) Project
Arguments: [product#6642, plant#6643, orderDateTime#6644, productPlant#6654, timezonecode#6668]
(1671) LogicalRelation
Arguments: parquet, [systemId#6669, internalUUID#6670, id#6671, displayId#6672, name#6673, baseUnitOfMeasure#6674, unitOfMeasures#6675, unitOfMeasureConversions#6676, productionAspect#6677, salesAspect#6678, procurementAspect#6679, productGroup#6680], false
(1672) Repartition
Arguments: 10, true
(1673) Join
Arguments: LeftOuter, (product#6642 = internalUUID#6670)
(1674) Project
Arguments: [product#6642, plant#6643, orderDateTime#6644, productPlant#6654, timezonecode#6668, systemId#6669, internalUUID#6670, id#6671, displayId#6672, name#6673, baseUnitOfMeasure#6674, unitOfMeasures#6675, unitOfMeasureConversions#6676, productionAspect#6677, salesAspect#6678, procurementAspect#6679, productGroup#6680, filter(unitOfMeasureConversions#6676, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6654.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6654.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6674.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6674.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6681]
(1675) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6681.quantityNumerator), true, [quantityNumerator#6682]
(1676) Project
Arguments: [product#6642, plant#6643, orderDateTime#6644, productPlant#6654, timezonecode#6668, systemId#6669, internalUUID#6670, id#6671, displayId#6672, name#6673, baseUnitOfMeasure#6674, unitOfMeasures#6675, unitOfMeasureConversions#6676, productionAspect#6677, salesAspect#6678, procurementAspect#6679, productGroup#6680, filteredUnitOfMeasureConversions#6681, quantityNumerator#6682]
(1677) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6681.quantityDenominator), true, [quantityDenominator#6683]
(1678) Project
Arguments: [product#6642, plant#6643, orderDateTime#6644, productPlant#6654, timezonecode#6668, systemId#6669, internalUUID#6670, id#6671, displayId#6672, name#6673, baseUnitOfMeasure#6674, unitOfMeasures#6675, unitOfMeasureConversions#6676, productionAspect#6677, salesAspect#6678, procurementAspect#6679, productGroup#6680, filteredUnitOfMeasureConversions#6681, quantityNumerator#6682, quantityDenominator#6683]
(1679) Project
Arguments: [product#6642, plant#6643, orderDateTime#6644, productPlant#6654, timezonecode#6668, systemId#6669, internalUUID#6670, id#6671, displayId#6672, name#6673, baseUnitOfMeasure#6674, unitOfMeasures#6675, unitOfMeasureConversions#6676, productionAspect#6677, salesAspect#6678, procurementAspect#6679, productGroup#6680, filteredUnitOfMeasureConversions#6681, quantityNumerator#6682, quantityDenominator#6683, (cast(quantityNumerator#6682 as double) / cast(quantityDenominator#6683 as double)) AS outboundUnit#6684]
(1680) Project
Arguments: [product#6642, plant#6643, orderDateTime#6644, productPlant#6654, timezonecode#6668, systemId#6669, internalUUID#6670, id#6671, displayId#6672, name#6673, baseUnitOfMeasure#6674, unitOfMeasures#6675, unitOfMeasureConversions#6676, productionAspect#6677, salesAspect#6678, procurementAspect#6679, productGroup#6680, filteredUnitOfMeasureConversions#6681, quantityNumerator#6682, quantityDenominator#6683, CASE WHEN (isnull(outboundUnit#6684) OR (outboundUnit#6684 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#6684 END AS outboundUnit#6685]
(1681) Project
Arguments: [product#6642, plant#6643, orderDateTime#6644, productPlant#6654, timezonecode#6668, outboundUnit#6685]
(1682) Project
Arguments: [plant#6643]
(1683) Deduplicate
Arguments: [plant#6643]
(1684) Join
Arguments: Inner, (plantUuid#6639 = plant#6643)
(1685) Project
Arguments: [plantId#6638, plantUuid#6639, storageLocId#6640, storageLocUuid#6641]
(1686) Join
Arguments: Inner, (plant#6611.internalRefUUID <=> plantUuid#6639)
(1687) Generate
Arguments: explode(filter(stockQuantities#6613, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#6641) AND (lambda x#1207.storageLocation.Id = storageLocId#6640)), lambda x#1207, false))), false, [stockQuantity#6686]
(1688) Project
Arguments: [systemId#6608, internalUUID#6609, product#6610, plant#6611, calculationDateTime#6612, stockQuantities#6613, plantId#6638, plantUuid#6639, storageLocId#6640, storageLocUuid#6641, stockQuantity#6686]
(1689) Aggregate
Arguments: [plantUuid#6639, internalUUID#6609, plant#6611, product#6610, systemId#6608], [plantUuid#6639, internalUUID#6609, plant#6611, product#6610, systemId#6608, first(calculationDateTime#6612, false) AS calculationDateTime#6687, collect_list(stockQuantity#6686, 0, 0) AS stockQuantities#6688]
(1690) Project
Arguments: [systemId#6608, internalUUID#6609, product#6610, plant#6611, calculationDateTime#6687, stockQuantities#6688]
(1691) Generate
Arguments: explode(stockQuantities#6688), false, [stockQuantity#6689]
(1692) Project
Arguments: [systemId#6608, internalUUID#6609, product#6610, plant#6611, calculationDateTime#6687, stockQuantities#6688, stockQuantity#6689]
(1693) Project
Arguments: [plant#6611.id AS plant#6690, plant#6611.internalRefUUID AS plantUuid#6691, product#6610.id AS product#6692, product#6610.internalRefUUID AS productUuid#6693, calculationDateTime#6687, stockQuantity#6689.storagelocation.id AS storageLocId#6694, stockQuantity#6689.storagelocation.internalRefUUID AS storageLocUuid#6695, stockQuantity#6689.quantity.measure AS quantity#6696, stockQuantity#6689.specialStockIndicator.code AS specialStockIndicator#6697, stockQuantity#6689.stockType.code AS stockType#6698]
(1694) Filter
Arguments: ((specialStockIndicator#6697 = ) AND (stockType#6698 = 01))
(1695) LogicalRelation
Arguments: parquet, [product#6699, plant#6700, orderDateTime#6701, planningStartDateTime#6702], false
(1696) RepartitionByExpression
Arguments: [product#6699, plant#6700], 10
(1697) Project
Arguments: [product#6699, plant#6700, orderDateTime#6701]
(1698) LogicalRelation
Arguments: parquet, [systemId#6703, internalUUID#6704, plant#6705, product#6706, blockedForReplenishmentStartingFrom#6707, productionAspect#6708, salesPlant#6709, listing#6710], false
(1699) Repartition
Arguments: 10, true
(1700) Project
Arguments: [systemId#6703, internalUUID#6704, plant#6705, product#6706, blockedForReplenishmentStartingFrom#6707, productionAspect#6708, salesPlant#6709, listing#6710, struct(systemId, systemId#6703, internalUUID, internalUUID#6704, plant, plant#6705, product, product#6706, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6707, productionAspect, productionAspect#6708, salesPlant, salesPlant#6709, listing, listing#6710) AS productPlant#6711]
(1701) Project
Arguments: [productPlant#6711]
(1702) Join
Arguments: LeftOuter, ((product#6699 <=> productPlant#6711.product.internalRefUUID) AND (plant#6700 <=> productPlant#6711.plant.internalRefUUID))
(1703) Project
Arguments: [product#6699, plant#6700, orderDateTime#6701, productPlant#6711]
(1704) SubqueryAlias
Arguments: wl
(1705) LogicalRelation
Arguments: parquet, [systemId#6712, internalUUID#6713, id#6714, displayId#6715, name#6716, category#6717, companyCode#6718, address#6719, mainDistributionChain#6720, mainPurchasingOrganization#6721, validPurchasingOrganizations#6722, productGroup#6723], false
(1706) Repartition
Arguments: 10, true
(1707) Project
Arguments: [internalUUID#6713, address#6719.timeZone.code AS timezonecode#6724]
(1708) Join
Arguments: LeftOuter, (plant#6700 <=> internalUUID#6713)
(1709) Project
Arguments: [product#6699, plant#6700, orderDateTime#6701, productPlant#6711, internalUUID#6713, CASE WHEN isnotnull(timezonecode#6724) THEN timezonecode#6724 ELSE UTC END AS timezonecode#6725]
(1710) Project
Arguments: [product#6699, plant#6700, orderDateTime#6701, productPlant#6711, timezonecode#6725]
(1711) LogicalRelation
Arguments: parquet, [systemId#6726, internalUUID#6727, id#6728, displayId#6729, name#6730, baseUnitOfMeasure#6731, unitOfMeasures#6732, unitOfMeasureConversions#6733, productionAspect#6734, salesAspect#6735, procurementAspect#6736, productGroup#6737], false
(1712) Repartition
Arguments: 10, true
(1713) Join
Arguments: LeftOuter, (product#6699 = internalUUID#6727)
(1714) Project
Arguments: [product#6699, plant#6700, orderDateTime#6701, productPlant#6711, timezonecode#6725, systemId#6726, internalUUID#6727, id#6728, displayId#6729, name#6730, baseUnitOfMeasure#6731, unitOfMeasures#6732, unitOfMeasureConversions#6733, productionAspect#6734, salesAspect#6735, procurementAspect#6736, productGroup#6737, filter(unitOfMeasureConversions#6733, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6711.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6711.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6731.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6731.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6738]
(1715) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6738.quantityNumerator), true, [quantityNumerator#6739]
(1716) Project
Arguments: [product#6699, plant#6700, orderDateTime#6701, productPlant#6711, timezonecode#6725, systemId#6726, internalUUID#6727, id#6728, displayId#6729, name#6730, baseUnitOfMeasure#6731, unitOfMeasures#6732, unitOfMeasureConversions#6733, productionAspect#6734, salesAspect#6735, procurementAspect#6736, productGroup#6737, filteredUnitOfMeasureConversions#6738, quantityNumerator#6739]
(1717) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6738.quantityDenominator), true, [quantityDenominator#6740]
(1718) Project
Arguments: [product#6699, plant#6700, orderDateTime#6701, productPlant#6711, timezonecode#6725, systemId#6726, internalUUID#6727, id#6728, displayId#6729, name#6730, baseUnitOfMeasure#6731, unitOfMeasures#6732, unitOfMeasureConversions#6733, productionAspect#6734, salesAspect#6735, procurementAspect#6736, productGroup#6737, filteredUnitOfMeasureConversions#6738, quantityNumerator#6739, quantityDenominator#6740]
(1719) Project
Arguments: [product#6699, plant#6700, orderDateTime#6701, productPlant#6711, timezonecode#6725, systemId#6726, internalUUID#6727, id#6728, displayId#6729, name#6730, baseUnitOfMeasure#6731, unitOfMeasures#6732, unitOfMeasureConversions#6733, productionAspect#6734, salesAspect#6735, procurementAspect#6736, productGroup#6737, filteredUnitOfMeasureConversions#6738, quantityNumerator#6739, quantityDenominator#6740, (cast(quantityNumerator#6739 as double) / cast(quantityDenominator#6740 as double)) AS outboundUnit#6741]
(1720) Project
Arguments: [product#6699, plant#6700, orderDateTime#6701, productPlant#6711, timezonecode#6725, systemId#6726, internalUUID#6727, id#6728, displayId#6729, name#6730, baseUnitOfMeasure#6731, unitOfMeasures#6732, unitOfMeasureConversions#6733, productionAspect#6734, salesAspect#6735, procurementAspect#6736, productGroup#6737, filteredUnitOfMeasureConversions#6738, quantityNumerator#6739, quantityDenominator#6740, CASE WHEN (isnull(outboundUnit#6741) OR (outboundUnit#6741 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#6741 END AS outboundUnit#6742]
(1721) Project
Arguments: [product#6699, plant#6700, orderDateTime#6701, productPlant#6711, timezonecode#6725, outboundUnit#6742]
(1722) Join
Arguments: Inner, ((plantUuid#6691 = plant#6700) AND (productUuid#6693 = product#6699))
(1723) Filter
Arguments: (calculationDateTime#6687 <= orderDateTime#6701)
(1724) Project
Arguments: [plantUuid#6691 AS plant#6743, productUuid#6693 AS product#6744, storageLocId#6694, calculationDateTime#6687, quantity#6696]
(1725) Aggregate
Arguments: [plant#6743, product#6744, storageLocId#6694], [plant#6743, product#6744, storageLocId#6694, max(calculationDateTime#6687) AS max_calc_datetime#6745]
(1726) Join
Arguments: Inner, ((((plant#6606 <=> plant#6743) AND (product#6607 <=> product#6744)) AND (storageLocId#6557 <=> storageLocId#6694)) AND (calculationDateTime#6550 <=> max_calc_datetime#6745))
(1727) Project
Arguments: [plant#6606, product#6607, storageLocId#6557, calculationDateTime#6550, quantity#6559]
(1728) Aggregate
Arguments: [product#6607, plant#6606], [product#6607, plant#6606, sum(quantity#6559) AS quantitySum#6746, min(calculationDateTime#6550) AS minCalculationDateTime#6747]
(1729) Project
Arguments: [product#6607, plant#6606, quantitySum#6746, minCalculationDateTime#6747, round(quantitySum#6746, 0) AS roundedQuantitySum#6748]
(1730) Join
Arguments: LeftOuter, ((plant#6428 = plant#6606) AND (product#6427 = product#6607))
(1731) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, roundedQuantitySum#6748, minCalculationDateTime#6747]
(1732) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, roundedQuantitySum#6748, minCalculationDateTime#6747, CASE WHEN isnotnull(minCalculationDateTime#6747) THEN minCalculationDateTime#6747 ELSE orderDateTime#6429 END AS stockDatetime#6749]
(1733) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, roundedQuantitySum#6748, minCalculationDateTime#6747, stockDatetime#6749, CASE WHEN isnotnull(roundedQuantitySum#6748) THEN array(roundedQuantitySum#6748) ELSE array(0.0) END AS stockBatchQuantities#6750]
(1734) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, roundedQuantitySum#6748, minCalculationDateTime#6747, stockDatetime#6749, stockBatchQuantities#6750, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#6751]
(1735) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, roundedQuantitySum#6748, stockDatetime#6749, stockBatchQuantities#6750, stockBatchShelfLifeEndDatetimes#6751]
(1736) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, stockDatetime#6749, stockBatchQuantities#6750, stockBatchShelfLifeEndDatetimes#6751]
(1737) LogicalRelation
Arguments: parquet, [product#6752, plant#6753, demandChannel#6754, demandStream#6755, considerVariance#6756, demandTimeBuckets#6757, demandPointInTimeStart#6758, demandPointInTimeEnd#6759, demandPointInTime#6760], false
(1738) Join
Arguments: LeftOuter, ((product#6427 = product#6752) AND (plant#6428 = plant#6753))
(1739) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, stockDatetime#6749, stockBatchQuantities#6750, stockBatchShelfLifeEndDatetimes#6751, demandChannel#6754, demandStream#6755, considerVariance#6756, demandTimeBuckets#6757, demandPointInTimeStart#6758, demandPointInTimeEnd#6759, demandPointInTime#6760, product#6752, plant#6753]
(1740) Project
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, stockDatetime#6749, stockBatchQuantities#6750, stockBatchShelfLifeEndDatetimes#6751, demandChannel#6754, demandStream#6755, considerVariance#6756, demandTimeBuckets#6757, demandPointInTimeStart#6758, demandPointInTimeEnd#6759, demandPointInTime#6760, CASE WHEN isnotnull(product#6752) THEN struct(demandChannel, demandChannel#6754, demandStream, demandStream#6755, considerVariance, considerVariance#6756, demandTimeBuckets, demandTimeBuckets#6757, demandPointInTimeStart, demandPointInTimeStart#6758, demandPointInTimeEnd, demandPointInTimeEnd#6759, demandPointInTime, demandPointInTime#6760) 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#6761]
(1741) Aggregate
Arguments: [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, stockDatetime#6749, stockBatchQuantities#6750, stockBatchShelfLifeEndDatetimes#6751], [product#6427, plant#6428, orderDateTime#6429, productPlant#6439, timezonecode#6453, outboundUnit#6470, stockDatetime#6749, stockBatchQuantities#6750, stockBatchShelfLifeEndDatetimes#6751, collect_list(rawDemands#6761, 0, 0) AS rawDemands#6762]
(1742) DeserializeToObject
Arguments: createexternalrow(invoke(product#6427.toString()), invoke(plant#6428.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#6429)), if (isnull(productPlant#6439)) null else createexternalrow(invoke(productPlant#6439.systemId.toString()), invoke(productPlant#6439.internalUUID.toString()), if (isnull(productPlant#6439.plant)) null else createexternalrow(invoke(productPlant#6439.plant.internalRefUUID.toString()), invoke(productPlant#6439.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#6439.product)) null else createexternalrow(invoke(productPlant#6439.product.internalRefUUID.toString()), invoke(productPlant#6439.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#6439.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#6439.productionAspect)) null else createexternalrow(if (isnull(productPlant#6439.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#6439.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#6439.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#6439.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#6439.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#6439.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#6439.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#6439.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#6439.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#6439.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#6439.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#6439.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#6439.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#6439.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#6439.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#6439.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#6439.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#6439.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#6439.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#6439.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#6439.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#6439.salesPlant)) null else createexternalrow(if (isnull(productPlant#6439.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#6439.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#6439.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, 497), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#6439.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#6453.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#6470)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#6749)), mapobjects(lambdavariable(MapObject, DoubleType, true, 498), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 498) as double))), stockBatchQuantities#6750, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 499), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 499) as timestamp)))), stockBatchShelfLifeEndDatetimes#6751, 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, 500), 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, 500))) 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, 500).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, 500).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, 500).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).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, 500).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, 500).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, 500).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).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, 500).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#6762, 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#1569: org.apache.spark.sql.Row
(1743) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@762840b4, 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#1574: 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#6763, 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#6764, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 488), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 488), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 489), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 489), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 490), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 490), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 491), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 491), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 492), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 492), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#6765, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 494), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 494), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 495), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 495), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 496), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 496), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#6766]
(1745) Join
Arguments: LeftOuter, ((plant#6764 <=> plant#6103) AND (product#6763 <=> product#6102))
(1746) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, stockBatchShelfLifeEndDatetimes#6426, plant#6764, dayBucketDemands#6765, pointInTimeDemands#6766]
(1747) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, stockBatchShelfLifeEndDatetimes#6426, dayBucketDemands#6765, pointInTimeDemands#6766]
(1748) LogicalRelation
Arguments: parquet, [product#6767, plant#6768, orderDateTime#6769, planningStartDateTime#6770], false
(1749) RepartitionByExpression
Arguments: [product#6767, plant#6768], 10
(1750) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769]
(1751) LogicalRelation
Arguments: parquet, [systemId#6771, internalUUID#6772, plant#6773, product#6774, blockedForReplenishmentStartingFrom#6775, productionAspect#6776, salesPlant#6777, listing#6778], false
(1752) Repartition
Arguments: 10, true
(1753) Project
Arguments: [systemId#6771, internalUUID#6772, plant#6773, product#6774, blockedForReplenishmentStartingFrom#6775, productionAspect#6776, salesPlant#6777, listing#6778, struct(systemId, systemId#6771, internalUUID, internalUUID#6772, plant, plant#6773, product, product#6774, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6775, productionAspect, productionAspect#6776, salesPlant, salesPlant#6777, listing, listing#6778) AS productPlant#6779]
(1754) Project
Arguments: [productPlant#6779]
(1755) Join
Arguments: LeftOuter, ((product#6767 <=> productPlant#6779.product.internalRefUUID) AND (plant#6768 <=> productPlant#6779.plant.internalRefUUID))
(1756) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779]
(1757) SubqueryAlias
Arguments: wl
(1758) LogicalRelation
Arguments: parquet, [systemId#6780, internalUUID#6781, id#6782, displayId#6783, name#6784, category#6785, companyCode#6786, address#6787, mainDistributionChain#6788, mainPurchasingOrganization#6789, validPurchasingOrganizations#6790, productGroup#6791], false
(1759) Repartition
Arguments: 10, true
(1760) Project
Arguments: [internalUUID#6781, address#6787.timeZone.code AS timezonecode#6792]
(1761) Join
Arguments: LeftOuter, (plant#6768 <=> internalUUID#6781)
(1762) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, internalUUID#6781, CASE WHEN isnotnull(timezonecode#6792) THEN timezonecode#6792 ELSE UTC END AS timezonecode#6793]
(1763) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793]
(1764) LogicalRelation
Arguments: parquet, [systemId#6794, internalUUID#6795, id#6796, displayId#6797, name#6798, baseUnitOfMeasure#6799, unitOfMeasures#6800, unitOfMeasureConversions#6801, productionAspect#6802, salesAspect#6803, procurementAspect#6804, productGroup#6805], false
(1765) Repartition
Arguments: 10, true
(1766) Join
Arguments: LeftOuter, (product#6767 = internalUUID#6795)
(1767) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, systemId#6794, internalUUID#6795, id#6796, displayId#6797, name#6798, baseUnitOfMeasure#6799, unitOfMeasures#6800, unitOfMeasureConversions#6801, productionAspect#6802, salesAspect#6803, procurementAspect#6804, productGroup#6805, filter(unitOfMeasureConversions#6801, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6779.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6779.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6799.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6799.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6806]
(1768) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6806.quantityNumerator), true, [quantityNumerator#6807]
(1769) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, systemId#6794, internalUUID#6795, id#6796, displayId#6797, name#6798, baseUnitOfMeasure#6799, unitOfMeasures#6800, unitOfMeasureConversions#6801, productionAspect#6802, salesAspect#6803, procurementAspect#6804, productGroup#6805, filteredUnitOfMeasureConversions#6806, quantityNumerator#6807]
(1770) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6806.quantityDenominator), true, [quantityDenominator#6808]
(1771) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, systemId#6794, internalUUID#6795, id#6796, displayId#6797, name#6798, baseUnitOfMeasure#6799, unitOfMeasures#6800, unitOfMeasureConversions#6801, productionAspect#6802, salesAspect#6803, procurementAspect#6804, productGroup#6805, filteredUnitOfMeasureConversions#6806, quantityNumerator#6807, quantityDenominator#6808]
(1772) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, systemId#6794, internalUUID#6795, id#6796, displayId#6797, name#6798, baseUnitOfMeasure#6799, unitOfMeasures#6800, unitOfMeasureConversions#6801, productionAspect#6802, salesAspect#6803, procurementAspect#6804, productGroup#6805, filteredUnitOfMeasureConversions#6806, quantityNumerator#6807, quantityDenominator#6808, (cast(quantityNumerator#6807 as double) / cast(quantityDenominator#6808 as double)) AS outboundUnit#6809]
(1773) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, systemId#6794, internalUUID#6795, id#6796, displayId#6797, name#6798, baseUnitOfMeasure#6799, unitOfMeasures#6800, unitOfMeasureConversions#6801, productionAspect#6802, salesAspect#6803, procurementAspect#6804, productGroup#6805, filteredUnitOfMeasureConversions#6806, quantityNumerator#6807, quantityDenominator#6808, CASE WHEN (isnull(outboundUnit#6809) OR (outboundUnit#6809 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#6809 END AS outboundUnit#6810]
(1774) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, outboundUnit#6810]
(1775) LogicalRelation
Arguments: parquet, [systemId#6811, internalUUID#6812, product#6813, plant#6814, calculationDateTime#6815, stockQuantities#6816], false
(1776) Repartition
Arguments: 10, true
(1777) LogicalRelation
Arguments: parquet, [marketUnit#6817, description#6818, articleHierarchy#6819, defaultCurrency#6820, responsibilities#6821, replenishmentTypes#6822, distributionCenters#6823, assignedArticleHierarchyNodes#6824, minOrderQtySetting#6825, minOrderQtySettingInternal#6826, listingCheck#6827, odsSelection#6828, demandProfiles#6829, constraintProfiles#6830, optimizationProfiles#6831, orderGroupSplitProfiles#6832, supplierMinimumProfiles#6833, multipleRestrictionProfiles#6834, preferredUomSource#6835, handlingOfUnfulfilledDemands#6836, negligibleQuantitiesThreshold#6837, eventtype#6838], false
(1778) Repartition
Arguments: 10, true
(1779) Filter
Arguments: (marketUnit#6817 <=> DIP_1691)
(1780) Project
Arguments: [marketUnit#6817, description#6818, articleHierarchy#6819, defaultCurrency#6820, responsibilities#6821, replenishmentTypes#6822, distributionCenters#6823, assignedArticleHierarchyNodes#6824, minOrderQtySetting#6825, minOrderQtySettingInternal#6826, listingCheck#6827, odsSelection#6828, demandProfiles#6829, constraintProfiles#6830, optimizationProfiles#6831, orderGroupSplitProfiles#6832, supplierMinimumProfiles#6833, multipleRestrictionProfiles#6834, preferredUomSource#6835, handlingOfUnfulfilledDemands#6836, negligibleQuantitiesThreshold#6837, eventtype#6838]
(1781) Project
Arguments: [distributionCenters#6823]
(1782) Generate
Arguments: explode(distributionCenters#6823), false, [distributionCenters#6839]
(1783) Project
Arguments: [distributionCenters#6839]
(1784) Generate
Arguments: explode(distributionCenters#6839.storageLocations), false, [storageLocations#6840]
(1785) Project
Arguments: [distributionCenters#6839.id AS plantId#6841, distributionCenters#6839.internalRefUUID AS plantUuid#6842, storageLocations#6840]
(1786) Project
Arguments: [plantId#6841, plantUuid#6842, storageLocations#6840.id AS storageLocId#6843, storageLocations#6840.internalRefUUID AS storageLocUuid#6844]
(1787) LogicalRelation
Arguments: parquet, [product#6845, plant#6846, orderDateTime#6847, planningStartDateTime#6848], false
(1788) RepartitionByExpression
Arguments: [product#6845, plant#6846], 10
(1789) Project
Arguments: [product#6845, plant#6846, orderDateTime#6847]
(1790) LogicalRelation
Arguments: parquet, [systemId#6849, internalUUID#6850, plant#6851, product#6852, blockedForReplenishmentStartingFrom#6853, productionAspect#6854, salesPlant#6855, listing#6856], false
(1791) Repartition
Arguments: 10, true
(1792) Project
Arguments: [systemId#6849, internalUUID#6850, plant#6851, product#6852, blockedForReplenishmentStartingFrom#6853, productionAspect#6854, salesPlant#6855, listing#6856, struct(systemId, systemId#6849, internalUUID, internalUUID#6850, plant, plant#6851, product, product#6852, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6853, productionAspect, productionAspect#6854, salesPlant, salesPlant#6855, listing, listing#6856) AS productPlant#6857]
(1793) Project
Arguments: [productPlant#6857]
(1794) Join
Arguments: LeftOuter, ((product#6845 <=> productPlant#6857.product.internalRefUUID) AND (plant#6846 <=> productPlant#6857.plant.internalRefUUID))
(1795) Project
Arguments: [product#6845, plant#6846, orderDateTime#6847, productPlant#6857]
(1796) SubqueryAlias
Arguments: wl
(1797) LogicalRelation
Arguments: parquet, [systemId#6858, internalUUID#6859, id#6860, displayId#6861, name#6862, category#6863, companyCode#6864, address#6865, mainDistributionChain#6866, mainPurchasingOrganization#6867, validPurchasingOrganizations#6868, productGroup#6869], false
(1798) Repartition
Arguments: 10, true
(1799) Project
Arguments: [internalUUID#6859, address#6865.timeZone.code AS timezonecode#6870]
(1800) Join
Arguments: LeftOuter, (plant#6846 <=> internalUUID#6859)
(1801) Project
Arguments: [product#6845, plant#6846, orderDateTime#6847, productPlant#6857, internalUUID#6859, CASE WHEN isnotnull(timezonecode#6870) THEN timezonecode#6870 ELSE UTC END AS timezonecode#6871]
(1802) Project
Arguments: [product#6845, plant#6846, orderDateTime#6847, productPlant#6857, timezonecode#6871]
(1803) LogicalRelation
Arguments: parquet, [systemId#6872, internalUUID#6873, id#6874, displayId#6875, name#6876, baseUnitOfMeasure#6877, unitOfMeasures#6878, unitOfMeasureConversions#6879, productionAspect#6880, salesAspect#6881, procurementAspect#6882, productGroup#6883], false
(1804) Repartition
Arguments: 10, true
(1805) Join
Arguments: LeftOuter, (product#6845 = internalUUID#6873)
(1806) Project
Arguments: [product#6845, plant#6846, orderDateTime#6847, productPlant#6857, timezonecode#6871, systemId#6872, internalUUID#6873, id#6874, displayId#6875, name#6876, baseUnitOfMeasure#6877, unitOfMeasures#6878, unitOfMeasureConversions#6879, productionAspect#6880, salesAspect#6881, procurementAspect#6882, productGroup#6883, filter(unitOfMeasureConversions#6879, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6857.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6857.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6877.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6877.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6884]
(1807) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6884.quantityNumerator), true, [quantityNumerator#6885]
(1808) Project
Arguments: [product#6845, plant#6846, orderDateTime#6847, productPlant#6857, timezonecode#6871, systemId#6872, internalUUID#6873, id#6874, displayId#6875, name#6876, baseUnitOfMeasure#6877, unitOfMeasures#6878, unitOfMeasureConversions#6879, productionAspect#6880, salesAspect#6881, procurementAspect#6882, productGroup#6883, filteredUnitOfMeasureConversions#6884, quantityNumerator#6885]
(1809) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6884.quantityDenominator), true, [quantityDenominator#6886]
(1810) Project
Arguments: [product#6845, plant#6846, orderDateTime#6847, productPlant#6857, timezonecode#6871, systemId#6872, internalUUID#6873, id#6874, displayId#6875, name#6876, baseUnitOfMeasure#6877, unitOfMeasures#6878, unitOfMeasureConversions#6879, productionAspect#6880, salesAspect#6881, procurementAspect#6882, productGroup#6883, filteredUnitOfMeasureConversions#6884, quantityNumerator#6885, quantityDenominator#6886]
(1811) Project
Arguments: [product#6845, plant#6846, orderDateTime#6847, productPlant#6857, timezonecode#6871, systemId#6872, internalUUID#6873, id#6874, displayId#6875, name#6876, baseUnitOfMeasure#6877, unitOfMeasures#6878, unitOfMeasureConversions#6879, productionAspect#6880, salesAspect#6881, procurementAspect#6882, productGroup#6883, filteredUnitOfMeasureConversions#6884, quantityNumerator#6885, quantityDenominator#6886, (cast(quantityNumerator#6885 as double) / cast(quantityDenominator#6886 as double)) AS outboundUnit#6887]
(1812) Project
Arguments: [product#6845, plant#6846, orderDateTime#6847, productPlant#6857, timezonecode#6871, systemId#6872, internalUUID#6873, id#6874, displayId#6875, name#6876, baseUnitOfMeasure#6877, unitOfMeasures#6878, unitOfMeasureConversions#6879, productionAspect#6880, salesAspect#6881, procurementAspect#6882, productGroup#6883, filteredUnitOfMeasureConversions#6884, quantityNumerator#6885, quantityDenominator#6886, CASE WHEN (isnull(outboundUnit#6887) OR (outboundUnit#6887 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#6887 END AS outboundUnit#6888]
(1813) Project
Arguments: [product#6845, plant#6846, orderDateTime#6847, productPlant#6857, timezonecode#6871, outboundUnit#6888]
(1814) Project
Arguments: [plant#6846]
(1815) Deduplicate
Arguments: [plant#6846]
(1816) Join
Arguments: Inner, (plantUuid#6842 = plant#6846)
(1817) Project
Arguments: [plantId#6841, plantUuid#6842, storageLocId#6843, storageLocUuid#6844]
(1818) Join
Arguments: Inner, (plant#6814.internalRefUUID <=> plantUuid#6842)
(1819) Generate
Arguments: explode(filter(stockQuantities#6816, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#6844) AND (lambda x#1207.storageLocation.Id = storageLocId#6843)), lambda x#1207, false))), false, [stockQuantity#6889]
(1820) Project
Arguments: [systemId#6811, internalUUID#6812, product#6813, plant#6814, calculationDateTime#6815, stockQuantities#6816, plantId#6841, plantUuid#6842, storageLocId#6843, storageLocUuid#6844, stockQuantity#6889]
(1821) Aggregate
Arguments: [plantUuid#6842, internalUUID#6812, plant#6814, product#6813, systemId#6811], [plantUuid#6842, internalUUID#6812, plant#6814, product#6813, systemId#6811, first(calculationDateTime#6815, false) AS calculationDateTime#6890, collect_list(stockQuantity#6889, 0, 0) AS stockQuantities#6891]
(1822) Project
Arguments: [systemId#6811, internalUUID#6812, product#6813, plant#6814, calculationDateTime#6890, stockQuantities#6891]
(1823) Generate
Arguments: explode(stockQuantities#6891), false, [stockQuantity#6892]
(1824) Project
Arguments: [systemId#6811, internalUUID#6812, product#6813, plant#6814, calculationDateTime#6890, stockQuantities#6891, stockQuantity#6892]
(1825) Project
Arguments: [plant#6814.id AS plant#6893, plant#6814.internalRefUUID AS plantUuid#6894, product#6813.id AS product#6895, product#6813.internalRefUUID AS productUuid#6896, calculationDateTime#6890, stockQuantity#6892.storagelocation.id AS storageLocId#6897, stockQuantity#6892.storagelocation.internalRefUUID AS storageLocUuid#6898, stockQuantity#6892.quantity.measure AS quantity#6899, stockQuantity#6892.specialStockIndicator.code AS specialStockIndicator#6900, stockQuantity#6892.stockType.code AS stockType#6901]
(1826) Filter
Arguments: ((specialStockIndicator#6900 = ) AND (stockType#6901 = 01))
(1827) LogicalRelation
Arguments: parquet, [product#6902, plant#6903, orderDateTime#6904, planningStartDateTime#6905], false
(1828) RepartitionByExpression
Arguments: [product#6902, plant#6903], 10
(1829) Project
Arguments: [product#6902, plant#6903, orderDateTime#6904]
(1830) LogicalRelation
Arguments: parquet, [systemId#6906, internalUUID#6907, plant#6908, product#6909, blockedForReplenishmentStartingFrom#6910, productionAspect#6911, salesPlant#6912, listing#6913], false
(1831) Repartition
Arguments: 10, true
(1832) Project
Arguments: [systemId#6906, internalUUID#6907, plant#6908, product#6909, blockedForReplenishmentStartingFrom#6910, productionAspect#6911, salesPlant#6912, listing#6913, struct(systemId, systemId#6906, internalUUID, internalUUID#6907, plant, plant#6908, product, product#6909, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6910, productionAspect, productionAspect#6911, salesPlant, salesPlant#6912, listing, listing#6913) AS productPlant#6914]
(1833) Project
Arguments: [productPlant#6914]
(1834) Join
Arguments: LeftOuter, ((product#6902 <=> productPlant#6914.product.internalRefUUID) AND (plant#6903 <=> productPlant#6914.plant.internalRefUUID))
(1835) Project
Arguments: [product#6902, plant#6903, orderDateTime#6904, productPlant#6914]
(1836) SubqueryAlias
Arguments: wl
(1837) LogicalRelation
Arguments: parquet, [systemId#6915, internalUUID#6916, id#6917, displayId#6918, name#6919, category#6920, companyCode#6921, address#6922, mainDistributionChain#6923, mainPurchasingOrganization#6924, validPurchasingOrganizations#6925, productGroup#6926], false
(1838) Repartition
Arguments: 10, true
(1839) Project
Arguments: [internalUUID#6916, address#6922.timeZone.code AS timezonecode#6927]
(1840) Join
Arguments: LeftOuter, (plant#6903 <=> internalUUID#6916)
(1841) Project
Arguments: [product#6902, plant#6903, orderDateTime#6904, productPlant#6914, internalUUID#6916, CASE WHEN isnotnull(timezonecode#6927) THEN timezonecode#6927 ELSE UTC END AS timezonecode#6928]
(1842) Project
Arguments: [product#6902, plant#6903, orderDateTime#6904, productPlant#6914, timezonecode#6928]
(1843) LogicalRelation
Arguments: parquet, [systemId#6929, internalUUID#6930, id#6931, displayId#6932, name#6933, baseUnitOfMeasure#6934, unitOfMeasures#6935, unitOfMeasureConversions#6936, productionAspect#6937, salesAspect#6938, procurementAspect#6939, productGroup#6940], false
(1844) Repartition
Arguments: 10, true
(1845) Join
Arguments: LeftOuter, (product#6902 = internalUUID#6930)
(1846) Project
Arguments: [product#6902, plant#6903, orderDateTime#6904, productPlant#6914, timezonecode#6928, systemId#6929, internalUUID#6930, id#6931, displayId#6932, name#6933, baseUnitOfMeasure#6934, unitOfMeasures#6935, unitOfMeasureConversions#6936, productionAspect#6937, salesAspect#6938, procurementAspect#6939, productGroup#6940, filter(unitOfMeasureConversions#6936, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6914.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6914.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#6934.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#6934.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#6941]
(1847) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6941.quantityNumerator), true, [quantityNumerator#6942]
(1848) Project
Arguments: [product#6902, plant#6903, orderDateTime#6904, productPlant#6914, timezonecode#6928, systemId#6929, internalUUID#6930, id#6931, displayId#6932, name#6933, baseUnitOfMeasure#6934, unitOfMeasures#6935, unitOfMeasureConversions#6936, productionAspect#6937, salesAspect#6938, procurementAspect#6939, productGroup#6940, filteredUnitOfMeasureConversions#6941, quantityNumerator#6942]
(1849) Generate
Arguments: explode(filteredUnitOfMeasureConversions#6941.quantityDenominator), true, [quantityDenominator#6943]
(1850) Project
Arguments: [product#6902, plant#6903, orderDateTime#6904, productPlant#6914, timezonecode#6928, systemId#6929, internalUUID#6930, id#6931, displayId#6932, name#6933, baseUnitOfMeasure#6934, unitOfMeasures#6935, unitOfMeasureConversions#6936, productionAspect#6937, salesAspect#6938, procurementAspect#6939, productGroup#6940, filteredUnitOfMeasureConversions#6941, quantityNumerator#6942, quantityDenominator#6943]
(1851) Project
Arguments: [product#6902, plant#6903, orderDateTime#6904, productPlant#6914, timezonecode#6928, systemId#6929, internalUUID#6930, id#6931, displayId#6932, name#6933, baseUnitOfMeasure#6934, unitOfMeasures#6935, unitOfMeasureConversions#6936, productionAspect#6937, salesAspect#6938, procurementAspect#6939, productGroup#6940, filteredUnitOfMeasureConversions#6941, quantityNumerator#6942, quantityDenominator#6943, (cast(quantityNumerator#6942 as double) / cast(quantityDenominator#6943 as double)) AS outboundUnit#6944]
(1852) Project
Arguments: [product#6902, plant#6903, orderDateTime#6904, productPlant#6914, timezonecode#6928, systemId#6929, internalUUID#6930, id#6931, displayId#6932, name#6933, baseUnitOfMeasure#6934, unitOfMeasures#6935, unitOfMeasureConversions#6936, productionAspect#6937, salesAspect#6938, procurementAspect#6939, productGroup#6940, filteredUnitOfMeasureConversions#6941, quantityNumerator#6942, quantityDenominator#6943, CASE WHEN (isnull(outboundUnit#6944) OR (outboundUnit#6944 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#6944 END AS outboundUnit#6945]
(1853) Project
Arguments: [product#6902, plant#6903, orderDateTime#6904, productPlant#6914, timezonecode#6928, outboundUnit#6945]
(1854) Join
Arguments: Inner, ((plantUuid#6894 = plant#6903) AND (productUuid#6896 = product#6902))
(1855) Filter
Arguments: (calculationDateTime#6890 <= orderDateTime#6904)
(1856) Project
Arguments: [plantUuid#6894 AS plant#6946, productUuid#6896 AS product#6947, storageLocId#6897, calculationDateTime#6890, quantity#6899]
(1857) LogicalRelation
Arguments: parquet, [systemId#6948, internalUUID#6949, product#6950, plant#6951, calculationDateTime#6952, stockQuantities#6953], false
(1858) Repartition
Arguments: 10, true
(1859) LogicalRelation
Arguments: parquet, [marketUnit#6954, description#6955, articleHierarchy#6956, defaultCurrency#6957, responsibilities#6958, replenishmentTypes#6959, distributionCenters#6960, assignedArticleHierarchyNodes#6961, minOrderQtySetting#6962, minOrderQtySettingInternal#6963, listingCheck#6964, odsSelection#6965, demandProfiles#6966, constraintProfiles#6967, optimizationProfiles#6968, orderGroupSplitProfiles#6969, supplierMinimumProfiles#6970, multipleRestrictionProfiles#6971, preferredUomSource#6972, handlingOfUnfulfilledDemands#6973, negligibleQuantitiesThreshold#6974, eventtype#6975], false
(1860) Repartition
Arguments: 10, true
(1861) Filter
Arguments: (marketUnit#6954 <=> DIP_1691)
(1862) Project
Arguments: [marketUnit#6954, description#6955, articleHierarchy#6956, defaultCurrency#6957, responsibilities#6958, replenishmentTypes#6959, distributionCenters#6960, assignedArticleHierarchyNodes#6961, minOrderQtySetting#6962, minOrderQtySettingInternal#6963, listingCheck#6964, odsSelection#6965, demandProfiles#6966, constraintProfiles#6967, optimizationProfiles#6968, orderGroupSplitProfiles#6969, supplierMinimumProfiles#6970, multipleRestrictionProfiles#6971, preferredUomSource#6972, handlingOfUnfulfilledDemands#6973, negligibleQuantitiesThreshold#6974, eventtype#6975]
(1863) Project
Arguments: [distributionCenters#6960]
(1864) Generate
Arguments: explode(distributionCenters#6960), false, [distributionCenters#6976]
(1865) Project
Arguments: [distributionCenters#6976]
(1866) Generate
Arguments: explode(distributionCenters#6976.storageLocations), false, [storageLocations#6977]
(1867) Project
Arguments: [distributionCenters#6976.id AS plantId#6978, distributionCenters#6976.internalRefUUID AS plantUuid#6979, storageLocations#6977]
(1868) Project
Arguments: [plantId#6978, plantUuid#6979, storageLocations#6977.id AS storageLocId#6980, storageLocations#6977.internalRefUUID AS storageLocUuid#6981]
(1869) LogicalRelation
Arguments: parquet, [product#6982, plant#6983, orderDateTime#6984, planningStartDateTime#6985], false
(1870) RepartitionByExpression
Arguments: [product#6982, plant#6983], 10
(1871) Project
Arguments: [product#6982, plant#6983, orderDateTime#6984]
(1872) LogicalRelation
Arguments: parquet, [systemId#6986, internalUUID#6987, plant#6988, product#6989, blockedForReplenishmentStartingFrom#6990, productionAspect#6991, salesPlant#6992, listing#6993], false
(1873) Repartition
Arguments: 10, true
(1874) Project
Arguments: [systemId#6986, internalUUID#6987, plant#6988, product#6989, blockedForReplenishmentStartingFrom#6990, productionAspect#6991, salesPlant#6992, listing#6993, struct(systemId, systemId#6986, internalUUID, internalUUID#6987, plant, plant#6988, product, product#6989, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#6990, productionAspect, productionAspect#6991, salesPlant, salesPlant#6992, listing, listing#6993) AS productPlant#6994]
(1875) Project
Arguments: [productPlant#6994]
(1876) Join
Arguments: LeftOuter, ((product#6982 <=> productPlant#6994.product.internalRefUUID) AND (plant#6983 <=> productPlant#6994.plant.internalRefUUID))
(1877) Project
Arguments: [product#6982, plant#6983, orderDateTime#6984, productPlant#6994]
(1878) SubqueryAlias
Arguments: wl
(1879) LogicalRelation
Arguments: parquet, [systemId#6995, internalUUID#6996, id#6997, displayId#6998, name#6999, category#7000, companyCode#7001, address#7002, mainDistributionChain#7003, mainPurchasingOrganization#7004, validPurchasingOrganizations#7005, productGroup#7006], false
(1880) Repartition
Arguments: 10, true
(1881) Project
Arguments: [internalUUID#6996, address#7002.timeZone.code AS timezonecode#7007]
(1882) Join
Arguments: LeftOuter, (plant#6983 <=> internalUUID#6996)
(1883) Project
Arguments: [product#6982, plant#6983, orderDateTime#6984, productPlant#6994, internalUUID#6996, CASE WHEN isnotnull(timezonecode#7007) THEN timezonecode#7007 ELSE UTC END AS timezonecode#7008]
(1884) Project
Arguments: [product#6982, plant#6983, orderDateTime#6984, productPlant#6994, timezonecode#7008]
(1885) LogicalRelation
Arguments: parquet, [systemId#7009, internalUUID#7010, id#7011, displayId#7012, name#7013, baseUnitOfMeasure#7014, unitOfMeasures#7015, unitOfMeasureConversions#7016, productionAspect#7017, salesAspect#7018, procurementAspect#7019, productGroup#7020], false
(1886) Repartition
Arguments: 10, true
(1887) Join
Arguments: LeftOuter, (product#6982 = internalUUID#7010)
(1888) Project
Arguments: [product#6982, plant#6983, orderDateTime#6984, productPlant#6994, timezonecode#7008, systemId#7009, internalUUID#7010, id#7011, displayId#7012, name#7013, baseUnitOfMeasure#7014, unitOfMeasures#7015, unitOfMeasureConversions#7016, productionAspect#7017, salesAspect#7018, procurementAspect#7019, productGroup#7020, filter(unitOfMeasureConversions#7016, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#6994.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#6994.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7014.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7014.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7021]
(1889) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7021.quantityNumerator), true, [quantityNumerator#7022]
(1890) Project
Arguments: [product#6982, plant#6983, orderDateTime#6984, productPlant#6994, timezonecode#7008, systemId#7009, internalUUID#7010, id#7011, displayId#7012, name#7013, baseUnitOfMeasure#7014, unitOfMeasures#7015, unitOfMeasureConversions#7016, productionAspect#7017, salesAspect#7018, procurementAspect#7019, productGroup#7020, filteredUnitOfMeasureConversions#7021, quantityNumerator#7022]
(1891) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7021.quantityDenominator), true, [quantityDenominator#7023]
(1892) Project
Arguments: [product#6982, plant#6983, orderDateTime#6984, productPlant#6994, timezonecode#7008, systemId#7009, internalUUID#7010, id#7011, displayId#7012, name#7013, baseUnitOfMeasure#7014, unitOfMeasures#7015, unitOfMeasureConversions#7016, productionAspect#7017, salesAspect#7018, procurementAspect#7019, productGroup#7020, filteredUnitOfMeasureConversions#7021, quantityNumerator#7022, quantityDenominator#7023]
(1893) Project
Arguments: [product#6982, plant#6983, orderDateTime#6984, productPlant#6994, timezonecode#7008, systemId#7009, internalUUID#7010, id#7011, displayId#7012, name#7013, baseUnitOfMeasure#7014, unitOfMeasures#7015, unitOfMeasureConversions#7016, productionAspect#7017, salesAspect#7018, procurementAspect#7019, productGroup#7020, filteredUnitOfMeasureConversions#7021, quantityNumerator#7022, quantityDenominator#7023, (cast(quantityNumerator#7022 as double) / cast(quantityDenominator#7023 as double)) AS outboundUnit#7024]
(1894) Project
Arguments: [product#6982, plant#6983, orderDateTime#6984, productPlant#6994, timezonecode#7008, systemId#7009, internalUUID#7010, id#7011, displayId#7012, name#7013, baseUnitOfMeasure#7014, unitOfMeasures#7015, unitOfMeasureConversions#7016, productionAspect#7017, salesAspect#7018, procurementAspect#7019, productGroup#7020, filteredUnitOfMeasureConversions#7021, quantityNumerator#7022, quantityDenominator#7023, CASE WHEN (isnull(outboundUnit#7024) OR (outboundUnit#7024 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7024 END AS outboundUnit#7025]
(1895) Project
Arguments: [product#6982, plant#6983, orderDateTime#6984, productPlant#6994, timezonecode#7008, outboundUnit#7025]
(1896) Project
Arguments: [plant#6983]
(1897) Deduplicate
Arguments: [plant#6983]
(1898) Join
Arguments: Inner, (plantUuid#6979 = plant#6983)
(1899) Project
Arguments: [plantId#6978, plantUuid#6979, storageLocId#6980, storageLocUuid#6981]
(1900) Join
Arguments: Inner, (plant#6951.internalRefUUID <=> plantUuid#6979)
(1901) Generate
Arguments: explode(filter(stockQuantities#6953, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#6981) AND (lambda x#1207.storageLocation.Id = storageLocId#6980)), lambda x#1207, false))), false, [stockQuantity#7026]
(1902) Project
Arguments: [systemId#6948, internalUUID#6949, product#6950, plant#6951, calculationDateTime#6952, stockQuantities#6953, plantId#6978, plantUuid#6979, storageLocId#6980, storageLocUuid#6981, stockQuantity#7026]
(1903) Aggregate
Arguments: [plantUuid#6979, internalUUID#6949, plant#6951, product#6950, systemId#6948], [plantUuid#6979, internalUUID#6949, plant#6951, product#6950, systemId#6948, first(calculationDateTime#6952, false) AS calculationDateTime#7027, collect_list(stockQuantity#7026, 0, 0) AS stockQuantities#7028]
(1904) Project
Arguments: [systemId#6948, internalUUID#6949, product#6950, plant#6951, calculationDateTime#7027, stockQuantities#7028]
(1905) Generate
Arguments: explode(stockQuantities#7028), false, [stockQuantity#7029]
(1906) Project
Arguments: [systemId#6948, internalUUID#6949, product#6950, plant#6951, calculationDateTime#7027, stockQuantities#7028, stockQuantity#7029]
(1907) Project
Arguments: [plant#6951.id AS plant#7030, plant#6951.internalRefUUID AS plantUuid#7031, product#6950.id AS product#7032, product#6950.internalRefUUID AS productUuid#7033, calculationDateTime#7027, stockQuantity#7029.storagelocation.id AS storageLocId#7034, stockQuantity#7029.storagelocation.internalRefUUID AS storageLocUuid#7035, stockQuantity#7029.quantity.measure AS quantity#7036, stockQuantity#7029.specialStockIndicator.code AS specialStockIndicator#7037, stockQuantity#7029.stockType.code AS stockType#7038]
(1908) Filter
Arguments: ((specialStockIndicator#7037 = ) AND (stockType#7038 = 01))
(1909) LogicalRelation
Arguments: parquet, [product#7039, plant#7040, orderDateTime#7041, planningStartDateTime#7042], false
(1910) RepartitionByExpression
Arguments: [product#7039, plant#7040], 10
(1911) Project
Arguments: [product#7039, plant#7040, orderDateTime#7041]
(1912) LogicalRelation
Arguments: parquet, [systemId#7043, internalUUID#7044, plant#7045, product#7046, blockedForReplenishmentStartingFrom#7047, productionAspect#7048, salesPlant#7049, listing#7050], false
(1913) Repartition
Arguments: 10, true
(1914) Project
Arguments: [systemId#7043, internalUUID#7044, plant#7045, product#7046, blockedForReplenishmentStartingFrom#7047, productionAspect#7048, salesPlant#7049, listing#7050, struct(systemId, systemId#7043, internalUUID, internalUUID#7044, plant, plant#7045, product, product#7046, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7047, productionAspect, productionAspect#7048, salesPlant, salesPlant#7049, listing, listing#7050) AS productPlant#7051]
(1915) Project
Arguments: [productPlant#7051]
(1916) Join
Arguments: LeftOuter, ((product#7039 <=> productPlant#7051.product.internalRefUUID) AND (plant#7040 <=> productPlant#7051.plant.internalRefUUID))
(1917) Project
Arguments: [product#7039, plant#7040, orderDateTime#7041, productPlant#7051]
(1918) SubqueryAlias
Arguments: wl
(1919) LogicalRelation
Arguments: parquet, [systemId#7052, internalUUID#7053, id#7054, displayId#7055, name#7056, category#7057, companyCode#7058, address#7059, mainDistributionChain#7060, mainPurchasingOrganization#7061, validPurchasingOrganizations#7062, productGroup#7063], false
(1920) Repartition
Arguments: 10, true
(1921) Project
Arguments: [internalUUID#7053, address#7059.timeZone.code AS timezonecode#7064]
(1922) Join
Arguments: LeftOuter, (plant#7040 <=> internalUUID#7053)
(1923) Project
Arguments: [product#7039, plant#7040, orderDateTime#7041, productPlant#7051, internalUUID#7053, CASE WHEN isnotnull(timezonecode#7064) THEN timezonecode#7064 ELSE UTC END AS timezonecode#7065]
(1924) Project
Arguments: [product#7039, plant#7040, orderDateTime#7041, productPlant#7051, timezonecode#7065]
(1925) LogicalRelation
Arguments: parquet, [systemId#7066, internalUUID#7067, id#7068, displayId#7069, name#7070, baseUnitOfMeasure#7071, unitOfMeasures#7072, unitOfMeasureConversions#7073, productionAspect#7074, salesAspect#7075, procurementAspect#7076, productGroup#7077], false
(1926) Repartition
Arguments: 10, true
(1927) Join
Arguments: LeftOuter, (product#7039 = internalUUID#7067)
(1928) Project
Arguments: [product#7039, plant#7040, orderDateTime#7041, productPlant#7051, timezonecode#7065, systemId#7066, internalUUID#7067, id#7068, displayId#7069, name#7070, baseUnitOfMeasure#7071, unitOfMeasures#7072, unitOfMeasureConversions#7073, productionAspect#7074, salesAspect#7075, procurementAspect#7076, productGroup#7077, filter(unitOfMeasureConversions#7073, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7051.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7051.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7071.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7071.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7078]
(1929) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7078.quantityNumerator), true, [quantityNumerator#7079]
(1930) Project
Arguments: [product#7039, plant#7040, orderDateTime#7041, productPlant#7051, timezonecode#7065, systemId#7066, internalUUID#7067, id#7068, displayId#7069, name#7070, baseUnitOfMeasure#7071, unitOfMeasures#7072, unitOfMeasureConversions#7073, productionAspect#7074, salesAspect#7075, procurementAspect#7076, productGroup#7077, filteredUnitOfMeasureConversions#7078, quantityNumerator#7079]
(1931) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7078.quantityDenominator), true, [quantityDenominator#7080]
(1932) Project
Arguments: [product#7039, plant#7040, orderDateTime#7041, productPlant#7051, timezonecode#7065, systemId#7066, internalUUID#7067, id#7068, displayId#7069, name#7070, baseUnitOfMeasure#7071, unitOfMeasures#7072, unitOfMeasureConversions#7073, productionAspect#7074, salesAspect#7075, procurementAspect#7076, productGroup#7077, filteredUnitOfMeasureConversions#7078, quantityNumerator#7079, quantityDenominator#7080]
(1933) Project
Arguments: [product#7039, plant#7040, orderDateTime#7041, productPlant#7051, timezonecode#7065, systemId#7066, internalUUID#7067, id#7068, displayId#7069, name#7070, baseUnitOfMeasure#7071, unitOfMeasures#7072, unitOfMeasureConversions#7073, productionAspect#7074, salesAspect#7075, procurementAspect#7076, productGroup#7077, filteredUnitOfMeasureConversions#7078, quantityNumerator#7079, quantityDenominator#7080, (cast(quantityNumerator#7079 as double) / cast(quantityDenominator#7080 as double)) AS outboundUnit#7081]
(1934) Project
Arguments: [product#7039, plant#7040, orderDateTime#7041, productPlant#7051, timezonecode#7065, systemId#7066, internalUUID#7067, id#7068, displayId#7069, name#7070, baseUnitOfMeasure#7071, unitOfMeasures#7072, unitOfMeasureConversions#7073, productionAspect#7074, salesAspect#7075, procurementAspect#7076, productGroup#7077, filteredUnitOfMeasureConversions#7078, quantityNumerator#7079, quantityDenominator#7080, CASE WHEN (isnull(outboundUnit#7081) OR (outboundUnit#7081 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7081 END AS outboundUnit#7082]
(1935) Project
Arguments: [product#7039, plant#7040, orderDateTime#7041, productPlant#7051, timezonecode#7065, outboundUnit#7082]
(1936) Join
Arguments: Inner, ((plantUuid#7031 = plant#7040) AND (productUuid#7033 = product#7039))
(1937) Filter
Arguments: (calculationDateTime#7027 <= orderDateTime#7041)
(1938) Project
Arguments: [plantUuid#7031 AS plant#7083, productUuid#7033 AS product#7084, storageLocId#7034, calculationDateTime#7027, quantity#7036]
(1939) Aggregate
Arguments: [plant#7083, product#7084, storageLocId#7034], [plant#7083, product#7084, storageLocId#7034, max(calculationDateTime#7027) AS max_calc_datetime#7085]
(1940) Join
Arguments: Inner, ((((plant#6946 <=> plant#7083) AND (product#6947 <=> product#7084)) AND (storageLocId#6897 <=> storageLocId#7034)) AND (calculationDateTime#6890 <=> max_calc_datetime#7085))
(1941) Project
Arguments: [plant#6946, product#6947, storageLocId#6897, calculationDateTime#6890, quantity#6899]
(1942) Aggregate
Arguments: [product#6947, plant#6946], [product#6947, plant#6946, sum(quantity#6899) AS quantitySum#7086, min(calculationDateTime#6890) AS minCalculationDateTime#7087]
(1943) Project
Arguments: [product#6947, plant#6946, quantitySum#7086, minCalculationDateTime#7087, round(quantitySum#7086, 0) AS roundedQuantitySum#7088]
(1944) Join
Arguments: LeftOuter, ((plant#6768 = plant#6946) AND (product#6767 = product#6947))
(1945) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, outboundUnit#6810, roundedQuantitySum#7088, minCalculationDateTime#7087]
(1946) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, outboundUnit#6810, roundedQuantitySum#7088, minCalculationDateTime#7087, CASE WHEN isnotnull(minCalculationDateTime#7087) THEN minCalculationDateTime#7087 ELSE orderDateTime#6769 END AS stockDatetime#7089]
(1947) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, outboundUnit#6810, roundedQuantitySum#7088, minCalculationDateTime#7087, stockDatetime#7089, CASE WHEN isnotnull(roundedQuantitySum#7088) THEN array(roundedQuantitySum#7088) ELSE array(0.0) END AS stockBatchQuantities#7090]
(1948) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, outboundUnit#6810, roundedQuantitySum#7088, minCalculationDateTime#7087, stockDatetime#7089, stockBatchQuantities#7090, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#7091]
(1949) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, outboundUnit#6810, roundedQuantitySum#7088, stockDatetime#7089, stockBatchQuantities#7090, stockBatchShelfLifeEndDatetimes#7091]
(1950) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, outboundUnit#6810, stockDatetime#7089, stockBatchQuantities#7090, stockBatchShelfLifeEndDatetimes#7091]
(1951) LogicalRelation
Arguments: parquet, [product#7092, plant#7093, orderDateTime#7094, planningStartDateTime#7095], false
(1952) RepartitionByExpression
Arguments: [product#7092, plant#7093], 10
(1953) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094]
(1954) LogicalRelation
Arguments: parquet, [systemId#7096, internalUUID#7097, plant#7098, product#7099, blockedForReplenishmentStartingFrom#7100, productionAspect#7101, salesPlant#7102, listing#7103], false
(1955) Repartition
Arguments: 10, true
(1956) Project
Arguments: [systemId#7096, internalUUID#7097, plant#7098, product#7099, blockedForReplenishmentStartingFrom#7100, productionAspect#7101, salesPlant#7102, listing#7103, struct(systemId, systemId#7096, internalUUID, internalUUID#7097, plant, plant#7098, product, product#7099, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7100, productionAspect, productionAspect#7101, salesPlant, salesPlant#7102, listing, listing#7103) AS productPlant#7104]
(1957) Project
Arguments: [productPlant#7104]
(1958) Join
Arguments: LeftOuter, ((product#7092 <=> productPlant#7104.product.internalRefUUID) AND (plant#7093 <=> productPlant#7104.plant.internalRefUUID))
(1959) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104]
(1960) SubqueryAlias
Arguments: wl
(1961) LogicalRelation
Arguments: parquet, [systemId#7105, internalUUID#7106, id#7107, displayId#7108, name#7109, category#7110, companyCode#7111, address#7112, mainDistributionChain#7113, mainPurchasingOrganization#7114, validPurchasingOrganizations#7115, productGroup#7116], false
(1962) Repartition
Arguments: 10, true
(1963) Project
Arguments: [internalUUID#7106, address#7112.timeZone.code AS timezonecode#7117]
(1964) Join
Arguments: LeftOuter, (plant#7093 <=> internalUUID#7106)
(1965) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, internalUUID#7106, CASE WHEN isnotnull(timezonecode#7117) THEN timezonecode#7117 ELSE UTC END AS timezonecode#7118]
(1966) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118]
(1967) LogicalRelation
Arguments: parquet, [systemId#7119, internalUUID#7120, id#7121, displayId#7122, name#7123, baseUnitOfMeasure#7124, unitOfMeasures#7125, unitOfMeasureConversions#7126, productionAspect#7127, salesAspect#7128, procurementAspect#7129, productGroup#7130], false
(1968) Repartition
Arguments: 10, true
(1969) Join
Arguments: LeftOuter, (product#7092 = internalUUID#7120)
(1970) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, systemId#7119, internalUUID#7120, id#7121, displayId#7122, name#7123, baseUnitOfMeasure#7124, unitOfMeasures#7125, unitOfMeasureConversions#7126, productionAspect#7127, salesAspect#7128, procurementAspect#7129, productGroup#7130, filter(unitOfMeasureConversions#7126, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7104.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7104.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7124.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7124.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7131]
(1971) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7131.quantityNumerator), true, [quantityNumerator#7132]
(1972) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, systemId#7119, internalUUID#7120, id#7121, displayId#7122, name#7123, baseUnitOfMeasure#7124, unitOfMeasures#7125, unitOfMeasureConversions#7126, productionAspect#7127, salesAspect#7128, procurementAspect#7129, productGroup#7130, filteredUnitOfMeasureConversions#7131, quantityNumerator#7132]
(1973) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7131.quantityDenominator), true, [quantityDenominator#7133]
(1974) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, systemId#7119, internalUUID#7120, id#7121, displayId#7122, name#7123, baseUnitOfMeasure#7124, unitOfMeasures#7125, unitOfMeasureConversions#7126, productionAspect#7127, salesAspect#7128, procurementAspect#7129, productGroup#7130, filteredUnitOfMeasureConversions#7131, quantityNumerator#7132, quantityDenominator#7133]
(1975) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, systemId#7119, internalUUID#7120, id#7121, displayId#7122, name#7123, baseUnitOfMeasure#7124, unitOfMeasures#7125, unitOfMeasureConversions#7126, productionAspect#7127, salesAspect#7128, procurementAspect#7129, productGroup#7130, filteredUnitOfMeasureConversions#7131, quantityNumerator#7132, quantityDenominator#7133, (cast(quantityNumerator#7132 as double) / cast(quantityDenominator#7133 as double)) AS outboundUnit#7134]
(1976) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, systemId#7119, internalUUID#7120, id#7121, displayId#7122, name#7123, baseUnitOfMeasure#7124, unitOfMeasures#7125, unitOfMeasureConversions#7126, productionAspect#7127, salesAspect#7128, procurementAspect#7129, productGroup#7130, filteredUnitOfMeasureConversions#7131, quantityNumerator#7132, quantityDenominator#7133, CASE WHEN (isnull(outboundUnit#7134) OR (outboundUnit#7134 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7134 END AS outboundUnit#7135]
(1977) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, outboundUnit#7135]
(1978) LogicalRelation
Arguments: parquet, [systemId#7136, internalUUID#7137, product#7138, plant#7139, calculationDateTime#7140, stockQuantities#7141], false
(1979) Repartition
Arguments: 10, true
(1980) LogicalRelation
Arguments: parquet, [marketUnit#7142, description#7143, articleHierarchy#7144, defaultCurrency#7145, responsibilities#7146, replenishmentTypes#7147, distributionCenters#7148, assignedArticleHierarchyNodes#7149, minOrderQtySetting#7150, minOrderQtySettingInternal#7151, listingCheck#7152, odsSelection#7153, demandProfiles#7154, constraintProfiles#7155, optimizationProfiles#7156, orderGroupSplitProfiles#7157, supplierMinimumProfiles#7158, multipleRestrictionProfiles#7159, preferredUomSource#7160, handlingOfUnfulfilledDemands#7161, negligibleQuantitiesThreshold#7162, eventtype#7163], false
(1981) Repartition
Arguments: 10, true
(1982) Filter
Arguments: (marketUnit#7142 <=> DIP_1691)
(1983) Project
Arguments: [marketUnit#7142, description#7143, articleHierarchy#7144, defaultCurrency#7145, responsibilities#7146, replenishmentTypes#7147, distributionCenters#7148, assignedArticleHierarchyNodes#7149, minOrderQtySetting#7150, minOrderQtySettingInternal#7151, listingCheck#7152, odsSelection#7153, demandProfiles#7154, constraintProfiles#7155, optimizationProfiles#7156, orderGroupSplitProfiles#7157, supplierMinimumProfiles#7158, multipleRestrictionProfiles#7159, preferredUomSource#7160, handlingOfUnfulfilledDemands#7161, negligibleQuantitiesThreshold#7162, eventtype#7163]
(1984) Project
Arguments: [distributionCenters#7148]
(1985) Generate
Arguments: explode(distributionCenters#7148), false, [distributionCenters#7164]
(1986) Project
Arguments: [distributionCenters#7164]
(1987) Generate
Arguments: explode(distributionCenters#7164.storageLocations), false, [storageLocations#7165]
(1988) Project
Arguments: [distributionCenters#7164.id AS plantId#7166, distributionCenters#7164.internalRefUUID AS plantUuid#7167, storageLocations#7165]
(1989) Project
Arguments: [plantId#7166, plantUuid#7167, storageLocations#7165.id AS storageLocId#7168, storageLocations#7165.internalRefUUID AS storageLocUuid#7169]
(1990) LogicalRelation
Arguments: parquet, [product#7170, plant#7171, orderDateTime#7172, planningStartDateTime#7173], false
(1991) RepartitionByExpression
Arguments: [product#7170, plant#7171], 10
(1992) Project
Arguments: [product#7170, plant#7171, orderDateTime#7172]
(1993) LogicalRelation
Arguments: parquet, [systemId#7174, internalUUID#7175, plant#7176, product#7177, blockedForReplenishmentStartingFrom#7178, productionAspect#7179, salesPlant#7180, listing#7181], false
(1994) Repartition
Arguments: 10, true
(1995) Project
Arguments: [systemId#7174, internalUUID#7175, plant#7176, product#7177, blockedForReplenishmentStartingFrom#7178, productionAspect#7179, salesPlant#7180, listing#7181, struct(systemId, systemId#7174, internalUUID, internalUUID#7175, plant, plant#7176, product, product#7177, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7178, productionAspect, productionAspect#7179, salesPlant, salesPlant#7180, listing, listing#7181) AS productPlant#7182]
(1996) Project
Arguments: [productPlant#7182]
(1997) Join
Arguments: LeftOuter, ((product#7170 <=> productPlant#7182.product.internalRefUUID) AND (plant#7171 <=> productPlant#7182.plant.internalRefUUID))
(1998) Project
Arguments: [product#7170, plant#7171, orderDateTime#7172, productPlant#7182]
(1999) SubqueryAlias
Arguments: wl
(2000) LogicalRelation
Arguments: parquet, [systemId#7183, internalUUID#7184, id#7185, displayId#7186, name#7187, category#7188, companyCode#7189, address#7190, mainDistributionChain#7191, mainPurchasingOrganization#7192, validPurchasingOrganizations#7193, productGroup#7194], false
(2001) Repartition
Arguments: 10, true
(2002) Project
Arguments: [internalUUID#7184, address#7190.timeZone.code AS timezonecode#7195]
(2003) Join
Arguments: LeftOuter, (plant#7171 <=> internalUUID#7184)
(2004) Project
Arguments: [product#7170, plant#7171, orderDateTime#7172, productPlant#7182, internalUUID#7184, CASE WHEN isnotnull(timezonecode#7195) THEN timezonecode#7195 ELSE UTC END AS timezonecode#7196]
(2005) Project
Arguments: [product#7170, plant#7171, orderDateTime#7172, productPlant#7182, timezonecode#7196]
(2006) LogicalRelation
Arguments: parquet, [systemId#7197, internalUUID#7198, id#7199, displayId#7200, name#7201, baseUnitOfMeasure#7202, unitOfMeasures#7203, unitOfMeasureConversions#7204, productionAspect#7205, salesAspect#7206, procurementAspect#7207, productGroup#7208], false
(2007) Repartition
Arguments: 10, true
(2008) Join
Arguments: LeftOuter, (product#7170 = internalUUID#7198)
(2009) Project
Arguments: [product#7170, plant#7171, orderDateTime#7172, productPlant#7182, timezonecode#7196, systemId#7197, internalUUID#7198, id#7199, displayId#7200, name#7201, baseUnitOfMeasure#7202, unitOfMeasures#7203, unitOfMeasureConversions#7204, productionAspect#7205, salesAspect#7206, procurementAspect#7207, productGroup#7208, filter(unitOfMeasureConversions#7204, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7182.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7182.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7202.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7202.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7209]
(2010) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7209.quantityNumerator), true, [quantityNumerator#7210]
(2011) Project
Arguments: [product#7170, plant#7171, orderDateTime#7172, productPlant#7182, timezonecode#7196, systemId#7197, internalUUID#7198, id#7199, displayId#7200, name#7201, baseUnitOfMeasure#7202, unitOfMeasures#7203, unitOfMeasureConversions#7204, productionAspect#7205, salesAspect#7206, procurementAspect#7207, productGroup#7208, filteredUnitOfMeasureConversions#7209, quantityNumerator#7210]
(2012) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7209.quantityDenominator), true, [quantityDenominator#7211]
(2013) Project
Arguments: [product#7170, plant#7171, orderDateTime#7172, productPlant#7182, timezonecode#7196, systemId#7197, internalUUID#7198, id#7199, displayId#7200, name#7201, baseUnitOfMeasure#7202, unitOfMeasures#7203, unitOfMeasureConversions#7204, productionAspect#7205, salesAspect#7206, procurementAspect#7207, productGroup#7208, filteredUnitOfMeasureConversions#7209, quantityNumerator#7210, quantityDenominator#7211]
(2014) Project
Arguments: [product#7170, plant#7171, orderDateTime#7172, productPlant#7182, timezonecode#7196, systemId#7197, internalUUID#7198, id#7199, displayId#7200, name#7201, baseUnitOfMeasure#7202, unitOfMeasures#7203, unitOfMeasureConversions#7204, productionAspect#7205, salesAspect#7206, procurementAspect#7207, productGroup#7208, filteredUnitOfMeasureConversions#7209, quantityNumerator#7210, quantityDenominator#7211, (cast(quantityNumerator#7210 as double) / cast(quantityDenominator#7211 as double)) AS outboundUnit#7212]
(2015) Project
Arguments: [product#7170, plant#7171, orderDateTime#7172, productPlant#7182, timezonecode#7196, systemId#7197, internalUUID#7198, id#7199, displayId#7200, name#7201, baseUnitOfMeasure#7202, unitOfMeasures#7203, unitOfMeasureConversions#7204, productionAspect#7205, salesAspect#7206, procurementAspect#7207, productGroup#7208, filteredUnitOfMeasureConversions#7209, quantityNumerator#7210, quantityDenominator#7211, CASE WHEN (isnull(outboundUnit#7212) OR (outboundUnit#7212 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7212 END AS outboundUnit#7213]
(2016) Project
Arguments: [product#7170, plant#7171, orderDateTime#7172, productPlant#7182, timezonecode#7196, outboundUnit#7213]
(2017) Project
Arguments: [plant#7171]
(2018) Deduplicate
Arguments: [plant#7171]
(2019) Join
Arguments: Inner, (plantUuid#7167 = plant#7171)
(2020) Project
Arguments: [plantId#7166, plantUuid#7167, storageLocId#7168, storageLocUuid#7169]
(2021) Join
Arguments: Inner, (plant#7139.internalRefUUID <=> plantUuid#7167)
(2022) Generate
Arguments: explode(filter(stockQuantities#7141, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#7169) AND (lambda x#1207.storageLocation.Id = storageLocId#7168)), lambda x#1207, false))), false, [stockQuantity#7214]
(2023) Project
Arguments: [systemId#7136, internalUUID#7137, product#7138, plant#7139, calculationDateTime#7140, stockQuantities#7141, plantId#7166, plantUuid#7167, storageLocId#7168, storageLocUuid#7169, stockQuantity#7214]
(2024) Aggregate
Arguments: [plantUuid#7167, internalUUID#7137, plant#7139, product#7138, systemId#7136], [plantUuid#7167, internalUUID#7137, plant#7139, product#7138, systemId#7136, first(calculationDateTime#7140, false) AS calculationDateTime#7215, collect_list(stockQuantity#7214, 0, 0) AS stockQuantities#7216]
(2025) Project
Arguments: [systemId#7136, internalUUID#7137, product#7138, plant#7139, calculationDateTime#7215, stockQuantities#7216]
(2026) Generate
Arguments: explode(stockQuantities#7216), false, [stockQuantity#7217]
(2027) Project
Arguments: [systemId#7136, internalUUID#7137, product#7138, plant#7139, calculationDateTime#7215, stockQuantities#7216, stockQuantity#7217]
(2028) Project
Arguments: [plant#7139.id AS plant#7218, plant#7139.internalRefUUID AS plantUuid#7219, product#7138.id AS product#7220, product#7138.internalRefUUID AS productUuid#7221, calculationDateTime#7215, stockQuantity#7217.storagelocation.id AS storageLocId#7222, stockQuantity#7217.storagelocation.internalRefUUID AS storageLocUuid#7223, stockQuantity#7217.quantity.measure AS quantity#7224, stockQuantity#7217.specialStockIndicator.code AS specialStockIndicator#7225, stockQuantity#7217.stockType.code AS stockType#7226]
(2029) Filter
Arguments: ((specialStockIndicator#7225 = ) AND (stockType#7226 = 01))
(2030) LogicalRelation
Arguments: parquet, [product#7227, plant#7228, orderDateTime#7229, planningStartDateTime#7230], false
(2031) RepartitionByExpression
Arguments: [product#7227, plant#7228], 10
(2032) Project
Arguments: [product#7227, plant#7228, orderDateTime#7229]
(2033) LogicalRelation
Arguments: parquet, [systemId#7231, internalUUID#7232, plant#7233, product#7234, blockedForReplenishmentStartingFrom#7235, productionAspect#7236, salesPlant#7237, listing#7238], false
(2034) Repartition
Arguments: 10, true
(2035) Project
Arguments: [systemId#7231, internalUUID#7232, plant#7233, product#7234, blockedForReplenishmentStartingFrom#7235, productionAspect#7236, salesPlant#7237, listing#7238, struct(systemId, systemId#7231, internalUUID, internalUUID#7232, plant, plant#7233, product, product#7234, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7235, productionAspect, productionAspect#7236, salesPlant, salesPlant#7237, listing, listing#7238) AS productPlant#7239]
(2036) Project
Arguments: [productPlant#7239]
(2037) Join
Arguments: LeftOuter, ((product#7227 <=> productPlant#7239.product.internalRefUUID) AND (plant#7228 <=> productPlant#7239.plant.internalRefUUID))
(2038) Project
Arguments: [product#7227, plant#7228, orderDateTime#7229, productPlant#7239]
(2039) SubqueryAlias
Arguments: wl
(2040) LogicalRelation
Arguments: parquet, [systemId#7240, internalUUID#7241, id#7242, displayId#7243, name#7244, category#7245, companyCode#7246, address#7247, mainDistributionChain#7248, mainPurchasingOrganization#7249, validPurchasingOrganizations#7250, productGroup#7251], false
(2041) Repartition
Arguments: 10, true
(2042) Project
Arguments: [internalUUID#7241, address#7247.timeZone.code AS timezonecode#7252]
(2043) Join
Arguments: LeftOuter, (plant#7228 <=> internalUUID#7241)
(2044) Project
Arguments: [product#7227, plant#7228, orderDateTime#7229, productPlant#7239, internalUUID#7241, CASE WHEN isnotnull(timezonecode#7252) THEN timezonecode#7252 ELSE UTC END AS timezonecode#7253]
(2045) Project
Arguments: [product#7227, plant#7228, orderDateTime#7229, productPlant#7239, timezonecode#7253]
(2046) LogicalRelation
Arguments: parquet, [systemId#7254, internalUUID#7255, id#7256, displayId#7257, name#7258, baseUnitOfMeasure#7259, unitOfMeasures#7260, unitOfMeasureConversions#7261, productionAspect#7262, salesAspect#7263, procurementAspect#7264, productGroup#7265], false
(2047) Repartition
Arguments: 10, true
(2048) Join
Arguments: LeftOuter, (product#7227 = internalUUID#7255)
(2049) Project
Arguments: [product#7227, plant#7228, orderDateTime#7229, productPlant#7239, timezonecode#7253, systemId#7254, internalUUID#7255, id#7256, displayId#7257, name#7258, baseUnitOfMeasure#7259, unitOfMeasures#7260, unitOfMeasureConversions#7261, productionAspect#7262, salesAspect#7263, procurementAspect#7264, productGroup#7265, filter(unitOfMeasureConversions#7261, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7239.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7239.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7259.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7259.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7266]
(2050) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7266.quantityNumerator), true, [quantityNumerator#7267]
(2051) Project
Arguments: [product#7227, plant#7228, orderDateTime#7229, productPlant#7239, timezonecode#7253, systemId#7254, internalUUID#7255, id#7256, displayId#7257, name#7258, baseUnitOfMeasure#7259, unitOfMeasures#7260, unitOfMeasureConversions#7261, productionAspect#7262, salesAspect#7263, procurementAspect#7264, productGroup#7265, filteredUnitOfMeasureConversions#7266, quantityNumerator#7267]
(2052) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7266.quantityDenominator), true, [quantityDenominator#7268]
(2053) Project
Arguments: [product#7227, plant#7228, orderDateTime#7229, productPlant#7239, timezonecode#7253, systemId#7254, internalUUID#7255, id#7256, displayId#7257, name#7258, baseUnitOfMeasure#7259, unitOfMeasures#7260, unitOfMeasureConversions#7261, productionAspect#7262, salesAspect#7263, procurementAspect#7264, productGroup#7265, filteredUnitOfMeasureConversions#7266, quantityNumerator#7267, quantityDenominator#7268]
(2054) Project
Arguments: [product#7227, plant#7228, orderDateTime#7229, productPlant#7239, timezonecode#7253, systemId#7254, internalUUID#7255, id#7256, displayId#7257, name#7258, baseUnitOfMeasure#7259, unitOfMeasures#7260, unitOfMeasureConversions#7261, productionAspect#7262, salesAspect#7263, procurementAspect#7264, productGroup#7265, filteredUnitOfMeasureConversions#7266, quantityNumerator#7267, quantityDenominator#7268, (cast(quantityNumerator#7267 as double) / cast(quantityDenominator#7268 as double)) AS outboundUnit#7269]
(2055) Project
Arguments: [product#7227, plant#7228, orderDateTime#7229, productPlant#7239, timezonecode#7253, systemId#7254, internalUUID#7255, id#7256, displayId#7257, name#7258, baseUnitOfMeasure#7259, unitOfMeasures#7260, unitOfMeasureConversions#7261, productionAspect#7262, salesAspect#7263, procurementAspect#7264, productGroup#7265, filteredUnitOfMeasureConversions#7266, quantityNumerator#7267, quantityDenominator#7268, CASE WHEN (isnull(outboundUnit#7269) OR (outboundUnit#7269 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7269 END AS outboundUnit#7270]
(2056) Project
Arguments: [product#7227, plant#7228, orderDateTime#7229, productPlant#7239, timezonecode#7253, outboundUnit#7270]
(2057) Join
Arguments: Inner, ((plantUuid#7219 = plant#7228) AND (productUuid#7221 = product#7227))
(2058) Filter
Arguments: (calculationDateTime#7215 <= orderDateTime#7229)
(2059) Project
Arguments: [plantUuid#7219 AS plant#7271, productUuid#7221 AS product#7272, storageLocId#7222, calculationDateTime#7215, quantity#7224]
(2060) LogicalRelation
Arguments: parquet, [systemId#7273, internalUUID#7274, product#7275, plant#7276, calculationDateTime#7277, stockQuantities#7278], false
(2061) Repartition
Arguments: 10, true
(2062) LogicalRelation
Arguments: parquet, [marketUnit#7279, description#7280, articleHierarchy#7281, defaultCurrency#7282, responsibilities#7283, replenishmentTypes#7284, distributionCenters#7285, assignedArticleHierarchyNodes#7286, minOrderQtySetting#7287, minOrderQtySettingInternal#7288, listingCheck#7289, odsSelection#7290, demandProfiles#7291, constraintProfiles#7292, optimizationProfiles#7293, orderGroupSplitProfiles#7294, supplierMinimumProfiles#7295, multipleRestrictionProfiles#7296, preferredUomSource#7297, handlingOfUnfulfilledDemands#7298, negligibleQuantitiesThreshold#7299, eventtype#7300], false
(2063) Repartition
Arguments: 10, true
(2064) Filter
Arguments: (marketUnit#7279 <=> DIP_1691)
(2065) Project
Arguments: [marketUnit#7279, description#7280, articleHierarchy#7281, defaultCurrency#7282, responsibilities#7283, replenishmentTypes#7284, distributionCenters#7285, assignedArticleHierarchyNodes#7286, minOrderQtySetting#7287, minOrderQtySettingInternal#7288, listingCheck#7289, odsSelection#7290, demandProfiles#7291, constraintProfiles#7292, optimizationProfiles#7293, orderGroupSplitProfiles#7294, supplierMinimumProfiles#7295, multipleRestrictionProfiles#7296, preferredUomSource#7297, handlingOfUnfulfilledDemands#7298, negligibleQuantitiesThreshold#7299, eventtype#7300]
(2066) Project
Arguments: [distributionCenters#7285]
(2067) Generate
Arguments: explode(distributionCenters#7285), false, [distributionCenters#7301]
(2068) Project
Arguments: [distributionCenters#7301]
(2069) Generate
Arguments: explode(distributionCenters#7301.storageLocations), false, [storageLocations#7302]
(2070) Project
Arguments: [distributionCenters#7301.id AS plantId#7303, distributionCenters#7301.internalRefUUID AS plantUuid#7304, storageLocations#7302]
(2071) Project
Arguments: [plantId#7303, plantUuid#7304, storageLocations#7302.id AS storageLocId#7305, storageLocations#7302.internalRefUUID AS storageLocUuid#7306]
(2072) LogicalRelation
Arguments: parquet, [product#7307, plant#7308, orderDateTime#7309, planningStartDateTime#7310], false
(2073) RepartitionByExpression
Arguments: [product#7307, plant#7308], 10
(2074) Project
Arguments: [product#7307, plant#7308, orderDateTime#7309]
(2075) LogicalRelation
Arguments: parquet, [systemId#7311, internalUUID#7312, plant#7313, product#7314, blockedForReplenishmentStartingFrom#7315, productionAspect#7316, salesPlant#7317, listing#7318], false
(2076) Repartition
Arguments: 10, true
(2077) Project
Arguments: [systemId#7311, internalUUID#7312, plant#7313, product#7314, blockedForReplenishmentStartingFrom#7315, productionAspect#7316, salesPlant#7317, listing#7318, struct(systemId, systemId#7311, internalUUID, internalUUID#7312, plant, plant#7313, product, product#7314, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7315, productionAspect, productionAspect#7316, salesPlant, salesPlant#7317, listing, listing#7318) AS productPlant#7319]
(2078) Project
Arguments: [productPlant#7319]
(2079) Join
Arguments: LeftOuter, ((product#7307 <=> productPlant#7319.product.internalRefUUID) AND (plant#7308 <=> productPlant#7319.plant.internalRefUUID))
(2080) Project
Arguments: [product#7307, plant#7308, orderDateTime#7309, productPlant#7319]
(2081) SubqueryAlias
Arguments: wl
(2082) LogicalRelation
Arguments: parquet, [systemId#7320, internalUUID#7321, id#7322, displayId#7323, name#7324, category#7325, companyCode#7326, address#7327, mainDistributionChain#7328, mainPurchasingOrganization#7329, validPurchasingOrganizations#7330, productGroup#7331], false
(2083) Repartition
Arguments: 10, true
(2084) Project
Arguments: [internalUUID#7321, address#7327.timeZone.code AS timezonecode#7332]
(2085) Join
Arguments: LeftOuter, (plant#7308 <=> internalUUID#7321)
(2086) Project
Arguments: [product#7307, plant#7308, orderDateTime#7309, productPlant#7319, internalUUID#7321, CASE WHEN isnotnull(timezonecode#7332) THEN timezonecode#7332 ELSE UTC END AS timezonecode#7333]
(2087) Project
Arguments: [product#7307, plant#7308, orderDateTime#7309, productPlant#7319, timezonecode#7333]
(2088) LogicalRelation
Arguments: parquet, [systemId#7334, internalUUID#7335, id#7336, displayId#7337, name#7338, baseUnitOfMeasure#7339, unitOfMeasures#7340, unitOfMeasureConversions#7341, productionAspect#7342, salesAspect#7343, procurementAspect#7344, productGroup#7345], false
(2089) Repartition
Arguments: 10, true
(2090) Join
Arguments: LeftOuter, (product#7307 = internalUUID#7335)
(2091) Project
Arguments: [product#7307, plant#7308, orderDateTime#7309, productPlant#7319, timezonecode#7333, systemId#7334, internalUUID#7335, id#7336, displayId#7337, name#7338, baseUnitOfMeasure#7339, unitOfMeasures#7340, unitOfMeasureConversions#7341, productionAspect#7342, salesAspect#7343, procurementAspect#7344, productGroup#7345, filter(unitOfMeasureConversions#7341, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7319.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7319.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7339.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7339.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7346]
(2092) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7346.quantityNumerator), true, [quantityNumerator#7347]
(2093) Project
Arguments: [product#7307, plant#7308, orderDateTime#7309, productPlant#7319, timezonecode#7333, systemId#7334, internalUUID#7335, id#7336, displayId#7337, name#7338, baseUnitOfMeasure#7339, unitOfMeasures#7340, unitOfMeasureConversions#7341, productionAspect#7342, salesAspect#7343, procurementAspect#7344, productGroup#7345, filteredUnitOfMeasureConversions#7346, quantityNumerator#7347]
(2094) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7346.quantityDenominator), true, [quantityDenominator#7348]
(2095) Project
Arguments: [product#7307, plant#7308, orderDateTime#7309, productPlant#7319, timezonecode#7333, systemId#7334, internalUUID#7335, id#7336, displayId#7337, name#7338, baseUnitOfMeasure#7339, unitOfMeasures#7340, unitOfMeasureConversions#7341, productionAspect#7342, salesAspect#7343, procurementAspect#7344, productGroup#7345, filteredUnitOfMeasureConversions#7346, quantityNumerator#7347, quantityDenominator#7348]
(2096) Project
Arguments: [product#7307, plant#7308, orderDateTime#7309, productPlant#7319, timezonecode#7333, systemId#7334, internalUUID#7335, id#7336, displayId#7337, name#7338, baseUnitOfMeasure#7339, unitOfMeasures#7340, unitOfMeasureConversions#7341, productionAspect#7342, salesAspect#7343, procurementAspect#7344, productGroup#7345, filteredUnitOfMeasureConversions#7346, quantityNumerator#7347, quantityDenominator#7348, (cast(quantityNumerator#7347 as double) / cast(quantityDenominator#7348 as double)) AS outboundUnit#7349]
(2097) Project
Arguments: [product#7307, plant#7308, orderDateTime#7309, productPlant#7319, timezonecode#7333, systemId#7334, internalUUID#7335, id#7336, displayId#7337, name#7338, baseUnitOfMeasure#7339, unitOfMeasures#7340, unitOfMeasureConversions#7341, productionAspect#7342, salesAspect#7343, procurementAspect#7344, productGroup#7345, filteredUnitOfMeasureConversions#7346, quantityNumerator#7347, quantityDenominator#7348, CASE WHEN (isnull(outboundUnit#7349) OR (outboundUnit#7349 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7349 END AS outboundUnit#7350]
(2098) Project
Arguments: [product#7307, plant#7308, orderDateTime#7309, productPlant#7319, timezonecode#7333, outboundUnit#7350]
(2099) Project
Arguments: [plant#7308]
(2100) Deduplicate
Arguments: [plant#7308]
(2101) Join
Arguments: Inner, (plantUuid#7304 = plant#7308)
(2102) Project
Arguments: [plantId#7303, plantUuid#7304, storageLocId#7305, storageLocUuid#7306]
(2103) Join
Arguments: Inner, (plant#7276.internalRefUUID <=> plantUuid#7304)
(2104) Generate
Arguments: explode(filter(stockQuantities#7278, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#7306) AND (lambda x#1207.storageLocation.Id = storageLocId#7305)), lambda x#1207, false))), false, [stockQuantity#7351]
(2105) Project
Arguments: [systemId#7273, internalUUID#7274, product#7275, plant#7276, calculationDateTime#7277, stockQuantities#7278, plantId#7303, plantUuid#7304, storageLocId#7305, storageLocUuid#7306, stockQuantity#7351]
(2106) Aggregate
Arguments: [plantUuid#7304, internalUUID#7274, plant#7276, product#7275, systemId#7273], [plantUuid#7304, internalUUID#7274, plant#7276, product#7275, systemId#7273, first(calculationDateTime#7277, false) AS calculationDateTime#7352, collect_list(stockQuantity#7351, 0, 0) AS stockQuantities#7353]
(2107) Project
Arguments: [systemId#7273, internalUUID#7274, product#7275, plant#7276, calculationDateTime#7352, stockQuantities#7353]
(2108) Generate
Arguments: explode(stockQuantities#7353), false, [stockQuantity#7354]
(2109) Project
Arguments: [systemId#7273, internalUUID#7274, product#7275, plant#7276, calculationDateTime#7352, stockQuantities#7353, stockQuantity#7354]
(2110) Project
Arguments: [plant#7276.id AS plant#7355, plant#7276.internalRefUUID AS plantUuid#7356, product#7275.id AS product#7357, product#7275.internalRefUUID AS productUuid#7358, calculationDateTime#7352, stockQuantity#7354.storagelocation.id AS storageLocId#7359, stockQuantity#7354.storagelocation.internalRefUUID AS storageLocUuid#7360, stockQuantity#7354.quantity.measure AS quantity#7361, stockQuantity#7354.specialStockIndicator.code AS specialStockIndicator#7362, stockQuantity#7354.stockType.code AS stockType#7363]
(2111) Filter
Arguments: ((specialStockIndicator#7362 = ) AND (stockType#7363 = 01))
(2112) LogicalRelation
Arguments: parquet, [product#7364, plant#7365, orderDateTime#7366, planningStartDateTime#7367], false
(2113) RepartitionByExpression
Arguments: [product#7364, plant#7365], 10
(2114) Project
Arguments: [product#7364, plant#7365, orderDateTime#7366]
(2115) LogicalRelation
Arguments: parquet, [systemId#7368, internalUUID#7369, plant#7370, product#7371, blockedForReplenishmentStartingFrom#7372, productionAspect#7373, salesPlant#7374, listing#7375], false
(2116) Repartition
Arguments: 10, true
(2117) Project
Arguments: [systemId#7368, internalUUID#7369, plant#7370, product#7371, blockedForReplenishmentStartingFrom#7372, productionAspect#7373, salesPlant#7374, listing#7375, struct(systemId, systemId#7368, internalUUID, internalUUID#7369, plant, plant#7370, product, product#7371, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7372, productionAspect, productionAspect#7373, salesPlant, salesPlant#7374, listing, listing#7375) AS productPlant#7376]
(2118) Project
Arguments: [productPlant#7376]
(2119) Join
Arguments: LeftOuter, ((product#7364 <=> productPlant#7376.product.internalRefUUID) AND (plant#7365 <=> productPlant#7376.plant.internalRefUUID))
(2120) Project
Arguments: [product#7364, plant#7365, orderDateTime#7366, productPlant#7376]
(2121) SubqueryAlias
Arguments: wl
(2122) LogicalRelation
Arguments: parquet, [systemId#7377, internalUUID#7378, id#7379, displayId#7380, name#7381, category#7382, companyCode#7383, address#7384, mainDistributionChain#7385, mainPurchasingOrganization#7386, validPurchasingOrganizations#7387, productGroup#7388], false
(2123) Repartition
Arguments: 10, true
(2124) Project
Arguments: [internalUUID#7378, address#7384.timeZone.code AS timezonecode#7389]
(2125) Join
Arguments: LeftOuter, (plant#7365 <=> internalUUID#7378)
(2126) Project
Arguments: [product#7364, plant#7365, orderDateTime#7366, productPlant#7376, internalUUID#7378, CASE WHEN isnotnull(timezonecode#7389) THEN timezonecode#7389 ELSE UTC END AS timezonecode#7390]
(2127) Project
Arguments: [product#7364, plant#7365, orderDateTime#7366, productPlant#7376, timezonecode#7390]
(2128) LogicalRelation
Arguments: parquet, [systemId#7391, internalUUID#7392, id#7393, displayId#7394, name#7395, baseUnitOfMeasure#7396, unitOfMeasures#7397, unitOfMeasureConversions#7398, productionAspect#7399, salesAspect#7400, procurementAspect#7401, productGroup#7402], false
(2129) Repartition
Arguments: 10, true
(2130) Join
Arguments: LeftOuter, (product#7364 = internalUUID#7392)
(2131) Project
Arguments: [product#7364, plant#7365, orderDateTime#7366, productPlant#7376, timezonecode#7390, systemId#7391, internalUUID#7392, id#7393, displayId#7394, name#7395, baseUnitOfMeasure#7396, unitOfMeasures#7397, unitOfMeasureConversions#7398, productionAspect#7399, salesAspect#7400, procurementAspect#7401, productGroup#7402, filter(unitOfMeasureConversions#7398, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7376.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7376.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7396.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7396.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7403]
(2132) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7403.quantityNumerator), true, [quantityNumerator#7404]
(2133) Project
Arguments: [product#7364, plant#7365, orderDateTime#7366, productPlant#7376, timezonecode#7390, systemId#7391, internalUUID#7392, id#7393, displayId#7394, name#7395, baseUnitOfMeasure#7396, unitOfMeasures#7397, unitOfMeasureConversions#7398, productionAspect#7399, salesAspect#7400, procurementAspect#7401, productGroup#7402, filteredUnitOfMeasureConversions#7403, quantityNumerator#7404]
(2134) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7403.quantityDenominator), true, [quantityDenominator#7405]
(2135) Project
Arguments: [product#7364, plant#7365, orderDateTime#7366, productPlant#7376, timezonecode#7390, systemId#7391, internalUUID#7392, id#7393, displayId#7394, name#7395, baseUnitOfMeasure#7396, unitOfMeasures#7397, unitOfMeasureConversions#7398, productionAspect#7399, salesAspect#7400, procurementAspect#7401, productGroup#7402, filteredUnitOfMeasureConversions#7403, quantityNumerator#7404, quantityDenominator#7405]
(2136) Project
Arguments: [product#7364, plant#7365, orderDateTime#7366, productPlant#7376, timezonecode#7390, systemId#7391, internalUUID#7392, id#7393, displayId#7394, name#7395, baseUnitOfMeasure#7396, unitOfMeasures#7397, unitOfMeasureConversions#7398, productionAspect#7399, salesAspect#7400, procurementAspect#7401, productGroup#7402, filteredUnitOfMeasureConversions#7403, quantityNumerator#7404, quantityDenominator#7405, (cast(quantityNumerator#7404 as double) / cast(quantityDenominator#7405 as double)) AS outboundUnit#7406]
(2137) Project
Arguments: [product#7364, plant#7365, orderDateTime#7366, productPlant#7376, timezonecode#7390, systemId#7391, internalUUID#7392, id#7393, displayId#7394, name#7395, baseUnitOfMeasure#7396, unitOfMeasures#7397, unitOfMeasureConversions#7398, productionAspect#7399, salesAspect#7400, procurementAspect#7401, productGroup#7402, filteredUnitOfMeasureConversions#7403, quantityNumerator#7404, quantityDenominator#7405, CASE WHEN (isnull(outboundUnit#7406) OR (outboundUnit#7406 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7406 END AS outboundUnit#7407]
(2138) Project
Arguments: [product#7364, plant#7365, orderDateTime#7366, productPlant#7376, timezonecode#7390, outboundUnit#7407]
(2139) Join
Arguments: Inner, ((plantUuid#7356 = plant#7365) AND (productUuid#7358 = product#7364))
(2140) Filter
Arguments: (calculationDateTime#7352 <= orderDateTime#7366)
(2141) Project
Arguments: [plantUuid#7356 AS plant#7408, productUuid#7358 AS product#7409, storageLocId#7359, calculationDateTime#7352, quantity#7361]
(2142) Aggregate
Arguments: [plant#7408, product#7409, storageLocId#7359], [plant#7408, product#7409, storageLocId#7359, max(calculationDateTime#7352) AS max_calc_datetime#7410]
(2143) Join
Arguments: Inner, ((((plant#7271 <=> plant#7408) AND (product#7272 <=> product#7409)) AND (storageLocId#7222 <=> storageLocId#7359)) AND (calculationDateTime#7215 <=> max_calc_datetime#7410))
(2144) Project
Arguments: [plant#7271, product#7272, storageLocId#7222, calculationDateTime#7215, quantity#7224]
(2145) Aggregate
Arguments: [product#7272, plant#7271], [product#7272, plant#7271, sum(quantity#7224) AS quantitySum#7411, min(calculationDateTime#7215) AS minCalculationDateTime#7412]
(2146) Project
Arguments: [product#7272, plant#7271, quantitySum#7411, minCalculationDateTime#7412, round(quantitySum#7411, 0) AS roundedQuantitySum#7413]
(2147) Join
Arguments: LeftOuter, ((plant#7093 = plant#7271) AND (product#7092 = product#7272))
(2148) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, outboundUnit#7135, roundedQuantitySum#7413, minCalculationDateTime#7412]
(2149) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, outboundUnit#7135, roundedQuantitySum#7413, minCalculationDateTime#7412, CASE WHEN isnotnull(minCalculationDateTime#7412) THEN minCalculationDateTime#7412 ELSE orderDateTime#7094 END AS stockDatetime#7414]
(2150) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, outboundUnit#7135, roundedQuantitySum#7413, minCalculationDateTime#7412, stockDatetime#7414, CASE WHEN isnotnull(roundedQuantitySum#7413) THEN array(roundedQuantitySum#7413) ELSE array(0.0) END AS stockBatchQuantities#7415]
(2151) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, outboundUnit#7135, roundedQuantitySum#7413, minCalculationDateTime#7412, stockDatetime#7414, stockBatchQuantities#7415, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#7416]
(2152) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, outboundUnit#7135, roundedQuantitySum#7413, stockDatetime#7414, stockBatchQuantities#7415, stockBatchShelfLifeEndDatetimes#7416]
(2153) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, outboundUnit#7135, stockDatetime#7414, stockBatchQuantities#7415, stockBatchShelfLifeEndDatetimes#7416]
(2154) LogicalRelation
Arguments: parquet, [product#7417, plant#7418, demandChannel#7419, demandStream#7420, considerVariance#7421, demandTimeBuckets#7422, demandPointInTimeStart#7423, demandPointInTimeEnd#7424, demandPointInTime#7425], false
(2155) Join
Arguments: LeftOuter, ((product#7092 = product#7417) AND (plant#7093 = plant#7418))
(2156) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, outboundUnit#7135, stockDatetime#7414, stockBatchQuantities#7415, stockBatchShelfLifeEndDatetimes#7416, demandChannel#7419, demandStream#7420, considerVariance#7421, demandTimeBuckets#7422, demandPointInTimeStart#7423, demandPointInTimeEnd#7424, demandPointInTime#7425, product#7417, plant#7418]
(2157) Project
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, outboundUnit#7135, stockDatetime#7414, stockBatchQuantities#7415, stockBatchShelfLifeEndDatetimes#7416, demandChannel#7419, demandStream#7420, considerVariance#7421, demandTimeBuckets#7422, demandPointInTimeStart#7423, demandPointInTimeEnd#7424, demandPointInTime#7425, CASE WHEN isnotnull(product#7417) THEN struct(demandChannel, demandChannel#7419, demandStream, demandStream#7420, considerVariance, considerVariance#7421, demandTimeBuckets, demandTimeBuckets#7422, demandPointInTimeStart, demandPointInTimeStart#7423, demandPointInTimeEnd, demandPointInTimeEnd#7424, demandPointInTime, demandPointInTime#7425) 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#7426]
(2158) Aggregate
Arguments: [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, outboundUnit#7135, stockDatetime#7414, stockBatchQuantities#7415, stockBatchShelfLifeEndDatetimes#7416], [product#7092, plant#7093, orderDateTime#7094, productPlant#7104, timezonecode#7118, outboundUnit#7135, stockDatetime#7414, stockBatchQuantities#7415, stockBatchShelfLifeEndDatetimes#7416, collect_list(rawDemands#7426, 0, 0) AS rawDemands#7427]
(2159) DeserializeToObject
Arguments: createexternalrow(invoke(product#7092.toString()), invoke(plant#7093.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#7094)), if (isnull(productPlant#7104)) null else createexternalrow(invoke(productPlant#7104.systemId.toString()), invoke(productPlant#7104.internalUUID.toString()), if (isnull(productPlant#7104.plant)) null else createexternalrow(invoke(productPlant#7104.plant.internalRefUUID.toString()), invoke(productPlant#7104.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#7104.product)) null else createexternalrow(invoke(productPlant#7104.product.internalRefUUID.toString()), invoke(productPlant#7104.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#7104.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#7104.productionAspect)) null else createexternalrow(if (isnull(productPlant#7104.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#7104.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#7104.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#7104.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#7104.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#7104.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#7104.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#7104.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#7104.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#7104.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#7104.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#7104.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#7104.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#7104.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#7104.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#7104.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#7104.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#7104.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#7104.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#7104.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#7104.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#7104.salesPlant)) null else createexternalrow(if (isnull(productPlant#7104.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#7104.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#7104.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, 497), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#7104.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#7118.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#7135)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#7414)), mapobjects(lambdavariable(MapObject, DoubleType, true, 498), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 498) as double))), stockBatchQuantities#7415, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 499), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 499) as timestamp)))), stockBatchShelfLifeEndDatetimes#7416, 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, 500), 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, 500))) 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, 500).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, 500).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, 500).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).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, 500).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, 500).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, 500).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).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, 500).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#7427, 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#1569: org.apache.spark.sql.Row
(2160) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@762840b4, 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#1574: 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#7428, 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#7429, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 488), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 488), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 489), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 489), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 490), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 490), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 491), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 491), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 492), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 492), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#7430, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 494), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 494), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 495), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 495), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 496), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 496), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#7431]
(2162) Join
Arguments: LeftOuter, ((plant#7429 <=> plant#6768) AND (product#7428 <=> product#6767))
(2163) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, outboundUnit#6810, stockDatetime#7089, stockBatchQuantities#7090, stockBatchShelfLifeEndDatetimes#7091, plant#7429, dayBucketDemands#7430, pointInTimeDemands#7431]
(2164) Project
Arguments: [product#6767, plant#6768, orderDateTime#6769, productPlant#6779, timezonecode#6793, outboundUnit#6810, stockDatetime#7089, stockBatchQuantities#7090, stockBatchShelfLifeEndDatetimes#7091, dayBucketDemands#7430, pointInTimeDemands#7431]
(2165) LogicalRelation
Arguments: parquet, [marketUnit#7432, description#7433, articleHierarchy#7434, defaultCurrency#7435, responsibilities#7436, replenishmentTypes#7437, distributionCenters#7438, assignedArticleHierarchyNodes#7439, minOrderQtySetting#7440, minOrderQtySettingInternal#7441, listingCheck#7442, odsSelection#7443, demandProfiles#7444, constraintProfiles#7445, optimizationProfiles#7446, orderGroupSplitProfiles#7447, supplierMinimumProfiles#7448, multipleRestrictionProfiles#7449, preferredUomSource#7450, handlingOfUnfulfilledDemands#7451, negligibleQuantitiesThreshold#7452, eventtype#7453], false
(2166) Repartition
Arguments: 10, true
(2167) Filter
Arguments: (marketUnit#7432 <=> DIP_1691)
(2168) Project
Arguments: [marketUnit#7432, description#7433, articleHierarchy#7434, defaultCurrency#7435, responsibilities#7436, replenishmentTypes#7437, distributionCenters#7438, assignedArticleHierarchyNodes#7439, minOrderQtySetting#7440, minOrderQtySettingInternal#7441, listingCheck#7442, odsSelection#7443, demandProfiles#7444, constraintProfiles#7445, optimizationProfiles#7446, orderGroupSplitProfiles#7447, supplierMinimumProfiles#7448, multipleRestrictionProfiles#7449, preferredUomSource#7450, handlingOfUnfulfilledDemands#7451, negligibleQuantitiesThreshold#7452, eventtype#7453]
(2169) Project
Arguments: [distributionCenters#7438]
(2170) Generate
Arguments: explode(distributionCenters#7438), false, [distributionCenters#7454]
(2171) Project
Arguments: [distributionCenters#7454]
(2172) Generate
Arguments: explode(distributionCenters#7454.storageLocations), false, [storageLocations#7455]
(2173) Project
Arguments: [distributionCenters#7454.id AS plantId#7456, distributionCenters#7454.internalRefUUID AS plantUuid#7457, storageLocations#7455]
(2174) Project
Arguments: [plantId#7456, plantUuid#7457, storageLocations#7455.id AS storageLocId#7458, storageLocations#7455.internalRefUUID AS storageLocUuid#7459]
(2175) LogicalRelation
Arguments: parquet, [product#7460, plant#7461, orderDateTime#7462, planningStartDateTime#7463], false
(2176) RepartitionByExpression
Arguments: [product#7460, plant#7461], 10
(2177) Project
Arguments: [product#7460, plant#7461, orderDateTime#7462]
(2178) LogicalRelation
Arguments: parquet, [systemId#7464, internalUUID#7465, plant#7466, product#7467, blockedForReplenishmentStartingFrom#7468, productionAspect#7469, salesPlant#7470, listing#7471], false
(2179) Repartition
Arguments: 10, true
(2180) Project
Arguments: [systemId#7464, internalUUID#7465, plant#7466, product#7467, blockedForReplenishmentStartingFrom#7468, productionAspect#7469, salesPlant#7470, listing#7471, struct(systemId, systemId#7464, internalUUID, internalUUID#7465, plant, plant#7466, product, product#7467, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7468, productionAspect, productionAspect#7469, salesPlant, salesPlant#7470, listing, listing#7471) AS productPlant#7472]
(2181) Project
Arguments: [productPlant#7472]
(2182) Join
Arguments: LeftOuter, ((product#7460 <=> productPlant#7472.product.internalRefUUID) AND (plant#7461 <=> productPlant#7472.plant.internalRefUUID))
(2183) Project
Arguments: [product#7460, plant#7461, orderDateTime#7462, productPlant#7472]
(2184) SubqueryAlias
Arguments: wl
(2185) LogicalRelation
Arguments: parquet, [systemId#7473, internalUUID#7474, id#7475, displayId#7476, name#7477, category#7478, companyCode#7479, address#7480, mainDistributionChain#7481, mainPurchasingOrganization#7482, validPurchasingOrganizations#7483, productGroup#7484], false
(2186) Repartition
Arguments: 10, true
(2187) Project
Arguments: [internalUUID#7474, address#7480.timeZone.code AS timezonecode#7485]
(2188) Join
Arguments: LeftOuter, (plant#7461 <=> internalUUID#7474)
(2189) Project
Arguments: [product#7460, plant#7461, orderDateTime#7462, productPlant#7472, internalUUID#7474, CASE WHEN isnotnull(timezonecode#7485) THEN timezonecode#7485 ELSE UTC END AS timezonecode#7486]
(2190) Project
Arguments: [product#7460, plant#7461, orderDateTime#7462, productPlant#7472, timezonecode#7486]
(2191) LogicalRelation
Arguments: parquet, [systemId#7487, internalUUID#7488, id#7489, displayId#7490, name#7491, baseUnitOfMeasure#7492, unitOfMeasures#7493, unitOfMeasureConversions#7494, productionAspect#7495, salesAspect#7496, procurementAspect#7497, productGroup#7498], false
(2192) Repartition
Arguments: 10, true
(2193) Join
Arguments: LeftOuter, (product#7460 = internalUUID#7488)
(2194) Project
Arguments: [product#7460, plant#7461, orderDateTime#7462, productPlant#7472, timezonecode#7486, systemId#7487, internalUUID#7488, id#7489, displayId#7490, name#7491, baseUnitOfMeasure#7492, unitOfMeasures#7493, unitOfMeasureConversions#7494, productionAspect#7495, salesAspect#7496, procurementAspect#7497, productGroup#7498, filter(unitOfMeasureConversions#7494, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7472.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7472.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7492.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7492.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7499]
(2195) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7499.quantityNumerator), true, [quantityNumerator#7500]
(2196) Project
Arguments: [product#7460, plant#7461, orderDateTime#7462, productPlant#7472, timezonecode#7486, systemId#7487, internalUUID#7488, id#7489, displayId#7490, name#7491, baseUnitOfMeasure#7492, unitOfMeasures#7493, unitOfMeasureConversions#7494, productionAspect#7495, salesAspect#7496, procurementAspect#7497, productGroup#7498, filteredUnitOfMeasureConversions#7499, quantityNumerator#7500]
(2197) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7499.quantityDenominator), true, [quantityDenominator#7501]
(2198) Project
Arguments: [product#7460, plant#7461, orderDateTime#7462, productPlant#7472, timezonecode#7486, systemId#7487, internalUUID#7488, id#7489, displayId#7490, name#7491, baseUnitOfMeasure#7492, unitOfMeasures#7493, unitOfMeasureConversions#7494, productionAspect#7495, salesAspect#7496, procurementAspect#7497, productGroup#7498, filteredUnitOfMeasureConversions#7499, quantityNumerator#7500, quantityDenominator#7501]
(2199) Project
Arguments: [product#7460, plant#7461, orderDateTime#7462, productPlant#7472, timezonecode#7486, systemId#7487, internalUUID#7488, id#7489, displayId#7490, name#7491, baseUnitOfMeasure#7492, unitOfMeasures#7493, unitOfMeasureConversions#7494, productionAspect#7495, salesAspect#7496, procurementAspect#7497, productGroup#7498, filteredUnitOfMeasureConversions#7499, quantityNumerator#7500, quantityDenominator#7501, (cast(quantityNumerator#7500 as double) / cast(quantityDenominator#7501 as double)) AS outboundUnit#7502]
(2200) Project
Arguments: [product#7460, plant#7461, orderDateTime#7462, productPlant#7472, timezonecode#7486, systemId#7487, internalUUID#7488, id#7489, displayId#7490, name#7491, baseUnitOfMeasure#7492, unitOfMeasures#7493, unitOfMeasureConversions#7494, productionAspect#7495, salesAspect#7496, procurementAspect#7497, productGroup#7498, filteredUnitOfMeasureConversions#7499, quantityNumerator#7500, quantityDenominator#7501, CASE WHEN (isnull(outboundUnit#7502) OR (outboundUnit#7502 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7502 END AS outboundUnit#7503]
(2201) Project
Arguments: [product#7460, plant#7461, orderDateTime#7462, productPlant#7472, timezonecode#7486, outboundUnit#7503]
(2202) Project
Arguments: [plant#7461]
(2203) Deduplicate
Arguments: [plant#7461]
(2204) Join
Arguments: Inner, (plantUuid#7457 = plant#7461)
(2205) Project
Arguments: [plantId#7456, plantUuid#7457, storageLocId#7458, storageLocUuid#7459]
(2206) Project
Arguments: [plantId#7456, plantUuid#7457 AS plant#7504, storageLocId#7458, storageLocUuid#7459]
(2207) Join
Arguments: Inner, (plant#6768 = plant#7504)
(2208) Project
Arguments: [plant#6768, product#6767, orderDateTime#6769, productPlant#6779, timezonecode#6793, outboundUnit#6810, stockDatetime#7089, stockBatchQuantities#7090, stockBatchShelfLifeEndDatetimes#7091, dayBucketDemands#7430, pointInTimeDemands#7431, plantId#7456, storageLocId#7458, storageLocUuid#7459, plant#7504]
(2209) LogicalRelation
Arguments: parquet, [systemId#7505, internalUUID#7506, id#7507, displayId#7508, supplier#7509, type#7510, status#7511, isMarkedForDeletion#7512, items#7513], false
(2210) Repartition
Arguments: 10, true
(2211) Generate
Arguments: explode(items#7513), false, [item#7514]
(2212) Project
Arguments: [id#7507, internalUUID#7506, isMarkedForDeletion#7512, supplier#7509.internalRefUUID AS supplierUuid#7515, item#7514]
(2213) Filter
Arguments: (((NOT isMarkedForDeletion#7512 AND NOT item#7514.deletionIndicator) AND NOT item#7514.completeIndicator) AND NOT item#7514.returnIndicator)
(2214) Project
Arguments: [id#7507, internalUUID#7506, supplierUuid#7515, item#7514.plant.internalRefUUID AS plant#7516, item#7514.product.internalRefUUID AS product#7517, item#7514.storageLocation.internalRefUUID AS storageLocUuid#7518, item#7514.quantityUnit.code AS quantityUom#7519, item#7514.quantityUnit.internalRefUUID AS quantityUomUuid#7520, item#7514.quantityNumerator AS quantityNumerator#7521, item#7514.quantityDenominator AS quantityDenominator#7522, item#7514.scheduleLines AS scheduleLines#7523, item#7514.confirmations AS confirmations#7524]
(2215) Join
Arguments: Inner, (((product#6767 = product#7517) AND (plant#6768 = plant#7516)) AND (storageLocUuid#7459 = storageLocUuid#7518))
(2216) Project
Arguments: [product#6767, plant#6768, storageLocUuid#7459, orderDateTime#6769, productPlant#6779, timezonecode#6793, outboundUnit#6810, stockDatetime#7089, stockBatchQuantities#7090, stockBatchShelfLifeEndDatetimes#7091, dayBucketDemands#7430, pointInTimeDemands#7431, plantId#7456, storageLocId#7458, id#7507, internalUUID#7506, supplierUuid#7515, quantityUom#7519, quantityUomUuid#7520, quantityNumerator#7521, quantityDenominator#7522, scheduleLines#7523, confirmations#7524, product#7517, plant#7516, ... 2 more fields]
(2217) Project
Arguments: [id#7507, internalUUID#7506, supplierUuid#7515, plant#7516, product#7517, storageLocUuid#7518, quantityUom#7519, quantityUomUuid#7520, quantityNumerator#7521, quantityDenominator#7522, scheduleLines#7523, confirmations#7524, stockDatetime#7089, timezonecode#6793]
(2218) Project
Arguments: [id#7507, internalUUID#7506, supplierUuid#7515, plant#7516, product#7517, storageLocUuid#7518, quantityUom#7519, quantityUomUuid#7520, quantityNumerator#7521, quantityDenominator#7522, scheduleLines#7523, confirmations#7524, stockDatetime#7089, timezonecode#6793, array_size(filter(confirmations#7524, lambdafunction((((lambda x_2#2322.deletionIndicator = false) AND (lambda x_2#2322.isRelevantForConfirmation = true)) AND isnotnull(lambda x_2#2322.confirmedDeliveryAt)), lambda x_2#2322, false))) AS _w0#7525]
(2219) Window
Arguments: [sum(_w0#7525) windowspecdefinition(internalUUID#7506, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#7526L], [internalUUID#7506]
(2220) Project
Arguments: [id#7507, internalUUID#7506, supplierUuid#7515, plant#7516, product#7517, storageLocUuid#7518, quantityUom#7519, quantityUomUuid#7520, quantityNumerator#7521, quantityDenominator#7522, scheduleLines#7523, confirmations#7524, stockDatetime#7089, timezonecode#6793, _w0#7525, _we0#7526L, filter(transform(CASE WHEN (_we0#7526L > cast(0 as bigint)) THEN transform(filter(confirmations#7524, lambdafunction((((lambda x_2#2323.deletionIndicator = false) AND (lambda x_2#2323.isRelevantForConfirmation = true)) AND isnotnull(lambda x_2#2323.confirmedDeliveryAt)), lambda x_2#2323, false)), lambdafunction(struct(openQty, greatest((lambda x_3#2326.confirmedQuantity - coalesce(lambda x_3#2326.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_3#2326.confirmedDeliveryAt), lambda x_3#2326, false)) ELSE transform(scheduleLines#7523, lambdafunction(struct(openQty, greatest((lambda x_1#2324.quantity - coalesce(lambda x_1#2324.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_1#2324.deliveryAt), lambda x_1#2324, false)) END, lambdafunction(struct(documentId, id#7507, documentUuid, internalUUID#7506, openQty, lambda x_4#2327.openQty, openQtyInBaseUnit, ((lambda x_4#2327.openQty * quantityNumerator#7521) / quantityDenominator#7522), qtyUom, quantityUom#7519, qtyUomUuid, quantityUomUuid#7520, availabilityDatetime, lambda x_4#2327.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_4#2327, false)), lambdafunction(NOT (lambda x_5#2328.openQty = 0.0), lambda x_5#2328, false)) AS openGoodsMovements#7527]
(2221) Project
Arguments: [id#7507, internalUUID#7506, supplierUuid#7515, plant#7516, product#7517, storageLocUuid#7518, quantityUom#7519, quantityUomUuid#7520, quantityNumerator#7521, quantityDenominator#7522, scheduleLines#7523, confirmations#7524, stockDatetime#7089, timezonecode#6793, openGoodsMovements#7527]
(2222) Aggregate
Arguments: [product#7517, plant#7516], [product#7517, plant#7516, flatten(collect_list(openGoodsMovements#7527, 0, 0)) AS openGoodsMovements#7528]
(2223) Filter
Arguments: (array_size(openGoodsMovements#7528) > 0)
(2224) LogicalRelation
Arguments: parquet, [product#7529, plant#7530, orderDateTime#7531, planningStartDateTime#7532], false
(2225) RepartitionByExpression
Arguments: [product#7529, plant#7530], 10
(2226) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531]
(2227) LogicalRelation
Arguments: parquet, [systemId#7533, internalUUID#7534, plant#7535, product#7536, blockedForReplenishmentStartingFrom#7537, productionAspect#7538, salesPlant#7539, listing#7540], false
(2228) Repartition
Arguments: 10, true
(2229) Project
Arguments: [systemId#7533, internalUUID#7534, plant#7535, product#7536, blockedForReplenishmentStartingFrom#7537, productionAspect#7538, salesPlant#7539, listing#7540, struct(systemId, systemId#7533, internalUUID, internalUUID#7534, plant, plant#7535, product, product#7536, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7537, productionAspect, productionAspect#7538, salesPlant, salesPlant#7539, listing, listing#7540) AS productPlant#7541]
(2230) Project
Arguments: [productPlant#7541]
(2231) Join
Arguments: LeftOuter, ((product#7529 <=> productPlant#7541.product.internalRefUUID) AND (plant#7530 <=> productPlant#7541.plant.internalRefUUID))
(2232) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541]
(2233) SubqueryAlias
Arguments: wl
(2234) LogicalRelation
Arguments: parquet, [systemId#7542, internalUUID#7543, id#7544, displayId#7545, name#7546, category#7547, companyCode#7548, address#7549, mainDistributionChain#7550, mainPurchasingOrganization#7551, validPurchasingOrganizations#7552, productGroup#7553], false
(2235) Repartition
Arguments: 10, true
(2236) Project
Arguments: [internalUUID#7543, address#7549.timeZone.code AS timezonecode#7554]
(2237) Join
Arguments: LeftOuter, (plant#7530 <=> internalUUID#7543)
(2238) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, internalUUID#7543, CASE WHEN isnotnull(timezonecode#7554) THEN timezonecode#7554 ELSE UTC END AS timezonecode#7555]
(2239) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555]
(2240) LogicalRelation
Arguments: parquet, [systemId#7556, internalUUID#7557, id#7558, displayId#7559, name#7560, baseUnitOfMeasure#7561, unitOfMeasures#7562, unitOfMeasureConversions#7563, productionAspect#7564, salesAspect#7565, procurementAspect#7566, productGroup#7567], false
(2241) Repartition
Arguments: 10, true
(2242) Join
Arguments: LeftOuter, (product#7529 = internalUUID#7557)
(2243) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, systemId#7556, internalUUID#7557, id#7558, displayId#7559, name#7560, baseUnitOfMeasure#7561, unitOfMeasures#7562, unitOfMeasureConversions#7563, productionAspect#7564, salesAspect#7565, procurementAspect#7566, productGroup#7567, filter(unitOfMeasureConversions#7563, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7541.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7541.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7561.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7561.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7568]
(2244) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7568.quantityNumerator), true, [quantityNumerator#7569]
(2245) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, systemId#7556, internalUUID#7557, id#7558, displayId#7559, name#7560, baseUnitOfMeasure#7561, unitOfMeasures#7562, unitOfMeasureConversions#7563, productionAspect#7564, salesAspect#7565, procurementAspect#7566, productGroup#7567, filteredUnitOfMeasureConversions#7568, quantityNumerator#7569]
(2246) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7568.quantityDenominator), true, [quantityDenominator#7570]
(2247) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, systemId#7556, internalUUID#7557, id#7558, displayId#7559, name#7560, baseUnitOfMeasure#7561, unitOfMeasures#7562, unitOfMeasureConversions#7563, productionAspect#7564, salesAspect#7565, procurementAspect#7566, productGroup#7567, filteredUnitOfMeasureConversions#7568, quantityNumerator#7569, quantityDenominator#7570]
(2248) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, systemId#7556, internalUUID#7557, id#7558, displayId#7559, name#7560, baseUnitOfMeasure#7561, unitOfMeasures#7562, unitOfMeasureConversions#7563, productionAspect#7564, salesAspect#7565, procurementAspect#7566, productGroup#7567, filteredUnitOfMeasureConversions#7568, quantityNumerator#7569, quantityDenominator#7570, (cast(quantityNumerator#7569 as double) / cast(quantityDenominator#7570 as double)) AS outboundUnit#7571]
(2249) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, systemId#7556, internalUUID#7557, id#7558, displayId#7559, name#7560, baseUnitOfMeasure#7561, unitOfMeasures#7562, unitOfMeasureConversions#7563, productionAspect#7564, salesAspect#7565, procurementAspect#7566, productGroup#7567, filteredUnitOfMeasureConversions#7568, quantityNumerator#7569, quantityDenominator#7570, CASE WHEN (isnull(outboundUnit#7571) OR (outboundUnit#7571 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7571 END AS outboundUnit#7572]
(2250) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, outboundUnit#7572]
(2251) LogicalRelation
Arguments: parquet, [systemId#7573, internalUUID#7574, product#7575, plant#7576, calculationDateTime#7577, stockQuantities#7578], false
(2252) Repartition
Arguments: 10, true
(2253) LogicalRelation
Arguments: parquet, [marketUnit#7579, description#7580, articleHierarchy#7581, defaultCurrency#7582, responsibilities#7583, replenishmentTypes#7584, distributionCenters#7585, assignedArticleHierarchyNodes#7586, minOrderQtySetting#7587, minOrderQtySettingInternal#7588, listingCheck#7589, odsSelection#7590, demandProfiles#7591, constraintProfiles#7592, optimizationProfiles#7593, orderGroupSplitProfiles#7594, supplierMinimumProfiles#7595, multipleRestrictionProfiles#7596, preferredUomSource#7597, handlingOfUnfulfilledDemands#7598, negligibleQuantitiesThreshold#7599, eventtype#7600], false
(2254) Repartition
Arguments: 10, true
(2255) Filter
Arguments: (marketUnit#7579 <=> DIP_1691)
(2256) Project
Arguments: [marketUnit#7579, description#7580, articleHierarchy#7581, defaultCurrency#7582, responsibilities#7583, replenishmentTypes#7584, distributionCenters#7585, assignedArticleHierarchyNodes#7586, minOrderQtySetting#7587, minOrderQtySettingInternal#7588, listingCheck#7589, odsSelection#7590, demandProfiles#7591, constraintProfiles#7592, optimizationProfiles#7593, orderGroupSplitProfiles#7594, supplierMinimumProfiles#7595, multipleRestrictionProfiles#7596, preferredUomSource#7597, handlingOfUnfulfilledDemands#7598, negligibleQuantitiesThreshold#7599, eventtype#7600]
(2257) Project
Arguments: [distributionCenters#7585]
(2258) Generate
Arguments: explode(distributionCenters#7585), false, [distributionCenters#7601]
(2259) Project
Arguments: [distributionCenters#7601]
(2260) Generate
Arguments: explode(distributionCenters#7601.storageLocations), false, [storageLocations#7602]
(2261) Project
Arguments: [distributionCenters#7601.id AS plantId#7603, distributionCenters#7601.internalRefUUID AS plantUuid#7604, storageLocations#7602]
(2262) Project
Arguments: [plantId#7603, plantUuid#7604, storageLocations#7602.id AS storageLocId#7605, storageLocations#7602.internalRefUUID AS storageLocUuid#7606]
(2263) LogicalRelation
Arguments: parquet, [product#7607, plant#7608, orderDateTime#7609, planningStartDateTime#7610], false
(2264) RepartitionByExpression
Arguments: [product#7607, plant#7608], 10
(2265) Project
Arguments: [product#7607, plant#7608, orderDateTime#7609]
(2266) LogicalRelation
Arguments: parquet, [systemId#7611, internalUUID#7612, plant#7613, product#7614, blockedForReplenishmentStartingFrom#7615, productionAspect#7616, salesPlant#7617, listing#7618], false
(2267) Repartition
Arguments: 10, true
(2268) Project
Arguments: [systemId#7611, internalUUID#7612, plant#7613, product#7614, blockedForReplenishmentStartingFrom#7615, productionAspect#7616, salesPlant#7617, listing#7618, struct(systemId, systemId#7611, internalUUID, internalUUID#7612, plant, plant#7613, product, product#7614, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7615, productionAspect, productionAspect#7616, salesPlant, salesPlant#7617, listing, listing#7618) AS productPlant#7619]
(2269) Project
Arguments: [productPlant#7619]
(2270) Join
Arguments: LeftOuter, ((product#7607 <=> productPlant#7619.product.internalRefUUID) AND (plant#7608 <=> productPlant#7619.plant.internalRefUUID))
(2271) Project
Arguments: [product#7607, plant#7608, orderDateTime#7609, productPlant#7619]
(2272) SubqueryAlias
Arguments: wl
(2273) LogicalRelation
Arguments: parquet, [systemId#7620, internalUUID#7621, id#7622, displayId#7623, name#7624, category#7625, companyCode#7626, address#7627, mainDistributionChain#7628, mainPurchasingOrganization#7629, validPurchasingOrganizations#7630, productGroup#7631], false
(2274) Repartition
Arguments: 10, true
(2275) Project
Arguments: [internalUUID#7621, address#7627.timeZone.code AS timezonecode#7632]
(2276) Join
Arguments: LeftOuter, (plant#7608 <=> internalUUID#7621)
(2277) Project
Arguments: [product#7607, plant#7608, orderDateTime#7609, productPlant#7619, internalUUID#7621, CASE WHEN isnotnull(timezonecode#7632) THEN timezonecode#7632 ELSE UTC END AS timezonecode#7633]
(2278) Project
Arguments: [product#7607, plant#7608, orderDateTime#7609, productPlant#7619, timezonecode#7633]
(2279) LogicalRelation
Arguments: parquet, [systemId#7634, internalUUID#7635, id#7636, displayId#7637, name#7638, baseUnitOfMeasure#7639, unitOfMeasures#7640, unitOfMeasureConversions#7641, productionAspect#7642, salesAspect#7643, procurementAspect#7644, productGroup#7645], false
(2280) Repartition
Arguments: 10, true
(2281) Join
Arguments: LeftOuter, (product#7607 = internalUUID#7635)
(2282) Project
Arguments: [product#7607, plant#7608, orderDateTime#7609, productPlant#7619, timezonecode#7633, systemId#7634, internalUUID#7635, id#7636, displayId#7637, name#7638, baseUnitOfMeasure#7639, unitOfMeasures#7640, unitOfMeasureConversions#7641, productionAspect#7642, salesAspect#7643, procurementAspect#7644, productGroup#7645, filter(unitOfMeasureConversions#7641, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7619.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7619.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7639.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7639.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7646]
(2283) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7646.quantityNumerator), true, [quantityNumerator#7647]
(2284) Project
Arguments: [product#7607, plant#7608, orderDateTime#7609, productPlant#7619, timezonecode#7633, systemId#7634, internalUUID#7635, id#7636, displayId#7637, name#7638, baseUnitOfMeasure#7639, unitOfMeasures#7640, unitOfMeasureConversions#7641, productionAspect#7642, salesAspect#7643, procurementAspect#7644, productGroup#7645, filteredUnitOfMeasureConversions#7646, quantityNumerator#7647]
(2285) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7646.quantityDenominator), true, [quantityDenominator#7648]
(2286) Project
Arguments: [product#7607, plant#7608, orderDateTime#7609, productPlant#7619, timezonecode#7633, systemId#7634, internalUUID#7635, id#7636, displayId#7637, name#7638, baseUnitOfMeasure#7639, unitOfMeasures#7640, unitOfMeasureConversions#7641, productionAspect#7642, salesAspect#7643, procurementAspect#7644, productGroup#7645, filteredUnitOfMeasureConversions#7646, quantityNumerator#7647, quantityDenominator#7648]
(2287) Project
Arguments: [product#7607, plant#7608, orderDateTime#7609, productPlant#7619, timezonecode#7633, systemId#7634, internalUUID#7635, id#7636, displayId#7637, name#7638, baseUnitOfMeasure#7639, unitOfMeasures#7640, unitOfMeasureConversions#7641, productionAspect#7642, salesAspect#7643, procurementAspect#7644, productGroup#7645, filteredUnitOfMeasureConversions#7646, quantityNumerator#7647, quantityDenominator#7648, (cast(quantityNumerator#7647 as double) / cast(quantityDenominator#7648 as double)) AS outboundUnit#7649]
(2288) Project
Arguments: [product#7607, plant#7608, orderDateTime#7609, productPlant#7619, timezonecode#7633, systemId#7634, internalUUID#7635, id#7636, displayId#7637, name#7638, baseUnitOfMeasure#7639, unitOfMeasures#7640, unitOfMeasureConversions#7641, productionAspect#7642, salesAspect#7643, procurementAspect#7644, productGroup#7645, filteredUnitOfMeasureConversions#7646, quantityNumerator#7647, quantityDenominator#7648, CASE WHEN (isnull(outboundUnit#7649) OR (outboundUnit#7649 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7649 END AS outboundUnit#7650]
(2289) Project
Arguments: [product#7607, plant#7608, orderDateTime#7609, productPlant#7619, timezonecode#7633, outboundUnit#7650]
(2290) Project
Arguments: [plant#7608]
(2291) Deduplicate
Arguments: [plant#7608]
(2292) Join
Arguments: Inner, (plantUuid#7604 = plant#7608)
(2293) Project
Arguments: [plantId#7603, plantUuid#7604, storageLocId#7605, storageLocUuid#7606]
(2294) Join
Arguments: Inner, (plant#7576.internalRefUUID <=> plantUuid#7604)
(2295) Generate
Arguments: explode(filter(stockQuantities#7578, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#7606) AND (lambda x#1207.storageLocation.Id = storageLocId#7605)), lambda x#1207, false))), false, [stockQuantity#7651]
(2296) Project
Arguments: [systemId#7573, internalUUID#7574, product#7575, plant#7576, calculationDateTime#7577, stockQuantities#7578, plantId#7603, plantUuid#7604, storageLocId#7605, storageLocUuid#7606, stockQuantity#7651]
(2297) Aggregate
Arguments: [plantUuid#7604, internalUUID#7574, plant#7576, product#7575, systemId#7573], [plantUuid#7604, internalUUID#7574, plant#7576, product#7575, systemId#7573, first(calculationDateTime#7577, false) AS calculationDateTime#7652, collect_list(stockQuantity#7651, 0, 0) AS stockQuantities#7653]
(2298) Project
Arguments: [systemId#7573, internalUUID#7574, product#7575, plant#7576, calculationDateTime#7652, stockQuantities#7653]
(2299) Generate
Arguments: explode(stockQuantities#7653), false, [stockQuantity#7654]
(2300) Project
Arguments: [systemId#7573, internalUUID#7574, product#7575, plant#7576, calculationDateTime#7652, stockQuantities#7653, stockQuantity#7654]
(2301) Project
Arguments: [plant#7576.id AS plant#7655, plant#7576.internalRefUUID AS plantUuid#7656, product#7575.id AS product#7657, product#7575.internalRefUUID AS productUuid#7658, calculationDateTime#7652, stockQuantity#7654.storagelocation.id AS storageLocId#7659, stockQuantity#7654.storagelocation.internalRefUUID AS storageLocUuid#7660, stockQuantity#7654.quantity.measure AS quantity#7661, stockQuantity#7654.specialStockIndicator.code AS specialStockIndicator#7662, stockQuantity#7654.stockType.code AS stockType#7663]
(2302) Filter
Arguments: ((specialStockIndicator#7662 = ) AND (stockType#7663 = 01))
(2303) LogicalRelation
Arguments: parquet, [product#7664, plant#7665, orderDateTime#7666, planningStartDateTime#7667], false
(2304) RepartitionByExpression
Arguments: [product#7664, plant#7665], 10
(2305) Project
Arguments: [product#7664, plant#7665, orderDateTime#7666]
(2306) LogicalRelation
Arguments: parquet, [systemId#7668, internalUUID#7669, plant#7670, product#7671, blockedForReplenishmentStartingFrom#7672, productionAspect#7673, salesPlant#7674, listing#7675], false
(2307) Repartition
Arguments: 10, true
(2308) Project
Arguments: [systemId#7668, internalUUID#7669, plant#7670, product#7671, blockedForReplenishmentStartingFrom#7672, productionAspect#7673, salesPlant#7674, listing#7675, struct(systemId, systemId#7668, internalUUID, internalUUID#7669, plant, plant#7670, product, product#7671, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7672, productionAspect, productionAspect#7673, salesPlant, salesPlant#7674, listing, listing#7675) AS productPlant#7676]
(2309) Project
Arguments: [productPlant#7676]
(2310) Join
Arguments: LeftOuter, ((product#7664 <=> productPlant#7676.product.internalRefUUID) AND (plant#7665 <=> productPlant#7676.plant.internalRefUUID))
(2311) Project
Arguments: [product#7664, plant#7665, orderDateTime#7666, productPlant#7676]
(2312) SubqueryAlias
Arguments: wl
(2313) LogicalRelation
Arguments: parquet, [systemId#7677, internalUUID#7678, id#7679, displayId#7680, name#7681, category#7682, companyCode#7683, address#7684, mainDistributionChain#7685, mainPurchasingOrganization#7686, validPurchasingOrganizations#7687, productGroup#7688], false
(2314) Repartition
Arguments: 10, true
(2315) Project
Arguments: [internalUUID#7678, address#7684.timeZone.code AS timezonecode#7689]
(2316) Join
Arguments: LeftOuter, (plant#7665 <=> internalUUID#7678)
(2317) Project
Arguments: [product#7664, plant#7665, orderDateTime#7666, productPlant#7676, internalUUID#7678, CASE WHEN isnotnull(timezonecode#7689) THEN timezonecode#7689 ELSE UTC END AS timezonecode#7690]
(2318) Project
Arguments: [product#7664, plant#7665, orderDateTime#7666, productPlant#7676, timezonecode#7690]
(2319) LogicalRelation
Arguments: parquet, [systemId#7691, internalUUID#7692, id#7693, displayId#7694, name#7695, baseUnitOfMeasure#7696, unitOfMeasures#7697, unitOfMeasureConversions#7698, productionAspect#7699, salesAspect#7700, procurementAspect#7701, productGroup#7702], false
(2320) Repartition
Arguments: 10, true
(2321) Join
Arguments: LeftOuter, (product#7664 = internalUUID#7692)
(2322) Project
Arguments: [product#7664, plant#7665, orderDateTime#7666, productPlant#7676, timezonecode#7690, systemId#7691, internalUUID#7692, id#7693, displayId#7694, name#7695, baseUnitOfMeasure#7696, unitOfMeasures#7697, unitOfMeasureConversions#7698, productionAspect#7699, salesAspect#7700, procurementAspect#7701, productGroup#7702, filter(unitOfMeasureConversions#7698, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7676.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7676.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7696.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7696.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7703]
(2323) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7703.quantityNumerator), true, [quantityNumerator#7704]
(2324) Project
Arguments: [product#7664, plant#7665, orderDateTime#7666, productPlant#7676, timezonecode#7690, systemId#7691, internalUUID#7692, id#7693, displayId#7694, name#7695, baseUnitOfMeasure#7696, unitOfMeasures#7697, unitOfMeasureConversions#7698, productionAspect#7699, salesAspect#7700, procurementAspect#7701, productGroup#7702, filteredUnitOfMeasureConversions#7703, quantityNumerator#7704]
(2325) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7703.quantityDenominator), true, [quantityDenominator#7705]
(2326) Project
Arguments: [product#7664, plant#7665, orderDateTime#7666, productPlant#7676, timezonecode#7690, systemId#7691, internalUUID#7692, id#7693, displayId#7694, name#7695, baseUnitOfMeasure#7696, unitOfMeasures#7697, unitOfMeasureConversions#7698, productionAspect#7699, salesAspect#7700, procurementAspect#7701, productGroup#7702, filteredUnitOfMeasureConversions#7703, quantityNumerator#7704, quantityDenominator#7705]
(2327) Project
Arguments: [product#7664, plant#7665, orderDateTime#7666, productPlant#7676, timezonecode#7690, systemId#7691, internalUUID#7692, id#7693, displayId#7694, name#7695, baseUnitOfMeasure#7696, unitOfMeasures#7697, unitOfMeasureConversions#7698, productionAspect#7699, salesAspect#7700, procurementAspect#7701, productGroup#7702, filteredUnitOfMeasureConversions#7703, quantityNumerator#7704, quantityDenominator#7705, (cast(quantityNumerator#7704 as double) / cast(quantityDenominator#7705 as double)) AS outboundUnit#7706]
(2328) Project
Arguments: [product#7664, plant#7665, orderDateTime#7666, productPlant#7676, timezonecode#7690, systemId#7691, internalUUID#7692, id#7693, displayId#7694, name#7695, baseUnitOfMeasure#7696, unitOfMeasures#7697, unitOfMeasureConversions#7698, productionAspect#7699, salesAspect#7700, procurementAspect#7701, productGroup#7702, filteredUnitOfMeasureConversions#7703, quantityNumerator#7704, quantityDenominator#7705, CASE WHEN (isnull(outboundUnit#7706) OR (outboundUnit#7706 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7706 END AS outboundUnit#7707]
(2329) Project
Arguments: [product#7664, plant#7665, orderDateTime#7666, productPlant#7676, timezonecode#7690, outboundUnit#7707]
(2330) Join
Arguments: Inner, ((plantUuid#7656 = plant#7665) AND (productUuid#7658 = product#7664))
(2331) Filter
Arguments: (calculationDateTime#7652 <= orderDateTime#7666)
(2332) Project
Arguments: [plantUuid#7656 AS plant#7708, productUuid#7658 AS product#7709, storageLocId#7659, calculationDateTime#7652, quantity#7661]
(2333) LogicalRelation
Arguments: parquet, [systemId#7710, internalUUID#7711, product#7712, plant#7713, calculationDateTime#7714, stockQuantities#7715], false
(2334) Repartition
Arguments: 10, true
(2335) LogicalRelation
Arguments: parquet, [marketUnit#7716, description#7717, articleHierarchy#7718, defaultCurrency#7719, responsibilities#7720, replenishmentTypes#7721, distributionCenters#7722, assignedArticleHierarchyNodes#7723, minOrderQtySetting#7724, minOrderQtySettingInternal#7725, listingCheck#7726, odsSelection#7727, demandProfiles#7728, constraintProfiles#7729, optimizationProfiles#7730, orderGroupSplitProfiles#7731, supplierMinimumProfiles#7732, multipleRestrictionProfiles#7733, preferredUomSource#7734, handlingOfUnfulfilledDemands#7735, negligibleQuantitiesThreshold#7736, eventtype#7737], false
(2336) Repartition
Arguments: 10, true
(2337) Filter
Arguments: (marketUnit#7716 <=> DIP_1691)
(2338) Project
Arguments: [marketUnit#7716, description#7717, articleHierarchy#7718, defaultCurrency#7719, responsibilities#7720, replenishmentTypes#7721, distributionCenters#7722, assignedArticleHierarchyNodes#7723, minOrderQtySetting#7724, minOrderQtySettingInternal#7725, listingCheck#7726, odsSelection#7727, demandProfiles#7728, constraintProfiles#7729, optimizationProfiles#7730, orderGroupSplitProfiles#7731, supplierMinimumProfiles#7732, multipleRestrictionProfiles#7733, preferredUomSource#7734, handlingOfUnfulfilledDemands#7735, negligibleQuantitiesThreshold#7736, eventtype#7737]
(2339) Project
Arguments: [distributionCenters#7722]
(2340) Generate
Arguments: explode(distributionCenters#7722), false, [distributionCenters#7738]
(2341) Project
Arguments: [distributionCenters#7738]
(2342) Generate
Arguments: explode(distributionCenters#7738.storageLocations), false, [storageLocations#7739]
(2343) Project
Arguments: [distributionCenters#7738.id AS plantId#7740, distributionCenters#7738.internalRefUUID AS plantUuid#7741, storageLocations#7739]
(2344) Project
Arguments: [plantId#7740, plantUuid#7741, storageLocations#7739.id AS storageLocId#7742, storageLocations#7739.internalRefUUID AS storageLocUuid#7743]
(2345) LogicalRelation
Arguments: parquet, [product#7744, plant#7745, orderDateTime#7746, planningStartDateTime#7747], false
(2346) RepartitionByExpression
Arguments: [product#7744, plant#7745], 10
(2347) Project
Arguments: [product#7744, plant#7745, orderDateTime#7746]
(2348) LogicalRelation
Arguments: parquet, [systemId#7748, internalUUID#7749, plant#7750, product#7751, blockedForReplenishmentStartingFrom#7752, productionAspect#7753, salesPlant#7754, listing#7755], false
(2349) Repartition
Arguments: 10, true
(2350) Project
Arguments: [systemId#7748, internalUUID#7749, plant#7750, product#7751, blockedForReplenishmentStartingFrom#7752, productionAspect#7753, salesPlant#7754, listing#7755, struct(systemId, systemId#7748, internalUUID, internalUUID#7749, plant, plant#7750, product, product#7751, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7752, productionAspect, productionAspect#7753, salesPlant, salesPlant#7754, listing, listing#7755) AS productPlant#7756]
(2351) Project
Arguments: [productPlant#7756]
(2352) Join
Arguments: LeftOuter, ((product#7744 <=> productPlant#7756.product.internalRefUUID) AND (plant#7745 <=> productPlant#7756.plant.internalRefUUID))
(2353) Project
Arguments: [product#7744, plant#7745, orderDateTime#7746, productPlant#7756]
(2354) SubqueryAlias
Arguments: wl
(2355) LogicalRelation
Arguments: parquet, [systemId#7757, internalUUID#7758, id#7759, displayId#7760, name#7761, category#7762, companyCode#7763, address#7764, mainDistributionChain#7765, mainPurchasingOrganization#7766, validPurchasingOrganizations#7767, productGroup#7768], false
(2356) Repartition
Arguments: 10, true
(2357) Project
Arguments: [internalUUID#7758, address#7764.timeZone.code AS timezonecode#7769]
(2358) Join
Arguments: LeftOuter, (plant#7745 <=> internalUUID#7758)
(2359) Project
Arguments: [product#7744, plant#7745, orderDateTime#7746, productPlant#7756, internalUUID#7758, CASE WHEN isnotnull(timezonecode#7769) THEN timezonecode#7769 ELSE UTC END AS timezonecode#7770]
(2360) Project
Arguments: [product#7744, plant#7745, orderDateTime#7746, productPlant#7756, timezonecode#7770]
(2361) LogicalRelation
Arguments: parquet, [systemId#7771, internalUUID#7772, id#7773, displayId#7774, name#7775, baseUnitOfMeasure#7776, unitOfMeasures#7777, unitOfMeasureConversions#7778, productionAspect#7779, salesAspect#7780, procurementAspect#7781, productGroup#7782], false
(2362) Repartition
Arguments: 10, true
(2363) Join
Arguments: LeftOuter, (product#7744 = internalUUID#7772)
(2364) Project
Arguments: [product#7744, plant#7745, orderDateTime#7746, productPlant#7756, timezonecode#7770, systemId#7771, internalUUID#7772, id#7773, displayId#7774, name#7775, baseUnitOfMeasure#7776, unitOfMeasures#7777, unitOfMeasureConversions#7778, productionAspect#7779, salesAspect#7780, procurementAspect#7781, productGroup#7782, filter(unitOfMeasureConversions#7778, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7756.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7756.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7776.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7776.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7783]
(2365) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7783.quantityNumerator), true, [quantityNumerator#7784]
(2366) Project
Arguments: [product#7744, plant#7745, orderDateTime#7746, productPlant#7756, timezonecode#7770, systemId#7771, internalUUID#7772, id#7773, displayId#7774, name#7775, baseUnitOfMeasure#7776, unitOfMeasures#7777, unitOfMeasureConversions#7778, productionAspect#7779, salesAspect#7780, procurementAspect#7781, productGroup#7782, filteredUnitOfMeasureConversions#7783, quantityNumerator#7784]
(2367) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7783.quantityDenominator), true, [quantityDenominator#7785]
(2368) Project
Arguments: [product#7744, plant#7745, orderDateTime#7746, productPlant#7756, timezonecode#7770, systemId#7771, internalUUID#7772, id#7773, displayId#7774, name#7775, baseUnitOfMeasure#7776, unitOfMeasures#7777, unitOfMeasureConversions#7778, productionAspect#7779, salesAspect#7780, procurementAspect#7781, productGroup#7782, filteredUnitOfMeasureConversions#7783, quantityNumerator#7784, quantityDenominator#7785]
(2369) Project
Arguments: [product#7744, plant#7745, orderDateTime#7746, productPlant#7756, timezonecode#7770, systemId#7771, internalUUID#7772, id#7773, displayId#7774, name#7775, baseUnitOfMeasure#7776, unitOfMeasures#7777, unitOfMeasureConversions#7778, productionAspect#7779, salesAspect#7780, procurementAspect#7781, productGroup#7782, filteredUnitOfMeasureConversions#7783, quantityNumerator#7784, quantityDenominator#7785, (cast(quantityNumerator#7784 as double) / cast(quantityDenominator#7785 as double)) AS outboundUnit#7786]
(2370) Project
Arguments: [product#7744, plant#7745, orderDateTime#7746, productPlant#7756, timezonecode#7770, systemId#7771, internalUUID#7772, id#7773, displayId#7774, name#7775, baseUnitOfMeasure#7776, unitOfMeasures#7777, unitOfMeasureConversions#7778, productionAspect#7779, salesAspect#7780, procurementAspect#7781, productGroup#7782, filteredUnitOfMeasureConversions#7783, quantityNumerator#7784, quantityDenominator#7785, CASE WHEN (isnull(outboundUnit#7786) OR (outboundUnit#7786 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7786 END AS outboundUnit#7787]
(2371) Project
Arguments: [product#7744, plant#7745, orderDateTime#7746, productPlant#7756, timezonecode#7770, outboundUnit#7787]
(2372) Project
Arguments: [plant#7745]
(2373) Deduplicate
Arguments: [plant#7745]
(2374) Join
Arguments: Inner, (plantUuid#7741 = plant#7745)
(2375) Project
Arguments: [plantId#7740, plantUuid#7741, storageLocId#7742, storageLocUuid#7743]
(2376) Join
Arguments: Inner, (plant#7713.internalRefUUID <=> plantUuid#7741)
(2377) Generate
Arguments: explode(filter(stockQuantities#7715, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#7743) AND (lambda x#1207.storageLocation.Id = storageLocId#7742)), lambda x#1207, false))), false, [stockQuantity#7788]
(2378) Project
Arguments: [systemId#7710, internalUUID#7711, product#7712, plant#7713, calculationDateTime#7714, stockQuantities#7715, plantId#7740, plantUuid#7741, storageLocId#7742, storageLocUuid#7743, stockQuantity#7788]
(2379) Aggregate
Arguments: [plantUuid#7741, internalUUID#7711, plant#7713, product#7712, systemId#7710], [plantUuid#7741, internalUUID#7711, plant#7713, product#7712, systemId#7710, first(calculationDateTime#7714, false) AS calculationDateTime#7789, collect_list(stockQuantity#7788, 0, 0) AS stockQuantities#7790]
(2380) Project
Arguments: [systemId#7710, internalUUID#7711, product#7712, plant#7713, calculationDateTime#7789, stockQuantities#7790]
(2381) Generate
Arguments: explode(stockQuantities#7790), false, [stockQuantity#7791]
(2382) Project
Arguments: [systemId#7710, internalUUID#7711, product#7712, plant#7713, calculationDateTime#7789, stockQuantities#7790, stockQuantity#7791]
(2383) Project
Arguments: [plant#7713.id AS plant#7792, plant#7713.internalRefUUID AS plantUuid#7793, product#7712.id AS product#7794, product#7712.internalRefUUID AS productUuid#7795, calculationDateTime#7789, stockQuantity#7791.storagelocation.id AS storageLocId#7796, stockQuantity#7791.storagelocation.internalRefUUID AS storageLocUuid#7797, stockQuantity#7791.quantity.measure AS quantity#7798, stockQuantity#7791.specialStockIndicator.code AS specialStockIndicator#7799, stockQuantity#7791.stockType.code AS stockType#7800]
(2384) Filter
Arguments: ((specialStockIndicator#7799 = ) AND (stockType#7800 = 01))
(2385) LogicalRelation
Arguments: parquet, [product#7801, plant#7802, orderDateTime#7803, planningStartDateTime#7804], false
(2386) RepartitionByExpression
Arguments: [product#7801, plant#7802], 10
(2387) Project
Arguments: [product#7801, plant#7802, orderDateTime#7803]
(2388) LogicalRelation
Arguments: parquet, [systemId#7805, internalUUID#7806, plant#7807, product#7808, blockedForReplenishmentStartingFrom#7809, productionAspect#7810, salesPlant#7811, listing#7812], false
(2389) Repartition
Arguments: 10, true
(2390) Project
Arguments: [systemId#7805, internalUUID#7806, plant#7807, product#7808, blockedForReplenishmentStartingFrom#7809, productionAspect#7810, salesPlant#7811, listing#7812, struct(systemId, systemId#7805, internalUUID, internalUUID#7806, plant, plant#7807, product, product#7808, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7809, productionAspect, productionAspect#7810, salesPlant, salesPlant#7811, listing, listing#7812) AS productPlant#7813]
(2391) Project
Arguments: [productPlant#7813]
(2392) Join
Arguments: LeftOuter, ((product#7801 <=> productPlant#7813.product.internalRefUUID) AND (plant#7802 <=> productPlant#7813.plant.internalRefUUID))
(2393) Project
Arguments: [product#7801, plant#7802, orderDateTime#7803, productPlant#7813]
(2394) SubqueryAlias
Arguments: wl
(2395) LogicalRelation
Arguments: parquet, [systemId#7814, internalUUID#7815, id#7816, displayId#7817, name#7818, category#7819, companyCode#7820, address#7821, mainDistributionChain#7822, mainPurchasingOrganization#7823, validPurchasingOrganizations#7824, productGroup#7825], false
(2396) Repartition
Arguments: 10, true
(2397) Project
Arguments: [internalUUID#7815, address#7821.timeZone.code AS timezonecode#7826]
(2398) Join
Arguments: LeftOuter, (plant#7802 <=> internalUUID#7815)
(2399) Project
Arguments: [product#7801, plant#7802, orderDateTime#7803, productPlant#7813, internalUUID#7815, CASE WHEN isnotnull(timezonecode#7826) THEN timezonecode#7826 ELSE UTC END AS timezonecode#7827]
(2400) Project
Arguments: [product#7801, plant#7802, orderDateTime#7803, productPlant#7813, timezonecode#7827]
(2401) LogicalRelation
Arguments: parquet, [systemId#7828, internalUUID#7829, id#7830, displayId#7831, name#7832, baseUnitOfMeasure#7833, unitOfMeasures#7834, unitOfMeasureConversions#7835, productionAspect#7836, salesAspect#7837, procurementAspect#7838, productGroup#7839], false
(2402) Repartition
Arguments: 10, true
(2403) Join
Arguments: LeftOuter, (product#7801 = internalUUID#7829)
(2404) Project
Arguments: [product#7801, plant#7802, orderDateTime#7803, productPlant#7813, timezonecode#7827, systemId#7828, internalUUID#7829, id#7830, displayId#7831, name#7832, baseUnitOfMeasure#7833, unitOfMeasures#7834, unitOfMeasureConversions#7835, productionAspect#7836, salesAspect#7837, procurementAspect#7838, productGroup#7839, filter(unitOfMeasureConversions#7835, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7813.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7813.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7833.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7833.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7840]
(2405) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7840.quantityNumerator), true, [quantityNumerator#7841]
(2406) Project
Arguments: [product#7801, plant#7802, orderDateTime#7803, productPlant#7813, timezonecode#7827, systemId#7828, internalUUID#7829, id#7830, displayId#7831, name#7832, baseUnitOfMeasure#7833, unitOfMeasures#7834, unitOfMeasureConversions#7835, productionAspect#7836, salesAspect#7837, procurementAspect#7838, productGroup#7839, filteredUnitOfMeasureConversions#7840, quantityNumerator#7841]
(2407) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7840.quantityDenominator), true, [quantityDenominator#7842]
(2408) Project
Arguments: [product#7801, plant#7802, orderDateTime#7803, productPlant#7813, timezonecode#7827, systemId#7828, internalUUID#7829, id#7830, displayId#7831, name#7832, baseUnitOfMeasure#7833, unitOfMeasures#7834, unitOfMeasureConversions#7835, productionAspect#7836, salesAspect#7837, procurementAspect#7838, productGroup#7839, filteredUnitOfMeasureConversions#7840, quantityNumerator#7841, quantityDenominator#7842]
(2409) Project
Arguments: [product#7801, plant#7802, orderDateTime#7803, productPlant#7813, timezonecode#7827, systemId#7828, internalUUID#7829, id#7830, displayId#7831, name#7832, baseUnitOfMeasure#7833, unitOfMeasures#7834, unitOfMeasureConversions#7835, productionAspect#7836, salesAspect#7837, procurementAspect#7838, productGroup#7839, filteredUnitOfMeasureConversions#7840, quantityNumerator#7841, quantityDenominator#7842, (cast(quantityNumerator#7841 as double) / cast(quantityDenominator#7842 as double)) AS outboundUnit#7843]
(2410) Project
Arguments: [product#7801, plant#7802, orderDateTime#7803, productPlant#7813, timezonecode#7827, systemId#7828, internalUUID#7829, id#7830, displayId#7831, name#7832, baseUnitOfMeasure#7833, unitOfMeasures#7834, unitOfMeasureConversions#7835, productionAspect#7836, salesAspect#7837, procurementAspect#7838, productGroup#7839, filteredUnitOfMeasureConversions#7840, quantityNumerator#7841, quantityDenominator#7842, CASE WHEN (isnull(outboundUnit#7843) OR (outboundUnit#7843 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7843 END AS outboundUnit#7844]
(2411) Project
Arguments: [product#7801, plant#7802, orderDateTime#7803, productPlant#7813, timezonecode#7827, outboundUnit#7844]
(2412) Join
Arguments: Inner, ((plantUuid#7793 = plant#7802) AND (productUuid#7795 = product#7801))
(2413) Filter
Arguments: (calculationDateTime#7789 <= orderDateTime#7803)
(2414) Project
Arguments: [plantUuid#7793 AS plant#7845, productUuid#7795 AS product#7846, storageLocId#7796, calculationDateTime#7789, quantity#7798]
(2415) Aggregate
Arguments: [plant#7845, product#7846, storageLocId#7796], [plant#7845, product#7846, storageLocId#7796, max(calculationDateTime#7789) AS max_calc_datetime#7847]
(2416) Join
Arguments: Inner, ((((plant#7708 <=> plant#7845) AND (product#7709 <=> product#7846)) AND (storageLocId#7659 <=> storageLocId#7796)) AND (calculationDateTime#7652 <=> max_calc_datetime#7847))
(2417) Project
Arguments: [plant#7708, product#7709, storageLocId#7659, calculationDateTime#7652, quantity#7661]
(2418) Aggregate
Arguments: [product#7709, plant#7708], [product#7709, plant#7708, sum(quantity#7661) AS quantitySum#7848, min(calculationDateTime#7652) AS minCalculationDateTime#7849]
(2419) Project
Arguments: [product#7709, plant#7708, quantitySum#7848, minCalculationDateTime#7849, round(quantitySum#7848, 0) AS roundedQuantitySum#7850]
(2420) Join
Arguments: LeftOuter, ((plant#7530 = plant#7708) AND (product#7529 = product#7709))
(2421) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, outboundUnit#7572, roundedQuantitySum#7850, minCalculationDateTime#7849]
(2422) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, outboundUnit#7572, roundedQuantitySum#7850, minCalculationDateTime#7849, CASE WHEN isnotnull(minCalculationDateTime#7849) THEN minCalculationDateTime#7849 ELSE orderDateTime#7531 END AS stockDatetime#7851]
(2423) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, outboundUnit#7572, roundedQuantitySum#7850, minCalculationDateTime#7849, stockDatetime#7851, CASE WHEN isnotnull(roundedQuantitySum#7850) THEN array(roundedQuantitySum#7850) ELSE array(0.0) END AS stockBatchQuantities#7852]
(2424) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, outboundUnit#7572, roundedQuantitySum#7850, minCalculationDateTime#7849, stockDatetime#7851, stockBatchQuantities#7852, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#7853]
(2425) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, outboundUnit#7572, roundedQuantitySum#7850, stockDatetime#7851, stockBatchQuantities#7852, stockBatchShelfLifeEndDatetimes#7853]
(2426) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, outboundUnit#7572, stockDatetime#7851, stockBatchQuantities#7852, stockBatchShelfLifeEndDatetimes#7853]
(2427) LogicalRelation
Arguments: parquet, [product#7854, plant#7855, orderDateTime#7856, planningStartDateTime#7857], false
(2428) RepartitionByExpression
Arguments: [product#7854, plant#7855], 10
(2429) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856]
(2430) LogicalRelation
Arguments: parquet, [systemId#7858, internalUUID#7859, plant#7860, product#7861, blockedForReplenishmentStartingFrom#7862, productionAspect#7863, salesPlant#7864, listing#7865], false
(2431) Repartition
Arguments: 10, true
(2432) Project
Arguments: [systemId#7858, internalUUID#7859, plant#7860, product#7861, blockedForReplenishmentStartingFrom#7862, productionAspect#7863, salesPlant#7864, listing#7865, struct(systemId, systemId#7858, internalUUID, internalUUID#7859, plant, plant#7860, product, product#7861, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7862, productionAspect, productionAspect#7863, salesPlant, salesPlant#7864, listing, listing#7865) AS productPlant#7866]
(2433) Project
Arguments: [productPlant#7866]
(2434) Join
Arguments: LeftOuter, ((product#7854 <=> productPlant#7866.product.internalRefUUID) AND (plant#7855 <=> productPlant#7866.plant.internalRefUUID))
(2435) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866]
(2436) SubqueryAlias
Arguments: wl
(2437) LogicalRelation
Arguments: parquet, [systemId#7867, internalUUID#7868, id#7869, displayId#7870, name#7871, category#7872, companyCode#7873, address#7874, mainDistributionChain#7875, mainPurchasingOrganization#7876, validPurchasingOrganizations#7877, productGroup#7878], false
(2438) Repartition
Arguments: 10, true
(2439) Project
Arguments: [internalUUID#7868, address#7874.timeZone.code AS timezonecode#7879]
(2440) Join
Arguments: LeftOuter, (plant#7855 <=> internalUUID#7868)
(2441) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, internalUUID#7868, CASE WHEN isnotnull(timezonecode#7879) THEN timezonecode#7879 ELSE UTC END AS timezonecode#7880]
(2442) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880]
(2443) LogicalRelation
Arguments: parquet, [systemId#7881, internalUUID#7882, id#7883, displayId#7884, name#7885, baseUnitOfMeasure#7886, unitOfMeasures#7887, unitOfMeasureConversions#7888, productionAspect#7889, salesAspect#7890, procurementAspect#7891, productGroup#7892], false
(2444) Repartition
Arguments: 10, true
(2445) Join
Arguments: LeftOuter, (product#7854 = internalUUID#7882)
(2446) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, systemId#7881, internalUUID#7882, id#7883, displayId#7884, name#7885, baseUnitOfMeasure#7886, unitOfMeasures#7887, unitOfMeasureConversions#7888, productionAspect#7889, salesAspect#7890, procurementAspect#7891, productGroup#7892, filter(unitOfMeasureConversions#7888, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7866.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7866.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7886.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7886.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7893]
(2447) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7893.quantityNumerator), true, [quantityNumerator#7894]
(2448) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, systemId#7881, internalUUID#7882, id#7883, displayId#7884, name#7885, baseUnitOfMeasure#7886, unitOfMeasures#7887, unitOfMeasureConversions#7888, productionAspect#7889, salesAspect#7890, procurementAspect#7891, productGroup#7892, filteredUnitOfMeasureConversions#7893, quantityNumerator#7894]
(2449) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7893.quantityDenominator), true, [quantityDenominator#7895]
(2450) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, systemId#7881, internalUUID#7882, id#7883, displayId#7884, name#7885, baseUnitOfMeasure#7886, unitOfMeasures#7887, unitOfMeasureConversions#7888, productionAspect#7889, salesAspect#7890, procurementAspect#7891, productGroup#7892, filteredUnitOfMeasureConversions#7893, quantityNumerator#7894, quantityDenominator#7895]
(2451) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, systemId#7881, internalUUID#7882, id#7883, displayId#7884, name#7885, baseUnitOfMeasure#7886, unitOfMeasures#7887, unitOfMeasureConversions#7888, productionAspect#7889, salesAspect#7890, procurementAspect#7891, productGroup#7892, filteredUnitOfMeasureConversions#7893, quantityNumerator#7894, quantityDenominator#7895, (cast(quantityNumerator#7894 as double) / cast(quantityDenominator#7895 as double)) AS outboundUnit#7896]
(2452) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, systemId#7881, internalUUID#7882, id#7883, displayId#7884, name#7885, baseUnitOfMeasure#7886, unitOfMeasures#7887, unitOfMeasureConversions#7888, productionAspect#7889, salesAspect#7890, procurementAspect#7891, productGroup#7892, filteredUnitOfMeasureConversions#7893, quantityNumerator#7894, quantityDenominator#7895, CASE WHEN (isnull(outboundUnit#7896) OR (outboundUnit#7896 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7896 END AS outboundUnit#7897]
(2453) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897]
(2454) LogicalRelation
Arguments: parquet, [systemId#7898, internalUUID#7899, product#7900, plant#7901, calculationDateTime#7902, stockQuantities#7903], false
(2455) Repartition
Arguments: 10, true
(2456) LogicalRelation
Arguments: parquet, [marketUnit#7904, description#7905, articleHierarchy#7906, defaultCurrency#7907, responsibilities#7908, replenishmentTypes#7909, distributionCenters#7910, assignedArticleHierarchyNodes#7911, minOrderQtySetting#7912, minOrderQtySettingInternal#7913, listingCheck#7914, odsSelection#7915, demandProfiles#7916, constraintProfiles#7917, optimizationProfiles#7918, orderGroupSplitProfiles#7919, supplierMinimumProfiles#7920, multipleRestrictionProfiles#7921, preferredUomSource#7922, handlingOfUnfulfilledDemands#7923, negligibleQuantitiesThreshold#7924, eventtype#7925], false
(2457) Repartition
Arguments: 10, true
(2458) Filter
Arguments: (marketUnit#7904 <=> DIP_1691)
(2459) Project
Arguments: [marketUnit#7904, description#7905, articleHierarchy#7906, defaultCurrency#7907, responsibilities#7908, replenishmentTypes#7909, distributionCenters#7910, assignedArticleHierarchyNodes#7911, minOrderQtySetting#7912, minOrderQtySettingInternal#7913, listingCheck#7914, odsSelection#7915, demandProfiles#7916, constraintProfiles#7917, optimizationProfiles#7918, orderGroupSplitProfiles#7919, supplierMinimumProfiles#7920, multipleRestrictionProfiles#7921, preferredUomSource#7922, handlingOfUnfulfilledDemands#7923, negligibleQuantitiesThreshold#7924, eventtype#7925]
(2460) Project
Arguments: [distributionCenters#7910]
(2461) Generate
Arguments: explode(distributionCenters#7910), false, [distributionCenters#7926]
(2462) Project
Arguments: [distributionCenters#7926]
(2463) Generate
Arguments: explode(distributionCenters#7926.storageLocations), false, [storageLocations#7927]
(2464) Project
Arguments: [distributionCenters#7926.id AS plantId#7928, distributionCenters#7926.internalRefUUID AS plantUuid#7929, storageLocations#7927]
(2465) Project
Arguments: [plantId#7928, plantUuid#7929, storageLocations#7927.id AS storageLocId#7930, storageLocations#7927.internalRefUUID AS storageLocUuid#7931]
(2466) LogicalRelation
Arguments: parquet, [product#7932, plant#7933, orderDateTime#7934, planningStartDateTime#7935], false
(2467) RepartitionByExpression
Arguments: [product#7932, plant#7933], 10
(2468) Project
Arguments: [product#7932, plant#7933, orderDateTime#7934]
(2469) LogicalRelation
Arguments: parquet, [systemId#7936, internalUUID#7937, plant#7938, product#7939, blockedForReplenishmentStartingFrom#7940, productionAspect#7941, salesPlant#7942, listing#7943], false
(2470) Repartition
Arguments: 10, true
(2471) Project
Arguments: [systemId#7936, internalUUID#7937, plant#7938, product#7939, blockedForReplenishmentStartingFrom#7940, productionAspect#7941, salesPlant#7942, listing#7943, struct(systemId, systemId#7936, internalUUID, internalUUID#7937, plant, plant#7938, product, product#7939, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7940, productionAspect, productionAspect#7941, salesPlant, salesPlant#7942, listing, listing#7943) AS productPlant#7944]
(2472) Project
Arguments: [productPlant#7944]
(2473) Join
Arguments: LeftOuter, ((product#7932 <=> productPlant#7944.product.internalRefUUID) AND (plant#7933 <=> productPlant#7944.plant.internalRefUUID))
(2474) Project
Arguments: [product#7932, plant#7933, orderDateTime#7934, productPlant#7944]
(2475) SubqueryAlias
Arguments: wl
(2476) LogicalRelation
Arguments: parquet, [systemId#7945, internalUUID#7946, id#7947, displayId#7948, name#7949, category#7950, companyCode#7951, address#7952, mainDistributionChain#7953, mainPurchasingOrganization#7954, validPurchasingOrganizations#7955, productGroup#7956], false
(2477) Repartition
Arguments: 10, true
(2478) Project
Arguments: [internalUUID#7946, address#7952.timeZone.code AS timezonecode#7957]
(2479) Join
Arguments: LeftOuter, (plant#7933 <=> internalUUID#7946)
(2480) Project
Arguments: [product#7932, plant#7933, orderDateTime#7934, productPlant#7944, internalUUID#7946, CASE WHEN isnotnull(timezonecode#7957) THEN timezonecode#7957 ELSE UTC END AS timezonecode#7958]
(2481) Project
Arguments: [product#7932, plant#7933, orderDateTime#7934, productPlant#7944, timezonecode#7958]
(2482) LogicalRelation
Arguments: parquet, [systemId#7959, internalUUID#7960, id#7961, displayId#7962, name#7963, baseUnitOfMeasure#7964, unitOfMeasures#7965, unitOfMeasureConversions#7966, productionAspect#7967, salesAspect#7968, procurementAspect#7969, productGroup#7970], false
(2483) Repartition
Arguments: 10, true
(2484) Join
Arguments: LeftOuter, (product#7932 = internalUUID#7960)
(2485) Project
Arguments: [product#7932, plant#7933, orderDateTime#7934, productPlant#7944, timezonecode#7958, systemId#7959, internalUUID#7960, id#7961, displayId#7962, name#7963, baseUnitOfMeasure#7964, unitOfMeasures#7965, unitOfMeasureConversions#7966, productionAspect#7967, salesAspect#7968, procurementAspect#7969, productGroup#7970, filter(unitOfMeasureConversions#7966, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#7944.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#7944.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#7964.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#7964.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#7971]
(2486) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7971.quantityNumerator), true, [quantityNumerator#7972]
(2487) Project
Arguments: [product#7932, plant#7933, orderDateTime#7934, productPlant#7944, timezonecode#7958, systemId#7959, internalUUID#7960, id#7961, displayId#7962, name#7963, baseUnitOfMeasure#7964, unitOfMeasures#7965, unitOfMeasureConversions#7966, productionAspect#7967, salesAspect#7968, procurementAspect#7969, productGroup#7970, filteredUnitOfMeasureConversions#7971, quantityNumerator#7972]
(2488) Generate
Arguments: explode(filteredUnitOfMeasureConversions#7971.quantityDenominator), true, [quantityDenominator#7973]
(2489) Project
Arguments: [product#7932, plant#7933, orderDateTime#7934, productPlant#7944, timezonecode#7958, systemId#7959, internalUUID#7960, id#7961, displayId#7962, name#7963, baseUnitOfMeasure#7964, unitOfMeasures#7965, unitOfMeasureConversions#7966, productionAspect#7967, salesAspect#7968, procurementAspect#7969, productGroup#7970, filteredUnitOfMeasureConversions#7971, quantityNumerator#7972, quantityDenominator#7973]
(2490) Project
Arguments: [product#7932, plant#7933, orderDateTime#7934, productPlant#7944, timezonecode#7958, systemId#7959, internalUUID#7960, id#7961, displayId#7962, name#7963, baseUnitOfMeasure#7964, unitOfMeasures#7965, unitOfMeasureConversions#7966, productionAspect#7967, salesAspect#7968, procurementAspect#7969, productGroup#7970, filteredUnitOfMeasureConversions#7971, quantityNumerator#7972, quantityDenominator#7973, (cast(quantityNumerator#7972 as double) / cast(quantityDenominator#7973 as double)) AS outboundUnit#7974]
(2491) Project
Arguments: [product#7932, plant#7933, orderDateTime#7934, productPlant#7944, timezonecode#7958, systemId#7959, internalUUID#7960, id#7961, displayId#7962, name#7963, baseUnitOfMeasure#7964, unitOfMeasures#7965, unitOfMeasureConversions#7966, productionAspect#7967, salesAspect#7968, procurementAspect#7969, productGroup#7970, filteredUnitOfMeasureConversions#7971, quantityNumerator#7972, quantityDenominator#7973, CASE WHEN (isnull(outboundUnit#7974) OR (outboundUnit#7974 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#7974 END AS outboundUnit#7975]
(2492) Project
Arguments: [product#7932, plant#7933, orderDateTime#7934, productPlant#7944, timezonecode#7958, outboundUnit#7975]
(2493) Project
Arguments: [plant#7933]
(2494) Deduplicate
Arguments: [plant#7933]
(2495) Join
Arguments: Inner, (plantUuid#7929 = plant#7933)
(2496) Project
Arguments: [plantId#7928, plantUuid#7929, storageLocId#7930, storageLocUuid#7931]
(2497) Join
Arguments: Inner, (plant#7901.internalRefUUID <=> plantUuid#7929)
(2498) Generate
Arguments: explode(filter(stockQuantities#7903, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#7931) AND (lambda x#1207.storageLocation.Id = storageLocId#7930)), lambda x#1207, false))), false, [stockQuantity#7976]
(2499) Project
Arguments: [systemId#7898, internalUUID#7899, product#7900, plant#7901, calculationDateTime#7902, stockQuantities#7903, plantId#7928, plantUuid#7929, storageLocId#7930, storageLocUuid#7931, stockQuantity#7976]
(2500) Aggregate
Arguments: [plantUuid#7929, internalUUID#7899, plant#7901, product#7900, systemId#7898], [plantUuid#7929, internalUUID#7899, plant#7901, product#7900, systemId#7898, first(calculationDateTime#7902, false) AS calculationDateTime#7977, collect_list(stockQuantity#7976, 0, 0) AS stockQuantities#7978]
(2501) Project
Arguments: [systemId#7898, internalUUID#7899, product#7900, plant#7901, calculationDateTime#7977, stockQuantities#7978]
(2502) Generate
Arguments: explode(stockQuantities#7978), false, [stockQuantity#7979]
(2503) Project
Arguments: [systemId#7898, internalUUID#7899, product#7900, plant#7901, calculationDateTime#7977, stockQuantities#7978, stockQuantity#7979]
(2504) Project
Arguments: [plant#7901.id AS plant#7980, plant#7901.internalRefUUID AS plantUuid#7981, product#7900.id AS product#7982, product#7900.internalRefUUID AS productUuid#7983, calculationDateTime#7977, stockQuantity#7979.storagelocation.id AS storageLocId#7984, stockQuantity#7979.storagelocation.internalRefUUID AS storageLocUuid#7985, stockQuantity#7979.quantity.measure AS quantity#7986, stockQuantity#7979.specialStockIndicator.code AS specialStockIndicator#7987, stockQuantity#7979.stockType.code AS stockType#7988]
(2505) Filter
Arguments: ((specialStockIndicator#7987 = ) AND (stockType#7988 = 01))
(2506) LogicalRelation
Arguments: parquet, [product#7989, plant#7990, orderDateTime#7991, planningStartDateTime#7992], false
(2507) RepartitionByExpression
Arguments: [product#7989, plant#7990], 10
(2508) Project
Arguments: [product#7989, plant#7990, orderDateTime#7991]
(2509) LogicalRelation
Arguments: parquet, [systemId#7993, internalUUID#7994, plant#7995, product#7996, blockedForReplenishmentStartingFrom#7997, productionAspect#7998, salesPlant#7999, listing#8000], false
(2510) Repartition
Arguments: 10, true
(2511) Project
Arguments: [systemId#7993, internalUUID#7994, plant#7995, product#7996, blockedForReplenishmentStartingFrom#7997, productionAspect#7998, salesPlant#7999, listing#8000, struct(systemId, systemId#7993, internalUUID, internalUUID#7994, plant, plant#7995, product, product#7996, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#7997, productionAspect, productionAspect#7998, salesPlant, salesPlant#7999, listing, listing#8000) AS productPlant#8001]
(2512) Project
Arguments: [productPlant#8001]
(2513) Join
Arguments: LeftOuter, ((product#7989 <=> productPlant#8001.product.internalRefUUID) AND (plant#7990 <=> productPlant#8001.plant.internalRefUUID))
(2514) Project
Arguments: [product#7989, plant#7990, orderDateTime#7991, productPlant#8001]
(2515) SubqueryAlias
Arguments: wl
(2516) LogicalRelation
Arguments: parquet, [systemId#8002, internalUUID#8003, id#8004, displayId#8005, name#8006, category#8007, companyCode#8008, address#8009, mainDistributionChain#8010, mainPurchasingOrganization#8011, validPurchasingOrganizations#8012, productGroup#8013], false
(2517) Repartition
Arguments: 10, true
(2518) Project
Arguments: [internalUUID#8003, address#8009.timeZone.code AS timezonecode#8014]
(2519) Join
Arguments: LeftOuter, (plant#7990 <=> internalUUID#8003)
(2520) Project
Arguments: [product#7989, plant#7990, orderDateTime#7991, productPlant#8001, internalUUID#8003, CASE WHEN isnotnull(timezonecode#8014) THEN timezonecode#8014 ELSE UTC END AS timezonecode#8015]
(2521) Project
Arguments: [product#7989, plant#7990, orderDateTime#7991, productPlant#8001, timezonecode#8015]
(2522) LogicalRelation
Arguments: parquet, [systemId#8016, internalUUID#8017, id#8018, displayId#8019, name#8020, baseUnitOfMeasure#8021, unitOfMeasures#8022, unitOfMeasureConversions#8023, productionAspect#8024, salesAspect#8025, procurementAspect#8026, productGroup#8027], false
(2523) Repartition
Arguments: 10, true
(2524) Join
Arguments: LeftOuter, (product#7989 = internalUUID#8017)
(2525) Project
Arguments: [product#7989, plant#7990, orderDateTime#7991, productPlant#8001, timezonecode#8015, systemId#8016, internalUUID#8017, id#8018, displayId#8019, name#8020, baseUnitOfMeasure#8021, unitOfMeasures#8022, unitOfMeasureConversions#8023, productionAspect#8024, salesAspect#8025, procurementAspect#8026, productGroup#8027, filter(unitOfMeasureConversions#8023, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#8001.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#8001.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#8021.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#8021.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#8028]
(2526) Generate
Arguments: explode(filteredUnitOfMeasureConversions#8028.quantityNumerator), true, [quantityNumerator#8029]
(2527) Project
Arguments: [product#7989, plant#7990, orderDateTime#7991, productPlant#8001, timezonecode#8015, systemId#8016, internalUUID#8017, id#8018, displayId#8019, name#8020, baseUnitOfMeasure#8021, unitOfMeasures#8022, unitOfMeasureConversions#8023, productionAspect#8024, salesAspect#8025, procurementAspect#8026, productGroup#8027, filteredUnitOfMeasureConversions#8028, quantityNumerator#8029]
(2528) Generate
Arguments: explode(filteredUnitOfMeasureConversions#8028.quantityDenominator), true, [quantityDenominator#8030]
(2529) Project
Arguments: [product#7989, plant#7990, orderDateTime#7991, productPlant#8001, timezonecode#8015, systemId#8016, internalUUID#8017, id#8018, displayId#8019, name#8020, baseUnitOfMeasure#8021, unitOfMeasures#8022, unitOfMeasureConversions#8023, productionAspect#8024, salesAspect#8025, procurementAspect#8026, productGroup#8027, filteredUnitOfMeasureConversions#8028, quantityNumerator#8029, quantityDenominator#8030]
(2530) Project
Arguments: [product#7989, plant#7990, orderDateTime#7991, productPlant#8001, timezonecode#8015, systemId#8016, internalUUID#8017, id#8018, displayId#8019, name#8020, baseUnitOfMeasure#8021, unitOfMeasures#8022, unitOfMeasureConversions#8023, productionAspect#8024, salesAspect#8025, procurementAspect#8026, productGroup#8027, filteredUnitOfMeasureConversions#8028, quantityNumerator#8029, quantityDenominator#8030, (cast(quantityNumerator#8029 as double) / cast(quantityDenominator#8030 as double)) AS outboundUnit#8031]
(2531) Project
Arguments: [product#7989, plant#7990, orderDateTime#7991, productPlant#8001, timezonecode#8015, systemId#8016, internalUUID#8017, id#8018, displayId#8019, name#8020, baseUnitOfMeasure#8021, unitOfMeasures#8022, unitOfMeasureConversions#8023, productionAspect#8024, salesAspect#8025, procurementAspect#8026, productGroup#8027, filteredUnitOfMeasureConversions#8028, quantityNumerator#8029, quantityDenominator#8030, CASE WHEN (isnull(outboundUnit#8031) OR (outboundUnit#8031 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#8031 END AS outboundUnit#8032]
(2532) Project
Arguments: [product#7989, plant#7990, orderDateTime#7991, productPlant#8001, timezonecode#8015, outboundUnit#8032]
(2533) Join
Arguments: Inner, ((plantUuid#7981 = plant#7990) AND (productUuid#7983 = product#7989))
(2534) Filter
Arguments: (calculationDateTime#7977 <= orderDateTime#7991)
(2535) Project
Arguments: [plantUuid#7981 AS plant#8033, productUuid#7983 AS product#8034, storageLocId#7984, calculationDateTime#7977, quantity#7986]
(2536) LogicalRelation
Arguments: parquet, [systemId#8035, internalUUID#8036, product#8037, plant#8038, calculationDateTime#8039, stockQuantities#8040], false
(2537) Repartition
Arguments: 10, true
(2538) LogicalRelation
Arguments: parquet, [marketUnit#8041, description#8042, articleHierarchy#8043, defaultCurrency#8044, responsibilities#8045, replenishmentTypes#8046, distributionCenters#8047, assignedArticleHierarchyNodes#8048, minOrderQtySetting#8049, minOrderQtySettingInternal#8050, listingCheck#8051, odsSelection#8052, demandProfiles#8053, constraintProfiles#8054, optimizationProfiles#8055, orderGroupSplitProfiles#8056, supplierMinimumProfiles#8057, multipleRestrictionProfiles#8058, preferredUomSource#8059, handlingOfUnfulfilledDemands#8060, negligibleQuantitiesThreshold#8061, eventtype#8062], false
(2539) Repartition
Arguments: 10, true
(2540) Filter
Arguments: (marketUnit#8041 <=> DIP_1691)
(2541) Project
Arguments: [marketUnit#8041, description#8042, articleHierarchy#8043, defaultCurrency#8044, responsibilities#8045, replenishmentTypes#8046, distributionCenters#8047, assignedArticleHierarchyNodes#8048, minOrderQtySetting#8049, minOrderQtySettingInternal#8050, listingCheck#8051, odsSelection#8052, demandProfiles#8053, constraintProfiles#8054, optimizationProfiles#8055, orderGroupSplitProfiles#8056, supplierMinimumProfiles#8057, multipleRestrictionProfiles#8058, preferredUomSource#8059, handlingOfUnfulfilledDemands#8060, negligibleQuantitiesThreshold#8061, eventtype#8062]
(2542) Project
Arguments: [distributionCenters#8047]
(2543) Generate
Arguments: explode(distributionCenters#8047), false, [distributionCenters#8063]
(2544) Project
Arguments: [distributionCenters#8063]
(2545) Generate
Arguments: explode(distributionCenters#8063.storageLocations), false, [storageLocations#8064]
(2546) Project
Arguments: [distributionCenters#8063.id AS plantId#8065, distributionCenters#8063.internalRefUUID AS plantUuid#8066, storageLocations#8064]
(2547) Project
Arguments: [plantId#8065, plantUuid#8066, storageLocations#8064.id AS storageLocId#8067, storageLocations#8064.internalRefUUID AS storageLocUuid#8068]
(2548) LogicalRelation
Arguments: parquet, [product#8069, plant#8070, orderDateTime#8071, planningStartDateTime#8072], false
(2549) RepartitionByExpression
Arguments: [product#8069, plant#8070], 10
(2550) Project
Arguments: [product#8069, plant#8070, orderDateTime#8071]
(2551) LogicalRelation
Arguments: parquet, [systemId#8073, internalUUID#8074, plant#8075, product#8076, blockedForReplenishmentStartingFrom#8077, productionAspect#8078, salesPlant#8079, listing#8080], false
(2552) Repartition
Arguments: 10, true
(2553) Project
Arguments: [systemId#8073, internalUUID#8074, plant#8075, product#8076, blockedForReplenishmentStartingFrom#8077, productionAspect#8078, salesPlant#8079, listing#8080, struct(systemId, systemId#8073, internalUUID, internalUUID#8074, plant, plant#8075, product, product#8076, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#8077, productionAspect, productionAspect#8078, salesPlant, salesPlant#8079, listing, listing#8080) AS productPlant#8081]
(2554) Project
Arguments: [productPlant#8081]
(2555) Join
Arguments: LeftOuter, ((product#8069 <=> productPlant#8081.product.internalRefUUID) AND (plant#8070 <=> productPlant#8081.plant.internalRefUUID))
(2556) Project
Arguments: [product#8069, plant#8070, orderDateTime#8071, productPlant#8081]
(2557) SubqueryAlias
Arguments: wl
(2558) LogicalRelation
Arguments: parquet, [systemId#8082, internalUUID#8083, id#8084, displayId#8085, name#8086, category#8087, companyCode#8088, address#8089, mainDistributionChain#8090, mainPurchasingOrganization#8091, validPurchasingOrganizations#8092, productGroup#8093], false
(2559) Repartition
Arguments: 10, true
(2560) Project
Arguments: [internalUUID#8083, address#8089.timeZone.code AS timezonecode#8094]
(2561) Join
Arguments: LeftOuter, (plant#8070 <=> internalUUID#8083)
(2562) Project
Arguments: [product#8069, plant#8070, orderDateTime#8071, productPlant#8081, internalUUID#8083, CASE WHEN isnotnull(timezonecode#8094) THEN timezonecode#8094 ELSE UTC END AS timezonecode#8095]
(2563) Project
Arguments: [product#8069, plant#8070, orderDateTime#8071, productPlant#8081, timezonecode#8095]
(2564) LogicalRelation
Arguments: parquet, [systemId#8096, internalUUID#8097, id#8098, displayId#8099, name#8100, baseUnitOfMeasure#8101, unitOfMeasures#8102, unitOfMeasureConversions#8103, productionAspect#8104, salesAspect#8105, procurementAspect#8106, productGroup#8107], false
(2565) Repartition
Arguments: 10, true
(2566) Join
Arguments: LeftOuter, (product#8069 = internalUUID#8097)
(2567) Project
Arguments: [product#8069, plant#8070, orderDateTime#8071, productPlant#8081, timezonecode#8095, systemId#8096, internalUUID#8097, id#8098, displayId#8099, name#8100, baseUnitOfMeasure#8101, unitOfMeasures#8102, unitOfMeasureConversions#8103, productionAspect#8104, salesAspect#8105, procurementAspect#8106, productGroup#8107, filter(unitOfMeasureConversions#8103, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#8081.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#8081.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#8101.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#8101.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#8108]
(2568) Generate
Arguments: explode(filteredUnitOfMeasureConversions#8108.quantityNumerator), true, [quantityNumerator#8109]
(2569) Project
Arguments: [product#8069, plant#8070, orderDateTime#8071, productPlant#8081, timezonecode#8095, systemId#8096, internalUUID#8097, id#8098, displayId#8099, name#8100, baseUnitOfMeasure#8101, unitOfMeasures#8102, unitOfMeasureConversions#8103, productionAspect#8104, salesAspect#8105, procurementAspect#8106, productGroup#8107, filteredUnitOfMeasureConversions#8108, quantityNumerator#8109]
(2570) Generate
Arguments: explode(filteredUnitOfMeasureConversions#8108.quantityDenominator), true, [quantityDenominator#8110]
(2571) Project
Arguments: [product#8069, plant#8070, orderDateTime#8071, productPlant#8081, timezonecode#8095, systemId#8096, internalUUID#8097, id#8098, displayId#8099, name#8100, baseUnitOfMeasure#8101, unitOfMeasures#8102, unitOfMeasureConversions#8103, productionAspect#8104, salesAspect#8105, procurementAspect#8106, productGroup#8107, filteredUnitOfMeasureConversions#8108, quantityNumerator#8109, quantityDenominator#8110]
(2572) Project
Arguments: [product#8069, plant#8070, orderDateTime#8071, productPlant#8081, timezonecode#8095, systemId#8096, internalUUID#8097, id#8098, displayId#8099, name#8100, baseUnitOfMeasure#8101, unitOfMeasures#8102, unitOfMeasureConversions#8103, productionAspect#8104, salesAspect#8105, procurementAspect#8106, productGroup#8107, filteredUnitOfMeasureConversions#8108, quantityNumerator#8109, quantityDenominator#8110, (cast(quantityNumerator#8109 as double) / cast(quantityDenominator#8110 as double)) AS outboundUnit#8111]
(2573) Project
Arguments: [product#8069, plant#8070, orderDateTime#8071, productPlant#8081, timezonecode#8095, systemId#8096, internalUUID#8097, id#8098, displayId#8099, name#8100, baseUnitOfMeasure#8101, unitOfMeasures#8102, unitOfMeasureConversions#8103, productionAspect#8104, salesAspect#8105, procurementAspect#8106, productGroup#8107, filteredUnitOfMeasureConversions#8108, quantityNumerator#8109, quantityDenominator#8110, CASE WHEN (isnull(outboundUnit#8111) OR (outboundUnit#8111 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#8111 END AS outboundUnit#8112]
(2574) Project
Arguments: [product#8069, plant#8070, orderDateTime#8071, productPlant#8081, timezonecode#8095, outboundUnit#8112]
(2575) Project
Arguments: [plant#8070]
(2576) Deduplicate
Arguments: [plant#8070]
(2577) Join
Arguments: Inner, (plantUuid#8066 = plant#8070)
(2578) Project
Arguments: [plantId#8065, plantUuid#8066, storageLocId#8067, storageLocUuid#8068]
(2579) Join
Arguments: Inner, (plant#8038.internalRefUUID <=> plantUuid#8066)
(2580) Generate
Arguments: explode(filter(stockQuantities#8040, lambdafunction(((lambda x#1207.storageLocation.internalRefUuid = storageLocUuid#8068) AND (lambda x#1207.storageLocation.Id = storageLocId#8067)), lambda x#1207, false))), false, [stockQuantity#8113]
(2581) Project
Arguments: [systemId#8035, internalUUID#8036, product#8037, plant#8038, calculationDateTime#8039, stockQuantities#8040, plantId#8065, plantUuid#8066, storageLocId#8067, storageLocUuid#8068, stockQuantity#8113]
(2582) Aggregate
Arguments: [plantUuid#8066, internalUUID#8036, plant#8038, product#8037, systemId#8035], [plantUuid#8066, internalUUID#8036, plant#8038, product#8037, systemId#8035, first(calculationDateTime#8039, false) AS calculationDateTime#8114, collect_list(stockQuantity#8113, 0, 0) AS stockQuantities#8115]
(2583) Project
Arguments: [systemId#8035, internalUUID#8036, product#8037, plant#8038, calculationDateTime#8114, stockQuantities#8115]
(2584) Generate
Arguments: explode(stockQuantities#8115), false, [stockQuantity#8116]
(2585) Project
Arguments: [systemId#8035, internalUUID#8036, product#8037, plant#8038, calculationDateTime#8114, stockQuantities#8115, stockQuantity#8116]
(2586) Project
Arguments: [plant#8038.id AS plant#8117, plant#8038.internalRefUUID AS plantUuid#8118, product#8037.id AS product#8119, product#8037.internalRefUUID AS productUuid#8120, calculationDateTime#8114, stockQuantity#8116.storagelocation.id AS storageLocId#8121, stockQuantity#8116.storagelocation.internalRefUUID AS storageLocUuid#8122, stockQuantity#8116.quantity.measure AS quantity#8123, stockQuantity#8116.specialStockIndicator.code AS specialStockIndicator#8124, stockQuantity#8116.stockType.code AS stockType#8125]
(2587) Filter
Arguments: ((specialStockIndicator#8124 = ) AND (stockType#8125 = 01))
(2588) LogicalRelation
Arguments: parquet, [product#8126, plant#8127, orderDateTime#8128, planningStartDateTime#8129], false
(2589) RepartitionByExpression
Arguments: [product#8126, plant#8127], 10
(2590) Project
Arguments: [product#8126, plant#8127, orderDateTime#8128]
(2591) LogicalRelation
Arguments: parquet, [systemId#8130, internalUUID#8131, plant#8132, product#8133, blockedForReplenishmentStartingFrom#8134, productionAspect#8135, salesPlant#8136, listing#8137], false
(2592) Repartition
Arguments: 10, true
(2593) Project
Arguments: [systemId#8130, internalUUID#8131, plant#8132, product#8133, blockedForReplenishmentStartingFrom#8134, productionAspect#8135, salesPlant#8136, listing#8137, struct(systemId, systemId#8130, internalUUID, internalUUID#8131, plant, plant#8132, product, product#8133, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#8134, productionAspect, productionAspect#8135, salesPlant, salesPlant#8136, listing, listing#8137) AS productPlant#8138]
(2594) Project
Arguments: [productPlant#8138]
(2595) Join
Arguments: LeftOuter, ((product#8126 <=> productPlant#8138.product.internalRefUUID) AND (plant#8127 <=> productPlant#8138.plant.internalRefUUID))
(2596) Project
Arguments: [product#8126, plant#8127, orderDateTime#8128, productPlant#8138]
(2597) SubqueryAlias
Arguments: wl
(2598) LogicalRelation
Arguments: parquet, [systemId#8139, internalUUID#8140, id#8141, displayId#8142, name#8143, category#8144, companyCode#8145, address#8146, mainDistributionChain#8147, mainPurchasingOrganization#8148, validPurchasingOrganizations#8149, productGroup#8150], false
(2599) Repartition
Arguments: 10, true
(2600) Project
Arguments: [internalUUID#8140, address#8146.timeZone.code AS timezonecode#8151]
(2601) Join
Arguments: LeftOuter, (plant#8127 <=> internalUUID#8140)
(2602) Project
Arguments: [product#8126, plant#8127, orderDateTime#8128, productPlant#8138, internalUUID#8140, CASE WHEN isnotnull(timezonecode#8151) THEN timezonecode#8151 ELSE UTC END AS timezonecode#8152]
(2603) Project
Arguments: [product#8126, plant#8127, orderDateTime#8128, productPlant#8138, timezonecode#8152]
(2604) LogicalRelation
Arguments: parquet, [systemId#8153, internalUUID#8154, id#8155, displayId#8156, name#8157, baseUnitOfMeasure#8158, unitOfMeasures#8159, unitOfMeasureConversions#8160, productionAspect#8161, salesAspect#8162, procurementAspect#8163, productGroup#8164], false
(2605) Repartition
Arguments: 10, true
(2606) Join
Arguments: LeftOuter, (product#8126 = internalUUID#8154)
(2607) Project
Arguments: [product#8126, plant#8127, orderDateTime#8128, productPlant#8138, timezonecode#8152, systemId#8153, internalUUID#8154, id#8155, displayId#8156, name#8157, baseUnitOfMeasure#8158, unitOfMeasures#8159, unitOfMeasureConversions#8160, productionAspect#8161, salesAspect#8162, procurementAspect#8163, productGroup#8164, filter(unitOfMeasureConversions#8160, lambdafunction((((lambda u#1149.measurementUnit1.code = productPlant#8138.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#1149.measurementUnit1.internalRefUUID = productPlant#8138.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#1149.measurementUnit2.code = baseUnitOfMeasure#8158.code) AND (lambda u#1149.measurementUnit2.internalRefUUID = baseUnitOfMeasure#8158.internalRefUUID))), lambda u#1149, false)) AS filteredUnitOfMeasureConversions#8165]
(2608) Generate
Arguments: explode(filteredUnitOfMeasureConversions#8165.quantityNumerator), true, [quantityNumerator#8166]
(2609) Project
Arguments: [product#8126, plant#8127, orderDateTime#8128, productPlant#8138, timezonecode#8152, systemId#8153, internalUUID#8154, id#8155, displayId#8156, name#8157, baseUnitOfMeasure#8158, unitOfMeasures#8159, unitOfMeasureConversions#8160, productionAspect#8161, salesAspect#8162, procurementAspect#8163, productGroup#8164, filteredUnitOfMeasureConversions#8165, quantityNumerator#8166]
(2610) Generate
Arguments: explode(filteredUnitOfMeasureConversions#8165.quantityDenominator), true, [quantityDenominator#8167]
(2611) Project
Arguments: [product#8126, plant#8127, orderDateTime#8128, productPlant#8138, timezonecode#8152, systemId#8153, internalUUID#8154, id#8155, displayId#8156, name#8157, baseUnitOfMeasure#8158, unitOfMeasures#8159, unitOfMeasureConversions#8160, productionAspect#8161, salesAspect#8162, procurementAspect#8163, productGroup#8164, filteredUnitOfMeasureConversions#8165, quantityNumerator#8166, quantityDenominator#8167]
(2612) Project
Arguments: [product#8126, plant#8127, orderDateTime#8128, productPlant#8138, timezonecode#8152, systemId#8153, internalUUID#8154, id#8155, displayId#8156, name#8157, baseUnitOfMeasure#8158, unitOfMeasures#8159, unitOfMeasureConversions#8160, productionAspect#8161, salesAspect#8162, procurementAspect#8163, productGroup#8164, filteredUnitOfMeasureConversions#8165, quantityNumerator#8166, quantityDenominator#8167, (cast(quantityNumerator#8166 as double) / cast(quantityDenominator#8167 as double)) AS outboundUnit#8168]
(2613) Project
Arguments: [product#8126, plant#8127, orderDateTime#8128, productPlant#8138, timezonecode#8152, systemId#8153, internalUUID#8154, id#8155, displayId#8156, name#8157, baseUnitOfMeasure#8158, unitOfMeasures#8159, unitOfMeasureConversions#8160, productionAspect#8161, salesAspect#8162, procurementAspect#8163, productGroup#8164, filteredUnitOfMeasureConversions#8165, quantityNumerator#8166, quantityDenominator#8167, CASE WHEN (isnull(outboundUnit#8168) OR (outboundUnit#8168 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#8168 END AS outboundUnit#8169]
(2614) Project
Arguments: [product#8126, plant#8127, orderDateTime#8128, productPlant#8138, timezonecode#8152, outboundUnit#8169]
(2615) Join
Arguments: Inner, ((plantUuid#8118 = plant#8127) AND (productUuid#8120 = product#8126))
(2616) Filter
Arguments: (calculationDateTime#8114 <= orderDateTime#8128)
(2617) Project
Arguments: [plantUuid#8118 AS plant#8170, productUuid#8120 AS product#8171, storageLocId#8121, calculationDateTime#8114, quantity#8123]
(2618) Aggregate
Arguments: [plant#8170, product#8171, storageLocId#8121], [plant#8170, product#8171, storageLocId#8121, max(calculationDateTime#8114) AS max_calc_datetime#8172]
(2619) Join
Arguments: Inner, ((((plant#8033 <=> plant#8170) AND (product#8034 <=> product#8171)) AND (storageLocId#7984 <=> storageLocId#8121)) AND (calculationDateTime#7977 <=> max_calc_datetime#8172))
(2620) Project
Arguments: [plant#8033, product#8034, storageLocId#7984, calculationDateTime#7977, quantity#7986]
(2621) Aggregate
Arguments: [product#8034, plant#8033], [product#8034, plant#8033, sum(quantity#7986) AS quantitySum#8173, min(calculationDateTime#7977) AS minCalculationDateTime#8174]
(2622) Project
Arguments: [product#8034, plant#8033, quantitySum#8173, minCalculationDateTime#8174, round(quantitySum#8173, 0) AS roundedQuantitySum#8175]
(2623) Join
Arguments: LeftOuter, ((plant#7855 = plant#8033) AND (product#7854 = product#8034))
(2624) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, roundedQuantitySum#8175, minCalculationDateTime#8174]
(2625) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, roundedQuantitySum#8175, minCalculationDateTime#8174, CASE WHEN isnotnull(minCalculationDateTime#8174) THEN minCalculationDateTime#8174 ELSE orderDateTime#7856 END AS stockDatetime#8176]
(2626) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, roundedQuantitySum#8175, minCalculationDateTime#8174, stockDatetime#8176, CASE WHEN isnotnull(roundedQuantitySum#8175) THEN array(roundedQuantitySum#8175) ELSE array(0.0) END AS stockBatchQuantities#8177]
(2627) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, roundedQuantitySum#8175, minCalculationDateTime#8174, stockDatetime#8176, stockBatchQuantities#8177, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#8178]
(2628) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, roundedQuantitySum#8175, stockDatetime#8176, stockBatchQuantities#8177, stockBatchShelfLifeEndDatetimes#8178]
(2629) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, stockDatetime#8176, stockBatchQuantities#8177, stockBatchShelfLifeEndDatetimes#8178]
(2630) LogicalRelation
Arguments: parquet, [product#8179, plant#8180, demandChannel#8181, demandStream#8182, considerVariance#8183, demandTimeBuckets#8184, demandPointInTimeStart#8185, demandPointInTimeEnd#8186, demandPointInTime#8187], false
(2631) Join
Arguments: LeftOuter, ((product#7854 = product#8179) AND (plant#7855 = plant#8180))
(2632) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, stockDatetime#8176, stockBatchQuantities#8177, stockBatchShelfLifeEndDatetimes#8178, demandChannel#8181, demandStream#8182, considerVariance#8183, demandTimeBuckets#8184, demandPointInTimeStart#8185, demandPointInTimeEnd#8186, demandPointInTime#8187, product#8179, plant#8180]
(2633) Project
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, stockDatetime#8176, stockBatchQuantities#8177, stockBatchShelfLifeEndDatetimes#8178, demandChannel#8181, demandStream#8182, considerVariance#8183, demandTimeBuckets#8184, demandPointInTimeStart#8185, demandPointInTimeEnd#8186, demandPointInTime#8187, CASE WHEN isnotnull(product#8179) THEN struct(demandChannel, demandChannel#8181, demandStream, demandStream#8182, considerVariance, considerVariance#8183, demandTimeBuckets, demandTimeBuckets#8184, demandPointInTimeStart, demandPointInTimeStart#8185, demandPointInTimeEnd, demandPointInTimeEnd#8186, demandPointInTime, demandPointInTime#8187) 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#8188]
(2634) Aggregate
Arguments: [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, stockDatetime#8176, stockBatchQuantities#8177, stockBatchShelfLifeEndDatetimes#8178], [product#7854, plant#7855, orderDateTime#7856, productPlant#7866, timezonecode#7880, outboundUnit#7897, stockDatetime#8176, stockBatchQuantities#8177, stockBatchShelfLifeEndDatetimes#8178, collect_list(rawDemands#8188, 0, 0) AS rawDemands#8189]
(2635) DeserializeToObject
Arguments: createexternalrow(invoke(product#7854.toString()), invoke(plant#7855.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#7856)), if (isnull(productPlant#7866)) null else createexternalrow(invoke(productPlant#7866.systemId.toString()), invoke(productPlant#7866.internalUUID.toString()), if (isnull(productPlant#7866.plant)) null else createexternalrow(invoke(productPlant#7866.plant.internalRefUUID.toString()), invoke(productPlant#7866.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#7866.product)) null else createexternalrow(invoke(productPlant#7866.product.internalRefUUID.toString()), invoke(productPlant#7866.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#7866.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#7866.productionAspect)) null else createexternalrow(if (isnull(productPlant#7866.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#7866.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#7866.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#7866.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#7866.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#7866.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#7866.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#7866.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#7866.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#7866.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#7866.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#7866.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#7866.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#7866.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#7866.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#7866.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#7866.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#7866.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#7866.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#7866.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#7866.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#7866.salesPlant)) null else createexternalrow(if (isnull(productPlant#7866.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#7866.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#7866.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, 497), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 497).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#7866.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#7880.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#7897)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#8176)), mapobjects(lambdavariable(MapObject, DoubleType, true, 498), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 498) as double))), stockBatchQuantities#8177, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 499), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 499) as timestamp)))), stockBatchShelfLifeEndDatetimes#8178, 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, 500), 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, 500))) 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, 500).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, 500).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, 500).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 501).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, 500).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, 500).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, 500).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 502).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, 500).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#8189, 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#1569: org.apache.spark.sql.Row
(2636) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@762840b4, 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#1574: 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#8190, 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#8191, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 488), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 488), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 489), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 489), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 490), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 490), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 491), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 491), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 492), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 492), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 487), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#8192, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 494), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 494), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 495), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 495), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 496), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 496), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 493), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#8193]
(2638) Join
Arguments: LeftOuter, ((plant#8191 <=> plant#7530) AND (product#8190 <=> product#7529))
(2639) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, outboundUnit#7572, stockDatetime#7851, stockBatchQuantities#7852, stockBatchShelfLifeEndDatetimes#7853, plant#8191, dayBucketDemands#8192, pointInTimeDemands#8193]
(2640) Project
Arguments: [product#7529, plant#7530, orderDateTime#7531, productPlant#7541, timezonecode#7555, outboundUnit#7572, stockDatetime#7851, stockBatchQuantities#7852, stockBatchShelfLifeEndDatetimes#7853, dayBucketDemands#8192, pointInTimeDemands#8193]
(2641) LogicalRelation
Arguments: parquet, [systemId#8194, internalUUID#8195, id#8196, displayId#8197, supplier#8198, type#8199, status#8200, isMarkedForDeletion#8201, items#8202], false
(2642) Repartition
Arguments: 10, true
(2643) Generate
Arguments: explode(items#8202), false, [item#8203]
(2644) Project
Arguments: [id#8196, internalUUID#8195, isMarkedForDeletion#8201, supplier#8198.internalRefUUID AS supplierUuid#8204, item#8203]
(2645) Filter
Arguments: (((NOT isMarkedForDeletion#8201 AND NOT item#8203.deletionIndicator) AND NOT item#8203.completeIndicator) AND NOT item#8203.returnIndicator)
(2646) Project
Arguments: [id#8196, internalUUID#8195, supplierUuid#8204, item#8203.plant.internalRefUUID AS plant#8205, item#8203.product.internalRefUUID AS product#8206, item#8203.storageLocation.internalRefUUID AS storageLocUuid#8207, item#8203.quantityUnit.code AS quantityUom#8208, item#8203.quantityUnit.internalRefUUID AS quantityUomUuid#8209, item#8203.quantityNumerator AS quantityNumerator#8210, item#8203.quantityDenominator AS quantityDenominator#8211, item#8203.scheduleLines AS scheduleLines#8212, item#8203.confirmations AS confirmations#8213]
(2647) Join
Arguments: Inner, ((product#7529 <=> product#8206) AND (plant#7530 <=> supplierUuid#8204))
(2648) Project
Arguments: [id#8196, internalUUID#8195, supplierUuid#8204, plant#8205, product#8206, storageLocUuid#8207, quantityUom#8208, quantityUomUuid#8209, quantityNumerator#8210, quantityDenominator#8211, scheduleLines#8212, confirmations#8213, stockDatetime#7851, plant#7530]
(2649) Project
Arguments: [id#8196, internalUUID#8195, supplierUuid#8204, product#8206, storageLocUuid#8207, quantityUom#8208, quantityUomUuid#8209, quantityNumerator#8210, quantityDenominator#8211, scheduleLines#8212, confirmations#8213, stockDatetime#7851, plant#7530]
(2650) Project
Arguments: [id#8196, internalUUID#8195, supplierUuid#8204, product#8206, storageLocUuid#8207, quantityUom#8208, quantityUomUuid#8209, quantityNumerator#8210, quantityDenominator#8211, scheduleLines#8212, confirmations#8213, stockDatetime#7851, plant#7530, filter(transform(filter(transform(scheduleLines#8212, lambdafunction(struct(openQty, (greatest((lambda x_6#4326.quantity - coalesce(lambda x_6#4326.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_6#4326.productAvailabilityDateTime, lambda x_6#4326.deliveryAt)), lambda x_6#4326, false)), lambdafunction((lambda x_7#4327.availabilityDatetime < stockDatetime#7851), lambda x_7#4327, false)), lambdafunction(struct(documentId, id#8196, documentUuid, internalUUID#8195, openQty, lambda x_8#4328.openQty, openQtyInBaseUnit, ((lambda x_8#4328.openQty * quantityNumerator#8210) / quantityDenominator#8211), qtyUom, quantityUom#8208, qtyUomUuid, quantityUomUuid#8209, availabilityDatetime, lambda x_8#4328.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_8#4328, false)), lambdafunction(NOT (lambda x_9#4329.openQty = 0.0), lambda x_9#4329, false)) AS openGoodsMovements#8214]
(2651) Aggregate
Arguments: [product#8206, plant#7530], [product#8206, plant#7530, flatten(collect_list(openGoodsMovements#8214, 0, 0)) AS openGoodsMovements#8215]
(2652) Filter
Arguments: (array_size(openGoodsMovements#8215) > 0)
(2653) Union
Arguments: false, false
(2654) Aggregate
Arguments: [product#7517, plant#7516], [product#7517, plant#7516, flatten(collect_list(openGoodsMovements#7528, 0, 0)) AS openGoodsMovements#8216]
(2655) Join
Arguments: LeftOuter, ((product#6102 = product#7517) AND (plant#6103 = plant#7516))
(2656) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, stockBatchShelfLifeEndDatetimes#6426, dayBucketDemands#6765, pointInTimeDemands#6766, openGoodsMovements#8216]
(2657) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, stockBatchShelfLifeEndDatetimes#6426, dayBucketDemands#6765, pointInTimeDemands#6766, coalesce(openGoodsMovements#8216.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#8217, coalesce(openGoodsMovements#8216.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#8218, coalesce(openGoodsMovements#8216.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#8219]
(2658) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, stockBatchShelfLifeEndDatetimes#6426, dayBucketDemands#6765, pointInTimeDemands#6766, openGoodsMovementQuantities#8217, openGoodsMovementAvailabilityDatetimes#8218, openGoodsMovementShelfLifeEndDatetimes#8219, 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#8220]
(2659) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, stockBatchShelfLifeEndDatetimes#6426, dayBucketDemands#6765, pointInTimeDemands#6766, openGoodsMovementQuantities#8217, openGoodsMovementAvailabilityDatetimes#8218, openGoodsMovementShelfLifeEndDatetimes#8219, configuration#8220, productPlant#6114.listing AS listing#6042]
(2660) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, stockBatchShelfLifeEndDatetimes#6426, dayBucketDemands#6765, pointInTimeDemands#6766, openGoodsMovementQuantities#8217, openGoodsMovementAvailabilityDatetimes#8218, openGoodsMovementShelfLifeEndDatetimes#8219, configuration#8220, CASE WHEN isnotnull(listing#6042) THEN listing#6042 ELSE cast(array() as array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>) END AS listing#6044]
(2661) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, stockBatchShelfLifeEndDatetimes#6426, dayBucketDemands#6765, pointInTimeDemands#6766, openGoodsMovementQuantities#8217, openGoodsMovementAvailabilityDatetimes#8218, openGoodsMovementShelfLifeEndDatetimes#8219, configuration#8220, filter(listing#6044, lambdafunction((lambda listing#6046.isListed = true), lambda listing#6046, false)) AS listing#6045]
(2662) Project
Arguments: [product#6102, plant#6103, orderDateTime#6104, productPlant#6114, timezonecode#6128, outboundUnit#6145, stockDatetime#6424, stockBatchQuantities#6425, stockBatchShelfLifeEndDatetimes#6426, dayBucketDemands#6765, pointInTimeDemands#6766, openGoodsMovementQuantities#8217, openGoodsMovementAvailabilityDatetimes#8218, openGoodsMovementShelfLifeEndDatetimes#8219, configuration#8220, array_sort(listing#6045, lambdafunction(if ((isnull(lambda left#6048) AND isnull(lambda right#6049))) 0 else if (isnull(lambda left#6048)) 1 else if (isnull(lambda right#6049)) -1 else if ((lambda left#6048 < lambda right#6049)) -1 else if ((lambda left#6048 > lambda right#6049)) 1 else 0, lambda left#6048, lambda right#6049, false), false) AS listing#6047]
(2663) DeserializeToObject
Arguments: createexternalrow(invoke(product#6102.toString()), invoke(plant#6103.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#6104)), if (isnull(productPlant#6114)) null else createexternalrow(invoke(productPlant#6114.systemId.toString()), invoke(productPlant#6114.internalUUID.toString()), if (isnull(productPlant#6114.plant)) null else createexternalrow(invoke(productPlant#6114.plant.internalRefUUID.toString()), invoke(productPlant#6114.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#6114.product)) null else createexternalrow(invoke(productPlant#6114.product.internalRefUUID.toString()), invoke(productPlant#6114.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#6114.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#6114.productionAspect)) null else createexternalrow(if (isnull(productPlant#6114.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#6114.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#6114.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#6114.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#6114.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#6114.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#6114.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#6114.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#6114.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#6114.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#6114.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#6114.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#6114.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#6114.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#6114.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#6114.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#6114.salesPlant)) null else createexternalrow(if (isnull(productPlant#6114.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#6114.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#6114.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, 1596), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 1596))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 1596).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 1596).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 1596).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#6114.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#6128.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#6145)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#6424)), mapobjects(lambdavariable(MapObject, DoubleType, true, 1597), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 1597) as double))), stockBatchQuantities#6425, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 1598), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 1598) as timestamp)))), stockBatchShelfLifeEndDatetimes#6426, 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, 1599), 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, 1599))) 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, 1599).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, 1599).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, 1599).considerVariance)), mapobjects(lambdavariable(MapObject, DoubleType, false, 1600), assertnotnull(static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, false, 1600) 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, 1599).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 1601), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 1601) 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, 1599).demandVariances, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 1602), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 1602) 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, 1599).anchorDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StringType, false, 1603), assertnotnull(invoke(cast(lambdavariable(MapObject, StringType, false, 1603) 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, 1599).anchorWeekdays, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, IntegerType, false, 1604), assertnotnull(static_invoke(java.lang.Integer.valueOf(cast(lambdavariable(MapObject, IntegerType, false, 1604) 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, 1599).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#6765, 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, 1605), 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, 1605))) 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, 1605).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, 1605).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, 1605).considerVariance)), mapobjects(lambdavariable(MapObject, TimestampType, false, 1606), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 1606) 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, 1605).demandDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, false, 1607), assertnotnull(static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, false, 1607) 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, 1605).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 1608), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 1608) 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, 1605).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, 1605).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, 1605).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#6766, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 1609), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 1609) as double))), openGoodsMovementQuantities#8217, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, 1610), static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, true, 1610) as timestamp))), openGoodsMovementAvailabilityDatetimes#8218, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 1611), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 1611) as timestamp)))), openGoodsMovementShelfLifeEndDatetimes#8219, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 1612), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 1612))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 1612).configurationValidityDatetime)), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 1612).configurationName.toString()), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 1612).configurationValue.toString()), StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false))), configuration#8220, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 1613), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 1613))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 1613).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 1613).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 1613).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), listing#6047, 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#6082: 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#6089: 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#6096, 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#6097, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 1592), static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 1592), 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#6098, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 1593), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 1593), 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#6099, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 1594), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 1594), 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#6100, 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, 1595), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 1595), 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#6101]
(2666) Join
Arguments: LeftOuter, ((product#1102 = product#6096) AND (plant#1103 = plant#6097))
(2667) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, configuration#5903, timeDependentSettingsName#6098, timeDependentSettingsStartDatetime#6099, timeDependentSettingsEndDatetime#6100, timeDependentSettingsValue#6101]
(2668) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, configuration#5903, CASE WHEN isnotnull(timeDependentSettingsName#6098) THEN timeDependentSettingsName#6098 ELSE cast(array() as array<string>) END AS timeDependentSettingsName#8375, timeDependentSettingsStartDatetime#6099, timeDependentSettingsEndDatetime#6100, timeDependentSettingsValue#6101]
(2669) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, configuration#5903, timeDependentSettingsName#8375, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#6099) THEN timeDependentSettingsStartDatetime#6099 ELSE cast(array() as array<timestamp>) END AS timeDependentSettingsStartDatetime#8376, timeDependentSettingsEndDatetime#6100, timeDependentSettingsValue#6101]
(2670) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, configuration#5903, timeDependentSettingsName#8375, timeDependentSettingsStartDatetime#8376, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#6100) THEN timeDependentSettingsEndDatetime#6100 ELSE cast(array() as array<timestamp>) END AS timeDependentSettingsEndDatetime#8377, timeDependentSettingsValue#6101]
(2671) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, productPlant#1116, timezonecode#1134, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, configuration#5903, timeDependentSettingsName#8375, timeDependentSettingsStartDatetime#8376, timeDependentSettingsEndDatetime#8377, CASE WHEN isnotnull(timeDependentSettingsValue#6101) THEN timeDependentSettingsValue#6101 ELSE cast(array() as array<double>) END AS timeDependentSettingsValue#8378]
(2672) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, timezonecode#1134, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, configuration#5903, timeDependentSettingsName#8375, timeDependentSettingsStartDatetime#8376, timeDependentSettingsEndDatetime#8377, timeDependentSettingsValue#8378]
(2673) Project
Arguments: [product#1102, plant#1103, orderDateTime#1104, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, configuration#5903, timeDependentSettingsName#8375, timeDependentSettingsStartDatetime#8376, timeDependentSettingsEndDatetime#8377, timeDependentSettingsValue#8378]
(2674) Project
Arguments: [product#1102, plant#1103, outboundUnit#1161, stockDatetime#1506, stockBatchQuantities#1507, stockBatchShelfLifeEndDatetimes#1508, dayBucketDemands#1581, pointInTimeDemands#1582, openGoodsMovementQuantities#5800, openGoodsMovementAvailabilityDatetimes#5801, openGoodsMovementShelfLifeEndDatetimes#5802, configuration#5903, timeDependentSettingsName#8375, timeDependentSettingsStartDatetime#8376, timeDependentSettingsEndDatetime#8377, timeDependentSettingsValue#8378]