== 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@250c5d9d, [path=hdlfs://9b46f9d5-066e-49af-bc5c-7af37534ca4d.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-quantity-kpi-service/internal/data-snapshot/10000000006/0_1_10000000006], Overwrite
(3) LogicalRelation
Arguments: parquet, [product#50545, plant#50546, orderDateTime#50547, planningStartDateTime#50548], false
(4) RepartitionByExpression
Arguments: [product#50545, plant#50546], 10
(5) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547]
(6) LogicalRelation
Arguments: parquet, [systemId#50550, internalUUID#50551, plant#50552, product#50553, blockedForReplenishmentStartingFrom#50554, productionAspect#50555, salesPlant#50556, listing#50557], false
(7) Repartition
Arguments: 10, true
(8) Project
Arguments: [systemId#50550, internalUUID#50551, plant#50552, product#50553, blockedForReplenishmentStartingFrom#50554, productionAspect#50555, salesPlant#50556, listing#50557, struct(systemId, systemId#50550, internalUUID, internalUUID#50551, plant, plant#50552, product, product#50553, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#50554, productionAspect, productionAspect#50555, salesPlant, salesPlant#50556, listing, listing#50557) AS productPlant#50559]
(9) Project
Arguments: [productPlant#50559]
(10) Join
Arguments: LeftOuter, ((product#50545 <=> productPlant#50559.product.internalRefUUID) AND (plant#50546 <=> productPlant#50559.plant.internalRefUUID))
(11) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559]
(12) SubqueryAlias
Arguments: wl
(13) LogicalRelation
Arguments: parquet, [systemId#50562, internalUUID#50563, id#50564, displayId#50565, name#50566, category#50567, companyCode#50568, address#50569, mainDistributionChain#50570, mainPurchasingOrganization#50571, validPurchasingOrganizations#50572, productGroup#50573], false
(14) Repartition
Arguments: 10, true
(15) Project
Arguments: [internalUUID#50563, address#50569.timeZone.code AS timezonecode#50574]
(16) Join
Arguments: LeftOuter, (plant#50546 <=> internalUUID#50563)
(17) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, internalUUID#50563, CASE WHEN isnotnull(timezonecode#50574) THEN timezonecode#50574 ELSE UTC END AS timezonecode#50577]
(18) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577]
(19) LogicalRelation
Arguments: parquet, [systemId#50578, internalUUID#50579, id#50580, displayId#50581, name#50582, baseUnitOfMeasure#50583, unitOfMeasures#50584, unitOfMeasureConversions#50585, productionAspect#50586, salesAspect#50587, procurementAspect#50588, productGroup#50589], false
(20) Repartition
Arguments: 10, true
(21) Join
Arguments: LeftOuter, (product#50545 = internalUUID#50579)
(22) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, systemId#50578, internalUUID#50579, id#50580, displayId#50581, name#50582, baseUnitOfMeasure#50583, unitOfMeasures#50584, unitOfMeasureConversions#50585, productionAspect#50586, salesAspect#50587, procurementAspect#50588, productGroup#50589, filter(unitOfMeasureConversions#50585, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#50559.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#50559.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50583.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50583.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50591]
(23) Generate
Arguments: explode(filteredUnitOfMeasureConversions#50591.quantityNumerator), true, [quantityNumerator#50599]
(24) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, systemId#50578, internalUUID#50579, id#50580, displayId#50581, name#50582, baseUnitOfMeasure#50583, unitOfMeasures#50584, unitOfMeasureConversions#50585, productionAspect#50586, salesAspect#50587, procurementAspect#50588, productGroup#50589, filteredUnitOfMeasureConversions#50591, quantityNumerator#50599]
(25) Generate
Arguments: explode(filteredUnitOfMeasureConversions#50591.quantityDenominator), true, [quantityDenominator#50602]
(26) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, systemId#50578, internalUUID#50579, id#50580, displayId#50581, name#50582, baseUnitOfMeasure#50583, unitOfMeasures#50584, unitOfMeasureConversions#50585, productionAspect#50586, salesAspect#50587, procurementAspect#50588, productGroup#50589, filteredUnitOfMeasureConversions#50591, quantityNumerator#50599, quantityDenominator#50602]
(27) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, systemId#50578, internalUUID#50579, id#50580, displayId#50581, name#50582, baseUnitOfMeasure#50583, unitOfMeasures#50584, unitOfMeasureConversions#50585, productionAspect#50586, salesAspect#50587, procurementAspect#50588, productGroup#50589, filteredUnitOfMeasureConversions#50591, quantityNumerator#50599, quantityDenominator#50602, (cast(quantityNumerator#50599 as double) / cast(quantityDenominator#50602 as double)) AS outboundUnit#50603]
(28) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, systemId#50578, internalUUID#50579, id#50580, displayId#50581, name#50582, baseUnitOfMeasure#50583, unitOfMeasures#50584, unitOfMeasureConversions#50585, productionAspect#50586, salesAspect#50587, procurementAspect#50588, productGroup#50589, filteredUnitOfMeasureConversions#50591, quantityNumerator#50599, quantityDenominator#50602, CASE WHEN (isnull(outboundUnit#50603) OR (outboundUnit#50603 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#50603 END AS outboundUnit#50604]
(29) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604]
(30) LogicalRelation
Arguments: parquet, [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646], false
(31) Repartition
Arguments: 10, true
(32) LogicalRelation
Arguments: parquet, [marketUnit#50605, description#50606, articleHierarchy#50607, defaultCurrency#50608, responsibilities#50609, replenishmentTypes#50610, distributionCenters#50611, assignedArticleHierarchyNodes#50612, minOrderQtySetting#50613, minOrderQtySettingInternal#50614, listingCheck#50615, odsSelection#50616, demandProfiles#50617, constraintProfiles#50618, optimizationProfiles#50619, orderGroupSplitProfiles#50620, supplierMinimumProfiles#50621, multipleRestrictionProfiles#50622, preferredUomSource#50623, handlingOfUnfulfilledDemands#50624, negligibleQuantitiesThreshold#50625, eventtype#50626], false
(33) Repartition
Arguments: 10, true
(34) Filter
Arguments: (marketUnit#50605 <=> DIP_1691)
(35) Project
Arguments: [marketUnit#50605, description#50606, articleHierarchy#50607, defaultCurrency#50608, responsibilities#50609, replenishmentTypes#50610, distributionCenters#50611, assignedArticleHierarchyNodes#50612, minOrderQtySetting#50613, minOrderQtySettingInternal#50614, listingCheck#50615, odsSelection#50616, demandProfiles#50617, constraintProfiles#50618, optimizationProfiles#50619, orderGroupSplitProfiles#50620, supplierMinimumProfiles#50621, multipleRestrictionProfiles#50622, preferredUomSource#50623, handlingOfUnfulfilledDemands#50624, negligibleQuantitiesThreshold#50625, eventtype#50626]
(36) Project
Arguments: [distributionCenters#50611]
(37) Generate
Arguments: explode(distributionCenters#50611), false, [distributionCenters#50629]
(38) Project
Arguments: [distributionCenters#50629]
(39) Generate
Arguments: explode(distributionCenters#50629.storageLocations), false, [storageLocations#50636]
(40) Project
Arguments: [distributionCenters#50629.id AS plantId#50630, distributionCenters#50629.internalRefUUID AS plantUuid#50631, storageLocations#50636]
(41) Project
Arguments: [plantId#50630, plantUuid#50631, storageLocations#50636.id AS storageLocId#50637, storageLocations#50636.internalRefUUID AS storageLocUuid#50638]
(42) LogicalRelation
Arguments: parquet, [product#50901, plant#50902, orderDateTime#50903, planningStartDateTime#50904], false
(43) RepartitionByExpression
Arguments: [product#50901, plant#50902], 10
(44) Project
Arguments: [product#50901, plant#50902, orderDateTime#50903]
(45) LogicalRelation
Arguments: parquet, [systemId#50905, internalUUID#50906, plant#50907, product#50908, blockedForReplenishmentStartingFrom#50909, productionAspect#50910, salesPlant#50911, listing#50912], false
(46) Repartition
Arguments: 10, true
(47) Project
Arguments: [systemId#50905, internalUUID#50906, plant#50907, product#50908, blockedForReplenishmentStartingFrom#50909, productionAspect#50910, salesPlant#50911, listing#50912, struct(systemId, systemId#50905, internalUUID, internalUUID#50906, plant, plant#50907, product, product#50908, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#50909, productionAspect, productionAspect#50910, salesPlant, salesPlant#50911, listing, listing#50912) AS productPlant#50913]
(48) Project
Arguments: [productPlant#50913]
(49) Join
Arguments: LeftOuter, ((product#50901 <=> productPlant#50913.product.internalRefUUID) AND (plant#50902 <=> productPlant#50913.plant.internalRefUUID))
(50) Project
Arguments: [product#50901, plant#50902, orderDateTime#50903, productPlant#50913]
(51) SubqueryAlias
Arguments: wl
(52) LogicalRelation
Arguments: parquet, [systemId#50914, internalUUID#50915, id#50916, displayId#50917, name#50918, category#50919, companyCode#50920, address#50921, mainDistributionChain#50922, mainPurchasingOrganization#50923, validPurchasingOrganizations#50924, productGroup#50925], false
(53) Repartition
Arguments: 10, true
(54) Project
Arguments: [internalUUID#50915, address#50921.timeZone.code AS timezonecode#50926]
(55) Join
Arguments: LeftOuter, (plant#50902 <=> internalUUID#50915)
(56) Project
Arguments: [product#50901, plant#50902, orderDateTime#50903, productPlant#50913, internalUUID#50915, CASE WHEN isnotnull(timezonecode#50926) THEN timezonecode#50926 ELSE UTC END AS timezonecode#50927]
(57) Project
Arguments: [product#50901, plant#50902, orderDateTime#50903, productPlant#50913, timezonecode#50927]
(58) LogicalRelation
Arguments: parquet, [systemId#50928, internalUUID#50929, id#50930, displayId#50931, name#50932, baseUnitOfMeasure#50933, unitOfMeasures#50934, unitOfMeasureConversions#50935, productionAspect#50936, salesAspect#50937, procurementAspect#50938, productGroup#50939], false
(59) Repartition
Arguments: 10, true
(60) Join
Arguments: LeftOuter, (product#50901 = internalUUID#50929)
(61) Project
Arguments: [product#50901, plant#50902, orderDateTime#50903, productPlant#50913, timezonecode#50927, systemId#50928, internalUUID#50929, id#50930, displayId#50931, name#50932, baseUnitOfMeasure#50933, unitOfMeasures#50934, unitOfMeasureConversions#50935, productionAspect#50936, salesAspect#50937, procurementAspect#50938, productGroup#50939, filter(unitOfMeasureConversions#50935, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#50913.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#50913.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50933.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50933.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50940]
(62) Generate
Arguments: explode(filteredUnitOfMeasureConversions#50940.quantityNumerator), true, [quantityNumerator#50941]
(63) Project
Arguments: [product#50901, plant#50902, orderDateTime#50903, productPlant#50913, timezonecode#50927, systemId#50928, internalUUID#50929, id#50930, displayId#50931, name#50932, baseUnitOfMeasure#50933, unitOfMeasures#50934, unitOfMeasureConversions#50935, productionAspect#50936, salesAspect#50937, procurementAspect#50938, productGroup#50939, filteredUnitOfMeasureConversions#50940, quantityNumerator#50941]
(64) Generate
Arguments: explode(filteredUnitOfMeasureConversions#50940.quantityDenominator), true, [quantityDenominator#50942]
(65) Project
Arguments: [product#50901, plant#50902, orderDateTime#50903, productPlant#50913, timezonecode#50927, systemId#50928, internalUUID#50929, id#50930, displayId#50931, name#50932, baseUnitOfMeasure#50933, unitOfMeasures#50934, unitOfMeasureConversions#50935, productionAspect#50936, salesAspect#50937, procurementAspect#50938, productGroup#50939, filteredUnitOfMeasureConversions#50940, quantityNumerator#50941, quantityDenominator#50942]
(66) Project
Arguments: [product#50901, plant#50902, orderDateTime#50903, productPlant#50913, timezonecode#50927, systemId#50928, internalUUID#50929, id#50930, displayId#50931, name#50932, baseUnitOfMeasure#50933, unitOfMeasures#50934, unitOfMeasureConversions#50935, productionAspect#50936, salesAspect#50937, procurementAspect#50938, productGroup#50939, filteredUnitOfMeasureConversions#50940, quantityNumerator#50941, quantityDenominator#50942, (cast(quantityNumerator#50941 as double) / cast(quantityDenominator#50942 as double)) AS outboundUnit#50943]
(67) Project
Arguments: [product#50901, plant#50902, orderDateTime#50903, productPlant#50913, timezonecode#50927, systemId#50928, internalUUID#50929, id#50930, displayId#50931, name#50932, baseUnitOfMeasure#50933, unitOfMeasures#50934, unitOfMeasureConversions#50935, productionAspect#50936, salesAspect#50937, procurementAspect#50938, productGroup#50939, filteredUnitOfMeasureConversions#50940, quantityNumerator#50941, quantityDenominator#50942, CASE WHEN (isnull(outboundUnit#50943) OR (outboundUnit#50943 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#50943 END AS outboundUnit#50944]
(68) Project
Arguments: [product#50901, plant#50902, orderDateTime#50903, productPlant#50913, timezonecode#50927, outboundUnit#50944]
(69) Project
Arguments: [plant#50902]
(70) Deduplicate
Arguments: [plant#50902]
(71) Join
Arguments: Inner, (plantUuid#50631 = plant#50902)
(72) Project
Arguments: [plantId#50630, plantUuid#50631, storageLocId#50637, storageLocUuid#50638]
(73) Join
Arguments: Inner, (plant#50644.internalRefUUID <=> plantUuid#50631)
(74) Generate
Arguments: explode(filter(stockQuantities#50646, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#50638) AND (lambda x#50650.storageLocation.Id = storageLocId#50637)), lambda x#50650, false))), false, [stockQuantity#50651]
(75) Project
Arguments: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50645, stockQuantities#50646, plantId#50630, plantUuid#50631, storageLocId#50637, storageLocUuid#50638, stockQuantity#50651]
(76) Aggregate
Arguments: [plantUuid#50631, internalUUID#50642, plant#50644, product#50643, systemId#50641], [plantUuid#50631, internalUUID#50642, plant#50644, product#50643, systemId#50641, first(calculationDateTime#50645, false) AS calculationDateTime#50652, collect_list(stockQuantity#50651, 0, 0) AS stockQuantities#50653]
(77) Project
Arguments: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50652, stockQuantities#50653]
(78) Generate
Arguments: explode(stockQuantities#50653), false, [stockQuantity#50668]
(79) Project
Arguments: [systemId#50641, internalUUID#50642, product#50643, plant#50644, calculationDateTime#50652, stockQuantities#50653, stockQuantity#50668]
(80) Project
Arguments: [plant#50644.id AS plant#50669, plant#50644.internalRefUUID AS plantUuid#50670, product#50643.id AS product#50671, product#50643.internalRefUUID AS productUuid#50672, calculationDateTime#50652, stockQuantity#50668.storagelocation.id AS storageLocId#50673, stockQuantity#50668.storagelocation.internalRefUUID AS storageLocUuid#50674, stockQuantity#50668.quantity.measure AS quantity#50675, stockQuantity#50668.specialStockIndicator.code AS specialStockIndicator#50676, stockQuantity#50668.stockType.code AS stockType#50677]
(81) Filter
Arguments: ((specialStockIndicator#50676 = ) AND (stockType#50677 = 01))
(82) LogicalRelation
Arguments: parquet, [product#50687, plant#50688, orderDateTime#50689, planningStartDateTime#50690], false
(83) RepartitionByExpression
Arguments: [product#50687, plant#50688], 10
(84) Project
Arguments: [product#50687, plant#50688, orderDateTime#50689]
(85) LogicalRelation
Arguments: parquet, [systemId#50691, internalUUID#50692, plant#50693, product#50694, blockedForReplenishmentStartingFrom#50695, productionAspect#50696, salesPlant#50697, listing#50698], false
(86) Repartition
Arguments: 10, true
(87) Project
Arguments: [systemId#50691, internalUUID#50692, plant#50693, product#50694, blockedForReplenishmentStartingFrom#50695, productionAspect#50696, salesPlant#50697, listing#50698, struct(systemId, systemId#50691, internalUUID, internalUUID#50692, plant, plant#50693, product, product#50694, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#50695, productionAspect, productionAspect#50696, salesPlant, salesPlant#50697, listing, listing#50698) AS productPlant#50699]
(88) Project
Arguments: [productPlant#50699]
(89) Join
Arguments: LeftOuter, ((product#50687 <=> productPlant#50699.product.internalRefUUID) AND (plant#50688 <=> productPlant#50699.plant.internalRefUUID))
(90) Project
Arguments: [product#50687, plant#50688, orderDateTime#50689, productPlant#50699]
(91) SubqueryAlias
Arguments: wl
(92) LogicalRelation
Arguments: parquet, [systemId#50700, internalUUID#50701, id#50702, displayId#50703, name#50704, category#50705, companyCode#50706, address#50707, mainDistributionChain#50708, mainPurchasingOrganization#50709, validPurchasingOrganizations#50710, productGroup#50711], false
(93) Repartition
Arguments: 10, true
(94) Project
Arguments: [internalUUID#50701, address#50707.timeZone.code AS timezonecode#50712]
(95) Join
Arguments: LeftOuter, (plant#50688 <=> internalUUID#50701)
(96) Project
Arguments: [product#50687, plant#50688, orderDateTime#50689, productPlant#50699, internalUUID#50701, CASE WHEN isnotnull(timezonecode#50712) THEN timezonecode#50712 ELSE UTC END AS timezonecode#50713]
(97) Project
Arguments: [product#50687, plant#50688, orderDateTime#50689, productPlant#50699, timezonecode#50713]
(98) LogicalRelation
Arguments: parquet, [systemId#50714, internalUUID#50715, id#50716, displayId#50717, name#50718, baseUnitOfMeasure#50719, unitOfMeasures#50720, unitOfMeasureConversions#50721, productionAspect#50722, salesAspect#50723, procurementAspect#50724, productGroup#50725], false
(99) Repartition
Arguments: 10, true
(100) Join
Arguments: LeftOuter, (product#50687 = internalUUID#50715)
(101) Project
Arguments: [product#50687, plant#50688, orderDateTime#50689, productPlant#50699, timezonecode#50713, systemId#50714, internalUUID#50715, id#50716, displayId#50717, name#50718, baseUnitOfMeasure#50719, unitOfMeasures#50720, unitOfMeasureConversions#50721, productionAspect#50722, salesAspect#50723, procurementAspect#50724, productGroup#50725, filter(unitOfMeasureConversions#50721, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#50699.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#50699.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50719.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50719.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50726]
(102) Generate
Arguments: explode(filteredUnitOfMeasureConversions#50726.quantityNumerator), true, [quantityNumerator#50727]
(103) Project
Arguments: [product#50687, plant#50688, orderDateTime#50689, productPlant#50699, timezonecode#50713, systemId#50714, internalUUID#50715, id#50716, displayId#50717, name#50718, baseUnitOfMeasure#50719, unitOfMeasures#50720, unitOfMeasureConversions#50721, productionAspect#50722, salesAspect#50723, procurementAspect#50724, productGroup#50725, filteredUnitOfMeasureConversions#50726, quantityNumerator#50727]
(104) Generate
Arguments: explode(filteredUnitOfMeasureConversions#50726.quantityDenominator), true, [quantityDenominator#50728]
(105) Project
Arguments: [product#50687, plant#50688, orderDateTime#50689, productPlant#50699, timezonecode#50713, systemId#50714, internalUUID#50715, id#50716, displayId#50717, name#50718, baseUnitOfMeasure#50719, unitOfMeasures#50720, unitOfMeasureConversions#50721, productionAspect#50722, salesAspect#50723, procurementAspect#50724, productGroup#50725, filteredUnitOfMeasureConversions#50726, quantityNumerator#50727, quantityDenominator#50728]
(106) Project
Arguments: [product#50687, plant#50688, orderDateTime#50689, productPlant#50699, timezonecode#50713, systemId#50714, internalUUID#50715, id#50716, displayId#50717, name#50718, baseUnitOfMeasure#50719, unitOfMeasures#50720, unitOfMeasureConversions#50721, productionAspect#50722, salesAspect#50723, procurementAspect#50724, productGroup#50725, filteredUnitOfMeasureConversions#50726, quantityNumerator#50727, quantityDenominator#50728, (cast(quantityNumerator#50727 as double) / cast(quantityDenominator#50728 as double)) AS outboundUnit#50729]
(107) Project
Arguments: [product#50687, plant#50688, orderDateTime#50689, productPlant#50699, timezonecode#50713, systemId#50714, internalUUID#50715, id#50716, displayId#50717, name#50718, baseUnitOfMeasure#50719, unitOfMeasures#50720, unitOfMeasureConversions#50721, productionAspect#50722, salesAspect#50723, procurementAspect#50724, productGroup#50725, filteredUnitOfMeasureConversions#50726, quantityNumerator#50727, quantityDenominator#50728, CASE WHEN (isnull(outboundUnit#50729) OR (outboundUnit#50729 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#50729 END AS outboundUnit#50730]
(108) Project
Arguments: [product#50687, plant#50688, orderDateTime#50689, productPlant#50699, timezonecode#50713, outboundUnit#50730]
(109) Join
Arguments: Inner, ((plantUuid#50670 = plant#50688) AND (productUuid#50672 = product#50687))
(110) Filter
Arguments: (calculationDateTime#50652 <= orderDateTime#50689)
(111) Project
Arguments: [plantUuid#50670 AS plant#50735, productUuid#50672 AS product#50736, storageLocId#50673, calculationDateTime#50652, quantity#50675]
(112) LogicalRelation
Arguments: parquet, [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, stockQuantities#50749], false
(113) Repartition
Arguments: 10, true
(114) LogicalRelation
Arguments: parquet, [marketUnit#50750, description#50751, articleHierarchy#50752, defaultCurrency#50753, responsibilities#50754, replenishmentTypes#50755, distributionCenters#50756, assignedArticleHierarchyNodes#50757, minOrderQtySetting#50758, minOrderQtySettingInternal#50759, listingCheck#50760, odsSelection#50761, demandProfiles#50762, constraintProfiles#50763, optimizationProfiles#50764, orderGroupSplitProfiles#50765, supplierMinimumProfiles#50766, multipleRestrictionProfiles#50767, preferredUomSource#50768, handlingOfUnfulfilledDemands#50769, negligibleQuantitiesThreshold#50770, eventtype#50771], false
(115) Repartition
Arguments: 10, true
(116) Filter
Arguments: (marketUnit#50750 <=> DIP_1691)
(117) Project
Arguments: [marketUnit#50750, description#50751, articleHierarchy#50752, defaultCurrency#50753, responsibilities#50754, replenishmentTypes#50755, distributionCenters#50756, assignedArticleHierarchyNodes#50757, minOrderQtySetting#50758, minOrderQtySettingInternal#50759, listingCheck#50760, odsSelection#50761, demandProfiles#50762, constraintProfiles#50763, optimizationProfiles#50764, orderGroupSplitProfiles#50765, supplierMinimumProfiles#50766, multipleRestrictionProfiles#50767, preferredUomSource#50768, handlingOfUnfulfilledDemands#50769, negligibleQuantitiesThreshold#50770, eventtype#50771]
(118) Project
Arguments: [distributionCenters#50756]
(119) Generate
Arguments: explode(distributionCenters#50756), false, [distributionCenters#50772]
(120) Project
Arguments: [distributionCenters#50772]
(121) Generate
Arguments: explode(distributionCenters#50772.storageLocations), false, [storageLocations#50773]
(122) Project
Arguments: [distributionCenters#50772.id AS plantId#50774, distributionCenters#50772.internalRefUUID AS plantUuid#50775, storageLocations#50773]
(123) Project
Arguments: [plantId#50774, plantUuid#50775, storageLocations#50773.id AS storageLocId#50776, storageLocations#50773.internalRefUUID AS storageLocUuid#50777]
(124) LogicalRelation
Arguments: parquet, [product#50778, plant#50779, orderDateTime#50780, planningStartDateTime#50781], false
(125) RepartitionByExpression
Arguments: [product#50778, plant#50779], 10
(126) Project
Arguments: [product#50778, plant#50779, orderDateTime#50780]
(127) LogicalRelation
Arguments: parquet, [systemId#50782, internalUUID#50783, plant#50784, product#50785, blockedForReplenishmentStartingFrom#50786, productionAspect#50787, salesPlant#50788, listing#50789], false
(128) Repartition
Arguments: 10, true
(129) Project
Arguments: [systemId#50782, internalUUID#50783, plant#50784, product#50785, blockedForReplenishmentStartingFrom#50786, productionAspect#50787, salesPlant#50788, listing#50789, struct(systemId, systemId#50782, internalUUID, internalUUID#50783, plant, plant#50784, product, product#50785, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#50786, productionAspect, productionAspect#50787, salesPlant, salesPlant#50788, listing, listing#50789) AS productPlant#50790]
(130) Project
Arguments: [productPlant#50790]
(131) Join
Arguments: LeftOuter, ((product#50778 <=> productPlant#50790.product.internalRefUUID) AND (plant#50779 <=> productPlant#50790.plant.internalRefUUID))
(132) Project
Arguments: [product#50778, plant#50779, orderDateTime#50780, productPlant#50790]
(133) SubqueryAlias
Arguments: wl
(134) LogicalRelation
Arguments: parquet, [systemId#50791, internalUUID#50792, id#50793, displayId#50794, name#50795, category#50796, companyCode#50797, address#50798, mainDistributionChain#50799, mainPurchasingOrganization#50800, validPurchasingOrganizations#50801, productGroup#50802], false
(135) Repartition
Arguments: 10, true
(136) Project
Arguments: [internalUUID#50792, address#50798.timeZone.code AS timezonecode#50803]
(137) Join
Arguments: LeftOuter, (plant#50779 <=> internalUUID#50792)
(138) Project
Arguments: [product#50778, plant#50779, orderDateTime#50780, productPlant#50790, internalUUID#50792, CASE WHEN isnotnull(timezonecode#50803) THEN timezonecode#50803 ELSE UTC END AS timezonecode#50804]
(139) Project
Arguments: [product#50778, plant#50779, orderDateTime#50780, productPlant#50790, timezonecode#50804]
(140) LogicalRelation
Arguments: parquet, [systemId#50805, internalUUID#50806, id#50807, displayId#50808, name#50809, baseUnitOfMeasure#50810, unitOfMeasures#50811, unitOfMeasureConversions#50812, productionAspect#50813, salesAspect#50814, procurementAspect#50815, productGroup#50816], false
(141) Repartition
Arguments: 10, true
(142) Join
Arguments: LeftOuter, (product#50778 = internalUUID#50806)
(143) Project
Arguments: [product#50778, plant#50779, orderDateTime#50780, productPlant#50790, timezonecode#50804, systemId#50805, internalUUID#50806, id#50807, displayId#50808, name#50809, baseUnitOfMeasure#50810, unitOfMeasures#50811, unitOfMeasureConversions#50812, productionAspect#50813, salesAspect#50814, procurementAspect#50815, productGroup#50816, filter(unitOfMeasureConversions#50812, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#50790.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#50790.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50810.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50810.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50817]
(144) Generate
Arguments: explode(filteredUnitOfMeasureConversions#50817.quantityNumerator), true, [quantityNumerator#50818]
(145) Project
Arguments: [product#50778, plant#50779, orderDateTime#50780, productPlant#50790, timezonecode#50804, systemId#50805, internalUUID#50806, id#50807, displayId#50808, name#50809, baseUnitOfMeasure#50810, unitOfMeasures#50811, unitOfMeasureConversions#50812, productionAspect#50813, salesAspect#50814, procurementAspect#50815, productGroup#50816, filteredUnitOfMeasureConversions#50817, quantityNumerator#50818]
(146) Generate
Arguments: explode(filteredUnitOfMeasureConversions#50817.quantityDenominator), true, [quantityDenominator#50819]
(147) Project
Arguments: [product#50778, plant#50779, orderDateTime#50780, productPlant#50790, timezonecode#50804, systemId#50805, internalUUID#50806, id#50807, displayId#50808, name#50809, baseUnitOfMeasure#50810, unitOfMeasures#50811, unitOfMeasureConversions#50812, productionAspect#50813, salesAspect#50814, procurementAspect#50815, productGroup#50816, filteredUnitOfMeasureConversions#50817, quantityNumerator#50818, quantityDenominator#50819]
(148) Project
Arguments: [product#50778, plant#50779, orderDateTime#50780, productPlant#50790, timezonecode#50804, systemId#50805, internalUUID#50806, id#50807, displayId#50808, name#50809, baseUnitOfMeasure#50810, unitOfMeasures#50811, unitOfMeasureConversions#50812, productionAspect#50813, salesAspect#50814, procurementAspect#50815, productGroup#50816, filteredUnitOfMeasureConversions#50817, quantityNumerator#50818, quantityDenominator#50819, (cast(quantityNumerator#50818 as double) / cast(quantityDenominator#50819 as double)) AS outboundUnit#50820]
(149) Project
Arguments: [product#50778, plant#50779, orderDateTime#50780, productPlant#50790, timezonecode#50804, systemId#50805, internalUUID#50806, id#50807, displayId#50808, name#50809, baseUnitOfMeasure#50810, unitOfMeasures#50811, unitOfMeasureConversions#50812, productionAspect#50813, salesAspect#50814, procurementAspect#50815, productGroup#50816, filteredUnitOfMeasureConversions#50817, quantityNumerator#50818, quantityDenominator#50819, CASE WHEN (isnull(outboundUnit#50820) OR (outboundUnit#50820 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#50820 END AS outboundUnit#50821]
(150) Project
Arguments: [product#50778, plant#50779, orderDateTime#50780, productPlant#50790, timezonecode#50804, outboundUnit#50821]
(151) Project
Arguments: [plant#50779]
(152) Deduplicate
Arguments: [plant#50779]
(153) Join
Arguments: Inner, (plantUuid#50775 = plant#50779)
(154) Project
Arguments: [plantId#50774, plantUuid#50775, storageLocId#50776, storageLocUuid#50777]
(155) Join
Arguments: Inner, (plant#50747.internalRefUUID <=> plantUuid#50775)
(156) Generate
Arguments: explode(filter(stockQuantities#50749, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#50777) AND (lambda x#50650.storageLocation.Id = storageLocId#50776)), lambda x#50650, false))), false, [stockQuantity#50822]
(157) Project
Arguments: [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50748, stockQuantities#50749, plantId#50774, plantUuid#50775, storageLocId#50776, storageLocUuid#50777, stockQuantity#50822]
(158) Aggregate
Arguments: [plantUuid#50775, internalUUID#50745, plant#50747, product#50746, systemId#50744], [plantUuid#50775, internalUUID#50745, plant#50747, product#50746, systemId#50744, first(calculationDateTime#50748, false) AS calculationDateTime#50823, collect_list(stockQuantity#50822, 0, 0) AS stockQuantities#50824]
(159) Project
Arguments: [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50823, stockQuantities#50824]
(160) Generate
Arguments: explode(stockQuantities#50824), false, [stockQuantity#50825]
(161) Project
Arguments: [systemId#50744, internalUUID#50745, product#50746, plant#50747, calculationDateTime#50823, stockQuantities#50824, stockQuantity#50825]
(162) Project
Arguments: [plant#50747.id AS plant#50826, plant#50747.internalRefUUID AS plantUuid#50827, product#50746.id AS product#50828, product#50746.internalRefUUID AS productUuid#50829, calculationDateTime#50823, stockQuantity#50825.storagelocation.id AS storageLocId#50830, stockQuantity#50825.storagelocation.internalRefUUID AS storageLocUuid#50831, stockQuantity#50825.quantity.measure AS quantity#50832, stockQuantity#50825.specialStockIndicator.code AS specialStockIndicator#50833, stockQuantity#50825.stockType.code AS stockType#50834]
(163) Filter
Arguments: ((specialStockIndicator#50833 = ) AND (stockType#50834 = 01))
(164) LogicalRelation
Arguments: parquet, [product#50835, plant#50836, orderDateTime#50837, planningStartDateTime#50838], false
(165) RepartitionByExpression
Arguments: [product#50835, plant#50836], 10
(166) Project
Arguments: [product#50835, plant#50836, orderDateTime#50837]
(167) LogicalRelation
Arguments: parquet, [systemId#50839, internalUUID#50840, plant#50841, product#50842, blockedForReplenishmentStartingFrom#50843, productionAspect#50844, salesPlant#50845, listing#50846], false
(168) Repartition
Arguments: 10, true
(169) Project
Arguments: [systemId#50839, internalUUID#50840, plant#50841, product#50842, blockedForReplenishmentStartingFrom#50843, productionAspect#50844, salesPlant#50845, listing#50846, struct(systemId, systemId#50839, internalUUID, internalUUID#50840, plant, plant#50841, product, product#50842, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#50843, productionAspect, productionAspect#50844, salesPlant, salesPlant#50845, listing, listing#50846) AS productPlant#50847]
(170) Project
Arguments: [productPlant#50847]
(171) Join
Arguments: LeftOuter, ((product#50835 <=> productPlant#50847.product.internalRefUUID) AND (plant#50836 <=> productPlant#50847.plant.internalRefUUID))
(172) Project
Arguments: [product#50835, plant#50836, orderDateTime#50837, productPlant#50847]
(173) SubqueryAlias
Arguments: wl
(174) LogicalRelation
Arguments: parquet, [systemId#50848, internalUUID#50849, id#50850, displayId#50851, name#50852, category#50853, companyCode#50854, address#50855, mainDistributionChain#50856, mainPurchasingOrganization#50857, validPurchasingOrganizations#50858, productGroup#50859], false
(175) Repartition
Arguments: 10, true
(176) Project
Arguments: [internalUUID#50849, address#50855.timeZone.code AS timezonecode#50860]
(177) Join
Arguments: LeftOuter, (plant#50836 <=> internalUUID#50849)
(178) Project
Arguments: [product#50835, plant#50836, orderDateTime#50837, productPlant#50847, internalUUID#50849, CASE WHEN isnotnull(timezonecode#50860) THEN timezonecode#50860 ELSE UTC END AS timezonecode#50861]
(179) Project
Arguments: [product#50835, plant#50836, orderDateTime#50837, productPlant#50847, timezonecode#50861]
(180) LogicalRelation
Arguments: parquet, [systemId#50862, internalUUID#50863, id#50864, displayId#50865, name#50866, baseUnitOfMeasure#50867, unitOfMeasures#50868, unitOfMeasureConversions#50869, productionAspect#50870, salesAspect#50871, procurementAspect#50872, productGroup#50873], false
(181) Repartition
Arguments: 10, true
(182) Join
Arguments: LeftOuter, (product#50835 = internalUUID#50863)
(183) Project
Arguments: [product#50835, plant#50836, orderDateTime#50837, productPlant#50847, timezonecode#50861, systemId#50862, internalUUID#50863, id#50864, displayId#50865, name#50866, baseUnitOfMeasure#50867, unitOfMeasures#50868, unitOfMeasureConversions#50869, productionAspect#50870, salesAspect#50871, procurementAspect#50872, productGroup#50873, filter(unitOfMeasureConversions#50869, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#50847.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#50847.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#50867.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#50867.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#50874]
(184) Generate
Arguments: explode(filteredUnitOfMeasureConversions#50874.quantityNumerator), true, [quantityNumerator#50875]
(185) Project
Arguments: [product#50835, plant#50836, orderDateTime#50837, productPlant#50847, timezonecode#50861, systemId#50862, internalUUID#50863, id#50864, displayId#50865, name#50866, baseUnitOfMeasure#50867, unitOfMeasures#50868, unitOfMeasureConversions#50869, productionAspect#50870, salesAspect#50871, procurementAspect#50872, productGroup#50873, filteredUnitOfMeasureConversions#50874, quantityNumerator#50875]
(186) Generate
Arguments: explode(filteredUnitOfMeasureConversions#50874.quantityDenominator), true, [quantityDenominator#50876]
(187) Project
Arguments: [product#50835, plant#50836, orderDateTime#50837, productPlant#50847, timezonecode#50861, systemId#50862, internalUUID#50863, id#50864, displayId#50865, name#50866, baseUnitOfMeasure#50867, unitOfMeasures#50868, unitOfMeasureConversions#50869, productionAspect#50870, salesAspect#50871, procurementAspect#50872, productGroup#50873, filteredUnitOfMeasureConversions#50874, quantityNumerator#50875, quantityDenominator#50876]
(188) Project
Arguments: [product#50835, plant#50836, orderDateTime#50837, productPlant#50847, timezonecode#50861, systemId#50862, internalUUID#50863, id#50864, displayId#50865, name#50866, baseUnitOfMeasure#50867, unitOfMeasures#50868, unitOfMeasureConversions#50869, productionAspect#50870, salesAspect#50871, procurementAspect#50872, productGroup#50873, filteredUnitOfMeasureConversions#50874, quantityNumerator#50875, quantityDenominator#50876, (cast(quantityNumerator#50875 as double) / cast(quantityDenominator#50876 as double)) AS outboundUnit#50877]
(189) Project
Arguments: [product#50835, plant#50836, orderDateTime#50837, productPlant#50847, timezonecode#50861, systemId#50862, internalUUID#50863, id#50864, displayId#50865, name#50866, baseUnitOfMeasure#50867, unitOfMeasures#50868, unitOfMeasureConversions#50869, productionAspect#50870, salesAspect#50871, procurementAspect#50872, productGroup#50873, filteredUnitOfMeasureConversions#50874, quantityNumerator#50875, quantityDenominator#50876, CASE WHEN (isnull(outboundUnit#50877) OR (outboundUnit#50877 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#50877 END AS outboundUnit#50878]
(190) Project
Arguments: [product#50835, plant#50836, orderDateTime#50837, productPlant#50847, timezonecode#50861, outboundUnit#50878]
(191) Join
Arguments: Inner, ((plantUuid#50827 = plant#50836) AND (productUuid#50829 = product#50835))
(192) Filter
Arguments: (calculationDateTime#50823 <= orderDateTime#50837)
(193) Project
Arguments: [plantUuid#50827 AS plant#50879, productUuid#50829 AS product#50880, storageLocId#50830, calculationDateTime#50823, quantity#50832]
(194) Aggregate
Arguments: [plant#50879, product#50880, storageLocId#50830], [plant#50879, product#50880, storageLocId#50830, max(calculationDateTime#50823) AS max_calc_datetime#50737]
(195) Join
Arguments: Inner, ((((plant#50735 <=> plant#50879) AND (product#50736 <=> product#50880)) AND (storageLocId#50673 <=> storageLocId#50830)) AND (calculationDateTime#50652 <=> max_calc_datetime#50737))
(196) Project
Arguments: [plant#50735, product#50736, storageLocId#50673, calculationDateTime#50652, quantity#50675]
(197) Aggregate
Arguments: [product#50736, plant#50735], [product#50736, plant#50735, sum(quantity#50675) AS quantitySum#50891, min(calculationDateTime#50652) AS minCalculationDateTime#50892]
(198) Project
Arguments: [product#50736, plant#50735, quantitySum#50891, minCalculationDateTime#50892, round(quantitySum#50891, 0) AS roundedQuantitySum#50900]
(199) Join
Arguments: LeftOuter, ((plant#50546 = plant#50735) AND (product#50545 = product#50736))
(200) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, roundedQuantitySum#50900, minCalculationDateTime#50892]
(201) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, roundedQuantitySum#50900, minCalculationDateTime#50892, CASE WHEN isnotnull(minCalculationDateTime#50892) THEN minCalculationDateTime#50892 ELSE orderDateTime#50547 END AS stockDatetime#50949]
(202) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, roundedQuantitySum#50900, minCalculationDateTime#50892, stockDatetime#50949, CASE WHEN isnotnull(roundedQuantitySum#50900) THEN array(roundedQuantitySum#50900) ELSE array(0.0) END AS stockBatchQuantities#50950]
(203) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, roundedQuantitySum#50900, minCalculationDateTime#50892, stockDatetime#50949, stockBatchQuantities#50950, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#50951]
(204) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, roundedQuantitySum#50900, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951]
(205) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951]
(206) LogicalRelation
Arguments: parquet, [product#51026, plant#51027, orderDateTime#51028, planningStartDateTime#51029], false
(207) RepartitionByExpression
Arguments: [product#51026, plant#51027], 10
(208) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028]
(209) LogicalRelation
Arguments: parquet, [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037], false
(210) Repartition
Arguments: 10, true
(211) Project
Arguments: [systemId#51030, internalUUID#51031, plant#51032, product#51033, blockedForReplenishmentStartingFrom#51034, productionAspect#51035, salesPlant#51036, listing#51037, struct(systemId, systemId#51030, internalUUID, internalUUID#51031, plant, plant#51032, product, product#51033, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#51034, productionAspect, productionAspect#51035, salesPlant, salesPlant#51036, listing, listing#51037) AS productPlant#51038]
(212) Project
Arguments: [productPlant#51038]
(213) Join
Arguments: LeftOuter, ((product#51026 <=> productPlant#51038.product.internalRefUUID) AND (plant#51027 <=> productPlant#51038.plant.internalRefUUID))
(214) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038]
(215) SubqueryAlias
Arguments: wl
(216) LogicalRelation
Arguments: parquet, [systemId#51039, internalUUID#51040, id#51041, displayId#51042, name#51043, category#51044, companyCode#51045, address#51046, mainDistributionChain#51047, mainPurchasingOrganization#51048, validPurchasingOrganizations#51049, productGroup#51050], false
(217) Repartition
Arguments: 10, true
(218) Project
Arguments: [internalUUID#51040, address#51046.timeZone.code AS timezonecode#51051]
(219) Join
Arguments: LeftOuter, (plant#51027 <=> internalUUID#51040)
(220) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, internalUUID#51040, CASE WHEN isnotnull(timezonecode#51051) THEN timezonecode#51051 ELSE UTC END AS timezonecode#51052]
(221) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052]
(222) LogicalRelation
Arguments: parquet, [systemId#51053, internalUUID#51054, id#51055, displayId#51056, name#51057, baseUnitOfMeasure#51058, unitOfMeasures#51059, unitOfMeasureConversions#51060, productionAspect#51061, salesAspect#51062, procurementAspect#51063, productGroup#51064], false
(223) Repartition
Arguments: 10, true
(224) Join
Arguments: LeftOuter, (product#51026 = internalUUID#51054)
(225) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, systemId#51053, internalUUID#51054, id#51055, displayId#51056, name#51057, baseUnitOfMeasure#51058, unitOfMeasures#51059, unitOfMeasureConversions#51060, productionAspect#51061, salesAspect#51062, procurementAspect#51063, productGroup#51064, filter(unitOfMeasureConversions#51060, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51058.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51058.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51065]
(226) Generate
Arguments: explode(filteredUnitOfMeasureConversions#51065.quantityNumerator), true, [quantityNumerator#51066]
(227) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, systemId#51053, internalUUID#51054, id#51055, displayId#51056, name#51057, baseUnitOfMeasure#51058, unitOfMeasures#51059, unitOfMeasureConversions#51060, productionAspect#51061, salesAspect#51062, procurementAspect#51063, productGroup#51064, filteredUnitOfMeasureConversions#51065, quantityNumerator#51066]
(228) Generate
Arguments: explode(filteredUnitOfMeasureConversions#51065.quantityDenominator), true, [quantityDenominator#51067]
(229) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, systemId#51053, internalUUID#51054, id#51055, displayId#51056, name#51057, baseUnitOfMeasure#51058, unitOfMeasures#51059, unitOfMeasureConversions#51060, productionAspect#51061, salesAspect#51062, procurementAspect#51063, productGroup#51064, filteredUnitOfMeasureConversions#51065, quantityNumerator#51066, quantityDenominator#51067]
(230) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, systemId#51053, internalUUID#51054, id#51055, displayId#51056, name#51057, baseUnitOfMeasure#51058, unitOfMeasures#51059, unitOfMeasureConversions#51060, productionAspect#51061, salesAspect#51062, procurementAspect#51063, productGroup#51064, filteredUnitOfMeasureConversions#51065, quantityNumerator#51066, quantityDenominator#51067, (cast(quantityNumerator#51066 as double) / cast(quantityDenominator#51067 as double)) AS outboundUnit#51068]
(231) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, systemId#51053, internalUUID#51054, id#51055, displayId#51056, name#51057, baseUnitOfMeasure#51058, unitOfMeasures#51059, unitOfMeasureConversions#51060, productionAspect#51061, salesAspect#51062, procurementAspect#51063, productGroup#51064, filteredUnitOfMeasureConversions#51065, quantityNumerator#51066, quantityDenominator#51067, CASE WHEN (isnull(outboundUnit#51068) OR (outboundUnit#51068 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#51068 END AS outboundUnit#51069]
(232) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069]
(233) LogicalRelation
Arguments: parquet, [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075], false
(234) Repartition
Arguments: 10, true
(235) LogicalRelation
Arguments: parquet, [marketUnit#51076, description#51077, articleHierarchy#51078, defaultCurrency#51079, responsibilities#51080, replenishmentTypes#51081, distributionCenters#51082, assignedArticleHierarchyNodes#51083, minOrderQtySetting#51084, minOrderQtySettingInternal#51085, listingCheck#51086, odsSelection#51087, demandProfiles#51088, constraintProfiles#51089, optimizationProfiles#51090, orderGroupSplitProfiles#51091, supplierMinimumProfiles#51092, multipleRestrictionProfiles#51093, preferredUomSource#51094, handlingOfUnfulfilledDemands#51095, negligibleQuantitiesThreshold#51096, eventtype#51097], false
(236) Repartition
Arguments: 10, true
(237) Filter
Arguments: (marketUnit#51076 <=> DIP_1691)
(238) Project
Arguments: [marketUnit#51076, description#51077, articleHierarchy#51078, defaultCurrency#51079, responsibilities#51080, replenishmentTypes#51081, distributionCenters#51082, assignedArticleHierarchyNodes#51083, minOrderQtySetting#51084, minOrderQtySettingInternal#51085, listingCheck#51086, odsSelection#51087, demandProfiles#51088, constraintProfiles#51089, optimizationProfiles#51090, orderGroupSplitProfiles#51091, supplierMinimumProfiles#51092, multipleRestrictionProfiles#51093, preferredUomSource#51094, handlingOfUnfulfilledDemands#51095, negligibleQuantitiesThreshold#51096, eventtype#51097]
(239) Project
Arguments: [distributionCenters#51082]
(240) Generate
Arguments: explode(distributionCenters#51082), false, [distributionCenters#51098]
(241) Project
Arguments: [distributionCenters#51098]
(242) Generate
Arguments: explode(distributionCenters#51098.storageLocations), false, [storageLocations#51099]
(243) Project
Arguments: [distributionCenters#51098.id AS plantId#51100, distributionCenters#51098.internalRefUUID AS plantUuid#51101, storageLocations#51099]
(244) Project
Arguments: [plantId#51100, plantUuid#51101, storageLocations#51099.id AS storageLocId#51102, storageLocations#51099.internalRefUUID AS storageLocUuid#51103]
(245) LogicalRelation
Arguments: parquet, [product#51104, plant#51105, orderDateTime#51106, planningStartDateTime#51107], false
(246) RepartitionByExpression
Arguments: [product#51104, plant#51105], 10
(247) Project
Arguments: [product#51104, plant#51105, orderDateTime#51106]
(248) LogicalRelation
Arguments: parquet, [systemId#51108, internalUUID#51109, plant#51110, product#51111, blockedForReplenishmentStartingFrom#51112, productionAspect#51113, salesPlant#51114, listing#51115], false
(249) Repartition
Arguments: 10, true
(250) Project
Arguments: [systemId#51108, internalUUID#51109, plant#51110, product#51111, blockedForReplenishmentStartingFrom#51112, productionAspect#51113, salesPlant#51114, listing#51115, struct(systemId, systemId#51108, internalUUID, internalUUID#51109, plant, plant#51110, product, product#51111, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#51112, productionAspect, productionAspect#51113, salesPlant, salesPlant#51114, listing, listing#51115) AS productPlant#51116]
(251) Project
Arguments: [productPlant#51116]
(252) Join
Arguments: LeftOuter, ((product#51104 <=> productPlant#51116.product.internalRefUUID) AND (plant#51105 <=> productPlant#51116.plant.internalRefUUID))
(253) Project
Arguments: [product#51104, plant#51105, orderDateTime#51106, productPlant#51116]
(254) SubqueryAlias
Arguments: wl
(255) LogicalRelation
Arguments: parquet, [systemId#51117, internalUUID#51118, id#51119, displayId#51120, name#51121, category#51122, companyCode#51123, address#51124, mainDistributionChain#51125, mainPurchasingOrganization#51126, validPurchasingOrganizations#51127, productGroup#51128], false
(256) Repartition
Arguments: 10, true
(257) Project
Arguments: [internalUUID#51118, address#51124.timeZone.code AS timezonecode#51129]
(258) Join
Arguments: LeftOuter, (plant#51105 <=> internalUUID#51118)
(259) Project
Arguments: [product#51104, plant#51105, orderDateTime#51106, productPlant#51116, internalUUID#51118, CASE WHEN isnotnull(timezonecode#51129) THEN timezonecode#51129 ELSE UTC END AS timezonecode#51130]
(260) Project
Arguments: [product#51104, plant#51105, orderDateTime#51106, productPlant#51116, timezonecode#51130]
(261) LogicalRelation
Arguments: parquet, [systemId#51131, internalUUID#51132, id#51133, displayId#51134, name#51135, baseUnitOfMeasure#51136, unitOfMeasures#51137, unitOfMeasureConversions#51138, productionAspect#51139, salesAspect#51140, procurementAspect#51141, productGroup#51142], false
(262) Repartition
Arguments: 10, true
(263) Join
Arguments: LeftOuter, (product#51104 = internalUUID#51132)
(264) Project
Arguments: [product#51104, plant#51105, orderDateTime#51106, productPlant#51116, timezonecode#51130, systemId#51131, internalUUID#51132, id#51133, displayId#51134, name#51135, baseUnitOfMeasure#51136, unitOfMeasures#51137, unitOfMeasureConversions#51138, productionAspect#51139, salesAspect#51140, procurementAspect#51141, productGroup#51142, filter(unitOfMeasureConversions#51138, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#51116.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#51116.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51136.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51136.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51143]
(265) Generate
Arguments: explode(filteredUnitOfMeasureConversions#51143.quantityNumerator), true, [quantityNumerator#51144]
(266) Project
Arguments: [product#51104, plant#51105, orderDateTime#51106, productPlant#51116, timezonecode#51130, systemId#51131, internalUUID#51132, id#51133, displayId#51134, name#51135, baseUnitOfMeasure#51136, unitOfMeasures#51137, unitOfMeasureConversions#51138, productionAspect#51139, salesAspect#51140, procurementAspect#51141, productGroup#51142, filteredUnitOfMeasureConversions#51143, quantityNumerator#51144]
(267) Generate
Arguments: explode(filteredUnitOfMeasureConversions#51143.quantityDenominator), true, [quantityDenominator#51145]
(268) Project
Arguments: [product#51104, plant#51105, orderDateTime#51106, productPlant#51116, timezonecode#51130, systemId#51131, internalUUID#51132, id#51133, displayId#51134, name#51135, baseUnitOfMeasure#51136, unitOfMeasures#51137, unitOfMeasureConversions#51138, productionAspect#51139, salesAspect#51140, procurementAspect#51141, productGroup#51142, filteredUnitOfMeasureConversions#51143, quantityNumerator#51144, quantityDenominator#51145]
(269) Project
Arguments: [product#51104, plant#51105, orderDateTime#51106, productPlant#51116, timezonecode#51130, systemId#51131, internalUUID#51132, id#51133, displayId#51134, name#51135, baseUnitOfMeasure#51136, unitOfMeasures#51137, unitOfMeasureConversions#51138, productionAspect#51139, salesAspect#51140, procurementAspect#51141, productGroup#51142, filteredUnitOfMeasureConversions#51143, quantityNumerator#51144, quantityDenominator#51145, (cast(quantityNumerator#51144 as double) / cast(quantityDenominator#51145 as double)) AS outboundUnit#51146]
(270) Project
Arguments: [product#51104, plant#51105, orderDateTime#51106, productPlant#51116, timezonecode#51130, systemId#51131, internalUUID#51132, id#51133, displayId#51134, name#51135, baseUnitOfMeasure#51136, unitOfMeasures#51137, unitOfMeasureConversions#51138, productionAspect#51139, salesAspect#51140, procurementAspect#51141, productGroup#51142, filteredUnitOfMeasureConversions#51143, quantityNumerator#51144, quantityDenominator#51145, CASE WHEN (isnull(outboundUnit#51146) OR (outboundUnit#51146 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#51146 END AS outboundUnit#51147]
(271) Project
Arguments: [product#51104, plant#51105, orderDateTime#51106, productPlant#51116, timezonecode#51130, outboundUnit#51147]
(272) Project
Arguments: [plant#51105]
(273) Deduplicate
Arguments: [plant#51105]
(274) Join
Arguments: Inner, (plantUuid#51101 = plant#51105)
(275) Project
Arguments: [plantId#51100, plantUuid#51101, storageLocId#51102, storageLocUuid#51103]
(276) Join
Arguments: Inner, (plant#51073.internalRefUUID <=> plantUuid#51101)
(277) Generate
Arguments: explode(filter(stockQuantities#51075, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#51103) AND (lambda x#50650.storageLocation.Id = storageLocId#51102)), lambda x#50650, false))), false, [stockQuantity#51148]
(278) Project
Arguments: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51074, stockQuantities#51075, plantId#51100, plantUuid#51101, storageLocId#51102, storageLocUuid#51103, stockQuantity#51148]
(279) Aggregate
Arguments: [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070], [plantUuid#51101, internalUUID#51071, plant#51073, product#51072, systemId#51070, first(calculationDateTime#51074, false) AS calculationDateTime#51149, collect_list(stockQuantity#51148, 0, 0) AS stockQuantities#51150]
(280) Project
Arguments: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51149, stockQuantities#51150]
(281) Generate
Arguments: explode(stockQuantities#51150), false, [stockQuantity#51151]
(282) Project
Arguments: [systemId#51070, internalUUID#51071, product#51072, plant#51073, calculationDateTime#51149, stockQuantities#51150, stockQuantity#51151]
(283) Project
Arguments: [plant#51073.id AS plant#51152, plant#51073.internalRefUUID AS plantUuid#51153, product#51072.id AS product#51154, product#51072.internalRefUUID AS productUuid#51155, calculationDateTime#51149, stockQuantity#51151.storagelocation.id AS storageLocId#51156, stockQuantity#51151.storagelocation.internalRefUUID AS storageLocUuid#51157, stockQuantity#51151.quantity.measure AS quantity#51158, stockQuantity#51151.specialStockIndicator.code AS specialStockIndicator#51159, stockQuantity#51151.stockType.code AS stockType#51160]
(284) Filter
Arguments: ((specialStockIndicator#51159 = ) AND (stockType#51160 = 01))
(285) LogicalRelation
Arguments: parquet, [product#51161, plant#51162, orderDateTime#51163, planningStartDateTime#51164], false
(286) RepartitionByExpression
Arguments: [product#51161, plant#51162], 10
(287) Project
Arguments: [product#51161, plant#51162, orderDateTime#51163]
(288) LogicalRelation
Arguments: parquet, [systemId#51165, internalUUID#51166, plant#51167, product#51168, blockedForReplenishmentStartingFrom#51169, productionAspect#51170, salesPlant#51171, listing#51172], false
(289) Repartition
Arguments: 10, true
(290) Project
Arguments: [systemId#51165, internalUUID#51166, plant#51167, product#51168, blockedForReplenishmentStartingFrom#51169, productionAspect#51170, salesPlant#51171, listing#51172, struct(systemId, systemId#51165, internalUUID, internalUUID#51166, plant, plant#51167, product, product#51168, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#51169, productionAspect, productionAspect#51170, salesPlant, salesPlant#51171, listing, listing#51172) AS productPlant#51173]
(291) Project
Arguments: [productPlant#51173]
(292) Join
Arguments: LeftOuter, ((product#51161 <=> productPlant#51173.product.internalRefUUID) AND (plant#51162 <=> productPlant#51173.plant.internalRefUUID))
(293) Project
Arguments: [product#51161, plant#51162, orderDateTime#51163, productPlant#51173]
(294) SubqueryAlias
Arguments: wl
(295) LogicalRelation
Arguments: parquet, [systemId#51174, internalUUID#51175, id#51176, displayId#51177, name#51178, category#51179, companyCode#51180, address#51181, mainDistributionChain#51182, mainPurchasingOrganization#51183, validPurchasingOrganizations#51184, productGroup#51185], false
(296) Repartition
Arguments: 10, true
(297) Project
Arguments: [internalUUID#51175, address#51181.timeZone.code AS timezonecode#51186]
(298) Join
Arguments: LeftOuter, (plant#51162 <=> internalUUID#51175)
(299) Project
Arguments: [product#51161, plant#51162, orderDateTime#51163, productPlant#51173, internalUUID#51175, CASE WHEN isnotnull(timezonecode#51186) THEN timezonecode#51186 ELSE UTC END AS timezonecode#51187]
(300) Project
Arguments: [product#51161, plant#51162, orderDateTime#51163, productPlant#51173, timezonecode#51187]
(301) LogicalRelation
Arguments: parquet, [systemId#51188, internalUUID#51189, id#51190, displayId#51191, name#51192, baseUnitOfMeasure#51193, unitOfMeasures#51194, unitOfMeasureConversions#51195, productionAspect#51196, salesAspect#51197, procurementAspect#51198, productGroup#51199], false
(302) Repartition
Arguments: 10, true
(303) Join
Arguments: LeftOuter, (product#51161 = internalUUID#51189)
(304) Project
Arguments: [product#51161, plant#51162, orderDateTime#51163, productPlant#51173, timezonecode#51187, systemId#51188, internalUUID#51189, id#51190, displayId#51191, name#51192, baseUnitOfMeasure#51193, unitOfMeasures#51194, unitOfMeasureConversions#51195, productionAspect#51196, salesAspect#51197, procurementAspect#51198, productGroup#51199, filter(unitOfMeasureConversions#51195, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#51173.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#51173.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51193.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51193.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51200]
(305) Generate
Arguments: explode(filteredUnitOfMeasureConversions#51200.quantityNumerator), true, [quantityNumerator#51201]
(306) Project
Arguments: [product#51161, plant#51162, orderDateTime#51163, productPlant#51173, timezonecode#51187, systemId#51188, internalUUID#51189, id#51190, displayId#51191, name#51192, baseUnitOfMeasure#51193, unitOfMeasures#51194, unitOfMeasureConversions#51195, productionAspect#51196, salesAspect#51197, procurementAspect#51198, productGroup#51199, filteredUnitOfMeasureConversions#51200, quantityNumerator#51201]
(307) Generate
Arguments: explode(filteredUnitOfMeasureConversions#51200.quantityDenominator), true, [quantityDenominator#51202]
(308) Project
Arguments: [product#51161, plant#51162, orderDateTime#51163, productPlant#51173, timezonecode#51187, systemId#51188, internalUUID#51189, id#51190, displayId#51191, name#51192, baseUnitOfMeasure#51193, unitOfMeasures#51194, unitOfMeasureConversions#51195, productionAspect#51196, salesAspect#51197, procurementAspect#51198, productGroup#51199, filteredUnitOfMeasureConversions#51200, quantityNumerator#51201, quantityDenominator#51202]
(309) Project
Arguments: [product#51161, plant#51162, orderDateTime#51163, productPlant#51173, timezonecode#51187, systemId#51188, internalUUID#51189, id#51190, displayId#51191, name#51192, baseUnitOfMeasure#51193, unitOfMeasures#51194, unitOfMeasureConversions#51195, productionAspect#51196, salesAspect#51197, procurementAspect#51198, productGroup#51199, filteredUnitOfMeasureConversions#51200, quantityNumerator#51201, quantityDenominator#51202, (cast(quantityNumerator#51201 as double) / cast(quantityDenominator#51202 as double)) AS outboundUnit#51203]
(310) Project
Arguments: [product#51161, plant#51162, orderDateTime#51163, productPlant#51173, timezonecode#51187, systemId#51188, internalUUID#51189, id#51190, displayId#51191, name#51192, baseUnitOfMeasure#51193, unitOfMeasures#51194, unitOfMeasureConversions#51195, productionAspect#51196, salesAspect#51197, procurementAspect#51198, productGroup#51199, filteredUnitOfMeasureConversions#51200, quantityNumerator#51201, quantityDenominator#51202, CASE WHEN (isnull(outboundUnit#51203) OR (outboundUnit#51203 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#51203 END AS outboundUnit#51204]
(311) Project
Arguments: [product#51161, plant#51162, orderDateTime#51163, productPlant#51173, timezonecode#51187, outboundUnit#51204]
(312) Join
Arguments: Inner, ((plantUuid#51153 = plant#51162) AND (productUuid#51155 = product#51161))
(313) Filter
Arguments: (calculationDateTime#51149 <= orderDateTime#51163)
(314) Project
Arguments: [plantUuid#51153 AS plant#51205, productUuid#51155 AS product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158]
(315) LogicalRelation
Arguments: parquet, [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212], false
(316) Repartition
Arguments: 10, true
(317) LogicalRelation
Arguments: parquet, [marketUnit#51213, description#51214, articleHierarchy#51215, defaultCurrency#51216, responsibilities#51217, replenishmentTypes#51218, distributionCenters#51219, assignedArticleHierarchyNodes#51220, minOrderQtySetting#51221, minOrderQtySettingInternal#51222, listingCheck#51223, odsSelection#51224, demandProfiles#51225, constraintProfiles#51226, optimizationProfiles#51227, orderGroupSplitProfiles#51228, supplierMinimumProfiles#51229, multipleRestrictionProfiles#51230, preferredUomSource#51231, handlingOfUnfulfilledDemands#51232, negligibleQuantitiesThreshold#51233, eventtype#51234], false
(318) Repartition
Arguments: 10, true
(319) Filter
Arguments: (marketUnit#51213 <=> DIP_1691)
(320) Project
Arguments: [marketUnit#51213, description#51214, articleHierarchy#51215, defaultCurrency#51216, responsibilities#51217, replenishmentTypes#51218, distributionCenters#51219, assignedArticleHierarchyNodes#51220, minOrderQtySetting#51221, minOrderQtySettingInternal#51222, listingCheck#51223, odsSelection#51224, demandProfiles#51225, constraintProfiles#51226, optimizationProfiles#51227, orderGroupSplitProfiles#51228, supplierMinimumProfiles#51229, multipleRestrictionProfiles#51230, preferredUomSource#51231, handlingOfUnfulfilledDemands#51232, negligibleQuantitiesThreshold#51233, eventtype#51234]
(321) Project
Arguments: [distributionCenters#51219]
(322) Generate
Arguments: explode(distributionCenters#51219), false, [distributionCenters#51235]
(323) Project
Arguments: [distributionCenters#51235]
(324) Generate
Arguments: explode(distributionCenters#51235.storageLocations), false, [storageLocations#51236]
(325) Project
Arguments: [distributionCenters#51235.id AS plantId#51237, distributionCenters#51235.internalRefUUID AS plantUuid#51238, storageLocations#51236]
(326) Project
Arguments: [plantId#51237, plantUuid#51238, storageLocations#51236.id AS storageLocId#51239, storageLocations#51236.internalRefUUID AS storageLocUuid#51240]
(327) LogicalRelation
Arguments: parquet, [product#51241, plant#51242, orderDateTime#51243, planningStartDateTime#51244], false
(328) RepartitionByExpression
Arguments: [product#51241, plant#51242], 10
(329) Project
Arguments: [product#51241, plant#51242, orderDateTime#51243]
(330) LogicalRelation
Arguments: parquet, [systemId#51245, internalUUID#51246, plant#51247, product#51248, blockedForReplenishmentStartingFrom#51249, productionAspect#51250, salesPlant#51251, listing#51252], false
(331) Repartition
Arguments: 10, true
(332) Project
Arguments: [systemId#51245, internalUUID#51246, plant#51247, product#51248, blockedForReplenishmentStartingFrom#51249, productionAspect#51250, salesPlant#51251, listing#51252, struct(systemId, systemId#51245, internalUUID, internalUUID#51246, plant, plant#51247, product, product#51248, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#51249, productionAspect, productionAspect#51250, salesPlant, salesPlant#51251, listing, listing#51252) AS productPlant#51253]
(333) Project
Arguments: [productPlant#51253]
(334) Join
Arguments: LeftOuter, ((product#51241 <=> productPlant#51253.product.internalRefUUID) AND (plant#51242 <=> productPlant#51253.plant.internalRefUUID))
(335) Project
Arguments: [product#51241, plant#51242, orderDateTime#51243, productPlant#51253]
(336) SubqueryAlias
Arguments: wl
(337) LogicalRelation
Arguments: parquet, [systemId#51254, internalUUID#51255, id#51256, displayId#51257, name#51258, category#51259, companyCode#51260, address#51261, mainDistributionChain#51262, mainPurchasingOrganization#51263, validPurchasingOrganizations#51264, productGroup#51265], false
(338) Repartition
Arguments: 10, true
(339) Project
Arguments: [internalUUID#51255, address#51261.timeZone.code AS timezonecode#51266]
(340) Join
Arguments: LeftOuter, (plant#51242 <=> internalUUID#51255)
(341) Project
Arguments: [product#51241, plant#51242, orderDateTime#51243, productPlant#51253, internalUUID#51255, CASE WHEN isnotnull(timezonecode#51266) THEN timezonecode#51266 ELSE UTC END AS timezonecode#51267]
(342) Project
Arguments: [product#51241, plant#51242, orderDateTime#51243, productPlant#51253, timezonecode#51267]
(343) LogicalRelation
Arguments: parquet, [systemId#51268, internalUUID#51269, id#51270, displayId#51271, name#51272, baseUnitOfMeasure#51273, unitOfMeasures#51274, unitOfMeasureConversions#51275, productionAspect#51276, salesAspect#51277, procurementAspect#51278, productGroup#51279], false
(344) Repartition
Arguments: 10, true
(345) Join
Arguments: LeftOuter, (product#51241 = internalUUID#51269)
(346) Project
Arguments: [product#51241, plant#51242, orderDateTime#51243, productPlant#51253, timezonecode#51267, systemId#51268, internalUUID#51269, id#51270, displayId#51271, name#51272, baseUnitOfMeasure#51273, unitOfMeasures#51274, unitOfMeasureConversions#51275, productionAspect#51276, salesAspect#51277, procurementAspect#51278, productGroup#51279, filter(unitOfMeasureConversions#51275, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#51253.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#51253.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51273.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51273.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51280]
(347) Generate
Arguments: explode(filteredUnitOfMeasureConversions#51280.quantityNumerator), true, [quantityNumerator#51281]
(348) Project
Arguments: [product#51241, plant#51242, orderDateTime#51243, productPlant#51253, timezonecode#51267, systemId#51268, internalUUID#51269, id#51270, displayId#51271, name#51272, baseUnitOfMeasure#51273, unitOfMeasures#51274, unitOfMeasureConversions#51275, productionAspect#51276, salesAspect#51277, procurementAspect#51278, productGroup#51279, filteredUnitOfMeasureConversions#51280, quantityNumerator#51281]
(349) Generate
Arguments: explode(filteredUnitOfMeasureConversions#51280.quantityDenominator), true, [quantityDenominator#51282]
(350) Project
Arguments: [product#51241, plant#51242, orderDateTime#51243, productPlant#51253, timezonecode#51267, systemId#51268, internalUUID#51269, id#51270, displayId#51271, name#51272, baseUnitOfMeasure#51273, unitOfMeasures#51274, unitOfMeasureConversions#51275, productionAspect#51276, salesAspect#51277, procurementAspect#51278, productGroup#51279, filteredUnitOfMeasureConversions#51280, quantityNumerator#51281, quantityDenominator#51282]
(351) Project
Arguments: [product#51241, plant#51242, orderDateTime#51243, productPlant#51253, timezonecode#51267, systemId#51268, internalUUID#51269, id#51270, displayId#51271, name#51272, baseUnitOfMeasure#51273, unitOfMeasures#51274, unitOfMeasureConversions#51275, productionAspect#51276, salesAspect#51277, procurementAspect#51278, productGroup#51279, filteredUnitOfMeasureConversions#51280, quantityNumerator#51281, quantityDenominator#51282, (cast(quantityNumerator#51281 as double) / cast(quantityDenominator#51282 as double)) AS outboundUnit#51283]
(352) Project
Arguments: [product#51241, plant#51242, orderDateTime#51243, productPlant#51253, timezonecode#51267, systemId#51268, internalUUID#51269, id#51270, displayId#51271, name#51272, baseUnitOfMeasure#51273, unitOfMeasures#51274, unitOfMeasureConversions#51275, productionAspect#51276, salesAspect#51277, procurementAspect#51278, productGroup#51279, filteredUnitOfMeasureConversions#51280, quantityNumerator#51281, quantityDenominator#51282, CASE WHEN (isnull(outboundUnit#51283) OR (outboundUnit#51283 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#51283 END AS outboundUnit#51284]
(353) Project
Arguments: [product#51241, plant#51242, orderDateTime#51243, productPlant#51253, timezonecode#51267, outboundUnit#51284]
(354) Project
Arguments: [plant#51242]
(355) Deduplicate
Arguments: [plant#51242]
(356) Join
Arguments: Inner, (plantUuid#51238 = plant#51242)
(357) Project
Arguments: [plantId#51237, plantUuid#51238, storageLocId#51239, storageLocUuid#51240]
(358) Join
Arguments: Inner, (plant#51210.internalRefUUID <=> plantUuid#51238)
(359) Generate
Arguments: explode(filter(stockQuantities#51212, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#51240) AND (lambda x#50650.storageLocation.Id = storageLocId#51239)), lambda x#50650, false))), false, [stockQuantity#51285]
(360) Project
Arguments: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51211, stockQuantities#51212, plantId#51237, plantUuid#51238, storageLocId#51239, storageLocUuid#51240, stockQuantity#51285]
(361) Aggregate
Arguments: [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207], [plantUuid#51238, internalUUID#51208, plant#51210, product#51209, systemId#51207, first(calculationDateTime#51211, false) AS calculationDateTime#51286, collect_list(stockQuantity#51285, 0, 0) AS stockQuantities#51287]
(362) Project
Arguments: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51286, stockQuantities#51287]
(363) Generate
Arguments: explode(stockQuantities#51287), false, [stockQuantity#51288]
(364) Project
Arguments: [systemId#51207, internalUUID#51208, product#51209, plant#51210, calculationDateTime#51286, stockQuantities#51287, stockQuantity#51288]
(365) Project
Arguments: [plant#51210.id AS plant#51289, plant#51210.internalRefUUID AS plantUuid#51290, product#51209.id AS product#51291, product#51209.internalRefUUID AS productUuid#51292, calculationDateTime#51286, stockQuantity#51288.storagelocation.id AS storageLocId#51293, stockQuantity#51288.storagelocation.internalRefUUID AS storageLocUuid#51294, stockQuantity#51288.quantity.measure AS quantity#51295, stockQuantity#51288.specialStockIndicator.code AS specialStockIndicator#51296, stockQuantity#51288.stockType.code AS stockType#51297]
(366) Filter
Arguments: ((specialStockIndicator#51296 = ) AND (stockType#51297 = 01))
(367) LogicalRelation
Arguments: parquet, [product#51298, plant#51299, orderDateTime#51300, planningStartDateTime#51301], false
(368) RepartitionByExpression
Arguments: [product#51298, plant#51299], 10
(369) Project
Arguments: [product#51298, plant#51299, orderDateTime#51300]
(370) LogicalRelation
Arguments: parquet, [systemId#51302, internalUUID#51303, plant#51304, product#51305, blockedForReplenishmentStartingFrom#51306, productionAspect#51307, salesPlant#51308, listing#51309], false
(371) Repartition
Arguments: 10, true
(372) Project
Arguments: [systemId#51302, internalUUID#51303, plant#51304, product#51305, blockedForReplenishmentStartingFrom#51306, productionAspect#51307, salesPlant#51308, listing#51309, struct(systemId, systemId#51302, internalUUID, internalUUID#51303, plant, plant#51304, product, product#51305, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#51306, productionAspect, productionAspect#51307, salesPlant, salesPlant#51308, listing, listing#51309) AS productPlant#51310]
(373) Project
Arguments: [productPlant#51310]
(374) Join
Arguments: LeftOuter, ((product#51298 <=> productPlant#51310.product.internalRefUUID) AND (plant#51299 <=> productPlant#51310.plant.internalRefUUID))
(375) Project
Arguments: [product#51298, plant#51299, orderDateTime#51300, productPlant#51310]
(376) SubqueryAlias
Arguments: wl
(377) LogicalRelation
Arguments: parquet, [systemId#51311, internalUUID#51312, id#51313, displayId#51314, name#51315, category#51316, companyCode#51317, address#51318, mainDistributionChain#51319, mainPurchasingOrganization#51320, validPurchasingOrganizations#51321, productGroup#51322], false
(378) Repartition
Arguments: 10, true
(379) Project
Arguments: [internalUUID#51312, address#51318.timeZone.code AS timezonecode#51323]
(380) Join
Arguments: LeftOuter, (plant#51299 <=> internalUUID#51312)
(381) Project
Arguments: [product#51298, plant#51299, orderDateTime#51300, productPlant#51310, internalUUID#51312, CASE WHEN isnotnull(timezonecode#51323) THEN timezonecode#51323 ELSE UTC END AS timezonecode#51324]
(382) Project
Arguments: [product#51298, plant#51299, orderDateTime#51300, productPlant#51310, timezonecode#51324]
(383) LogicalRelation
Arguments: parquet, [systemId#51325, internalUUID#51326, id#51327, displayId#51328, name#51329, baseUnitOfMeasure#51330, unitOfMeasures#51331, unitOfMeasureConversions#51332, productionAspect#51333, salesAspect#51334, procurementAspect#51335, productGroup#51336], false
(384) Repartition
Arguments: 10, true
(385) Join
Arguments: LeftOuter, (product#51298 = internalUUID#51326)
(386) Project
Arguments: [product#51298, plant#51299, orderDateTime#51300, productPlant#51310, timezonecode#51324, systemId#51325, internalUUID#51326, id#51327, displayId#51328, name#51329, baseUnitOfMeasure#51330, unitOfMeasures#51331, unitOfMeasureConversions#51332, productionAspect#51333, salesAspect#51334, procurementAspect#51335, productGroup#51336, filter(unitOfMeasureConversions#51332, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#51310.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#51310.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51330.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51330.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51337]
(387) Generate
Arguments: explode(filteredUnitOfMeasureConversions#51337.quantityNumerator), true, [quantityNumerator#51338]
(388) Project
Arguments: [product#51298, plant#51299, orderDateTime#51300, productPlant#51310, timezonecode#51324, systemId#51325, internalUUID#51326, id#51327, displayId#51328, name#51329, baseUnitOfMeasure#51330, unitOfMeasures#51331, unitOfMeasureConversions#51332, productionAspect#51333, salesAspect#51334, procurementAspect#51335, productGroup#51336, filteredUnitOfMeasureConversions#51337, quantityNumerator#51338]
(389) Generate
Arguments: explode(filteredUnitOfMeasureConversions#51337.quantityDenominator), true, [quantityDenominator#51339]
(390) Project
Arguments: [product#51298, plant#51299, orderDateTime#51300, productPlant#51310, timezonecode#51324, systemId#51325, internalUUID#51326, id#51327, displayId#51328, name#51329, baseUnitOfMeasure#51330, unitOfMeasures#51331, unitOfMeasureConversions#51332, productionAspect#51333, salesAspect#51334, procurementAspect#51335, productGroup#51336, filteredUnitOfMeasureConversions#51337, quantityNumerator#51338, quantityDenominator#51339]
(391) Project
Arguments: [product#51298, plant#51299, orderDateTime#51300, productPlant#51310, timezonecode#51324, systemId#51325, internalUUID#51326, id#51327, displayId#51328, name#51329, baseUnitOfMeasure#51330, unitOfMeasures#51331, unitOfMeasureConversions#51332, productionAspect#51333, salesAspect#51334, procurementAspect#51335, productGroup#51336, filteredUnitOfMeasureConversions#51337, quantityNumerator#51338, quantityDenominator#51339, (cast(quantityNumerator#51338 as double) / cast(quantityDenominator#51339 as double)) AS outboundUnit#51340]
(392) Project
Arguments: [product#51298, plant#51299, orderDateTime#51300, productPlant#51310, timezonecode#51324, systemId#51325, internalUUID#51326, id#51327, displayId#51328, name#51329, baseUnitOfMeasure#51330, unitOfMeasures#51331, unitOfMeasureConversions#51332, productionAspect#51333, salesAspect#51334, procurementAspect#51335, productGroup#51336, filteredUnitOfMeasureConversions#51337, quantityNumerator#51338, quantityDenominator#51339, CASE WHEN (isnull(outboundUnit#51340) OR (outboundUnit#51340 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#51340 END AS outboundUnit#51341]
(393) Project
Arguments: [product#51298, plant#51299, orderDateTime#51300, productPlant#51310, timezonecode#51324, outboundUnit#51341]
(394) Join
Arguments: Inner, ((plantUuid#51290 = plant#51299) AND (productUuid#51292 = product#51298))
(395) Filter
Arguments: (calculationDateTime#51286 <= orderDateTime#51300)
(396) Project
Arguments: [plantUuid#51290 AS plant#51342, productUuid#51292 AS product#51343, storageLocId#51293, calculationDateTime#51286, quantity#51295]
(397) Aggregate
Arguments: [plant#51342, product#51343, storageLocId#51293], [plant#51342, product#51343, storageLocId#51293, max(calculationDateTime#51286) AS max_calc_datetime#51344]
(398) Join
Arguments: Inner, ((((plant#51205 <=> plant#51342) AND (product#51206 <=> product#51343)) AND (storageLocId#51156 <=> storageLocId#51293)) AND (calculationDateTime#51149 <=> max_calc_datetime#51344))
(399) Project
Arguments: [plant#51205, product#51206, storageLocId#51156, calculationDateTime#51149, quantity#51158]
(400) Aggregate
Arguments: [product#51206, plant#51205], [product#51206, plant#51205, sum(quantity#51158) AS quantitySum#51345, min(calculationDateTime#51149) AS minCalculationDateTime#51346]
(401) Project
Arguments: [product#51206, plant#51205, quantitySum#51345, minCalculationDateTime#51346, round(quantitySum#51345, 0) AS roundedQuantitySum#51347]
(402) Join
Arguments: LeftOuter, ((plant#51027 = plant#51205) AND (product#51026 = product#51206))
(403) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, roundedQuantitySum#51347, minCalculationDateTime#51346]
(404) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, roundedQuantitySum#51347, minCalculationDateTime#51346, CASE WHEN isnotnull(minCalculationDateTime#51346) THEN minCalculationDateTime#51346 ELSE orderDateTime#51028 END AS stockDatetime#51348]
(405) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, roundedQuantitySum#51347, minCalculationDateTime#51346, stockDatetime#51348, CASE WHEN isnotnull(roundedQuantitySum#51347) THEN array(roundedQuantitySum#51347) ELSE array(0.0) END AS stockBatchQuantities#51349]
(406) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, roundedQuantitySum#51347, minCalculationDateTime#51346, stockDatetime#51348, stockBatchQuantities#51349, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#51350]
(407) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, roundedQuantitySum#51347, stockDatetime#51348, stockBatchQuantities#51349, stockBatchShelfLifeEndDatetimes#51350]
(408) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, stockBatchShelfLifeEndDatetimes#51350]
(409) LogicalRelation
Arguments: parquet, [product#50952, plant#50953, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960], false
(410) Join
Arguments: LeftOuter, ((product#51026 = product#50952) AND (plant#51027 = plant#50953))
(411) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, stockBatchShelfLifeEndDatetimes#51350, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960, product#50952, plant#50953]
(412) Project
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, stockBatchShelfLifeEndDatetimes#51350, demandChannel#50954, demandStream#50955, considerVariance#50956, demandTimeBuckets#50957, demandPointInTimeStart#50958, demandPointInTimeEnd#50959, demandPointInTime#50960, CASE WHEN isnotnull(product#50952) THEN struct(demandChannel, demandChannel#50954, demandStream, demandStream#50955, considerVariance, considerVariance#50956, demandTimeBuckets, demandTimeBuckets#50957, demandPointInTimeStart, demandPointInTimeStart#50958, demandPointInTimeEnd, demandPointInTimeEnd#50959, demandPointInTime, demandPointInTime#50960) 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#50972]
(413) Aggregate
Arguments: [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, stockBatchShelfLifeEndDatetimes#51350], [product#51026, plant#51027, orderDateTime#51028, productPlant#51038, timezonecode#51052, outboundUnit#51069, stockDatetime#51348, stockBatchQuantities#51349, stockBatchShelfLifeEndDatetimes#51350, collect_list(rawDemands#50972, 0, 0) AS rawDemands#50973]
(414) DeserializeToObject
Arguments: createexternalrow(invoke(product#51026.toString()), invoke(plant#51027.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#51028)), if (isnull(productPlant#51038)) null else createexternalrow(invoke(productPlant#51038.systemId.toString()), invoke(productPlant#51038.internalUUID.toString()), if (isnull(productPlant#51038.plant)) null else createexternalrow(invoke(productPlant#51038.plant.internalRefUUID.toString()), invoke(productPlant#51038.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#51038.product)) null else createexternalrow(invoke(productPlant#51038.product.internalRefUUID.toString()), invoke(productPlant#51038.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#51038.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#51038.productionAspect)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#51038.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#51038.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#51038.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#51038.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#51038.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#51038.salesPlant)) null else createexternalrow(if (isnull(productPlant#51038.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#51038.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#51038.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, 7092), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#51038.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#51052.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#51069)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#51348)), mapobjects(lambdavariable(MapObject, DoubleType, true, 7093), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 7093) as double))), stockBatchQuantities#51349, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 7094), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 7094) as timestamp)))), stockBatchShelfLifeEndDatetimes#51350, 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, 7095), 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, 7095))) 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, 7095).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, 7095).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, 7095).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).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, 7095).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, 7095).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, 7095).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).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, 7095).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#50973, 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#51012: org.apache.spark.sql.Row
(415) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, 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#51017: 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#51022, 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#51023, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7083), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7083), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7084), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7084), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7085), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7085), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7086), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7086), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7087), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7087), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#51024, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7089), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7089), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7090), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7090), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7091), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7091), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#51025]
(417) Join
Arguments: LeftOuter, ((plant#51023 <=> plant#50546) AND (product#51022 <=> product#50545))
(418) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, plant#51023, dayBucketDemands#51024, pointInTimeDemands#51025]
(419) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025]
(420) LogicalRelation
Arguments: parquet, [product#54507, plant#54508, orderDateTime#54509, planningStartDateTime#54510], false
(421) RepartitionByExpression
Arguments: [product#54507, plant#54508], 10
(422) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509]
(423) LogicalRelation
Arguments: parquet, [systemId#54511, internalUUID#54512, plant#54513, product#54514, blockedForReplenishmentStartingFrom#54515, productionAspect#54516, salesPlant#54517, listing#54518], false
(424) Repartition
Arguments: 10, true
(425) Project
Arguments: [systemId#54511, internalUUID#54512, plant#54513, product#54514, blockedForReplenishmentStartingFrom#54515, productionAspect#54516, salesPlant#54517, listing#54518, struct(systemId, systemId#54511, internalUUID, internalUUID#54512, plant, plant#54513, product, product#54514, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54515, productionAspect, productionAspect#54516, salesPlant, salesPlant#54517, listing, listing#54518) AS productPlant#54519]
(426) Project
Arguments: [productPlant#54519]
(427) Join
Arguments: LeftOuter, ((product#54507 <=> productPlant#54519.product.internalRefUUID) AND (plant#54508 <=> productPlant#54519.plant.internalRefUUID))
(428) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519]
(429) SubqueryAlias
Arguments: wl
(430) LogicalRelation
Arguments: parquet, [systemId#54520, internalUUID#54521, id#54522, displayId#54523, name#54524, category#54525, companyCode#54526, address#54527, mainDistributionChain#54528, mainPurchasingOrganization#54529, validPurchasingOrganizations#54530, productGroup#54531], false
(431) Repartition
Arguments: 10, true
(432) Project
Arguments: [internalUUID#54521, address#54527.timeZone.code AS timezonecode#54532]
(433) Join
Arguments: LeftOuter, (plant#54508 <=> internalUUID#54521)
(434) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, internalUUID#54521, CASE WHEN isnotnull(timezonecode#54532) THEN timezonecode#54532 ELSE UTC END AS timezonecode#54533]
(435) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533]
(436) LogicalRelation
Arguments: parquet, [systemId#54534, internalUUID#54535, id#54536, displayId#54537, name#54538, baseUnitOfMeasure#54539, unitOfMeasures#54540, unitOfMeasureConversions#54541, productionAspect#54542, salesAspect#54543, procurementAspect#54544, productGroup#54545], false
(437) Repartition
Arguments: 10, true
(438) Join
Arguments: LeftOuter, (product#54507 = internalUUID#54535)
(439) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, systemId#54534, internalUUID#54535, id#54536, displayId#54537, name#54538, baseUnitOfMeasure#54539, unitOfMeasures#54540, unitOfMeasureConversions#54541, productionAspect#54542, salesAspect#54543, procurementAspect#54544, productGroup#54545, filter(unitOfMeasureConversions#54541, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54519.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54519.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54539.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54539.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54546]
(440) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54546.quantityNumerator), true, [quantityNumerator#54547]
(441) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, systemId#54534, internalUUID#54535, id#54536, displayId#54537, name#54538, baseUnitOfMeasure#54539, unitOfMeasures#54540, unitOfMeasureConversions#54541, productionAspect#54542, salesAspect#54543, procurementAspect#54544, productGroup#54545, filteredUnitOfMeasureConversions#54546, quantityNumerator#54547]
(442) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54546.quantityDenominator), true, [quantityDenominator#54548]
(443) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, systemId#54534, internalUUID#54535, id#54536, displayId#54537, name#54538, baseUnitOfMeasure#54539, unitOfMeasures#54540, unitOfMeasureConversions#54541, productionAspect#54542, salesAspect#54543, procurementAspect#54544, productGroup#54545, filteredUnitOfMeasureConversions#54546, quantityNumerator#54547, quantityDenominator#54548]
(444) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, systemId#54534, internalUUID#54535, id#54536, displayId#54537, name#54538, baseUnitOfMeasure#54539, unitOfMeasures#54540, unitOfMeasureConversions#54541, productionAspect#54542, salesAspect#54543, procurementAspect#54544, productGroup#54545, filteredUnitOfMeasureConversions#54546, quantityNumerator#54547, quantityDenominator#54548, (cast(quantityNumerator#54547 as double) / cast(quantityDenominator#54548 as double)) AS outboundUnit#54549]
(445) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, systemId#54534, internalUUID#54535, id#54536, displayId#54537, name#54538, baseUnitOfMeasure#54539, unitOfMeasures#54540, unitOfMeasureConversions#54541, productionAspect#54542, salesAspect#54543, procurementAspect#54544, productGroup#54545, filteredUnitOfMeasureConversions#54546, quantityNumerator#54547, quantityDenominator#54548, CASE WHEN (isnull(outboundUnit#54549) OR (outboundUnit#54549 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54549 END AS outboundUnit#54550]
(446) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, outboundUnit#54550]
(447) LogicalRelation
Arguments: parquet, [systemId#54551, internalUUID#54552, product#54553, plant#54554, calculationDateTime#54555, stockQuantities#54556], false
(448) Repartition
Arguments: 10, true
(449) LogicalRelation
Arguments: parquet, [marketUnit#54557, description#54558, articleHierarchy#54559, defaultCurrency#54560, responsibilities#54561, replenishmentTypes#54562, distributionCenters#54563, assignedArticleHierarchyNodes#54564, minOrderQtySetting#54565, minOrderQtySettingInternal#54566, listingCheck#54567, odsSelection#54568, demandProfiles#54569, constraintProfiles#54570, optimizationProfiles#54571, orderGroupSplitProfiles#54572, supplierMinimumProfiles#54573, multipleRestrictionProfiles#54574, preferredUomSource#54575, handlingOfUnfulfilledDemands#54576, negligibleQuantitiesThreshold#54577, eventtype#54578], false
(450) Repartition
Arguments: 10, true
(451) Filter
Arguments: (marketUnit#54557 <=> DIP_1691)
(452) Project
Arguments: [marketUnit#54557, description#54558, articleHierarchy#54559, defaultCurrency#54560, responsibilities#54561, replenishmentTypes#54562, distributionCenters#54563, assignedArticleHierarchyNodes#54564, minOrderQtySetting#54565, minOrderQtySettingInternal#54566, listingCheck#54567, odsSelection#54568, demandProfiles#54569, constraintProfiles#54570, optimizationProfiles#54571, orderGroupSplitProfiles#54572, supplierMinimumProfiles#54573, multipleRestrictionProfiles#54574, preferredUomSource#54575, handlingOfUnfulfilledDemands#54576, negligibleQuantitiesThreshold#54577, eventtype#54578]
(453) Project
Arguments: [distributionCenters#54563]
(454) Generate
Arguments: explode(distributionCenters#54563), false, [distributionCenters#54579]
(455) Project
Arguments: [distributionCenters#54579]
(456) Generate
Arguments: explode(distributionCenters#54579.storageLocations), false, [storageLocations#54580]
(457) Project
Arguments: [distributionCenters#54579.id AS plantId#54581, distributionCenters#54579.internalRefUUID AS plantUuid#54582, storageLocations#54580]
(458) Project
Arguments: [plantId#54581, plantUuid#54582, storageLocations#54580.id AS storageLocId#54583, storageLocations#54580.internalRefUUID AS storageLocUuid#54584]
(459) LogicalRelation
Arguments: parquet, [product#54585, plant#54586, orderDateTime#54587, planningStartDateTime#54588], false
(460) RepartitionByExpression
Arguments: [product#54585, plant#54586], 10
(461) Project
Arguments: [product#54585, plant#54586, orderDateTime#54587]
(462) LogicalRelation
Arguments: parquet, [systemId#54589, internalUUID#54590, plant#54591, product#54592, blockedForReplenishmentStartingFrom#54593, productionAspect#54594, salesPlant#54595, listing#54596], false
(463) Repartition
Arguments: 10, true
(464) Project
Arguments: [systemId#54589, internalUUID#54590, plant#54591, product#54592, blockedForReplenishmentStartingFrom#54593, productionAspect#54594, salesPlant#54595, listing#54596, struct(systemId, systemId#54589, internalUUID, internalUUID#54590, plant, plant#54591, product, product#54592, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54593, productionAspect, productionAspect#54594, salesPlant, salesPlant#54595, listing, listing#54596) AS productPlant#54597]
(465) Project
Arguments: [productPlant#54597]
(466) Join
Arguments: LeftOuter, ((product#54585 <=> productPlant#54597.product.internalRefUUID) AND (plant#54586 <=> productPlant#54597.plant.internalRefUUID))
(467) Project
Arguments: [product#54585, plant#54586, orderDateTime#54587, productPlant#54597]
(468) SubqueryAlias
Arguments: wl
(469) LogicalRelation
Arguments: parquet, [systemId#54598, internalUUID#54599, id#54600, displayId#54601, name#54602, category#54603, companyCode#54604, address#54605, mainDistributionChain#54606, mainPurchasingOrganization#54607, validPurchasingOrganizations#54608, productGroup#54609], false
(470) Repartition
Arguments: 10, true
(471) Project
Arguments: [internalUUID#54599, address#54605.timeZone.code AS timezonecode#54610]
(472) Join
Arguments: LeftOuter, (plant#54586 <=> internalUUID#54599)
(473) Project
Arguments: [product#54585, plant#54586, orderDateTime#54587, productPlant#54597, internalUUID#54599, CASE WHEN isnotnull(timezonecode#54610) THEN timezonecode#54610 ELSE UTC END AS timezonecode#54611]
(474) Project
Arguments: [product#54585, plant#54586, orderDateTime#54587, productPlant#54597, timezonecode#54611]
(475) LogicalRelation
Arguments: parquet, [systemId#54612, internalUUID#54613, id#54614, displayId#54615, name#54616, baseUnitOfMeasure#54617, unitOfMeasures#54618, unitOfMeasureConversions#54619, productionAspect#54620, salesAspect#54621, procurementAspect#54622, productGroup#54623], false
(476) Repartition
Arguments: 10, true
(477) Join
Arguments: LeftOuter, (product#54585 = internalUUID#54613)
(478) Project
Arguments: [product#54585, plant#54586, orderDateTime#54587, productPlant#54597, timezonecode#54611, systemId#54612, internalUUID#54613, id#54614, displayId#54615, name#54616, baseUnitOfMeasure#54617, unitOfMeasures#54618, unitOfMeasureConversions#54619, productionAspect#54620, salesAspect#54621, procurementAspect#54622, productGroup#54623, filter(unitOfMeasureConversions#54619, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54597.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54597.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54617.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54617.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54624]
(479) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54624.quantityNumerator), true, [quantityNumerator#54625]
(480) Project
Arguments: [product#54585, plant#54586, orderDateTime#54587, productPlant#54597, timezonecode#54611, systemId#54612, internalUUID#54613, id#54614, displayId#54615, name#54616, baseUnitOfMeasure#54617, unitOfMeasures#54618, unitOfMeasureConversions#54619, productionAspect#54620, salesAspect#54621, procurementAspect#54622, productGroup#54623, filteredUnitOfMeasureConversions#54624, quantityNumerator#54625]
(481) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54624.quantityDenominator), true, [quantityDenominator#54626]
(482) Project
Arguments: [product#54585, plant#54586, orderDateTime#54587, productPlant#54597, timezonecode#54611, systemId#54612, internalUUID#54613, id#54614, displayId#54615, name#54616, baseUnitOfMeasure#54617, unitOfMeasures#54618, unitOfMeasureConversions#54619, productionAspect#54620, salesAspect#54621, procurementAspect#54622, productGroup#54623, filteredUnitOfMeasureConversions#54624, quantityNumerator#54625, quantityDenominator#54626]
(483) Project
Arguments: [product#54585, plant#54586, orderDateTime#54587, productPlant#54597, timezonecode#54611, systemId#54612, internalUUID#54613, id#54614, displayId#54615, name#54616, baseUnitOfMeasure#54617, unitOfMeasures#54618, unitOfMeasureConversions#54619, productionAspect#54620, salesAspect#54621, procurementAspect#54622, productGroup#54623, filteredUnitOfMeasureConversions#54624, quantityNumerator#54625, quantityDenominator#54626, (cast(quantityNumerator#54625 as double) / cast(quantityDenominator#54626 as double)) AS outboundUnit#54627]
(484) Project
Arguments: [product#54585, plant#54586, orderDateTime#54587, productPlant#54597, timezonecode#54611, systemId#54612, internalUUID#54613, id#54614, displayId#54615, name#54616, baseUnitOfMeasure#54617, unitOfMeasures#54618, unitOfMeasureConversions#54619, productionAspect#54620, salesAspect#54621, procurementAspect#54622, productGroup#54623, filteredUnitOfMeasureConversions#54624, quantityNumerator#54625, quantityDenominator#54626, CASE WHEN (isnull(outboundUnit#54627) OR (outboundUnit#54627 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54627 END AS outboundUnit#54628]
(485) Project
Arguments: [product#54585, plant#54586, orderDateTime#54587, productPlant#54597, timezonecode#54611, outboundUnit#54628]
(486) Project
Arguments: [plant#54586]
(487) Deduplicate
Arguments: [plant#54586]
(488) Join
Arguments: Inner, (plantUuid#54582 = plant#54586)
(489) Project
Arguments: [plantId#54581, plantUuid#54582, storageLocId#54583, storageLocUuid#54584]
(490) Join
Arguments: Inner, (plant#54554.internalRefUUID <=> plantUuid#54582)
(491) Generate
Arguments: explode(filter(stockQuantities#54556, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#54584) AND (lambda x#50650.storageLocation.Id = storageLocId#54583)), lambda x#50650, false))), false, [stockQuantity#54629]
(492) Project
Arguments: [systemId#54551, internalUUID#54552, product#54553, plant#54554, calculationDateTime#54555, stockQuantities#54556, plantId#54581, plantUuid#54582, storageLocId#54583, storageLocUuid#54584, stockQuantity#54629]
(493) Aggregate
Arguments: [plantUuid#54582, internalUUID#54552, plant#54554, product#54553, systemId#54551], [plantUuid#54582, internalUUID#54552, plant#54554, product#54553, systemId#54551, first(calculationDateTime#54555, false) AS calculationDateTime#54630, collect_list(stockQuantity#54629, 0, 0) AS stockQuantities#54631]
(494) Project
Arguments: [systemId#54551, internalUUID#54552, product#54553, plant#54554, calculationDateTime#54630, stockQuantities#54631]
(495) Generate
Arguments: explode(stockQuantities#54631), false, [stockQuantity#54632]
(496) Project
Arguments: [systemId#54551, internalUUID#54552, product#54553, plant#54554, calculationDateTime#54630, stockQuantities#54631, stockQuantity#54632]
(497) Project
Arguments: [plant#54554.id AS plant#54633, plant#54554.internalRefUUID AS plantUuid#54634, product#54553.id AS product#54635, product#54553.internalRefUUID AS productUuid#54636, calculationDateTime#54630, stockQuantity#54632.storagelocation.id AS storageLocId#54637, stockQuantity#54632.storagelocation.internalRefUUID AS storageLocUuid#54638, stockQuantity#54632.quantity.measure AS quantity#54639, stockQuantity#54632.specialStockIndicator.code AS specialStockIndicator#54640, stockQuantity#54632.stockType.code AS stockType#54641]
(498) Filter
Arguments: ((specialStockIndicator#54640 = ) AND (stockType#54641 = 01))
(499) LogicalRelation
Arguments: parquet, [product#54642, plant#54643, orderDateTime#54644, planningStartDateTime#54645], false
(500) RepartitionByExpression
Arguments: [product#54642, plant#54643], 10
(501) Project
Arguments: [product#54642, plant#54643, orderDateTime#54644]
(502) LogicalRelation
Arguments: parquet, [systemId#54646, internalUUID#54647, plant#54648, product#54649, blockedForReplenishmentStartingFrom#54650, productionAspect#54651, salesPlant#54652, listing#54653], false
(503) Repartition
Arguments: 10, true
(504) Project
Arguments: [systemId#54646, internalUUID#54647, plant#54648, product#54649, blockedForReplenishmentStartingFrom#54650, productionAspect#54651, salesPlant#54652, listing#54653, struct(systemId, systemId#54646, internalUUID, internalUUID#54647, plant, plant#54648, product, product#54649, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54650, productionAspect, productionAspect#54651, salesPlant, salesPlant#54652, listing, listing#54653) AS productPlant#54654]
(505) Project
Arguments: [productPlant#54654]
(506) Join
Arguments: LeftOuter, ((product#54642 <=> productPlant#54654.product.internalRefUUID) AND (plant#54643 <=> productPlant#54654.plant.internalRefUUID))
(507) Project
Arguments: [product#54642, plant#54643, orderDateTime#54644, productPlant#54654]
(508) SubqueryAlias
Arguments: wl
(509) LogicalRelation
Arguments: parquet, [systemId#54655, internalUUID#54656, id#54657, displayId#54658, name#54659, category#54660, companyCode#54661, address#54662, mainDistributionChain#54663, mainPurchasingOrganization#54664, validPurchasingOrganizations#54665, productGroup#54666], false
(510) Repartition
Arguments: 10, true
(511) Project
Arguments: [internalUUID#54656, address#54662.timeZone.code AS timezonecode#54667]
(512) Join
Arguments: LeftOuter, (plant#54643 <=> internalUUID#54656)
(513) Project
Arguments: [product#54642, plant#54643, orderDateTime#54644, productPlant#54654, internalUUID#54656, CASE WHEN isnotnull(timezonecode#54667) THEN timezonecode#54667 ELSE UTC END AS timezonecode#54668]
(514) Project
Arguments: [product#54642, plant#54643, orderDateTime#54644, productPlant#54654, timezonecode#54668]
(515) LogicalRelation
Arguments: parquet, [systemId#54669, internalUUID#54670, id#54671, displayId#54672, name#54673, baseUnitOfMeasure#54674, unitOfMeasures#54675, unitOfMeasureConversions#54676, productionAspect#54677, salesAspect#54678, procurementAspect#54679, productGroup#54680], false
(516) Repartition
Arguments: 10, true
(517) Join
Arguments: LeftOuter, (product#54642 = internalUUID#54670)
(518) Project
Arguments: [product#54642, plant#54643, orderDateTime#54644, productPlant#54654, timezonecode#54668, systemId#54669, internalUUID#54670, id#54671, displayId#54672, name#54673, baseUnitOfMeasure#54674, unitOfMeasures#54675, unitOfMeasureConversions#54676, productionAspect#54677, salesAspect#54678, procurementAspect#54679, productGroup#54680, filter(unitOfMeasureConversions#54676, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54654.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54654.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54674.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54674.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54681]
(519) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54681.quantityNumerator), true, [quantityNumerator#54682]
(520) Project
Arguments: [product#54642, plant#54643, orderDateTime#54644, productPlant#54654, timezonecode#54668, systemId#54669, internalUUID#54670, id#54671, displayId#54672, name#54673, baseUnitOfMeasure#54674, unitOfMeasures#54675, unitOfMeasureConversions#54676, productionAspect#54677, salesAspect#54678, procurementAspect#54679, productGroup#54680, filteredUnitOfMeasureConversions#54681, quantityNumerator#54682]
(521) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54681.quantityDenominator), true, [quantityDenominator#54683]
(522) Project
Arguments: [product#54642, plant#54643, orderDateTime#54644, productPlant#54654, timezonecode#54668, systemId#54669, internalUUID#54670, id#54671, displayId#54672, name#54673, baseUnitOfMeasure#54674, unitOfMeasures#54675, unitOfMeasureConversions#54676, productionAspect#54677, salesAspect#54678, procurementAspect#54679, productGroup#54680, filteredUnitOfMeasureConversions#54681, quantityNumerator#54682, quantityDenominator#54683]
(523) Project
Arguments: [product#54642, plant#54643, orderDateTime#54644, productPlant#54654, timezonecode#54668, systemId#54669, internalUUID#54670, id#54671, displayId#54672, name#54673, baseUnitOfMeasure#54674, unitOfMeasures#54675, unitOfMeasureConversions#54676, productionAspect#54677, salesAspect#54678, procurementAspect#54679, productGroup#54680, filteredUnitOfMeasureConversions#54681, quantityNumerator#54682, quantityDenominator#54683, (cast(quantityNumerator#54682 as double) / cast(quantityDenominator#54683 as double)) AS outboundUnit#54684]
(524) Project
Arguments: [product#54642, plant#54643, orderDateTime#54644, productPlant#54654, timezonecode#54668, systemId#54669, internalUUID#54670, id#54671, displayId#54672, name#54673, baseUnitOfMeasure#54674, unitOfMeasures#54675, unitOfMeasureConversions#54676, productionAspect#54677, salesAspect#54678, procurementAspect#54679, productGroup#54680, filteredUnitOfMeasureConversions#54681, quantityNumerator#54682, quantityDenominator#54683, CASE WHEN (isnull(outboundUnit#54684) OR (outboundUnit#54684 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54684 END AS outboundUnit#54685]
(525) Project
Arguments: [product#54642, plant#54643, orderDateTime#54644, productPlant#54654, timezonecode#54668, outboundUnit#54685]
(526) Join
Arguments: Inner, ((plantUuid#54634 = plant#54643) AND (productUuid#54636 = product#54642))
(527) Filter
Arguments: (calculationDateTime#54630 <= orderDateTime#54644)
(528) Project
Arguments: [plantUuid#54634 AS plant#54686, productUuid#54636 AS product#54687, storageLocId#54637, calculationDateTime#54630, quantity#54639]
(529) LogicalRelation
Arguments: parquet, [systemId#54688, internalUUID#54689, product#54690, plant#54691, calculationDateTime#54692, stockQuantities#54693], false
(530) Repartition
Arguments: 10, true
(531) LogicalRelation
Arguments: parquet, [marketUnit#54694, description#54695, articleHierarchy#54696, defaultCurrency#54697, responsibilities#54698, replenishmentTypes#54699, distributionCenters#54700, assignedArticleHierarchyNodes#54701, minOrderQtySetting#54702, minOrderQtySettingInternal#54703, listingCheck#54704, odsSelection#54705, demandProfiles#54706, constraintProfiles#54707, optimizationProfiles#54708, orderGroupSplitProfiles#54709, supplierMinimumProfiles#54710, multipleRestrictionProfiles#54711, preferredUomSource#54712, handlingOfUnfulfilledDemands#54713, negligibleQuantitiesThreshold#54714, eventtype#54715], false
(532) Repartition
Arguments: 10, true
(533) Filter
Arguments: (marketUnit#54694 <=> DIP_1691)
(534) Project
Arguments: [marketUnit#54694, description#54695, articleHierarchy#54696, defaultCurrency#54697, responsibilities#54698, replenishmentTypes#54699, distributionCenters#54700, assignedArticleHierarchyNodes#54701, minOrderQtySetting#54702, minOrderQtySettingInternal#54703, listingCheck#54704, odsSelection#54705, demandProfiles#54706, constraintProfiles#54707, optimizationProfiles#54708, orderGroupSplitProfiles#54709, supplierMinimumProfiles#54710, multipleRestrictionProfiles#54711, preferredUomSource#54712, handlingOfUnfulfilledDemands#54713, negligibleQuantitiesThreshold#54714, eventtype#54715]
(535) Project
Arguments: [distributionCenters#54700]
(536) Generate
Arguments: explode(distributionCenters#54700), false, [distributionCenters#54716]
(537) Project
Arguments: [distributionCenters#54716]
(538) Generate
Arguments: explode(distributionCenters#54716.storageLocations), false, [storageLocations#54717]
(539) Project
Arguments: [distributionCenters#54716.id AS plantId#54718, distributionCenters#54716.internalRefUUID AS plantUuid#54719, storageLocations#54717]
(540) Project
Arguments: [plantId#54718, plantUuid#54719, storageLocations#54717.id AS storageLocId#54720, storageLocations#54717.internalRefUUID AS storageLocUuid#54721]
(541) LogicalRelation
Arguments: parquet, [product#54722, plant#54723, orderDateTime#54724, planningStartDateTime#54725], false
(542) RepartitionByExpression
Arguments: [product#54722, plant#54723], 10
(543) Project
Arguments: [product#54722, plant#54723, orderDateTime#54724]
(544) LogicalRelation
Arguments: parquet, [systemId#54726, internalUUID#54727, plant#54728, product#54729, blockedForReplenishmentStartingFrom#54730, productionAspect#54731, salesPlant#54732, listing#54733], false
(545) Repartition
Arguments: 10, true
(546) Project
Arguments: [systemId#54726, internalUUID#54727, plant#54728, product#54729, blockedForReplenishmentStartingFrom#54730, productionAspect#54731, salesPlant#54732, listing#54733, struct(systemId, systemId#54726, internalUUID, internalUUID#54727, plant, plant#54728, product, product#54729, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54730, productionAspect, productionAspect#54731, salesPlant, salesPlant#54732, listing, listing#54733) AS productPlant#54734]
(547) Project
Arguments: [productPlant#54734]
(548) Join
Arguments: LeftOuter, ((product#54722 <=> productPlant#54734.product.internalRefUUID) AND (plant#54723 <=> productPlant#54734.plant.internalRefUUID))
(549) Project
Arguments: [product#54722, plant#54723, orderDateTime#54724, productPlant#54734]
(550) SubqueryAlias
Arguments: wl
(551) LogicalRelation
Arguments: parquet, [systemId#54735, internalUUID#54736, id#54737, displayId#54738, name#54739, category#54740, companyCode#54741, address#54742, mainDistributionChain#54743, mainPurchasingOrganization#54744, validPurchasingOrganizations#54745, productGroup#54746], false
(552) Repartition
Arguments: 10, true
(553) Project
Arguments: [internalUUID#54736, address#54742.timeZone.code AS timezonecode#54747]
(554) Join
Arguments: LeftOuter, (plant#54723 <=> internalUUID#54736)
(555) Project
Arguments: [product#54722, plant#54723, orderDateTime#54724, productPlant#54734, internalUUID#54736, CASE WHEN isnotnull(timezonecode#54747) THEN timezonecode#54747 ELSE UTC END AS timezonecode#54748]
(556) Project
Arguments: [product#54722, plant#54723, orderDateTime#54724, productPlant#54734, timezonecode#54748]
(557) LogicalRelation
Arguments: parquet, [systemId#54749, internalUUID#54750, id#54751, displayId#54752, name#54753, baseUnitOfMeasure#54754, unitOfMeasures#54755, unitOfMeasureConversions#54756, productionAspect#54757, salesAspect#54758, procurementAspect#54759, productGroup#54760], false
(558) Repartition
Arguments: 10, true
(559) Join
Arguments: LeftOuter, (product#54722 = internalUUID#54750)
(560) Project
Arguments: [product#54722, plant#54723, orderDateTime#54724, productPlant#54734, timezonecode#54748, systemId#54749, internalUUID#54750, id#54751, displayId#54752, name#54753, baseUnitOfMeasure#54754, unitOfMeasures#54755, unitOfMeasureConversions#54756, productionAspect#54757, salesAspect#54758, procurementAspect#54759, productGroup#54760, filter(unitOfMeasureConversions#54756, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54734.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54734.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54754.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54754.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54761]
(561) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54761.quantityNumerator), true, [quantityNumerator#54762]
(562) Project
Arguments: [product#54722, plant#54723, orderDateTime#54724, productPlant#54734, timezonecode#54748, systemId#54749, internalUUID#54750, id#54751, displayId#54752, name#54753, baseUnitOfMeasure#54754, unitOfMeasures#54755, unitOfMeasureConversions#54756, productionAspect#54757, salesAspect#54758, procurementAspect#54759, productGroup#54760, filteredUnitOfMeasureConversions#54761, quantityNumerator#54762]
(563) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54761.quantityDenominator), true, [quantityDenominator#54763]
(564) Project
Arguments: [product#54722, plant#54723, orderDateTime#54724, productPlant#54734, timezonecode#54748, systemId#54749, internalUUID#54750, id#54751, displayId#54752, name#54753, baseUnitOfMeasure#54754, unitOfMeasures#54755, unitOfMeasureConversions#54756, productionAspect#54757, salesAspect#54758, procurementAspect#54759, productGroup#54760, filteredUnitOfMeasureConversions#54761, quantityNumerator#54762, quantityDenominator#54763]
(565) Project
Arguments: [product#54722, plant#54723, orderDateTime#54724, productPlant#54734, timezonecode#54748, systemId#54749, internalUUID#54750, id#54751, displayId#54752, name#54753, baseUnitOfMeasure#54754, unitOfMeasures#54755, unitOfMeasureConversions#54756, productionAspect#54757, salesAspect#54758, procurementAspect#54759, productGroup#54760, filteredUnitOfMeasureConversions#54761, quantityNumerator#54762, quantityDenominator#54763, (cast(quantityNumerator#54762 as double) / cast(quantityDenominator#54763 as double)) AS outboundUnit#54764]
(566) Project
Arguments: [product#54722, plant#54723, orderDateTime#54724, productPlant#54734, timezonecode#54748, systemId#54749, internalUUID#54750, id#54751, displayId#54752, name#54753, baseUnitOfMeasure#54754, unitOfMeasures#54755, unitOfMeasureConversions#54756, productionAspect#54757, salesAspect#54758, procurementAspect#54759, productGroup#54760, filteredUnitOfMeasureConversions#54761, quantityNumerator#54762, quantityDenominator#54763, CASE WHEN (isnull(outboundUnit#54764) OR (outboundUnit#54764 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54764 END AS outboundUnit#54765]
(567) Project
Arguments: [product#54722, plant#54723, orderDateTime#54724, productPlant#54734, timezonecode#54748, outboundUnit#54765]
(568) Project
Arguments: [plant#54723]
(569) Deduplicate
Arguments: [plant#54723]
(570) Join
Arguments: Inner, (plantUuid#54719 = plant#54723)
(571) Project
Arguments: [plantId#54718, plantUuid#54719, storageLocId#54720, storageLocUuid#54721]
(572) Join
Arguments: Inner, (plant#54691.internalRefUUID <=> plantUuid#54719)
(573) Generate
Arguments: explode(filter(stockQuantities#54693, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#54721) AND (lambda x#50650.storageLocation.Id = storageLocId#54720)), lambda x#50650, false))), false, [stockQuantity#54766]
(574) Project
Arguments: [systemId#54688, internalUUID#54689, product#54690, plant#54691, calculationDateTime#54692, stockQuantities#54693, plantId#54718, plantUuid#54719, storageLocId#54720, storageLocUuid#54721, stockQuantity#54766]
(575) Aggregate
Arguments: [plantUuid#54719, internalUUID#54689, plant#54691, product#54690, systemId#54688], [plantUuid#54719, internalUUID#54689, plant#54691, product#54690, systemId#54688, first(calculationDateTime#54692, false) AS calculationDateTime#54767, collect_list(stockQuantity#54766, 0, 0) AS stockQuantities#54768]
(576) Project
Arguments: [systemId#54688, internalUUID#54689, product#54690, plant#54691, calculationDateTime#54767, stockQuantities#54768]
(577) Generate
Arguments: explode(stockQuantities#54768), false, [stockQuantity#54769]
(578) Project
Arguments: [systemId#54688, internalUUID#54689, product#54690, plant#54691, calculationDateTime#54767, stockQuantities#54768, stockQuantity#54769]
(579) Project
Arguments: [plant#54691.id AS plant#54770, plant#54691.internalRefUUID AS plantUuid#54771, product#54690.id AS product#54772, product#54690.internalRefUUID AS productUuid#54773, calculationDateTime#54767, stockQuantity#54769.storagelocation.id AS storageLocId#54774, stockQuantity#54769.storagelocation.internalRefUUID AS storageLocUuid#54775, stockQuantity#54769.quantity.measure AS quantity#54776, stockQuantity#54769.specialStockIndicator.code AS specialStockIndicator#54777, stockQuantity#54769.stockType.code AS stockType#54778]
(580) Filter
Arguments: ((specialStockIndicator#54777 = ) AND (stockType#54778 = 01))
(581) LogicalRelation
Arguments: parquet, [product#54779, plant#54780, orderDateTime#54781, planningStartDateTime#54782], false
(582) RepartitionByExpression
Arguments: [product#54779, plant#54780], 10
(583) Project
Arguments: [product#54779, plant#54780, orderDateTime#54781]
(584) LogicalRelation
Arguments: parquet, [systemId#54783, internalUUID#54784, plant#54785, product#54786, blockedForReplenishmentStartingFrom#54787, productionAspect#54788, salesPlant#54789, listing#54790], false
(585) Repartition
Arguments: 10, true
(586) Project
Arguments: [systemId#54783, internalUUID#54784, plant#54785, product#54786, blockedForReplenishmentStartingFrom#54787, productionAspect#54788, salesPlant#54789, listing#54790, struct(systemId, systemId#54783, internalUUID, internalUUID#54784, plant, plant#54785, product, product#54786, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54787, productionAspect, productionAspect#54788, salesPlant, salesPlant#54789, listing, listing#54790) AS productPlant#54791]
(587) Project
Arguments: [productPlant#54791]
(588) Join
Arguments: LeftOuter, ((product#54779 <=> productPlant#54791.product.internalRefUUID) AND (plant#54780 <=> productPlant#54791.plant.internalRefUUID))
(589) Project
Arguments: [product#54779, plant#54780, orderDateTime#54781, productPlant#54791]
(590) SubqueryAlias
Arguments: wl
(591) LogicalRelation
Arguments: parquet, [systemId#54792, internalUUID#54793, id#54794, displayId#54795, name#54796, category#54797, companyCode#54798, address#54799, mainDistributionChain#54800, mainPurchasingOrganization#54801, validPurchasingOrganizations#54802, productGroup#54803], false
(592) Repartition
Arguments: 10, true
(593) Project
Arguments: [internalUUID#54793, address#54799.timeZone.code AS timezonecode#54804]
(594) Join
Arguments: LeftOuter, (plant#54780 <=> internalUUID#54793)
(595) Project
Arguments: [product#54779, plant#54780, orderDateTime#54781, productPlant#54791, internalUUID#54793, CASE WHEN isnotnull(timezonecode#54804) THEN timezonecode#54804 ELSE UTC END AS timezonecode#54805]
(596) Project
Arguments: [product#54779, plant#54780, orderDateTime#54781, productPlant#54791, timezonecode#54805]
(597) LogicalRelation
Arguments: parquet, [systemId#54806, internalUUID#54807, id#54808, displayId#54809, name#54810, baseUnitOfMeasure#54811, unitOfMeasures#54812, unitOfMeasureConversions#54813, productionAspect#54814, salesAspect#54815, procurementAspect#54816, productGroup#54817], false
(598) Repartition
Arguments: 10, true
(599) Join
Arguments: LeftOuter, (product#54779 = internalUUID#54807)
(600) Project
Arguments: [product#54779, plant#54780, orderDateTime#54781, productPlant#54791, timezonecode#54805, systemId#54806, internalUUID#54807, id#54808, displayId#54809, name#54810, baseUnitOfMeasure#54811, unitOfMeasures#54812, unitOfMeasureConversions#54813, productionAspect#54814, salesAspect#54815, procurementAspect#54816, productGroup#54817, filter(unitOfMeasureConversions#54813, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54791.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54791.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54811.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54811.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54818]
(601) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54818.quantityNumerator), true, [quantityNumerator#54819]
(602) Project
Arguments: [product#54779, plant#54780, orderDateTime#54781, productPlant#54791, timezonecode#54805, systemId#54806, internalUUID#54807, id#54808, displayId#54809, name#54810, baseUnitOfMeasure#54811, unitOfMeasures#54812, unitOfMeasureConversions#54813, productionAspect#54814, salesAspect#54815, procurementAspect#54816, productGroup#54817, filteredUnitOfMeasureConversions#54818, quantityNumerator#54819]
(603) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54818.quantityDenominator), true, [quantityDenominator#54820]
(604) Project
Arguments: [product#54779, plant#54780, orderDateTime#54781, productPlant#54791, timezonecode#54805, systemId#54806, internalUUID#54807, id#54808, displayId#54809, name#54810, baseUnitOfMeasure#54811, unitOfMeasures#54812, unitOfMeasureConversions#54813, productionAspect#54814, salesAspect#54815, procurementAspect#54816, productGroup#54817, filteredUnitOfMeasureConversions#54818, quantityNumerator#54819, quantityDenominator#54820]
(605) Project
Arguments: [product#54779, plant#54780, orderDateTime#54781, productPlant#54791, timezonecode#54805, systemId#54806, internalUUID#54807, id#54808, displayId#54809, name#54810, baseUnitOfMeasure#54811, unitOfMeasures#54812, unitOfMeasureConversions#54813, productionAspect#54814, salesAspect#54815, procurementAspect#54816, productGroup#54817, filteredUnitOfMeasureConversions#54818, quantityNumerator#54819, quantityDenominator#54820, (cast(quantityNumerator#54819 as double) / cast(quantityDenominator#54820 as double)) AS outboundUnit#54821]
(606) Project
Arguments: [product#54779, plant#54780, orderDateTime#54781, productPlant#54791, timezonecode#54805, systemId#54806, internalUUID#54807, id#54808, displayId#54809, name#54810, baseUnitOfMeasure#54811, unitOfMeasures#54812, unitOfMeasureConversions#54813, productionAspect#54814, salesAspect#54815, procurementAspect#54816, productGroup#54817, filteredUnitOfMeasureConversions#54818, quantityNumerator#54819, quantityDenominator#54820, CASE WHEN (isnull(outboundUnit#54821) OR (outboundUnit#54821 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54821 END AS outboundUnit#54822]
(607) Project
Arguments: [product#54779, plant#54780, orderDateTime#54781, productPlant#54791, timezonecode#54805, outboundUnit#54822]
(608) Join
Arguments: Inner, ((plantUuid#54771 = plant#54780) AND (productUuid#54773 = product#54779))
(609) Filter
Arguments: (calculationDateTime#54767 <= orderDateTime#54781)
(610) Project
Arguments: [plantUuid#54771 AS plant#54823, productUuid#54773 AS product#54824, storageLocId#54774, calculationDateTime#54767, quantity#54776]
(611) Aggregate
Arguments: [plant#54823, product#54824, storageLocId#54774], [plant#54823, product#54824, storageLocId#54774, max(calculationDateTime#54767) AS max_calc_datetime#54825]
(612) Join
Arguments: Inner, ((((plant#54686 <=> plant#54823) AND (product#54687 <=> product#54824)) AND (storageLocId#54637 <=> storageLocId#54774)) AND (calculationDateTime#54630 <=> max_calc_datetime#54825))
(613) Project
Arguments: [plant#54686, product#54687, storageLocId#54637, calculationDateTime#54630, quantity#54639]
(614) Aggregate
Arguments: [product#54687, plant#54686], [product#54687, plant#54686, sum(quantity#54639) AS quantitySum#54826, min(calculationDateTime#54630) AS minCalculationDateTime#54827]
(615) Project
Arguments: [product#54687, plant#54686, quantitySum#54826, minCalculationDateTime#54827, round(quantitySum#54826, 0) AS roundedQuantitySum#54828]
(616) Join
Arguments: LeftOuter, ((plant#54508 = plant#54686) AND (product#54507 = product#54687))
(617) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, outboundUnit#54550, roundedQuantitySum#54828, minCalculationDateTime#54827]
(618) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, outboundUnit#54550, roundedQuantitySum#54828, minCalculationDateTime#54827, CASE WHEN isnotnull(minCalculationDateTime#54827) THEN minCalculationDateTime#54827 ELSE orderDateTime#54509 END AS stockDatetime#54829]
(619) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, outboundUnit#54550, roundedQuantitySum#54828, minCalculationDateTime#54827, stockDatetime#54829, CASE WHEN isnotnull(roundedQuantitySum#54828) THEN array(roundedQuantitySum#54828) ELSE array(0.0) END AS stockBatchQuantities#54830]
(620) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, outboundUnit#54550, roundedQuantitySum#54828, minCalculationDateTime#54827, stockDatetime#54829, stockBatchQuantities#54830, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#54831]
(621) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, outboundUnit#54550, roundedQuantitySum#54828, stockDatetime#54829, stockBatchQuantities#54830, stockBatchShelfLifeEndDatetimes#54831]
(622) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, outboundUnit#54550, stockDatetime#54829, stockBatchQuantities#54830, stockBatchShelfLifeEndDatetimes#54831]
(623) LogicalRelation
Arguments: parquet, [product#54832, plant#54833, orderDateTime#54834, planningStartDateTime#54835], false
(624) RepartitionByExpression
Arguments: [product#54832, plant#54833], 10
(625) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834]
(626) LogicalRelation
Arguments: parquet, [systemId#54836, internalUUID#54837, plant#54838, product#54839, blockedForReplenishmentStartingFrom#54840, productionAspect#54841, salesPlant#54842, listing#54843], false
(627) Repartition
Arguments: 10, true
(628) Project
Arguments: [systemId#54836, internalUUID#54837, plant#54838, product#54839, blockedForReplenishmentStartingFrom#54840, productionAspect#54841, salesPlant#54842, listing#54843, struct(systemId, systemId#54836, internalUUID, internalUUID#54837, plant, plant#54838, product, product#54839, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54840, productionAspect, productionAspect#54841, salesPlant, salesPlant#54842, listing, listing#54843) AS productPlant#54844]
(629) Project
Arguments: [productPlant#54844]
(630) Join
Arguments: LeftOuter, ((product#54832 <=> productPlant#54844.product.internalRefUUID) AND (plant#54833 <=> productPlant#54844.plant.internalRefUUID))
(631) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844]
(632) SubqueryAlias
Arguments: wl
(633) LogicalRelation
Arguments: parquet, [systemId#54845, internalUUID#54846, id#54847, displayId#54848, name#54849, category#54850, companyCode#54851, address#54852, mainDistributionChain#54853, mainPurchasingOrganization#54854, validPurchasingOrganizations#54855, productGroup#54856], false
(634) Repartition
Arguments: 10, true
(635) Project
Arguments: [internalUUID#54846, address#54852.timeZone.code AS timezonecode#54857]
(636) Join
Arguments: LeftOuter, (plant#54833 <=> internalUUID#54846)
(637) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, internalUUID#54846, CASE WHEN isnotnull(timezonecode#54857) THEN timezonecode#54857 ELSE UTC END AS timezonecode#54858]
(638) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858]
(639) LogicalRelation
Arguments: parquet, [systemId#54859, internalUUID#54860, id#54861, displayId#54862, name#54863, baseUnitOfMeasure#54864, unitOfMeasures#54865, unitOfMeasureConversions#54866, productionAspect#54867, salesAspect#54868, procurementAspect#54869, productGroup#54870], false
(640) Repartition
Arguments: 10, true
(641) Join
Arguments: LeftOuter, (product#54832 = internalUUID#54860)
(642) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, systemId#54859, internalUUID#54860, id#54861, displayId#54862, name#54863, baseUnitOfMeasure#54864, unitOfMeasures#54865, unitOfMeasureConversions#54866, productionAspect#54867, salesAspect#54868, procurementAspect#54869, productGroup#54870, filter(unitOfMeasureConversions#54866, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54844.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54844.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54864.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54864.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54871]
(643) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54871.quantityNumerator), true, [quantityNumerator#54872]
(644) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, systemId#54859, internalUUID#54860, id#54861, displayId#54862, name#54863, baseUnitOfMeasure#54864, unitOfMeasures#54865, unitOfMeasureConversions#54866, productionAspect#54867, salesAspect#54868, procurementAspect#54869, productGroup#54870, filteredUnitOfMeasureConversions#54871, quantityNumerator#54872]
(645) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54871.quantityDenominator), true, [quantityDenominator#54873]
(646) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, systemId#54859, internalUUID#54860, id#54861, displayId#54862, name#54863, baseUnitOfMeasure#54864, unitOfMeasures#54865, unitOfMeasureConversions#54866, productionAspect#54867, salesAspect#54868, procurementAspect#54869, productGroup#54870, filteredUnitOfMeasureConversions#54871, quantityNumerator#54872, quantityDenominator#54873]
(647) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, systemId#54859, internalUUID#54860, id#54861, displayId#54862, name#54863, baseUnitOfMeasure#54864, unitOfMeasures#54865, unitOfMeasureConversions#54866, productionAspect#54867, salesAspect#54868, procurementAspect#54869, productGroup#54870, filteredUnitOfMeasureConversions#54871, quantityNumerator#54872, quantityDenominator#54873, (cast(quantityNumerator#54872 as double) / cast(quantityDenominator#54873 as double)) AS outboundUnit#54874]
(648) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, systemId#54859, internalUUID#54860, id#54861, displayId#54862, name#54863, baseUnitOfMeasure#54864, unitOfMeasures#54865, unitOfMeasureConversions#54866, productionAspect#54867, salesAspect#54868, procurementAspect#54869, productGroup#54870, filteredUnitOfMeasureConversions#54871, quantityNumerator#54872, quantityDenominator#54873, CASE WHEN (isnull(outboundUnit#54874) OR (outboundUnit#54874 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54874 END AS outboundUnit#54875]
(649) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, outboundUnit#54875]
(650) LogicalRelation
Arguments: parquet, [systemId#54876, internalUUID#54877, product#54878, plant#54879, calculationDateTime#54880, stockQuantities#54881], false
(651) Repartition
Arguments: 10, true
(652) LogicalRelation
Arguments: parquet, [marketUnit#54882, description#54883, articleHierarchy#54884, defaultCurrency#54885, responsibilities#54886, replenishmentTypes#54887, distributionCenters#54888, assignedArticleHierarchyNodes#54889, minOrderQtySetting#54890, minOrderQtySettingInternal#54891, listingCheck#54892, odsSelection#54893, demandProfiles#54894, constraintProfiles#54895, optimizationProfiles#54896, orderGroupSplitProfiles#54897, supplierMinimumProfiles#54898, multipleRestrictionProfiles#54899, preferredUomSource#54900, handlingOfUnfulfilledDemands#54901, negligibleQuantitiesThreshold#54902, eventtype#54903], false
(653) Repartition
Arguments: 10, true
(654) Filter
Arguments: (marketUnit#54882 <=> DIP_1691)
(655) Project
Arguments: [marketUnit#54882, description#54883, articleHierarchy#54884, defaultCurrency#54885, responsibilities#54886, replenishmentTypes#54887, distributionCenters#54888, assignedArticleHierarchyNodes#54889, minOrderQtySetting#54890, minOrderQtySettingInternal#54891, listingCheck#54892, odsSelection#54893, demandProfiles#54894, constraintProfiles#54895, optimizationProfiles#54896, orderGroupSplitProfiles#54897, supplierMinimumProfiles#54898, multipleRestrictionProfiles#54899, preferredUomSource#54900, handlingOfUnfulfilledDemands#54901, negligibleQuantitiesThreshold#54902, eventtype#54903]
(656) Project
Arguments: [distributionCenters#54888]
(657) Generate
Arguments: explode(distributionCenters#54888), false, [distributionCenters#54904]
(658) Project
Arguments: [distributionCenters#54904]
(659) Generate
Arguments: explode(distributionCenters#54904.storageLocations), false, [storageLocations#54905]
(660) Project
Arguments: [distributionCenters#54904.id AS plantId#54906, distributionCenters#54904.internalRefUUID AS plantUuid#54907, storageLocations#54905]
(661) Project
Arguments: [plantId#54906, plantUuid#54907, storageLocations#54905.id AS storageLocId#54908, storageLocations#54905.internalRefUUID AS storageLocUuid#54909]
(662) LogicalRelation
Arguments: parquet, [product#54910, plant#54911, orderDateTime#54912, planningStartDateTime#54913], false
(663) RepartitionByExpression
Arguments: [product#54910, plant#54911], 10
(664) Project
Arguments: [product#54910, plant#54911, orderDateTime#54912]
(665) LogicalRelation
Arguments: parquet, [systemId#54914, internalUUID#54915, plant#54916, product#54917, blockedForReplenishmentStartingFrom#54918, productionAspect#54919, salesPlant#54920, listing#54921], false
(666) Repartition
Arguments: 10, true
(667) Project
Arguments: [systemId#54914, internalUUID#54915, plant#54916, product#54917, blockedForReplenishmentStartingFrom#54918, productionAspect#54919, salesPlant#54920, listing#54921, struct(systemId, systemId#54914, internalUUID, internalUUID#54915, plant, plant#54916, product, product#54917, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54918, productionAspect, productionAspect#54919, salesPlant, salesPlant#54920, listing, listing#54921) AS productPlant#54922]
(668) Project
Arguments: [productPlant#54922]
(669) Join
Arguments: LeftOuter, ((product#54910 <=> productPlant#54922.product.internalRefUUID) AND (plant#54911 <=> productPlant#54922.plant.internalRefUUID))
(670) Project
Arguments: [product#54910, plant#54911, orderDateTime#54912, productPlant#54922]
(671) SubqueryAlias
Arguments: wl
(672) LogicalRelation
Arguments: parquet, [systemId#54923, internalUUID#54924, id#54925, displayId#54926, name#54927, category#54928, companyCode#54929, address#54930, mainDistributionChain#54931, mainPurchasingOrganization#54932, validPurchasingOrganizations#54933, productGroup#54934], false
(673) Repartition
Arguments: 10, true
(674) Project
Arguments: [internalUUID#54924, address#54930.timeZone.code AS timezonecode#54935]
(675) Join
Arguments: LeftOuter, (plant#54911 <=> internalUUID#54924)
(676) Project
Arguments: [product#54910, plant#54911, orderDateTime#54912, productPlant#54922, internalUUID#54924, CASE WHEN isnotnull(timezonecode#54935) THEN timezonecode#54935 ELSE UTC END AS timezonecode#54936]
(677) Project
Arguments: [product#54910, plant#54911, orderDateTime#54912, productPlant#54922, timezonecode#54936]
(678) LogicalRelation
Arguments: parquet, [systemId#54937, internalUUID#54938, id#54939, displayId#54940, name#54941, baseUnitOfMeasure#54942, unitOfMeasures#54943, unitOfMeasureConversions#54944, productionAspect#54945, salesAspect#54946, procurementAspect#54947, productGroup#54948], false
(679) Repartition
Arguments: 10, true
(680) Join
Arguments: LeftOuter, (product#54910 = internalUUID#54938)
(681) Project
Arguments: [product#54910, plant#54911, orderDateTime#54912, productPlant#54922, timezonecode#54936, systemId#54937, internalUUID#54938, id#54939, displayId#54940, name#54941, baseUnitOfMeasure#54942, unitOfMeasures#54943, unitOfMeasureConversions#54944, productionAspect#54945, salesAspect#54946, procurementAspect#54947, productGroup#54948, filter(unitOfMeasureConversions#54944, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54922.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54922.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54942.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54942.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54949]
(682) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54949.quantityNumerator), true, [quantityNumerator#54950]
(683) Project
Arguments: [product#54910, plant#54911, orderDateTime#54912, productPlant#54922, timezonecode#54936, systemId#54937, internalUUID#54938, id#54939, displayId#54940, name#54941, baseUnitOfMeasure#54942, unitOfMeasures#54943, unitOfMeasureConversions#54944, productionAspect#54945, salesAspect#54946, procurementAspect#54947, productGroup#54948, filteredUnitOfMeasureConversions#54949, quantityNumerator#54950]
(684) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54949.quantityDenominator), true, [quantityDenominator#54951]
(685) Project
Arguments: [product#54910, plant#54911, orderDateTime#54912, productPlant#54922, timezonecode#54936, systemId#54937, internalUUID#54938, id#54939, displayId#54940, name#54941, baseUnitOfMeasure#54942, unitOfMeasures#54943, unitOfMeasureConversions#54944, productionAspect#54945, salesAspect#54946, procurementAspect#54947, productGroup#54948, filteredUnitOfMeasureConversions#54949, quantityNumerator#54950, quantityDenominator#54951]
(686) Project
Arguments: [product#54910, plant#54911, orderDateTime#54912, productPlant#54922, timezonecode#54936, systemId#54937, internalUUID#54938, id#54939, displayId#54940, name#54941, baseUnitOfMeasure#54942, unitOfMeasures#54943, unitOfMeasureConversions#54944, productionAspect#54945, salesAspect#54946, procurementAspect#54947, productGroup#54948, filteredUnitOfMeasureConversions#54949, quantityNumerator#54950, quantityDenominator#54951, (cast(quantityNumerator#54950 as double) / cast(quantityDenominator#54951 as double)) AS outboundUnit#54952]
(687) Project
Arguments: [product#54910, plant#54911, orderDateTime#54912, productPlant#54922, timezonecode#54936, systemId#54937, internalUUID#54938, id#54939, displayId#54940, name#54941, baseUnitOfMeasure#54942, unitOfMeasures#54943, unitOfMeasureConversions#54944, productionAspect#54945, salesAspect#54946, procurementAspect#54947, productGroup#54948, filteredUnitOfMeasureConversions#54949, quantityNumerator#54950, quantityDenominator#54951, CASE WHEN (isnull(outboundUnit#54952) OR (outboundUnit#54952 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54952 END AS outboundUnit#54953]
(688) Project
Arguments: [product#54910, plant#54911, orderDateTime#54912, productPlant#54922, timezonecode#54936, outboundUnit#54953]
(689) Project
Arguments: [plant#54911]
(690) Deduplicate
Arguments: [plant#54911]
(691) Join
Arguments: Inner, (plantUuid#54907 = plant#54911)
(692) Project
Arguments: [plantId#54906, plantUuid#54907, storageLocId#54908, storageLocUuid#54909]
(693) Join
Arguments: Inner, (plant#54879.internalRefUUID <=> plantUuid#54907)
(694) Generate
Arguments: explode(filter(stockQuantities#54881, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#54909) AND (lambda x#50650.storageLocation.Id = storageLocId#54908)), lambda x#50650, false))), false, [stockQuantity#54954]
(695) Project
Arguments: [systemId#54876, internalUUID#54877, product#54878, plant#54879, calculationDateTime#54880, stockQuantities#54881, plantId#54906, plantUuid#54907, storageLocId#54908, storageLocUuid#54909, stockQuantity#54954]
(696) Aggregate
Arguments: [plantUuid#54907, internalUUID#54877, plant#54879, product#54878, systemId#54876], [plantUuid#54907, internalUUID#54877, plant#54879, product#54878, systemId#54876, first(calculationDateTime#54880, false) AS calculationDateTime#54955, collect_list(stockQuantity#54954, 0, 0) AS stockQuantities#54956]
(697) Project
Arguments: [systemId#54876, internalUUID#54877, product#54878, plant#54879, calculationDateTime#54955, stockQuantities#54956]
(698) Generate
Arguments: explode(stockQuantities#54956), false, [stockQuantity#54957]
(699) Project
Arguments: [systemId#54876, internalUUID#54877, product#54878, plant#54879, calculationDateTime#54955, stockQuantities#54956, stockQuantity#54957]
(700) Project
Arguments: [plant#54879.id AS plant#54958, plant#54879.internalRefUUID AS plantUuid#54959, product#54878.id AS product#54960, product#54878.internalRefUUID AS productUuid#54961, calculationDateTime#54955, stockQuantity#54957.storagelocation.id AS storageLocId#54962, stockQuantity#54957.storagelocation.internalRefUUID AS storageLocUuid#54963, stockQuantity#54957.quantity.measure AS quantity#54964, stockQuantity#54957.specialStockIndicator.code AS specialStockIndicator#54965, stockQuantity#54957.stockType.code AS stockType#54966]
(701) Filter
Arguments: ((specialStockIndicator#54965 = ) AND (stockType#54966 = 01))
(702) LogicalRelation
Arguments: parquet, [product#54967, plant#54968, orderDateTime#54969, planningStartDateTime#54970], false
(703) RepartitionByExpression
Arguments: [product#54967, plant#54968], 10
(704) Project
Arguments: [product#54967, plant#54968, orderDateTime#54969]
(705) LogicalRelation
Arguments: parquet, [systemId#54971, internalUUID#54972, plant#54973, product#54974, blockedForReplenishmentStartingFrom#54975, productionAspect#54976, salesPlant#54977, listing#54978], false
(706) Repartition
Arguments: 10, true
(707) Project
Arguments: [systemId#54971, internalUUID#54972, plant#54973, product#54974, blockedForReplenishmentStartingFrom#54975, productionAspect#54976, salesPlant#54977, listing#54978, struct(systemId, systemId#54971, internalUUID, internalUUID#54972, plant, plant#54973, product, product#54974, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54975, productionAspect, productionAspect#54976, salesPlant, salesPlant#54977, listing, listing#54978) AS productPlant#54979]
(708) Project
Arguments: [productPlant#54979]
(709) Join
Arguments: LeftOuter, ((product#54967 <=> productPlant#54979.product.internalRefUUID) AND (plant#54968 <=> productPlant#54979.plant.internalRefUUID))
(710) Project
Arguments: [product#54967, plant#54968, orderDateTime#54969, productPlant#54979]
(711) SubqueryAlias
Arguments: wl
(712) LogicalRelation
Arguments: parquet, [systemId#54980, internalUUID#54981, id#54982, displayId#54983, name#54984, category#54985, companyCode#54986, address#54987, mainDistributionChain#54988, mainPurchasingOrganization#54989, validPurchasingOrganizations#54990, productGroup#54991], false
(713) Repartition
Arguments: 10, true
(714) Project
Arguments: [internalUUID#54981, address#54987.timeZone.code AS timezonecode#54992]
(715) Join
Arguments: LeftOuter, (plant#54968 <=> internalUUID#54981)
(716) Project
Arguments: [product#54967, plant#54968, orderDateTime#54969, productPlant#54979, internalUUID#54981, CASE WHEN isnotnull(timezonecode#54992) THEN timezonecode#54992 ELSE UTC END AS timezonecode#54993]
(717) Project
Arguments: [product#54967, plant#54968, orderDateTime#54969, productPlant#54979, timezonecode#54993]
(718) LogicalRelation
Arguments: parquet, [systemId#54994, internalUUID#54995, id#54996, displayId#54997, name#54998, baseUnitOfMeasure#54999, unitOfMeasures#55000, unitOfMeasureConversions#55001, productionAspect#55002, salesAspect#55003, procurementAspect#55004, productGroup#55005], false
(719) Repartition
Arguments: 10, true
(720) Join
Arguments: LeftOuter, (product#54967 = internalUUID#54995)
(721) Project
Arguments: [product#54967, plant#54968, orderDateTime#54969, productPlant#54979, timezonecode#54993, systemId#54994, internalUUID#54995, id#54996, displayId#54997, name#54998, baseUnitOfMeasure#54999, unitOfMeasures#55000, unitOfMeasureConversions#55001, productionAspect#55002, salesAspect#55003, procurementAspect#55004, productGroup#55005, filter(unitOfMeasureConversions#55001, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54979.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54979.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54999.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54999.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55006]
(722) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55006.quantityNumerator), true, [quantityNumerator#55007]
(723) Project
Arguments: [product#54967, plant#54968, orderDateTime#54969, productPlant#54979, timezonecode#54993, systemId#54994, internalUUID#54995, id#54996, displayId#54997, name#54998, baseUnitOfMeasure#54999, unitOfMeasures#55000, unitOfMeasureConversions#55001, productionAspect#55002, salesAspect#55003, procurementAspect#55004, productGroup#55005, filteredUnitOfMeasureConversions#55006, quantityNumerator#55007]
(724) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55006.quantityDenominator), true, [quantityDenominator#55008]
(725) Project
Arguments: [product#54967, plant#54968, orderDateTime#54969, productPlant#54979, timezonecode#54993, systemId#54994, internalUUID#54995, id#54996, displayId#54997, name#54998, baseUnitOfMeasure#54999, unitOfMeasures#55000, unitOfMeasureConversions#55001, productionAspect#55002, salesAspect#55003, procurementAspect#55004, productGroup#55005, filteredUnitOfMeasureConversions#55006, quantityNumerator#55007, quantityDenominator#55008]
(726) Project
Arguments: [product#54967, plant#54968, orderDateTime#54969, productPlant#54979, timezonecode#54993, systemId#54994, internalUUID#54995, id#54996, displayId#54997, name#54998, baseUnitOfMeasure#54999, unitOfMeasures#55000, unitOfMeasureConversions#55001, productionAspect#55002, salesAspect#55003, procurementAspect#55004, productGroup#55005, filteredUnitOfMeasureConversions#55006, quantityNumerator#55007, quantityDenominator#55008, (cast(quantityNumerator#55007 as double) / cast(quantityDenominator#55008 as double)) AS outboundUnit#55009]
(727) Project
Arguments: [product#54967, plant#54968, orderDateTime#54969, productPlant#54979, timezonecode#54993, systemId#54994, internalUUID#54995, id#54996, displayId#54997, name#54998, baseUnitOfMeasure#54999, unitOfMeasures#55000, unitOfMeasureConversions#55001, productionAspect#55002, salesAspect#55003, procurementAspect#55004, productGroup#55005, filteredUnitOfMeasureConversions#55006, quantityNumerator#55007, quantityDenominator#55008, CASE WHEN (isnull(outboundUnit#55009) OR (outboundUnit#55009 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#55009 END AS outboundUnit#55010]
(728) Project
Arguments: [product#54967, plant#54968, orderDateTime#54969, productPlant#54979, timezonecode#54993, outboundUnit#55010]
(729) Join
Arguments: Inner, ((plantUuid#54959 = plant#54968) AND (productUuid#54961 = product#54967))
(730) Filter
Arguments: (calculationDateTime#54955 <= orderDateTime#54969)
(731) Project
Arguments: [plantUuid#54959 AS plant#55011, productUuid#54961 AS product#55012, storageLocId#54962, calculationDateTime#54955, quantity#54964]
(732) LogicalRelation
Arguments: parquet, [systemId#55013, internalUUID#55014, product#55015, plant#55016, calculationDateTime#55017, stockQuantities#55018], false
(733) Repartition
Arguments: 10, true
(734) LogicalRelation
Arguments: parquet, [marketUnit#55019, description#55020, articleHierarchy#55021, defaultCurrency#55022, responsibilities#55023, replenishmentTypes#55024, distributionCenters#55025, assignedArticleHierarchyNodes#55026, minOrderQtySetting#55027, minOrderQtySettingInternal#55028, listingCheck#55029, odsSelection#55030, demandProfiles#55031, constraintProfiles#55032, optimizationProfiles#55033, orderGroupSplitProfiles#55034, supplierMinimumProfiles#55035, multipleRestrictionProfiles#55036, preferredUomSource#55037, handlingOfUnfulfilledDemands#55038, negligibleQuantitiesThreshold#55039, eventtype#55040], false
(735) Repartition
Arguments: 10, true
(736) Filter
Arguments: (marketUnit#55019 <=> DIP_1691)
(737) Project
Arguments: [marketUnit#55019, description#55020, articleHierarchy#55021, defaultCurrency#55022, responsibilities#55023, replenishmentTypes#55024, distributionCenters#55025, assignedArticleHierarchyNodes#55026, minOrderQtySetting#55027, minOrderQtySettingInternal#55028, listingCheck#55029, odsSelection#55030, demandProfiles#55031, constraintProfiles#55032, optimizationProfiles#55033, orderGroupSplitProfiles#55034, supplierMinimumProfiles#55035, multipleRestrictionProfiles#55036, preferredUomSource#55037, handlingOfUnfulfilledDemands#55038, negligibleQuantitiesThreshold#55039, eventtype#55040]
(738) Project
Arguments: [distributionCenters#55025]
(739) Generate
Arguments: explode(distributionCenters#55025), false, [distributionCenters#55041]
(740) Project
Arguments: [distributionCenters#55041]
(741) Generate
Arguments: explode(distributionCenters#55041.storageLocations), false, [storageLocations#55042]
(742) Project
Arguments: [distributionCenters#55041.id AS plantId#55043, distributionCenters#55041.internalRefUUID AS plantUuid#55044, storageLocations#55042]
(743) Project
Arguments: [plantId#55043, plantUuid#55044, storageLocations#55042.id AS storageLocId#55045, storageLocations#55042.internalRefUUID AS storageLocUuid#55046]
(744) LogicalRelation
Arguments: parquet, [product#55047, plant#55048, orderDateTime#55049, planningStartDateTime#55050], false
(745) RepartitionByExpression
Arguments: [product#55047, plant#55048], 10
(746) Project
Arguments: [product#55047, plant#55048, orderDateTime#55049]
(747) LogicalRelation
Arguments: parquet, [systemId#55051, internalUUID#55052, plant#55053, product#55054, blockedForReplenishmentStartingFrom#55055, productionAspect#55056, salesPlant#55057, listing#55058], false
(748) Repartition
Arguments: 10, true
(749) Project
Arguments: [systemId#55051, internalUUID#55052, plant#55053, product#55054, blockedForReplenishmentStartingFrom#55055, productionAspect#55056, salesPlant#55057, listing#55058, struct(systemId, systemId#55051, internalUUID, internalUUID#55052, plant, plant#55053, product, product#55054, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#55055, productionAspect, productionAspect#55056, salesPlant, salesPlant#55057, listing, listing#55058) AS productPlant#55059]
(750) Project
Arguments: [productPlant#55059]
(751) Join
Arguments: LeftOuter, ((product#55047 <=> productPlant#55059.product.internalRefUUID) AND (plant#55048 <=> productPlant#55059.plant.internalRefUUID))
(752) Project
Arguments: [product#55047, plant#55048, orderDateTime#55049, productPlant#55059]
(753) SubqueryAlias
Arguments: wl
(754) LogicalRelation
Arguments: parquet, [systemId#55060, internalUUID#55061, id#55062, displayId#55063, name#55064, category#55065, companyCode#55066, address#55067, mainDistributionChain#55068, mainPurchasingOrganization#55069, validPurchasingOrganizations#55070, productGroup#55071], false
(755) Repartition
Arguments: 10, true
(756) Project
Arguments: [internalUUID#55061, address#55067.timeZone.code AS timezonecode#55072]
(757) Join
Arguments: LeftOuter, (plant#55048 <=> internalUUID#55061)
(758) Project
Arguments: [product#55047, plant#55048, orderDateTime#55049, productPlant#55059, internalUUID#55061, CASE WHEN isnotnull(timezonecode#55072) THEN timezonecode#55072 ELSE UTC END AS timezonecode#55073]
(759) Project
Arguments: [product#55047, plant#55048, orderDateTime#55049, productPlant#55059, timezonecode#55073]
(760) LogicalRelation
Arguments: parquet, [systemId#55074, internalUUID#55075, id#55076, displayId#55077, name#55078, baseUnitOfMeasure#55079, unitOfMeasures#55080, unitOfMeasureConversions#55081, productionAspect#55082, salesAspect#55083, procurementAspect#55084, productGroup#55085], false
(761) Repartition
Arguments: 10, true
(762) Join
Arguments: LeftOuter, (product#55047 = internalUUID#55075)
(763) Project
Arguments: [product#55047, plant#55048, orderDateTime#55049, productPlant#55059, timezonecode#55073, systemId#55074, internalUUID#55075, id#55076, displayId#55077, name#55078, baseUnitOfMeasure#55079, unitOfMeasures#55080, unitOfMeasureConversions#55081, productionAspect#55082, salesAspect#55083, procurementAspect#55084, productGroup#55085, filter(unitOfMeasureConversions#55081, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#55059.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#55059.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55079.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55079.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55086]
(764) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55086.quantityNumerator), true, [quantityNumerator#55087]
(765) Project
Arguments: [product#55047, plant#55048, orderDateTime#55049, productPlant#55059, timezonecode#55073, systemId#55074, internalUUID#55075, id#55076, displayId#55077, name#55078, baseUnitOfMeasure#55079, unitOfMeasures#55080, unitOfMeasureConversions#55081, productionAspect#55082, salesAspect#55083, procurementAspect#55084, productGroup#55085, filteredUnitOfMeasureConversions#55086, quantityNumerator#55087]
(766) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55086.quantityDenominator), true, [quantityDenominator#55088]
(767) Project
Arguments: [product#55047, plant#55048, orderDateTime#55049, productPlant#55059, timezonecode#55073, systemId#55074, internalUUID#55075, id#55076, displayId#55077, name#55078, baseUnitOfMeasure#55079, unitOfMeasures#55080, unitOfMeasureConversions#55081, productionAspect#55082, salesAspect#55083, procurementAspect#55084, productGroup#55085, filteredUnitOfMeasureConversions#55086, quantityNumerator#55087, quantityDenominator#55088]
(768) Project
Arguments: [product#55047, plant#55048, orderDateTime#55049, productPlant#55059, timezonecode#55073, systemId#55074, internalUUID#55075, id#55076, displayId#55077, name#55078, baseUnitOfMeasure#55079, unitOfMeasures#55080, unitOfMeasureConversions#55081, productionAspect#55082, salesAspect#55083, procurementAspect#55084, productGroup#55085, filteredUnitOfMeasureConversions#55086, quantityNumerator#55087, quantityDenominator#55088, (cast(quantityNumerator#55087 as double) / cast(quantityDenominator#55088 as double)) AS outboundUnit#55089]
(769) Project
Arguments: [product#55047, plant#55048, orderDateTime#55049, productPlant#55059, timezonecode#55073, systemId#55074, internalUUID#55075, id#55076, displayId#55077, name#55078, baseUnitOfMeasure#55079, unitOfMeasures#55080, unitOfMeasureConversions#55081, productionAspect#55082, salesAspect#55083, procurementAspect#55084, productGroup#55085, filteredUnitOfMeasureConversions#55086, quantityNumerator#55087, quantityDenominator#55088, CASE WHEN (isnull(outboundUnit#55089) OR (outboundUnit#55089 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#55089 END AS outboundUnit#55090]
(770) Project
Arguments: [product#55047, plant#55048, orderDateTime#55049, productPlant#55059, timezonecode#55073, outboundUnit#55090]
(771) Project
Arguments: [plant#55048]
(772) Deduplicate
Arguments: [plant#55048]
(773) Join
Arguments: Inner, (plantUuid#55044 = plant#55048)
(774) Project
Arguments: [plantId#55043, plantUuid#55044, storageLocId#55045, storageLocUuid#55046]
(775) Join
Arguments: Inner, (plant#55016.internalRefUUID <=> plantUuid#55044)
(776) Generate
Arguments: explode(filter(stockQuantities#55018, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#55046) AND (lambda x#50650.storageLocation.Id = storageLocId#55045)), lambda x#50650, false))), false, [stockQuantity#55091]
(777) Project
Arguments: [systemId#55013, internalUUID#55014, product#55015, plant#55016, calculationDateTime#55017, stockQuantities#55018, plantId#55043, plantUuid#55044, storageLocId#55045, storageLocUuid#55046, stockQuantity#55091]
(778) Aggregate
Arguments: [plantUuid#55044, internalUUID#55014, plant#55016, product#55015, systemId#55013], [plantUuid#55044, internalUUID#55014, plant#55016, product#55015, systemId#55013, first(calculationDateTime#55017, false) AS calculationDateTime#55092, collect_list(stockQuantity#55091, 0, 0) AS stockQuantities#55093]
(779) Project
Arguments: [systemId#55013, internalUUID#55014, product#55015, plant#55016, calculationDateTime#55092, stockQuantities#55093]
(780) Generate
Arguments: explode(stockQuantities#55093), false, [stockQuantity#55094]
(781) Project
Arguments: [systemId#55013, internalUUID#55014, product#55015, plant#55016, calculationDateTime#55092, stockQuantities#55093, stockQuantity#55094]
(782) Project
Arguments: [plant#55016.id AS plant#55095, plant#55016.internalRefUUID AS plantUuid#55096, product#55015.id AS product#55097, product#55015.internalRefUUID AS productUuid#55098, calculationDateTime#55092, stockQuantity#55094.storagelocation.id AS storageLocId#55099, stockQuantity#55094.storagelocation.internalRefUUID AS storageLocUuid#55100, stockQuantity#55094.quantity.measure AS quantity#55101, stockQuantity#55094.specialStockIndicator.code AS specialStockIndicator#55102, stockQuantity#55094.stockType.code AS stockType#55103]
(783) Filter
Arguments: ((specialStockIndicator#55102 = ) AND (stockType#55103 = 01))
(784) LogicalRelation
Arguments: parquet, [product#55104, plant#55105, orderDateTime#55106, planningStartDateTime#55107], false
(785) RepartitionByExpression
Arguments: [product#55104, plant#55105], 10
(786) Project
Arguments: [product#55104, plant#55105, orderDateTime#55106]
(787) LogicalRelation
Arguments: parquet, [systemId#55108, internalUUID#55109, plant#55110, product#55111, blockedForReplenishmentStartingFrom#55112, productionAspect#55113, salesPlant#55114, listing#55115], false
(788) Repartition
Arguments: 10, true
(789) Project
Arguments: [systemId#55108, internalUUID#55109, plant#55110, product#55111, blockedForReplenishmentStartingFrom#55112, productionAspect#55113, salesPlant#55114, listing#55115, struct(systemId, systemId#55108, internalUUID, internalUUID#55109, plant, plant#55110, product, product#55111, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#55112, productionAspect, productionAspect#55113, salesPlant, salesPlant#55114, listing, listing#55115) AS productPlant#55116]
(790) Project
Arguments: [productPlant#55116]
(791) Join
Arguments: LeftOuter, ((product#55104 <=> productPlant#55116.product.internalRefUUID) AND (plant#55105 <=> productPlant#55116.plant.internalRefUUID))
(792) Project
Arguments: [product#55104, plant#55105, orderDateTime#55106, productPlant#55116]
(793) SubqueryAlias
Arguments: wl
(794) LogicalRelation
Arguments: parquet, [systemId#55117, internalUUID#55118, id#55119, displayId#55120, name#55121, category#55122, companyCode#55123, address#55124, mainDistributionChain#55125, mainPurchasingOrganization#55126, validPurchasingOrganizations#55127, productGroup#55128], false
(795) Repartition
Arguments: 10, true
(796) Project
Arguments: [internalUUID#55118, address#55124.timeZone.code AS timezonecode#55129]
(797) Join
Arguments: LeftOuter, (plant#55105 <=> internalUUID#55118)
(798) Project
Arguments: [product#55104, plant#55105, orderDateTime#55106, productPlant#55116, internalUUID#55118, CASE WHEN isnotnull(timezonecode#55129) THEN timezonecode#55129 ELSE UTC END AS timezonecode#55130]
(799) Project
Arguments: [product#55104, plant#55105, orderDateTime#55106, productPlant#55116, timezonecode#55130]
(800) LogicalRelation
Arguments: parquet, [systemId#55131, internalUUID#55132, id#55133, displayId#55134, name#55135, baseUnitOfMeasure#55136, unitOfMeasures#55137, unitOfMeasureConversions#55138, productionAspect#55139, salesAspect#55140, procurementAspect#55141, productGroup#55142], false
(801) Repartition
Arguments: 10, true
(802) Join
Arguments: LeftOuter, (product#55104 = internalUUID#55132)
(803) Project
Arguments: [product#55104, plant#55105, orderDateTime#55106, productPlant#55116, timezonecode#55130, systemId#55131, internalUUID#55132, id#55133, displayId#55134, name#55135, baseUnitOfMeasure#55136, unitOfMeasures#55137, unitOfMeasureConversions#55138, productionAspect#55139, salesAspect#55140, procurementAspect#55141, productGroup#55142, filter(unitOfMeasureConversions#55138, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#55116.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#55116.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55136.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55136.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55143]
(804) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55143.quantityNumerator), true, [quantityNumerator#55144]
(805) Project
Arguments: [product#55104, plant#55105, orderDateTime#55106, productPlant#55116, timezonecode#55130, systemId#55131, internalUUID#55132, id#55133, displayId#55134, name#55135, baseUnitOfMeasure#55136, unitOfMeasures#55137, unitOfMeasureConversions#55138, productionAspect#55139, salesAspect#55140, procurementAspect#55141, productGroup#55142, filteredUnitOfMeasureConversions#55143, quantityNumerator#55144]
(806) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55143.quantityDenominator), true, [quantityDenominator#55145]
(807) Project
Arguments: [product#55104, plant#55105, orderDateTime#55106, productPlant#55116, timezonecode#55130, systemId#55131, internalUUID#55132, id#55133, displayId#55134, name#55135, baseUnitOfMeasure#55136, unitOfMeasures#55137, unitOfMeasureConversions#55138, productionAspect#55139, salesAspect#55140, procurementAspect#55141, productGroup#55142, filteredUnitOfMeasureConversions#55143, quantityNumerator#55144, quantityDenominator#55145]
(808) Project
Arguments: [product#55104, plant#55105, orderDateTime#55106, productPlant#55116, timezonecode#55130, systemId#55131, internalUUID#55132, id#55133, displayId#55134, name#55135, baseUnitOfMeasure#55136, unitOfMeasures#55137, unitOfMeasureConversions#55138, productionAspect#55139, salesAspect#55140, procurementAspect#55141, productGroup#55142, filteredUnitOfMeasureConversions#55143, quantityNumerator#55144, quantityDenominator#55145, (cast(quantityNumerator#55144 as double) / cast(quantityDenominator#55145 as double)) AS outboundUnit#55146]
(809) Project
Arguments: [product#55104, plant#55105, orderDateTime#55106, productPlant#55116, timezonecode#55130, systemId#55131, internalUUID#55132, id#55133, displayId#55134, name#55135, baseUnitOfMeasure#55136, unitOfMeasures#55137, unitOfMeasureConversions#55138, productionAspect#55139, salesAspect#55140, procurementAspect#55141, productGroup#55142, filteredUnitOfMeasureConversions#55143, quantityNumerator#55144, quantityDenominator#55145, CASE WHEN (isnull(outboundUnit#55146) OR (outboundUnit#55146 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#55146 END AS outboundUnit#55147]
(810) Project
Arguments: [product#55104, plant#55105, orderDateTime#55106, productPlant#55116, timezonecode#55130, outboundUnit#55147]
(811) Join
Arguments: Inner, ((plantUuid#55096 = plant#55105) AND (productUuid#55098 = product#55104))
(812) Filter
Arguments: (calculationDateTime#55092 <= orderDateTime#55106)
(813) Project
Arguments: [plantUuid#55096 AS plant#55148, productUuid#55098 AS product#55149, storageLocId#55099, calculationDateTime#55092, quantity#55101]
(814) Aggregate
Arguments: [plant#55148, product#55149, storageLocId#55099], [plant#55148, product#55149, storageLocId#55099, max(calculationDateTime#55092) AS max_calc_datetime#55150]
(815) Join
Arguments: Inner, ((((plant#55011 <=> plant#55148) AND (product#55012 <=> product#55149)) AND (storageLocId#54962 <=> storageLocId#55099)) AND (calculationDateTime#54955 <=> max_calc_datetime#55150))
(816) Project
Arguments: [plant#55011, product#55012, storageLocId#54962, calculationDateTime#54955, quantity#54964]
(817) Aggregate
Arguments: [product#55012, plant#55011], [product#55012, plant#55011, sum(quantity#54964) AS quantitySum#55151, min(calculationDateTime#54955) AS minCalculationDateTime#55152]
(818) Project
Arguments: [product#55012, plant#55011, quantitySum#55151, minCalculationDateTime#55152, round(quantitySum#55151, 0) AS roundedQuantitySum#55153]
(819) Join
Arguments: LeftOuter, ((plant#54833 = plant#55011) AND (product#54832 = product#55012))
(820) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, outboundUnit#54875, roundedQuantitySum#55153, minCalculationDateTime#55152]
(821) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, outboundUnit#54875, roundedQuantitySum#55153, minCalculationDateTime#55152, CASE WHEN isnotnull(minCalculationDateTime#55152) THEN minCalculationDateTime#55152 ELSE orderDateTime#54834 END AS stockDatetime#55154]
(822) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, outboundUnit#54875, roundedQuantitySum#55153, minCalculationDateTime#55152, stockDatetime#55154, CASE WHEN isnotnull(roundedQuantitySum#55153) THEN array(roundedQuantitySum#55153) ELSE array(0.0) END AS stockBatchQuantities#55155]
(823) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, outboundUnit#54875, roundedQuantitySum#55153, minCalculationDateTime#55152, stockDatetime#55154, stockBatchQuantities#55155, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#55156]
(824) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, outboundUnit#54875, roundedQuantitySum#55153, stockDatetime#55154, stockBatchQuantities#55155, stockBatchShelfLifeEndDatetimes#55156]
(825) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, outboundUnit#54875, stockDatetime#55154, stockBatchQuantities#55155, stockBatchShelfLifeEndDatetimes#55156]
(826) LogicalRelation
Arguments: parquet, [product#55157, plant#55158, demandChannel#55159, demandStream#55160, considerVariance#55161, demandTimeBuckets#55162, demandPointInTimeStart#55163, demandPointInTimeEnd#55164, demandPointInTime#55165], false
(827) Join
Arguments: LeftOuter, ((product#54832 = product#55157) AND (plant#54833 = plant#55158))
(828) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, outboundUnit#54875, stockDatetime#55154, stockBatchQuantities#55155, stockBatchShelfLifeEndDatetimes#55156, demandChannel#55159, demandStream#55160, considerVariance#55161, demandTimeBuckets#55162, demandPointInTimeStart#55163, demandPointInTimeEnd#55164, demandPointInTime#55165, product#55157, plant#55158]
(829) Project
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, outboundUnit#54875, stockDatetime#55154, stockBatchQuantities#55155, stockBatchShelfLifeEndDatetimes#55156, demandChannel#55159, demandStream#55160, considerVariance#55161, demandTimeBuckets#55162, demandPointInTimeStart#55163, demandPointInTimeEnd#55164, demandPointInTime#55165, CASE WHEN isnotnull(product#55157) THEN struct(demandChannel, demandChannel#55159, demandStream, demandStream#55160, considerVariance, considerVariance#55161, demandTimeBuckets, demandTimeBuckets#55162, demandPointInTimeStart, demandPointInTimeStart#55163, demandPointInTimeEnd, demandPointInTimeEnd#55164, demandPointInTime, demandPointInTime#55165) 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#55166]
(830) Aggregate
Arguments: [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, outboundUnit#54875, stockDatetime#55154, stockBatchQuantities#55155, stockBatchShelfLifeEndDatetimes#55156], [product#54832, plant#54833, orderDateTime#54834, productPlant#54844, timezonecode#54858, outboundUnit#54875, stockDatetime#55154, stockBatchQuantities#55155, stockBatchShelfLifeEndDatetimes#55156, collect_list(rawDemands#55166, 0, 0) AS rawDemands#55167]
(831) DeserializeToObject
Arguments: createexternalrow(invoke(product#54832.toString()), invoke(plant#54833.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#54834)), if (isnull(productPlant#54844)) null else createexternalrow(invoke(productPlant#54844.systemId.toString()), invoke(productPlant#54844.internalUUID.toString()), if (isnull(productPlant#54844.plant)) null else createexternalrow(invoke(productPlant#54844.plant.internalRefUUID.toString()), invoke(productPlant#54844.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#54844.product)) null else createexternalrow(invoke(productPlant#54844.product.internalRefUUID.toString()), invoke(productPlant#54844.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#54844.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#54844.productionAspect)) null else createexternalrow(if (isnull(productPlant#54844.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#54844.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#54844.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#54844.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#54844.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#54844.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#54844.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#54844.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#54844.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#54844.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#54844.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#54844.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#54844.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#54844.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#54844.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#54844.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#54844.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#54844.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#54844.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#54844.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#54844.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#54844.salesPlant)) null else createexternalrow(if (isnull(productPlant#54844.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#54844.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#54844.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, 7092), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#54844.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#54858.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#54875)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#55154)), mapobjects(lambdavariable(MapObject, DoubleType, true, 7093), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 7093) as double))), stockBatchQuantities#55155, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 7094), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 7094) as timestamp)))), stockBatchShelfLifeEndDatetimes#55156, 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, 7095), 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, 7095))) 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, 7095).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, 7095).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, 7095).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).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, 7095).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, 7095).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, 7095).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).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, 7095).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#55167, 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#51012: org.apache.spark.sql.Row
(832) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, 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#51017: 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#55168, 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#55169, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7083), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7083), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7084), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7084), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7085), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7085), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7086), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7086), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7087), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7087), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#55170, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7089), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7089), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7090), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7090), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7091), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7091), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#55171]
(834) Join
Arguments: LeftOuter, ((plant#55169 <=> plant#54508) AND (product#55168 <=> product#54507))
(835) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, outboundUnit#54550, stockDatetime#54829, stockBatchQuantities#54830, stockBatchShelfLifeEndDatetimes#54831, plant#55169, dayBucketDemands#55170, pointInTimeDemands#55171]
(836) Project
Arguments: [product#54507, plant#54508, orderDateTime#54509, productPlant#54519, timezonecode#54533, outboundUnit#54550, stockDatetime#54829, stockBatchQuantities#54830, stockBatchShelfLifeEndDatetimes#54831, dayBucketDemands#55170, pointInTimeDemands#55171]
(837) LogicalRelation
Arguments: parquet, [marketUnit#51411, description#51412, articleHierarchy#51413, defaultCurrency#51414, responsibilities#51415, replenishmentTypes#51416, distributionCenters#51417, assignedArticleHierarchyNodes#51418, minOrderQtySetting#51419, minOrderQtySettingInternal#51420, listingCheck#51421, odsSelection#51422, demandProfiles#51423, constraintProfiles#51424, optimizationProfiles#51425, orderGroupSplitProfiles#51426, supplierMinimumProfiles#51427, multipleRestrictionProfiles#51428, preferredUomSource#51429, handlingOfUnfulfilledDemands#51430, negligibleQuantitiesThreshold#51431, eventtype#51432], false
(838) Repartition
Arguments: 10, true
(839) Filter
Arguments: (marketUnit#51411 <=> DIP_1691)
(840) Project
Arguments: [marketUnit#51411, description#51412, articleHierarchy#51413, defaultCurrency#51414, responsibilities#51415, replenishmentTypes#51416, distributionCenters#51417, assignedArticleHierarchyNodes#51418, minOrderQtySetting#51419, minOrderQtySettingInternal#51420, listingCheck#51421, odsSelection#51422, demandProfiles#51423, constraintProfiles#51424, optimizationProfiles#51425, orderGroupSplitProfiles#51426, supplierMinimumProfiles#51427, multipleRestrictionProfiles#51428, preferredUomSource#51429, handlingOfUnfulfilledDemands#51430, negligibleQuantitiesThreshold#51431, eventtype#51432]
(841) Project
Arguments: [distributionCenters#51417]
(842) Generate
Arguments: explode(distributionCenters#51417), false, [distributionCenters#51433]
(843) Project
Arguments: [distributionCenters#51433]
(844) Generate
Arguments: explode(distributionCenters#51433.storageLocations), false, [storageLocations#51434]
(845) Project
Arguments: [distributionCenters#51433.id AS plantId#51435, distributionCenters#51433.internalRefUUID AS plantUuid#51436, storageLocations#51434]
(846) Project
Arguments: [plantId#51435, plantUuid#51436, storageLocations#51434.id AS storageLocId#51437, storageLocations#51434.internalRefUUID AS storageLocUuid#51438]
(847) LogicalRelation
Arguments: parquet, [product#51439, plant#51440, orderDateTime#51441, planningStartDateTime#51442], false
(848) RepartitionByExpression
Arguments: [product#51439, plant#51440], 10
(849) Project
Arguments: [product#51439, plant#51440, orderDateTime#51441]
(850) LogicalRelation
Arguments: parquet, [systemId#51443, internalUUID#51444, plant#51445, product#51446, blockedForReplenishmentStartingFrom#51447, productionAspect#51448, salesPlant#51449, listing#51450], false
(851) Repartition
Arguments: 10, true
(852) Project
Arguments: [systemId#51443, internalUUID#51444, plant#51445, product#51446, blockedForReplenishmentStartingFrom#51447, productionAspect#51448, salesPlant#51449, listing#51450, struct(systemId, systemId#51443, internalUUID, internalUUID#51444, plant, plant#51445, product, product#51446, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#51447, productionAspect, productionAspect#51448, salesPlant, salesPlant#51449, listing, listing#51450) AS productPlant#51451]
(853) Project
Arguments: [productPlant#51451]
(854) Join
Arguments: LeftOuter, ((product#51439 <=> productPlant#51451.product.internalRefUUID) AND (plant#51440 <=> productPlant#51451.plant.internalRefUUID))
(855) Project
Arguments: [product#51439, plant#51440, orderDateTime#51441, productPlant#51451]
(856) SubqueryAlias
Arguments: wl
(857) LogicalRelation
Arguments: parquet, [systemId#51452, internalUUID#51453, id#51454, displayId#51455, name#51456, category#51457, companyCode#51458, address#51459, mainDistributionChain#51460, mainPurchasingOrganization#51461, validPurchasingOrganizations#51462, productGroup#51463], false
(858) Repartition
Arguments: 10, true
(859) Project
Arguments: [internalUUID#51453, address#51459.timeZone.code AS timezonecode#51464]
(860) Join
Arguments: LeftOuter, (plant#51440 <=> internalUUID#51453)
(861) Project
Arguments: [product#51439, plant#51440, orderDateTime#51441, productPlant#51451, internalUUID#51453, CASE WHEN isnotnull(timezonecode#51464) THEN timezonecode#51464 ELSE UTC END AS timezonecode#51465]
(862) Project
Arguments: [product#51439, plant#51440, orderDateTime#51441, productPlant#51451, timezonecode#51465]
(863) LogicalRelation
Arguments: parquet, [systemId#51466, internalUUID#51467, id#51468, displayId#51469, name#51470, baseUnitOfMeasure#51471, unitOfMeasures#51472, unitOfMeasureConversions#51473, productionAspect#51474, salesAspect#51475, procurementAspect#51476, productGroup#51477], false
(864) Repartition
Arguments: 10, true
(865) Join
Arguments: LeftOuter, (product#51439 = internalUUID#51467)
(866) Project
Arguments: [product#51439, plant#51440, orderDateTime#51441, productPlant#51451, timezonecode#51465, systemId#51466, internalUUID#51467, id#51468, displayId#51469, name#51470, baseUnitOfMeasure#51471, unitOfMeasures#51472, unitOfMeasureConversions#51473, productionAspect#51474, salesAspect#51475, procurementAspect#51476, productGroup#51477, filter(unitOfMeasureConversions#51473, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#51451.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#51451.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#51471.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#51471.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#51478]
(867) Generate
Arguments: explode(filteredUnitOfMeasureConversions#51478.quantityNumerator), true, [quantityNumerator#51479]
(868) Project
Arguments: [product#51439, plant#51440, orderDateTime#51441, productPlant#51451, timezonecode#51465, systemId#51466, internalUUID#51467, id#51468, displayId#51469, name#51470, baseUnitOfMeasure#51471, unitOfMeasures#51472, unitOfMeasureConversions#51473, productionAspect#51474, salesAspect#51475, procurementAspect#51476, productGroup#51477, filteredUnitOfMeasureConversions#51478, quantityNumerator#51479]
(869) Generate
Arguments: explode(filteredUnitOfMeasureConversions#51478.quantityDenominator), true, [quantityDenominator#51480]
(870) Project
Arguments: [product#51439, plant#51440, orderDateTime#51441, productPlant#51451, timezonecode#51465, systemId#51466, internalUUID#51467, id#51468, displayId#51469, name#51470, baseUnitOfMeasure#51471, unitOfMeasures#51472, unitOfMeasureConversions#51473, productionAspect#51474, salesAspect#51475, procurementAspect#51476, productGroup#51477, filteredUnitOfMeasureConversions#51478, quantityNumerator#51479, quantityDenominator#51480]
(871) Project
Arguments: [product#51439, plant#51440, orderDateTime#51441, productPlant#51451, timezonecode#51465, systemId#51466, internalUUID#51467, id#51468, displayId#51469, name#51470, baseUnitOfMeasure#51471, unitOfMeasures#51472, unitOfMeasureConversions#51473, productionAspect#51474, salesAspect#51475, procurementAspect#51476, productGroup#51477, filteredUnitOfMeasureConversions#51478, quantityNumerator#51479, quantityDenominator#51480, (cast(quantityNumerator#51479 as double) / cast(quantityDenominator#51480 as double)) AS outboundUnit#51481]
(872) Project
Arguments: [product#51439, plant#51440, orderDateTime#51441, productPlant#51451, timezonecode#51465, systemId#51466, internalUUID#51467, id#51468, displayId#51469, name#51470, baseUnitOfMeasure#51471, unitOfMeasures#51472, unitOfMeasureConversions#51473, productionAspect#51474, salesAspect#51475, procurementAspect#51476, productGroup#51477, filteredUnitOfMeasureConversions#51478, quantityNumerator#51479, quantityDenominator#51480, CASE WHEN (isnull(outboundUnit#51481) OR (outboundUnit#51481 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#51481 END AS outboundUnit#51482]
(873) Project
Arguments: [product#51439, plant#51440, orderDateTime#51441, productPlant#51451, timezonecode#51465, outboundUnit#51482]
(874) Project
Arguments: [plant#51440]
(875) Deduplicate
Arguments: [plant#51440]
(876) Join
Arguments: Inner, (plantUuid#51436 = plant#51440)
(877) Project
Arguments: [plantId#51435, plantUuid#51436, storageLocId#51437, storageLocUuid#51438]
(878) Project
Arguments: [plantId#51435, plantUuid#51436 AS plant#51410, storageLocId#51437, storageLocUuid#51438]
(879) Join
Arguments: Inner, (plant#54508 = plant#51410)
(880) Project
Arguments: [plant#54508, product#54507, orderDateTime#54509, productPlant#54519, timezonecode#54533, outboundUnit#54550, stockDatetime#54829, stockBatchQuantities#54830, stockBatchShelfLifeEndDatetimes#54831, dayBucketDemands#55170, pointInTimeDemands#55171, plantId#51435, storageLocId#51437, storageLocUuid#51438, plant#51410]
(881) LogicalRelation
Arguments: parquet, [systemId#51375, internalUUID#51376, id#51377, displayId#51378, supplier#51379, type#51380, status#51381, isMarkedForDeletion#51382, items#51383], false
(882) Repartition
Arguments: 10, true
(883) Generate
Arguments: explode(items#51383), false, [item#51387]
(884) Project
Arguments: [id#51377, internalUUID#51376, isMarkedForDeletion#51382, supplier#51379.internalRefUUID AS supplierUuid#51384, item#51387]
(885) Filter
Arguments: (((NOT isMarkedForDeletion#51382 AND NOT item#51387.deletionIndicator) AND NOT item#51387.completeIndicator) AND NOT item#51387.returnIndicator)
(886) Project
Arguments: [id#51377, internalUUID#51376, supplierUuid#51384, item#51387.plant.internalRefUUID AS plant#51392, item#51387.product.internalRefUUID AS product#51393, item#51387.storageLocation.internalRefUUID AS storageLocUuid#51394, item#51387.quantityUnit.code AS quantityUom#51395, item#51387.quantityUnit.internalRefUUID AS quantityUomUuid#51396, item#51387.quantityNumerator AS quantityNumerator#51397, item#51387.quantityDenominator AS quantityDenominator#51398, item#51387.scheduleLines AS scheduleLines#51399, item#51387.confirmations AS confirmations#51400]
(887) Join
Arguments: Inner, (((product#54507 = product#51393) AND (plant#54508 = plant#51392)) AND (storageLocUuid#51438 = storageLocUuid#51394))
(888) Project
Arguments: [product#54507, plant#54508, storageLocUuid#51438, orderDateTime#54509, productPlant#54519, timezonecode#54533, outboundUnit#54550, stockDatetime#54829, stockBatchQuantities#54830, stockBatchShelfLifeEndDatetimes#54831, dayBucketDemands#55170, pointInTimeDemands#55171, plantId#51435, storageLocId#51437, id#51377, internalUUID#51376, supplierUuid#51384, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, product#51393, plant#51392, ... 2 more fields]
(889) Project
Arguments: [id#51377, internalUUID#51376, supplierUuid#51384, plant#51392, product#51393, storageLocUuid#51394, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, stockDatetime#54829, timezonecode#54533]
(890) Project
Arguments: [id#51377, internalUUID#51376, supplierUuid#51384, plant#51392, product#51393, storageLocUuid#51394, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, stockDatetime#54829, timezonecode#54533, array_size(filter(confirmations#51400, lambdafunction((((lambda x_22#51761.deletionIndicator = false) AND (lambda x_22#51761.isRelevantForConfirmation = true)) AND isnotnull(lambda x_22#51761.confirmedDeliveryAt)), lambda x_22#51761, false))) AS _w0#51768]
(891) Window
Arguments: [sum(_w0#51768) windowspecdefinition(internalUUID#51376, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#51769L], [internalUUID#51376]
(892) Project
Arguments: [id#51377, internalUUID#51376, supplierUuid#51384, plant#51392, product#51393, storageLocUuid#51394, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, stockDatetime#54829, timezonecode#54533, _w0#51768, _we0#51769L, filter(transform(CASE WHEN (_we0#51769L > cast(0 as bigint)) THEN transform(filter(confirmations#51400, lambdafunction((((lambda x_22#51762.deletionIndicator = false) AND (lambda x_22#51762.isRelevantForConfirmation = true)) AND isnotnull(lambda x_22#51762.confirmedDeliveryAt)), lambda x_22#51762, false)), lambdafunction(struct(openQty, greatest((lambda x_23#51765.confirmedQuantity - coalesce(lambda x_23#51765.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_23#51765.confirmedDeliveryAt), lambda x_23#51765, false)) ELSE transform(scheduleLines#51399, lambdafunction(struct(openQty, greatest((lambda x_21#51763.quantity - coalesce(lambda x_21#51763.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_21#51763.deliveryAt), lambda x_21#51763, false)) END, lambdafunction(struct(documentId, id#51377, documentUuid, internalUUID#51376, openQty, lambda x_24#51766.openQty, openQtyInBaseUnit, ((lambda x_24#51766.openQty * quantityNumerator#51397) / quantityDenominator#51398), qtyUom, quantityUom#51395, qtyUomUuid, quantityUomUuid#51396, availabilityDatetime, lambda x_24#51766.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_24#51766, false)), lambdafunction(NOT (lambda x_25#51767.openQty = 0.0), lambda x_25#51767, false)) AS openGoodsMovements#51760]
(893) Project
Arguments: [id#51377, internalUUID#51376, supplierUuid#51384, plant#51392, product#51393, storageLocUuid#51394, quantityUom#51395, quantityUomUuid#51396, quantityNumerator#51397, quantityDenominator#51398, scheduleLines#51399, confirmations#51400, stockDatetime#54829, timezonecode#54533, openGoodsMovements#51760]
(894) Aggregate
Arguments: [product#51393, plant#51392], [product#51393, plant#51392, flatten(collect_list(openGoodsMovements#51760, 0, 0)) AS openGoodsMovements#51770]
(895) Filter
Arguments: (array_size(openGoodsMovements#51770) > 0)
(896) LogicalRelation
Arguments: parquet, [product#53767, plant#53768, orderDateTime#53769, planningStartDateTime#53770], false
(897) RepartitionByExpression
Arguments: [product#53767, plant#53768], 10
(898) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769]
(899) LogicalRelation
Arguments: parquet, [systemId#53771, internalUUID#53772, plant#53773, product#53774, blockedForReplenishmentStartingFrom#53775, productionAspect#53776, salesPlant#53777, listing#53778], false
(900) Repartition
Arguments: 10, true
(901) Project
Arguments: [systemId#53771, internalUUID#53772, plant#53773, product#53774, blockedForReplenishmentStartingFrom#53775, productionAspect#53776, salesPlant#53777, listing#53778, struct(systemId, systemId#53771, internalUUID, internalUUID#53772, plant, plant#53773, product, product#53774, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#53775, productionAspect, productionAspect#53776, salesPlant, salesPlant#53777, listing, listing#53778) AS productPlant#53779]
(902) Project
Arguments: [productPlant#53779]
(903) Join
Arguments: LeftOuter, ((product#53767 <=> productPlant#53779.product.internalRefUUID) AND (plant#53768 <=> productPlant#53779.plant.internalRefUUID))
(904) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779]
(905) SubqueryAlias
Arguments: wl
(906) LogicalRelation
Arguments: parquet, [systemId#53780, internalUUID#53781, id#53782, displayId#53783, name#53784, category#53785, companyCode#53786, address#53787, mainDistributionChain#53788, mainPurchasingOrganization#53789, validPurchasingOrganizations#53790, productGroup#53791], false
(907) Repartition
Arguments: 10, true
(908) Project
Arguments: [internalUUID#53781, address#53787.timeZone.code AS timezonecode#53792]
(909) Join
Arguments: LeftOuter, (plant#53768 <=> internalUUID#53781)
(910) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, internalUUID#53781, CASE WHEN isnotnull(timezonecode#53792) THEN timezonecode#53792 ELSE UTC END AS timezonecode#53793]
(911) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793]
(912) LogicalRelation
Arguments: parquet, [systemId#53794, internalUUID#53795, id#53796, displayId#53797, name#53798, baseUnitOfMeasure#53799, unitOfMeasures#53800, unitOfMeasureConversions#53801, productionAspect#53802, salesAspect#53803, procurementAspect#53804, productGroup#53805], false
(913) Repartition
Arguments: 10, true
(914) Join
Arguments: LeftOuter, (product#53767 = internalUUID#53795)
(915) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, systemId#53794, internalUUID#53795, id#53796, displayId#53797, name#53798, baseUnitOfMeasure#53799, unitOfMeasures#53800, unitOfMeasureConversions#53801, productionAspect#53802, salesAspect#53803, procurementAspect#53804, productGroup#53805, filter(unitOfMeasureConversions#53801, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#53779.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#53779.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#53799.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#53799.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#53806]
(916) Generate
Arguments: explode(filteredUnitOfMeasureConversions#53806.quantityNumerator), true, [quantityNumerator#53807]
(917) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, systemId#53794, internalUUID#53795, id#53796, displayId#53797, name#53798, baseUnitOfMeasure#53799, unitOfMeasures#53800, unitOfMeasureConversions#53801, productionAspect#53802, salesAspect#53803, procurementAspect#53804, productGroup#53805, filteredUnitOfMeasureConversions#53806, quantityNumerator#53807]
(918) Generate
Arguments: explode(filteredUnitOfMeasureConversions#53806.quantityDenominator), true, [quantityDenominator#53808]
(919) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, systemId#53794, internalUUID#53795, id#53796, displayId#53797, name#53798, baseUnitOfMeasure#53799, unitOfMeasures#53800, unitOfMeasureConversions#53801, productionAspect#53802, salesAspect#53803, procurementAspect#53804, productGroup#53805, filteredUnitOfMeasureConversions#53806, quantityNumerator#53807, quantityDenominator#53808]
(920) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, systemId#53794, internalUUID#53795, id#53796, displayId#53797, name#53798, baseUnitOfMeasure#53799, unitOfMeasures#53800, unitOfMeasureConversions#53801, productionAspect#53802, salesAspect#53803, procurementAspect#53804, productGroup#53805, filteredUnitOfMeasureConversions#53806, quantityNumerator#53807, quantityDenominator#53808, (cast(quantityNumerator#53807 as double) / cast(quantityDenominator#53808 as double)) AS outboundUnit#53809]
(921) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, systemId#53794, internalUUID#53795, id#53796, displayId#53797, name#53798, baseUnitOfMeasure#53799, unitOfMeasures#53800, unitOfMeasureConversions#53801, productionAspect#53802, salesAspect#53803, procurementAspect#53804, productGroup#53805, filteredUnitOfMeasureConversions#53806, quantityNumerator#53807, quantityDenominator#53808, CASE WHEN (isnull(outboundUnit#53809) OR (outboundUnit#53809 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#53809 END AS outboundUnit#53810]
(922) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, outboundUnit#53810]
(923) LogicalRelation
Arguments: parquet, [systemId#53811, internalUUID#53812, product#53813, plant#53814, calculationDateTime#53815, stockQuantities#53816], false
(924) Repartition
Arguments: 10, true
(925) LogicalRelation
Arguments: parquet, [marketUnit#53817, description#53818, articleHierarchy#53819, defaultCurrency#53820, responsibilities#53821, replenishmentTypes#53822, distributionCenters#53823, assignedArticleHierarchyNodes#53824, minOrderQtySetting#53825, minOrderQtySettingInternal#53826, listingCheck#53827, odsSelection#53828, demandProfiles#53829, constraintProfiles#53830, optimizationProfiles#53831, orderGroupSplitProfiles#53832, supplierMinimumProfiles#53833, multipleRestrictionProfiles#53834, preferredUomSource#53835, handlingOfUnfulfilledDemands#53836, negligibleQuantitiesThreshold#53837, eventtype#53838], false
(926) Repartition
Arguments: 10, true
(927) Filter
Arguments: (marketUnit#53817 <=> DIP_1691)
(928) Project
Arguments: [marketUnit#53817, description#53818, articleHierarchy#53819, defaultCurrency#53820, responsibilities#53821, replenishmentTypes#53822, distributionCenters#53823, assignedArticleHierarchyNodes#53824, minOrderQtySetting#53825, minOrderQtySettingInternal#53826, listingCheck#53827, odsSelection#53828, demandProfiles#53829, constraintProfiles#53830, optimizationProfiles#53831, orderGroupSplitProfiles#53832, supplierMinimumProfiles#53833, multipleRestrictionProfiles#53834, preferredUomSource#53835, handlingOfUnfulfilledDemands#53836, negligibleQuantitiesThreshold#53837, eventtype#53838]
(929) Project
Arguments: [distributionCenters#53823]
(930) Generate
Arguments: explode(distributionCenters#53823), false, [distributionCenters#53839]
(931) Project
Arguments: [distributionCenters#53839]
(932) Generate
Arguments: explode(distributionCenters#53839.storageLocations), false, [storageLocations#53840]
(933) Project
Arguments: [distributionCenters#53839.id AS plantId#53841, distributionCenters#53839.internalRefUUID AS plantUuid#53842, storageLocations#53840]
(934) Project
Arguments: [plantId#53841, plantUuid#53842, storageLocations#53840.id AS storageLocId#53843, storageLocations#53840.internalRefUUID AS storageLocUuid#53844]
(935) LogicalRelation
Arguments: parquet, [product#53845, plant#53846, orderDateTime#53847, planningStartDateTime#53848], false
(936) RepartitionByExpression
Arguments: [product#53845, plant#53846], 10
(937) Project
Arguments: [product#53845, plant#53846, orderDateTime#53847]
(938) LogicalRelation
Arguments: parquet, [systemId#53849, internalUUID#53850, plant#53851, product#53852, blockedForReplenishmentStartingFrom#53853, productionAspect#53854, salesPlant#53855, listing#53856], false
(939) Repartition
Arguments: 10, true
(940) Project
Arguments: [systemId#53849, internalUUID#53850, plant#53851, product#53852, blockedForReplenishmentStartingFrom#53853, productionAspect#53854, salesPlant#53855, listing#53856, struct(systemId, systemId#53849, internalUUID, internalUUID#53850, plant, plant#53851, product, product#53852, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#53853, productionAspect, productionAspect#53854, salesPlant, salesPlant#53855, listing, listing#53856) AS productPlant#53857]
(941) Project
Arguments: [productPlant#53857]
(942) Join
Arguments: LeftOuter, ((product#53845 <=> productPlant#53857.product.internalRefUUID) AND (plant#53846 <=> productPlant#53857.plant.internalRefUUID))
(943) Project
Arguments: [product#53845, plant#53846, orderDateTime#53847, productPlant#53857]
(944) SubqueryAlias
Arguments: wl
(945) LogicalRelation
Arguments: parquet, [systemId#53858, internalUUID#53859, id#53860, displayId#53861, name#53862, category#53863, companyCode#53864, address#53865, mainDistributionChain#53866, mainPurchasingOrganization#53867, validPurchasingOrganizations#53868, productGroup#53869], false
(946) Repartition
Arguments: 10, true
(947) Project
Arguments: [internalUUID#53859, address#53865.timeZone.code AS timezonecode#53870]
(948) Join
Arguments: LeftOuter, (plant#53846 <=> internalUUID#53859)
(949) Project
Arguments: [product#53845, plant#53846, orderDateTime#53847, productPlant#53857, internalUUID#53859, CASE WHEN isnotnull(timezonecode#53870) THEN timezonecode#53870 ELSE UTC END AS timezonecode#53871]
(950) Project
Arguments: [product#53845, plant#53846, orderDateTime#53847, productPlant#53857, timezonecode#53871]
(951) LogicalRelation
Arguments: parquet, [systemId#53872, internalUUID#53873, id#53874, displayId#53875, name#53876, baseUnitOfMeasure#53877, unitOfMeasures#53878, unitOfMeasureConversions#53879, productionAspect#53880, salesAspect#53881, procurementAspect#53882, productGroup#53883], false
(952) Repartition
Arguments: 10, true
(953) Join
Arguments: LeftOuter, (product#53845 = internalUUID#53873)
(954) Project
Arguments: [product#53845, plant#53846, orderDateTime#53847, productPlant#53857, timezonecode#53871, systemId#53872, internalUUID#53873, id#53874, displayId#53875, name#53876, baseUnitOfMeasure#53877, unitOfMeasures#53878, unitOfMeasureConversions#53879, productionAspect#53880, salesAspect#53881, procurementAspect#53882, productGroup#53883, filter(unitOfMeasureConversions#53879, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#53857.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#53857.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#53877.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#53877.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#53884]
(955) Generate
Arguments: explode(filteredUnitOfMeasureConversions#53884.quantityNumerator), true, [quantityNumerator#53885]
(956) Project
Arguments: [product#53845, plant#53846, orderDateTime#53847, productPlant#53857, timezonecode#53871, systemId#53872, internalUUID#53873, id#53874, displayId#53875, name#53876, baseUnitOfMeasure#53877, unitOfMeasures#53878, unitOfMeasureConversions#53879, productionAspect#53880, salesAspect#53881, procurementAspect#53882, productGroup#53883, filteredUnitOfMeasureConversions#53884, quantityNumerator#53885]
(957) Generate
Arguments: explode(filteredUnitOfMeasureConversions#53884.quantityDenominator), true, [quantityDenominator#53886]
(958) Project
Arguments: [product#53845, plant#53846, orderDateTime#53847, productPlant#53857, timezonecode#53871, systemId#53872, internalUUID#53873, id#53874, displayId#53875, name#53876, baseUnitOfMeasure#53877, unitOfMeasures#53878, unitOfMeasureConversions#53879, productionAspect#53880, salesAspect#53881, procurementAspect#53882, productGroup#53883, filteredUnitOfMeasureConversions#53884, quantityNumerator#53885, quantityDenominator#53886]
(959) Project
Arguments: [product#53845, plant#53846, orderDateTime#53847, productPlant#53857, timezonecode#53871, systemId#53872, internalUUID#53873, id#53874, displayId#53875, name#53876, baseUnitOfMeasure#53877, unitOfMeasures#53878, unitOfMeasureConversions#53879, productionAspect#53880, salesAspect#53881, procurementAspect#53882, productGroup#53883, filteredUnitOfMeasureConversions#53884, quantityNumerator#53885, quantityDenominator#53886, (cast(quantityNumerator#53885 as double) / cast(quantityDenominator#53886 as double)) AS outboundUnit#53887]
(960) Project
Arguments: [product#53845, plant#53846, orderDateTime#53847, productPlant#53857, timezonecode#53871, systemId#53872, internalUUID#53873, id#53874, displayId#53875, name#53876, baseUnitOfMeasure#53877, unitOfMeasures#53878, unitOfMeasureConversions#53879, productionAspect#53880, salesAspect#53881, procurementAspect#53882, productGroup#53883, filteredUnitOfMeasureConversions#53884, quantityNumerator#53885, quantityDenominator#53886, CASE WHEN (isnull(outboundUnit#53887) OR (outboundUnit#53887 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#53887 END AS outboundUnit#53888]
(961) Project
Arguments: [product#53845, plant#53846, orderDateTime#53847, productPlant#53857, timezonecode#53871, outboundUnit#53888]
(962) Project
Arguments: [plant#53846]
(963) Deduplicate
Arguments: [plant#53846]
(964) Join
Arguments: Inner, (plantUuid#53842 = plant#53846)
(965) Project
Arguments: [plantId#53841, plantUuid#53842, storageLocId#53843, storageLocUuid#53844]
(966) Join
Arguments: Inner, (plant#53814.internalRefUUID <=> plantUuid#53842)
(967) Generate
Arguments: explode(filter(stockQuantities#53816, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#53844) AND (lambda x#50650.storageLocation.Id = storageLocId#53843)), lambda x#50650, false))), false, [stockQuantity#53889]
(968) Project
Arguments: [systemId#53811, internalUUID#53812, product#53813, plant#53814, calculationDateTime#53815, stockQuantities#53816, plantId#53841, plantUuid#53842, storageLocId#53843, storageLocUuid#53844, stockQuantity#53889]
(969) Aggregate
Arguments: [plantUuid#53842, internalUUID#53812, plant#53814, product#53813, systemId#53811], [plantUuid#53842, internalUUID#53812, plant#53814, product#53813, systemId#53811, first(calculationDateTime#53815, false) AS calculationDateTime#53890, collect_list(stockQuantity#53889, 0, 0) AS stockQuantities#53891]
(970) Project
Arguments: [systemId#53811, internalUUID#53812, product#53813, plant#53814, calculationDateTime#53890, stockQuantities#53891]
(971) Generate
Arguments: explode(stockQuantities#53891), false, [stockQuantity#53892]
(972) Project
Arguments: [systemId#53811, internalUUID#53812, product#53813, plant#53814, calculationDateTime#53890, stockQuantities#53891, stockQuantity#53892]
(973) Project
Arguments: [plant#53814.id AS plant#53893, plant#53814.internalRefUUID AS plantUuid#53894, product#53813.id AS product#53895, product#53813.internalRefUUID AS productUuid#53896, calculationDateTime#53890, stockQuantity#53892.storagelocation.id AS storageLocId#53897, stockQuantity#53892.storagelocation.internalRefUUID AS storageLocUuid#53898, stockQuantity#53892.quantity.measure AS quantity#53899, stockQuantity#53892.specialStockIndicator.code AS specialStockIndicator#53900, stockQuantity#53892.stockType.code AS stockType#53901]
(974) Filter
Arguments: ((specialStockIndicator#53900 = ) AND (stockType#53901 = 01))
(975) LogicalRelation
Arguments: parquet, [product#53902, plant#53903, orderDateTime#53904, planningStartDateTime#53905], false
(976) RepartitionByExpression
Arguments: [product#53902, plant#53903], 10
(977) Project
Arguments: [product#53902, plant#53903, orderDateTime#53904]
(978) LogicalRelation
Arguments: parquet, [systemId#53906, internalUUID#53907, plant#53908, product#53909, blockedForReplenishmentStartingFrom#53910, productionAspect#53911, salesPlant#53912, listing#53913], false
(979) Repartition
Arguments: 10, true
(980) Project
Arguments: [systemId#53906, internalUUID#53907, plant#53908, product#53909, blockedForReplenishmentStartingFrom#53910, productionAspect#53911, salesPlant#53912, listing#53913, struct(systemId, systemId#53906, internalUUID, internalUUID#53907, plant, plant#53908, product, product#53909, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#53910, productionAspect, productionAspect#53911, salesPlant, salesPlant#53912, listing, listing#53913) AS productPlant#53914]
(981) Project
Arguments: [productPlant#53914]
(982) Join
Arguments: LeftOuter, ((product#53902 <=> productPlant#53914.product.internalRefUUID) AND (plant#53903 <=> productPlant#53914.plant.internalRefUUID))
(983) Project
Arguments: [product#53902, plant#53903, orderDateTime#53904, productPlant#53914]
(984) SubqueryAlias
Arguments: wl
(985) LogicalRelation
Arguments: parquet, [systemId#53915, internalUUID#53916, id#53917, displayId#53918, name#53919, category#53920, companyCode#53921, address#53922, mainDistributionChain#53923, mainPurchasingOrganization#53924, validPurchasingOrganizations#53925, productGroup#53926], false
(986) Repartition
Arguments: 10, true
(987) Project
Arguments: [internalUUID#53916, address#53922.timeZone.code AS timezonecode#53927]
(988) Join
Arguments: LeftOuter, (plant#53903 <=> internalUUID#53916)
(989) Project
Arguments: [product#53902, plant#53903, orderDateTime#53904, productPlant#53914, internalUUID#53916, CASE WHEN isnotnull(timezonecode#53927) THEN timezonecode#53927 ELSE UTC END AS timezonecode#53928]
(990) Project
Arguments: [product#53902, plant#53903, orderDateTime#53904, productPlant#53914, timezonecode#53928]
(991) LogicalRelation
Arguments: parquet, [systemId#53929, internalUUID#53930, id#53931, displayId#53932, name#53933, baseUnitOfMeasure#53934, unitOfMeasures#53935, unitOfMeasureConversions#53936, productionAspect#53937, salesAspect#53938, procurementAspect#53939, productGroup#53940], false
(992) Repartition
Arguments: 10, true
(993) Join
Arguments: LeftOuter, (product#53902 = internalUUID#53930)
(994) Project
Arguments: [product#53902, plant#53903, orderDateTime#53904, productPlant#53914, timezonecode#53928, systemId#53929, internalUUID#53930, id#53931, displayId#53932, name#53933, baseUnitOfMeasure#53934, unitOfMeasures#53935, unitOfMeasureConversions#53936, productionAspect#53937, salesAspect#53938, procurementAspect#53939, productGroup#53940, filter(unitOfMeasureConversions#53936, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#53914.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#53914.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#53934.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#53934.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#53941]
(995) Generate
Arguments: explode(filteredUnitOfMeasureConversions#53941.quantityNumerator), true, [quantityNumerator#53942]
(996) Project
Arguments: [product#53902, plant#53903, orderDateTime#53904, productPlant#53914, timezonecode#53928, systemId#53929, internalUUID#53930, id#53931, displayId#53932, name#53933, baseUnitOfMeasure#53934, unitOfMeasures#53935, unitOfMeasureConversions#53936, productionAspect#53937, salesAspect#53938, procurementAspect#53939, productGroup#53940, filteredUnitOfMeasureConversions#53941, quantityNumerator#53942]
(997) Generate
Arguments: explode(filteredUnitOfMeasureConversions#53941.quantityDenominator), true, [quantityDenominator#53943]
(998) Project
Arguments: [product#53902, plant#53903, orderDateTime#53904, productPlant#53914, timezonecode#53928, systemId#53929, internalUUID#53930, id#53931, displayId#53932, name#53933, baseUnitOfMeasure#53934, unitOfMeasures#53935, unitOfMeasureConversions#53936, productionAspect#53937, salesAspect#53938, procurementAspect#53939, productGroup#53940, filteredUnitOfMeasureConversions#53941, quantityNumerator#53942, quantityDenominator#53943]
(999) Project
Arguments: [product#53902, plant#53903, orderDateTime#53904, productPlant#53914, timezonecode#53928, systemId#53929, internalUUID#53930, id#53931, displayId#53932, name#53933, baseUnitOfMeasure#53934, unitOfMeasures#53935, unitOfMeasureConversions#53936, productionAspect#53937, salesAspect#53938, procurementAspect#53939, productGroup#53940, filteredUnitOfMeasureConversions#53941, quantityNumerator#53942, quantityDenominator#53943, (cast(quantityNumerator#53942 as double) / cast(quantityDenominator#53943 as double)) AS outboundUnit#53944]
(1000) Project
Arguments: [product#53902, plant#53903, orderDateTime#53904, productPlant#53914, timezonecode#53928, systemId#53929, internalUUID#53930, id#53931, displayId#53932, name#53933, baseUnitOfMeasure#53934, unitOfMeasures#53935, unitOfMeasureConversions#53936, productionAspect#53937, salesAspect#53938, procurementAspect#53939, productGroup#53940, filteredUnitOfMeasureConversions#53941, quantityNumerator#53942, quantityDenominator#53943, CASE WHEN (isnull(outboundUnit#53944) OR (outboundUnit#53944 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#53944 END AS outboundUnit#53945]
(1001) Project
Arguments: [product#53902, plant#53903, orderDateTime#53904, productPlant#53914, timezonecode#53928, outboundUnit#53945]
(1002) Join
Arguments: Inner, ((plantUuid#53894 = plant#53903) AND (productUuid#53896 = product#53902))
(1003) Filter
Arguments: (calculationDateTime#53890 <= orderDateTime#53904)
(1004) Project
Arguments: [plantUuid#53894 AS plant#53946, productUuid#53896 AS product#53947, storageLocId#53897, calculationDateTime#53890, quantity#53899]
(1005) LogicalRelation
Arguments: parquet, [systemId#53948, internalUUID#53949, product#53950, plant#53951, calculationDateTime#53952, stockQuantities#53953], false
(1006) Repartition
Arguments: 10, true
(1007) LogicalRelation
Arguments: parquet, [marketUnit#53954, description#53955, articleHierarchy#53956, defaultCurrency#53957, responsibilities#53958, replenishmentTypes#53959, distributionCenters#53960, assignedArticleHierarchyNodes#53961, minOrderQtySetting#53962, minOrderQtySettingInternal#53963, listingCheck#53964, odsSelection#53965, demandProfiles#53966, constraintProfiles#53967, optimizationProfiles#53968, orderGroupSplitProfiles#53969, supplierMinimumProfiles#53970, multipleRestrictionProfiles#53971, preferredUomSource#53972, handlingOfUnfulfilledDemands#53973, negligibleQuantitiesThreshold#53974, eventtype#53975], false
(1008) Repartition
Arguments: 10, true
(1009) Filter
Arguments: (marketUnit#53954 <=> DIP_1691)
(1010) Project
Arguments: [marketUnit#53954, description#53955, articleHierarchy#53956, defaultCurrency#53957, responsibilities#53958, replenishmentTypes#53959, distributionCenters#53960, assignedArticleHierarchyNodes#53961, minOrderQtySetting#53962, minOrderQtySettingInternal#53963, listingCheck#53964, odsSelection#53965, demandProfiles#53966, constraintProfiles#53967, optimizationProfiles#53968, orderGroupSplitProfiles#53969, supplierMinimumProfiles#53970, multipleRestrictionProfiles#53971, preferredUomSource#53972, handlingOfUnfulfilledDemands#53973, negligibleQuantitiesThreshold#53974, eventtype#53975]
(1011) Project
Arguments: [distributionCenters#53960]
(1012) Generate
Arguments: explode(distributionCenters#53960), false, [distributionCenters#53976]
(1013) Project
Arguments: [distributionCenters#53976]
(1014) Generate
Arguments: explode(distributionCenters#53976.storageLocations), false, [storageLocations#53977]
(1015) Project
Arguments: [distributionCenters#53976.id AS plantId#53978, distributionCenters#53976.internalRefUUID AS plantUuid#53979, storageLocations#53977]
(1016) Project
Arguments: [plantId#53978, plantUuid#53979, storageLocations#53977.id AS storageLocId#53980, storageLocations#53977.internalRefUUID AS storageLocUuid#53981]
(1017) LogicalRelation
Arguments: parquet, [product#53982, plant#53983, orderDateTime#53984, planningStartDateTime#53985], false
(1018) RepartitionByExpression
Arguments: [product#53982, plant#53983], 10
(1019) Project
Arguments: [product#53982, plant#53983, orderDateTime#53984]
(1020) LogicalRelation
Arguments: parquet, [systemId#53986, internalUUID#53987, plant#53988, product#53989, blockedForReplenishmentStartingFrom#53990, productionAspect#53991, salesPlant#53992, listing#53993], false
(1021) Repartition
Arguments: 10, true
(1022) Project
Arguments: [systemId#53986, internalUUID#53987, plant#53988, product#53989, blockedForReplenishmentStartingFrom#53990, productionAspect#53991, salesPlant#53992, listing#53993, struct(systemId, systemId#53986, internalUUID, internalUUID#53987, plant, plant#53988, product, product#53989, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#53990, productionAspect, productionAspect#53991, salesPlant, salesPlant#53992, listing, listing#53993) AS productPlant#53994]
(1023) Project
Arguments: [productPlant#53994]
(1024) Join
Arguments: LeftOuter, ((product#53982 <=> productPlant#53994.product.internalRefUUID) AND (plant#53983 <=> productPlant#53994.plant.internalRefUUID))
(1025) Project
Arguments: [product#53982, plant#53983, orderDateTime#53984, productPlant#53994]
(1026) SubqueryAlias
Arguments: wl
(1027) LogicalRelation
Arguments: parquet, [systemId#53995, internalUUID#53996, id#53997, displayId#53998, name#53999, category#54000, companyCode#54001, address#54002, mainDistributionChain#54003, mainPurchasingOrganization#54004, validPurchasingOrganizations#54005, productGroup#54006], false
(1028) Repartition
Arguments: 10, true
(1029) Project
Arguments: [internalUUID#53996, address#54002.timeZone.code AS timezonecode#54007]
(1030) Join
Arguments: LeftOuter, (plant#53983 <=> internalUUID#53996)
(1031) Project
Arguments: [product#53982, plant#53983, orderDateTime#53984, productPlant#53994, internalUUID#53996, CASE WHEN isnotnull(timezonecode#54007) THEN timezonecode#54007 ELSE UTC END AS timezonecode#54008]
(1032) Project
Arguments: [product#53982, plant#53983, orderDateTime#53984, productPlant#53994, timezonecode#54008]
(1033) LogicalRelation
Arguments: parquet, [systemId#54009, internalUUID#54010, id#54011, displayId#54012, name#54013, baseUnitOfMeasure#54014, unitOfMeasures#54015, unitOfMeasureConversions#54016, productionAspect#54017, salesAspect#54018, procurementAspect#54019, productGroup#54020], false
(1034) Repartition
Arguments: 10, true
(1035) Join
Arguments: LeftOuter, (product#53982 = internalUUID#54010)
(1036) Project
Arguments: [product#53982, plant#53983, orderDateTime#53984, productPlant#53994, timezonecode#54008, systemId#54009, internalUUID#54010, id#54011, displayId#54012, name#54013, baseUnitOfMeasure#54014, unitOfMeasures#54015, unitOfMeasureConversions#54016, productionAspect#54017, salesAspect#54018, procurementAspect#54019, productGroup#54020, filter(unitOfMeasureConversions#54016, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#53994.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#53994.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54014.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54014.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54021]
(1037) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54021.quantityNumerator), true, [quantityNumerator#54022]
(1038) Project
Arguments: [product#53982, plant#53983, orderDateTime#53984, productPlant#53994, timezonecode#54008, systemId#54009, internalUUID#54010, id#54011, displayId#54012, name#54013, baseUnitOfMeasure#54014, unitOfMeasures#54015, unitOfMeasureConversions#54016, productionAspect#54017, salesAspect#54018, procurementAspect#54019, productGroup#54020, filteredUnitOfMeasureConversions#54021, quantityNumerator#54022]
(1039) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54021.quantityDenominator), true, [quantityDenominator#54023]
(1040) Project
Arguments: [product#53982, plant#53983, orderDateTime#53984, productPlant#53994, timezonecode#54008, systemId#54009, internalUUID#54010, id#54011, displayId#54012, name#54013, baseUnitOfMeasure#54014, unitOfMeasures#54015, unitOfMeasureConversions#54016, productionAspect#54017, salesAspect#54018, procurementAspect#54019, productGroup#54020, filteredUnitOfMeasureConversions#54021, quantityNumerator#54022, quantityDenominator#54023]
(1041) Project
Arguments: [product#53982, plant#53983, orderDateTime#53984, productPlant#53994, timezonecode#54008, systemId#54009, internalUUID#54010, id#54011, displayId#54012, name#54013, baseUnitOfMeasure#54014, unitOfMeasures#54015, unitOfMeasureConversions#54016, productionAspect#54017, salesAspect#54018, procurementAspect#54019, productGroup#54020, filteredUnitOfMeasureConversions#54021, quantityNumerator#54022, quantityDenominator#54023, (cast(quantityNumerator#54022 as double) / cast(quantityDenominator#54023 as double)) AS outboundUnit#54024]
(1042) Project
Arguments: [product#53982, plant#53983, orderDateTime#53984, productPlant#53994, timezonecode#54008, systemId#54009, internalUUID#54010, id#54011, displayId#54012, name#54013, baseUnitOfMeasure#54014, unitOfMeasures#54015, unitOfMeasureConversions#54016, productionAspect#54017, salesAspect#54018, procurementAspect#54019, productGroup#54020, filteredUnitOfMeasureConversions#54021, quantityNumerator#54022, quantityDenominator#54023, CASE WHEN (isnull(outboundUnit#54024) OR (outboundUnit#54024 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54024 END AS outboundUnit#54025]
(1043) Project
Arguments: [product#53982, plant#53983, orderDateTime#53984, productPlant#53994, timezonecode#54008, outboundUnit#54025]
(1044) Project
Arguments: [plant#53983]
(1045) Deduplicate
Arguments: [plant#53983]
(1046) Join
Arguments: Inner, (plantUuid#53979 = plant#53983)
(1047) Project
Arguments: [plantId#53978, plantUuid#53979, storageLocId#53980, storageLocUuid#53981]
(1048) Join
Arguments: Inner, (plant#53951.internalRefUUID <=> plantUuid#53979)
(1049) Generate
Arguments: explode(filter(stockQuantities#53953, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#53981) AND (lambda x#50650.storageLocation.Id = storageLocId#53980)), lambda x#50650, false))), false, [stockQuantity#54026]
(1050) Project
Arguments: [systemId#53948, internalUUID#53949, product#53950, plant#53951, calculationDateTime#53952, stockQuantities#53953, plantId#53978, plantUuid#53979, storageLocId#53980, storageLocUuid#53981, stockQuantity#54026]
(1051) Aggregate
Arguments: [plantUuid#53979, internalUUID#53949, plant#53951, product#53950, systemId#53948], [plantUuid#53979, internalUUID#53949, plant#53951, product#53950, systemId#53948, first(calculationDateTime#53952, false) AS calculationDateTime#54027, collect_list(stockQuantity#54026, 0, 0) AS stockQuantities#54028]
(1052) Project
Arguments: [systemId#53948, internalUUID#53949, product#53950, plant#53951, calculationDateTime#54027, stockQuantities#54028]
(1053) Generate
Arguments: explode(stockQuantities#54028), false, [stockQuantity#54029]
(1054) Project
Arguments: [systemId#53948, internalUUID#53949, product#53950, plant#53951, calculationDateTime#54027, stockQuantities#54028, stockQuantity#54029]
(1055) Project
Arguments: [plant#53951.id AS plant#54030, plant#53951.internalRefUUID AS plantUuid#54031, product#53950.id AS product#54032, product#53950.internalRefUUID AS productUuid#54033, calculationDateTime#54027, stockQuantity#54029.storagelocation.id AS storageLocId#54034, stockQuantity#54029.storagelocation.internalRefUUID AS storageLocUuid#54035, stockQuantity#54029.quantity.measure AS quantity#54036, stockQuantity#54029.specialStockIndicator.code AS specialStockIndicator#54037, stockQuantity#54029.stockType.code AS stockType#54038]
(1056) Filter
Arguments: ((specialStockIndicator#54037 = ) AND (stockType#54038 = 01))
(1057) LogicalRelation
Arguments: parquet, [product#54039, plant#54040, orderDateTime#54041, planningStartDateTime#54042], false
(1058) RepartitionByExpression
Arguments: [product#54039, plant#54040], 10
(1059) Project
Arguments: [product#54039, plant#54040, orderDateTime#54041]
(1060) LogicalRelation
Arguments: parquet, [systemId#54043, internalUUID#54044, plant#54045, product#54046, blockedForReplenishmentStartingFrom#54047, productionAspect#54048, salesPlant#54049, listing#54050], false
(1061) Repartition
Arguments: 10, true
(1062) Project
Arguments: [systemId#54043, internalUUID#54044, plant#54045, product#54046, blockedForReplenishmentStartingFrom#54047, productionAspect#54048, salesPlant#54049, listing#54050, struct(systemId, systemId#54043, internalUUID, internalUUID#54044, plant, plant#54045, product, product#54046, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54047, productionAspect, productionAspect#54048, salesPlant, salesPlant#54049, listing, listing#54050) AS productPlant#54051]
(1063) Project
Arguments: [productPlant#54051]
(1064) Join
Arguments: LeftOuter, ((product#54039 <=> productPlant#54051.product.internalRefUUID) AND (plant#54040 <=> productPlant#54051.plant.internalRefUUID))
(1065) Project
Arguments: [product#54039, plant#54040, orderDateTime#54041, productPlant#54051]
(1066) SubqueryAlias
Arguments: wl
(1067) LogicalRelation
Arguments: parquet, [systemId#54052, internalUUID#54053, id#54054, displayId#54055, name#54056, category#54057, companyCode#54058, address#54059, mainDistributionChain#54060, mainPurchasingOrganization#54061, validPurchasingOrganizations#54062, productGroup#54063], false
(1068) Repartition
Arguments: 10, true
(1069) Project
Arguments: [internalUUID#54053, address#54059.timeZone.code AS timezonecode#54064]
(1070) Join
Arguments: LeftOuter, (plant#54040 <=> internalUUID#54053)
(1071) Project
Arguments: [product#54039, plant#54040, orderDateTime#54041, productPlant#54051, internalUUID#54053, CASE WHEN isnotnull(timezonecode#54064) THEN timezonecode#54064 ELSE UTC END AS timezonecode#54065]
(1072) Project
Arguments: [product#54039, plant#54040, orderDateTime#54041, productPlant#54051, timezonecode#54065]
(1073) LogicalRelation
Arguments: parquet, [systemId#54066, internalUUID#54067, id#54068, displayId#54069, name#54070, baseUnitOfMeasure#54071, unitOfMeasures#54072, unitOfMeasureConversions#54073, productionAspect#54074, salesAspect#54075, procurementAspect#54076, productGroup#54077], false
(1074) Repartition
Arguments: 10, true
(1075) Join
Arguments: LeftOuter, (product#54039 = internalUUID#54067)
(1076) Project
Arguments: [product#54039, plant#54040, orderDateTime#54041, productPlant#54051, timezonecode#54065, systemId#54066, internalUUID#54067, id#54068, displayId#54069, name#54070, baseUnitOfMeasure#54071, unitOfMeasures#54072, unitOfMeasureConversions#54073, productionAspect#54074, salesAspect#54075, procurementAspect#54076, productGroup#54077, filter(unitOfMeasureConversions#54073, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54051.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54051.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54071.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54071.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54078]
(1077) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54078.quantityNumerator), true, [quantityNumerator#54079]
(1078) Project
Arguments: [product#54039, plant#54040, orderDateTime#54041, productPlant#54051, timezonecode#54065, systemId#54066, internalUUID#54067, id#54068, displayId#54069, name#54070, baseUnitOfMeasure#54071, unitOfMeasures#54072, unitOfMeasureConversions#54073, productionAspect#54074, salesAspect#54075, procurementAspect#54076, productGroup#54077, filteredUnitOfMeasureConversions#54078, quantityNumerator#54079]
(1079) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54078.quantityDenominator), true, [quantityDenominator#54080]
(1080) Project
Arguments: [product#54039, plant#54040, orderDateTime#54041, productPlant#54051, timezonecode#54065, systemId#54066, internalUUID#54067, id#54068, displayId#54069, name#54070, baseUnitOfMeasure#54071, unitOfMeasures#54072, unitOfMeasureConversions#54073, productionAspect#54074, salesAspect#54075, procurementAspect#54076, productGroup#54077, filteredUnitOfMeasureConversions#54078, quantityNumerator#54079, quantityDenominator#54080]
(1081) Project
Arguments: [product#54039, plant#54040, orderDateTime#54041, productPlant#54051, timezonecode#54065, systemId#54066, internalUUID#54067, id#54068, displayId#54069, name#54070, baseUnitOfMeasure#54071, unitOfMeasures#54072, unitOfMeasureConversions#54073, productionAspect#54074, salesAspect#54075, procurementAspect#54076, productGroup#54077, filteredUnitOfMeasureConversions#54078, quantityNumerator#54079, quantityDenominator#54080, (cast(quantityNumerator#54079 as double) / cast(quantityDenominator#54080 as double)) AS outboundUnit#54081]
(1082) Project
Arguments: [product#54039, plant#54040, orderDateTime#54041, productPlant#54051, timezonecode#54065, systemId#54066, internalUUID#54067, id#54068, displayId#54069, name#54070, baseUnitOfMeasure#54071, unitOfMeasures#54072, unitOfMeasureConversions#54073, productionAspect#54074, salesAspect#54075, procurementAspect#54076, productGroup#54077, filteredUnitOfMeasureConversions#54078, quantityNumerator#54079, quantityDenominator#54080, CASE WHEN (isnull(outboundUnit#54081) OR (outboundUnit#54081 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54081 END AS outboundUnit#54082]
(1083) Project
Arguments: [product#54039, plant#54040, orderDateTime#54041, productPlant#54051, timezonecode#54065, outboundUnit#54082]
(1084) Join
Arguments: Inner, ((plantUuid#54031 = plant#54040) AND (productUuid#54033 = product#54039))
(1085) Filter
Arguments: (calculationDateTime#54027 <= orderDateTime#54041)
(1086) Project
Arguments: [plantUuid#54031 AS plant#54083, productUuid#54033 AS product#54084, storageLocId#54034, calculationDateTime#54027, quantity#54036]
(1087) Aggregate
Arguments: [plant#54083, product#54084, storageLocId#54034], [plant#54083, product#54084, storageLocId#54034, max(calculationDateTime#54027) AS max_calc_datetime#54085]
(1088) Join
Arguments: Inner, ((((plant#53946 <=> plant#54083) AND (product#53947 <=> product#54084)) AND (storageLocId#53897 <=> storageLocId#54034)) AND (calculationDateTime#53890 <=> max_calc_datetime#54085))
(1089) Project
Arguments: [plant#53946, product#53947, storageLocId#53897, calculationDateTime#53890, quantity#53899]
(1090) Aggregate
Arguments: [product#53947, plant#53946], [product#53947, plant#53946, sum(quantity#53899) AS quantitySum#54086, min(calculationDateTime#53890) AS minCalculationDateTime#54087]
(1091) Project
Arguments: [product#53947, plant#53946, quantitySum#54086, minCalculationDateTime#54087, round(quantitySum#54086, 0) AS roundedQuantitySum#54088]
(1092) Join
Arguments: LeftOuter, ((plant#53768 = plant#53946) AND (product#53767 = product#53947))
(1093) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, outboundUnit#53810, roundedQuantitySum#54088, minCalculationDateTime#54087]
(1094) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, outboundUnit#53810, roundedQuantitySum#54088, minCalculationDateTime#54087, CASE WHEN isnotnull(minCalculationDateTime#54087) THEN minCalculationDateTime#54087 ELSE orderDateTime#53769 END AS stockDatetime#54089]
(1095) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, outboundUnit#53810, roundedQuantitySum#54088, minCalculationDateTime#54087, stockDatetime#54089, CASE WHEN isnotnull(roundedQuantitySum#54088) THEN array(roundedQuantitySum#54088) ELSE array(0.0) END AS stockBatchQuantities#54090]
(1096) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, outboundUnit#53810, roundedQuantitySum#54088, minCalculationDateTime#54087, stockDatetime#54089, stockBatchQuantities#54090, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#54091]
(1097) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, outboundUnit#53810, roundedQuantitySum#54088, stockDatetime#54089, stockBatchQuantities#54090, stockBatchShelfLifeEndDatetimes#54091]
(1098) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, outboundUnit#53810, stockDatetime#54089, stockBatchQuantities#54090, stockBatchShelfLifeEndDatetimes#54091]
(1099) LogicalRelation
Arguments: parquet, [product#54092, plant#54093, orderDateTime#54094, planningStartDateTime#54095], false
(1100) RepartitionByExpression
Arguments: [product#54092, plant#54093], 10
(1101) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094]
(1102) LogicalRelation
Arguments: parquet, [systemId#54096, internalUUID#54097, plant#54098, product#54099, blockedForReplenishmentStartingFrom#54100, productionAspect#54101, salesPlant#54102, listing#54103], false
(1103) Repartition
Arguments: 10, true
(1104) Project
Arguments: [systemId#54096, internalUUID#54097, plant#54098, product#54099, blockedForReplenishmentStartingFrom#54100, productionAspect#54101, salesPlant#54102, listing#54103, struct(systemId, systemId#54096, internalUUID, internalUUID#54097, plant, plant#54098, product, product#54099, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54100, productionAspect, productionAspect#54101, salesPlant, salesPlant#54102, listing, listing#54103) AS productPlant#54104]
(1105) Project
Arguments: [productPlant#54104]
(1106) Join
Arguments: LeftOuter, ((product#54092 <=> productPlant#54104.product.internalRefUUID) AND (plant#54093 <=> productPlant#54104.plant.internalRefUUID))
(1107) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104]
(1108) SubqueryAlias
Arguments: wl
(1109) LogicalRelation
Arguments: parquet, [systemId#54105, internalUUID#54106, id#54107, displayId#54108, name#54109, category#54110, companyCode#54111, address#54112, mainDistributionChain#54113, mainPurchasingOrganization#54114, validPurchasingOrganizations#54115, productGroup#54116], false
(1110) Repartition
Arguments: 10, true
(1111) Project
Arguments: [internalUUID#54106, address#54112.timeZone.code AS timezonecode#54117]
(1112) Join
Arguments: LeftOuter, (plant#54093 <=> internalUUID#54106)
(1113) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, internalUUID#54106, CASE WHEN isnotnull(timezonecode#54117) THEN timezonecode#54117 ELSE UTC END AS timezonecode#54118]
(1114) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118]
(1115) LogicalRelation
Arguments: parquet, [systemId#54119, internalUUID#54120, id#54121, displayId#54122, name#54123, baseUnitOfMeasure#54124, unitOfMeasures#54125, unitOfMeasureConversions#54126, productionAspect#54127, salesAspect#54128, procurementAspect#54129, productGroup#54130], false
(1116) Repartition
Arguments: 10, true
(1117) Join
Arguments: LeftOuter, (product#54092 = internalUUID#54120)
(1118) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, systemId#54119, internalUUID#54120, id#54121, displayId#54122, name#54123, baseUnitOfMeasure#54124, unitOfMeasures#54125, unitOfMeasureConversions#54126, productionAspect#54127, salesAspect#54128, procurementAspect#54129, productGroup#54130, filter(unitOfMeasureConversions#54126, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54104.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54104.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54124.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54124.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54131]
(1119) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54131.quantityNumerator), true, [quantityNumerator#54132]
(1120) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, systemId#54119, internalUUID#54120, id#54121, displayId#54122, name#54123, baseUnitOfMeasure#54124, unitOfMeasures#54125, unitOfMeasureConversions#54126, productionAspect#54127, salesAspect#54128, procurementAspect#54129, productGroup#54130, filteredUnitOfMeasureConversions#54131, quantityNumerator#54132]
(1121) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54131.quantityDenominator), true, [quantityDenominator#54133]
(1122) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, systemId#54119, internalUUID#54120, id#54121, displayId#54122, name#54123, baseUnitOfMeasure#54124, unitOfMeasures#54125, unitOfMeasureConversions#54126, productionAspect#54127, salesAspect#54128, procurementAspect#54129, productGroup#54130, filteredUnitOfMeasureConversions#54131, quantityNumerator#54132, quantityDenominator#54133]
(1123) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, systemId#54119, internalUUID#54120, id#54121, displayId#54122, name#54123, baseUnitOfMeasure#54124, unitOfMeasures#54125, unitOfMeasureConversions#54126, productionAspect#54127, salesAspect#54128, procurementAspect#54129, productGroup#54130, filteredUnitOfMeasureConversions#54131, quantityNumerator#54132, quantityDenominator#54133, (cast(quantityNumerator#54132 as double) / cast(quantityDenominator#54133 as double)) AS outboundUnit#54134]
(1124) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, systemId#54119, internalUUID#54120, id#54121, displayId#54122, name#54123, baseUnitOfMeasure#54124, unitOfMeasures#54125, unitOfMeasureConversions#54126, productionAspect#54127, salesAspect#54128, procurementAspect#54129, productGroup#54130, filteredUnitOfMeasureConversions#54131, quantityNumerator#54132, quantityDenominator#54133, CASE WHEN (isnull(outboundUnit#54134) OR (outboundUnit#54134 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54134 END AS outboundUnit#54135]
(1125) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135]
(1126) LogicalRelation
Arguments: parquet, [systemId#54136, internalUUID#54137, product#54138, plant#54139, calculationDateTime#54140, stockQuantities#54141], false
(1127) Repartition
Arguments: 10, true
(1128) LogicalRelation
Arguments: parquet, [marketUnit#54142, description#54143, articleHierarchy#54144, defaultCurrency#54145, responsibilities#54146, replenishmentTypes#54147, distributionCenters#54148, assignedArticleHierarchyNodes#54149, minOrderQtySetting#54150, minOrderQtySettingInternal#54151, listingCheck#54152, odsSelection#54153, demandProfiles#54154, constraintProfiles#54155, optimizationProfiles#54156, orderGroupSplitProfiles#54157, supplierMinimumProfiles#54158, multipleRestrictionProfiles#54159, preferredUomSource#54160, handlingOfUnfulfilledDemands#54161, negligibleQuantitiesThreshold#54162, eventtype#54163], false
(1129) Repartition
Arguments: 10, true
(1130) Filter
Arguments: (marketUnit#54142 <=> DIP_1691)
(1131) Project
Arguments: [marketUnit#54142, description#54143, articleHierarchy#54144, defaultCurrency#54145, responsibilities#54146, replenishmentTypes#54147, distributionCenters#54148, assignedArticleHierarchyNodes#54149, minOrderQtySetting#54150, minOrderQtySettingInternal#54151, listingCheck#54152, odsSelection#54153, demandProfiles#54154, constraintProfiles#54155, optimizationProfiles#54156, orderGroupSplitProfiles#54157, supplierMinimumProfiles#54158, multipleRestrictionProfiles#54159, preferredUomSource#54160, handlingOfUnfulfilledDemands#54161, negligibleQuantitiesThreshold#54162, eventtype#54163]
(1132) Project
Arguments: [distributionCenters#54148]
(1133) Generate
Arguments: explode(distributionCenters#54148), false, [distributionCenters#54164]
(1134) Project
Arguments: [distributionCenters#54164]
(1135) Generate
Arguments: explode(distributionCenters#54164.storageLocations), false, [storageLocations#54165]
(1136) Project
Arguments: [distributionCenters#54164.id AS plantId#54166, distributionCenters#54164.internalRefUUID AS plantUuid#54167, storageLocations#54165]
(1137) Project
Arguments: [plantId#54166, plantUuid#54167, storageLocations#54165.id AS storageLocId#54168, storageLocations#54165.internalRefUUID AS storageLocUuid#54169]
(1138) LogicalRelation
Arguments: parquet, [product#54170, plant#54171, orderDateTime#54172, planningStartDateTime#54173], false
(1139) RepartitionByExpression
Arguments: [product#54170, plant#54171], 10
(1140) Project
Arguments: [product#54170, plant#54171, orderDateTime#54172]
(1141) LogicalRelation
Arguments: parquet, [systemId#54174, internalUUID#54175, plant#54176, product#54177, blockedForReplenishmentStartingFrom#54178, productionAspect#54179, salesPlant#54180, listing#54181], false
(1142) Repartition
Arguments: 10, true
(1143) Project
Arguments: [systemId#54174, internalUUID#54175, plant#54176, product#54177, blockedForReplenishmentStartingFrom#54178, productionAspect#54179, salesPlant#54180, listing#54181, struct(systemId, systemId#54174, internalUUID, internalUUID#54175, plant, plant#54176, product, product#54177, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54178, productionAspect, productionAspect#54179, salesPlant, salesPlant#54180, listing, listing#54181) AS productPlant#54182]
(1144) Project
Arguments: [productPlant#54182]
(1145) Join
Arguments: LeftOuter, ((product#54170 <=> productPlant#54182.product.internalRefUUID) AND (plant#54171 <=> productPlant#54182.plant.internalRefUUID))
(1146) Project
Arguments: [product#54170, plant#54171, orderDateTime#54172, productPlant#54182]
(1147) SubqueryAlias
Arguments: wl
(1148) LogicalRelation
Arguments: parquet, [systemId#54183, internalUUID#54184, id#54185, displayId#54186, name#54187, category#54188, companyCode#54189, address#54190, mainDistributionChain#54191, mainPurchasingOrganization#54192, validPurchasingOrganizations#54193, productGroup#54194], false
(1149) Repartition
Arguments: 10, true
(1150) Project
Arguments: [internalUUID#54184, address#54190.timeZone.code AS timezonecode#54195]
(1151) Join
Arguments: LeftOuter, (plant#54171 <=> internalUUID#54184)
(1152) Project
Arguments: [product#54170, plant#54171, orderDateTime#54172, productPlant#54182, internalUUID#54184, CASE WHEN isnotnull(timezonecode#54195) THEN timezonecode#54195 ELSE UTC END AS timezonecode#54196]
(1153) Project
Arguments: [product#54170, plant#54171, orderDateTime#54172, productPlant#54182, timezonecode#54196]
(1154) LogicalRelation
Arguments: parquet, [systemId#54197, internalUUID#54198, id#54199, displayId#54200, name#54201, baseUnitOfMeasure#54202, unitOfMeasures#54203, unitOfMeasureConversions#54204, productionAspect#54205, salesAspect#54206, procurementAspect#54207, productGroup#54208], false
(1155) Repartition
Arguments: 10, true
(1156) Join
Arguments: LeftOuter, (product#54170 = internalUUID#54198)
(1157) Project
Arguments: [product#54170, plant#54171, orderDateTime#54172, productPlant#54182, timezonecode#54196, systemId#54197, internalUUID#54198, id#54199, displayId#54200, name#54201, baseUnitOfMeasure#54202, unitOfMeasures#54203, unitOfMeasureConversions#54204, productionAspect#54205, salesAspect#54206, procurementAspect#54207, productGroup#54208, filter(unitOfMeasureConversions#54204, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54182.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54182.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54202.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54202.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54209]
(1158) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54209.quantityNumerator), true, [quantityNumerator#54210]
(1159) Project
Arguments: [product#54170, plant#54171, orderDateTime#54172, productPlant#54182, timezonecode#54196, systemId#54197, internalUUID#54198, id#54199, displayId#54200, name#54201, baseUnitOfMeasure#54202, unitOfMeasures#54203, unitOfMeasureConversions#54204, productionAspect#54205, salesAspect#54206, procurementAspect#54207, productGroup#54208, filteredUnitOfMeasureConversions#54209, quantityNumerator#54210]
(1160) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54209.quantityDenominator), true, [quantityDenominator#54211]
(1161) Project
Arguments: [product#54170, plant#54171, orderDateTime#54172, productPlant#54182, timezonecode#54196, systemId#54197, internalUUID#54198, id#54199, displayId#54200, name#54201, baseUnitOfMeasure#54202, unitOfMeasures#54203, unitOfMeasureConversions#54204, productionAspect#54205, salesAspect#54206, procurementAspect#54207, productGroup#54208, filteredUnitOfMeasureConversions#54209, quantityNumerator#54210, quantityDenominator#54211]
(1162) Project
Arguments: [product#54170, plant#54171, orderDateTime#54172, productPlant#54182, timezonecode#54196, systemId#54197, internalUUID#54198, id#54199, displayId#54200, name#54201, baseUnitOfMeasure#54202, unitOfMeasures#54203, unitOfMeasureConversions#54204, productionAspect#54205, salesAspect#54206, procurementAspect#54207, productGroup#54208, filteredUnitOfMeasureConversions#54209, quantityNumerator#54210, quantityDenominator#54211, (cast(quantityNumerator#54210 as double) / cast(quantityDenominator#54211 as double)) AS outboundUnit#54212]
(1163) Project
Arguments: [product#54170, plant#54171, orderDateTime#54172, productPlant#54182, timezonecode#54196, systemId#54197, internalUUID#54198, id#54199, displayId#54200, name#54201, baseUnitOfMeasure#54202, unitOfMeasures#54203, unitOfMeasureConversions#54204, productionAspect#54205, salesAspect#54206, procurementAspect#54207, productGroup#54208, filteredUnitOfMeasureConversions#54209, quantityNumerator#54210, quantityDenominator#54211, CASE WHEN (isnull(outboundUnit#54212) OR (outboundUnit#54212 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54212 END AS outboundUnit#54213]
(1164) Project
Arguments: [product#54170, plant#54171, orderDateTime#54172, productPlant#54182, timezonecode#54196, outboundUnit#54213]
(1165) Project
Arguments: [plant#54171]
(1166) Deduplicate
Arguments: [plant#54171]
(1167) Join
Arguments: Inner, (plantUuid#54167 = plant#54171)
(1168) Project
Arguments: [plantId#54166, plantUuid#54167, storageLocId#54168, storageLocUuid#54169]
(1169) Join
Arguments: Inner, (plant#54139.internalRefUUID <=> plantUuid#54167)
(1170) Generate
Arguments: explode(filter(stockQuantities#54141, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#54169) AND (lambda x#50650.storageLocation.Id = storageLocId#54168)), lambda x#50650, false))), false, [stockQuantity#54214]
(1171) Project
Arguments: [systemId#54136, internalUUID#54137, product#54138, plant#54139, calculationDateTime#54140, stockQuantities#54141, plantId#54166, plantUuid#54167, storageLocId#54168, storageLocUuid#54169, stockQuantity#54214]
(1172) Aggregate
Arguments: [plantUuid#54167, internalUUID#54137, plant#54139, product#54138, systemId#54136], [plantUuid#54167, internalUUID#54137, plant#54139, product#54138, systemId#54136, first(calculationDateTime#54140, false) AS calculationDateTime#54215, collect_list(stockQuantity#54214, 0, 0) AS stockQuantities#54216]
(1173) Project
Arguments: [systemId#54136, internalUUID#54137, product#54138, plant#54139, calculationDateTime#54215, stockQuantities#54216]
(1174) Generate
Arguments: explode(stockQuantities#54216), false, [stockQuantity#54217]
(1175) Project
Arguments: [systemId#54136, internalUUID#54137, product#54138, plant#54139, calculationDateTime#54215, stockQuantities#54216, stockQuantity#54217]
(1176) Project
Arguments: [plant#54139.id AS plant#54218, plant#54139.internalRefUUID AS plantUuid#54219, product#54138.id AS product#54220, product#54138.internalRefUUID AS productUuid#54221, calculationDateTime#54215, stockQuantity#54217.storagelocation.id AS storageLocId#54222, stockQuantity#54217.storagelocation.internalRefUUID AS storageLocUuid#54223, stockQuantity#54217.quantity.measure AS quantity#54224, stockQuantity#54217.specialStockIndicator.code AS specialStockIndicator#54225, stockQuantity#54217.stockType.code AS stockType#54226]
(1177) Filter
Arguments: ((specialStockIndicator#54225 = ) AND (stockType#54226 = 01))
(1178) LogicalRelation
Arguments: parquet, [product#54227, plant#54228, orderDateTime#54229, planningStartDateTime#54230], false
(1179) RepartitionByExpression
Arguments: [product#54227, plant#54228], 10
(1180) Project
Arguments: [product#54227, plant#54228, orderDateTime#54229]
(1181) LogicalRelation
Arguments: parquet, [systemId#54231, internalUUID#54232, plant#54233, product#54234, blockedForReplenishmentStartingFrom#54235, productionAspect#54236, salesPlant#54237, listing#54238], false
(1182) Repartition
Arguments: 10, true
(1183) Project
Arguments: [systemId#54231, internalUUID#54232, plant#54233, product#54234, blockedForReplenishmentStartingFrom#54235, productionAspect#54236, salesPlant#54237, listing#54238, struct(systemId, systemId#54231, internalUUID, internalUUID#54232, plant, plant#54233, product, product#54234, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54235, productionAspect, productionAspect#54236, salesPlant, salesPlant#54237, listing, listing#54238) AS productPlant#54239]
(1184) Project
Arguments: [productPlant#54239]
(1185) Join
Arguments: LeftOuter, ((product#54227 <=> productPlant#54239.product.internalRefUUID) AND (plant#54228 <=> productPlant#54239.plant.internalRefUUID))
(1186) Project
Arguments: [product#54227, plant#54228, orderDateTime#54229, productPlant#54239]
(1187) SubqueryAlias
Arguments: wl
(1188) LogicalRelation
Arguments: parquet, [systemId#54240, internalUUID#54241, id#54242, displayId#54243, name#54244, category#54245, companyCode#54246, address#54247, mainDistributionChain#54248, mainPurchasingOrganization#54249, validPurchasingOrganizations#54250, productGroup#54251], false
(1189) Repartition
Arguments: 10, true
(1190) Project
Arguments: [internalUUID#54241, address#54247.timeZone.code AS timezonecode#54252]
(1191) Join
Arguments: LeftOuter, (plant#54228 <=> internalUUID#54241)
(1192) Project
Arguments: [product#54227, plant#54228, orderDateTime#54229, productPlant#54239, internalUUID#54241, CASE WHEN isnotnull(timezonecode#54252) THEN timezonecode#54252 ELSE UTC END AS timezonecode#54253]
(1193) Project
Arguments: [product#54227, plant#54228, orderDateTime#54229, productPlant#54239, timezonecode#54253]
(1194) LogicalRelation
Arguments: parquet, [systemId#54254, internalUUID#54255, id#54256, displayId#54257, name#54258, baseUnitOfMeasure#54259, unitOfMeasures#54260, unitOfMeasureConversions#54261, productionAspect#54262, salesAspect#54263, procurementAspect#54264, productGroup#54265], false
(1195) Repartition
Arguments: 10, true
(1196) Join
Arguments: LeftOuter, (product#54227 = internalUUID#54255)
(1197) Project
Arguments: [product#54227, plant#54228, orderDateTime#54229, productPlant#54239, timezonecode#54253, systemId#54254, internalUUID#54255, id#54256, displayId#54257, name#54258, baseUnitOfMeasure#54259, unitOfMeasures#54260, unitOfMeasureConversions#54261, productionAspect#54262, salesAspect#54263, procurementAspect#54264, productGroup#54265, filter(unitOfMeasureConversions#54261, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54239.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54239.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54259.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54259.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54266]
(1198) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54266.quantityNumerator), true, [quantityNumerator#54267]
(1199) Project
Arguments: [product#54227, plant#54228, orderDateTime#54229, productPlant#54239, timezonecode#54253, systemId#54254, internalUUID#54255, id#54256, displayId#54257, name#54258, baseUnitOfMeasure#54259, unitOfMeasures#54260, unitOfMeasureConversions#54261, productionAspect#54262, salesAspect#54263, procurementAspect#54264, productGroup#54265, filteredUnitOfMeasureConversions#54266, quantityNumerator#54267]
(1200) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54266.quantityDenominator), true, [quantityDenominator#54268]
(1201) Project
Arguments: [product#54227, plant#54228, orderDateTime#54229, productPlant#54239, timezonecode#54253, systemId#54254, internalUUID#54255, id#54256, displayId#54257, name#54258, baseUnitOfMeasure#54259, unitOfMeasures#54260, unitOfMeasureConversions#54261, productionAspect#54262, salesAspect#54263, procurementAspect#54264, productGroup#54265, filteredUnitOfMeasureConversions#54266, quantityNumerator#54267, quantityDenominator#54268]
(1202) Project
Arguments: [product#54227, plant#54228, orderDateTime#54229, productPlant#54239, timezonecode#54253, systemId#54254, internalUUID#54255, id#54256, displayId#54257, name#54258, baseUnitOfMeasure#54259, unitOfMeasures#54260, unitOfMeasureConversions#54261, productionAspect#54262, salesAspect#54263, procurementAspect#54264, productGroup#54265, filteredUnitOfMeasureConversions#54266, quantityNumerator#54267, quantityDenominator#54268, (cast(quantityNumerator#54267 as double) / cast(quantityDenominator#54268 as double)) AS outboundUnit#54269]
(1203) Project
Arguments: [product#54227, plant#54228, orderDateTime#54229, productPlant#54239, timezonecode#54253, systemId#54254, internalUUID#54255, id#54256, displayId#54257, name#54258, baseUnitOfMeasure#54259, unitOfMeasures#54260, unitOfMeasureConversions#54261, productionAspect#54262, salesAspect#54263, procurementAspect#54264, productGroup#54265, filteredUnitOfMeasureConversions#54266, quantityNumerator#54267, quantityDenominator#54268, CASE WHEN (isnull(outboundUnit#54269) OR (outboundUnit#54269 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54269 END AS outboundUnit#54270]
(1204) Project
Arguments: [product#54227, plant#54228, orderDateTime#54229, productPlant#54239, timezonecode#54253, outboundUnit#54270]
(1205) Join
Arguments: Inner, ((plantUuid#54219 = plant#54228) AND (productUuid#54221 = product#54227))
(1206) Filter
Arguments: (calculationDateTime#54215 <= orderDateTime#54229)
(1207) Project
Arguments: [plantUuid#54219 AS plant#54271, productUuid#54221 AS product#54272, storageLocId#54222, calculationDateTime#54215, quantity#54224]
(1208) LogicalRelation
Arguments: parquet, [systemId#54273, internalUUID#54274, product#54275, plant#54276, calculationDateTime#54277, stockQuantities#54278], false
(1209) Repartition
Arguments: 10, true
(1210) LogicalRelation
Arguments: parquet, [marketUnit#54279, description#54280, articleHierarchy#54281, defaultCurrency#54282, responsibilities#54283, replenishmentTypes#54284, distributionCenters#54285, assignedArticleHierarchyNodes#54286, minOrderQtySetting#54287, minOrderQtySettingInternal#54288, listingCheck#54289, odsSelection#54290, demandProfiles#54291, constraintProfiles#54292, optimizationProfiles#54293, orderGroupSplitProfiles#54294, supplierMinimumProfiles#54295, multipleRestrictionProfiles#54296, preferredUomSource#54297, handlingOfUnfulfilledDemands#54298, negligibleQuantitiesThreshold#54299, eventtype#54300], false
(1211) Repartition
Arguments: 10, true
(1212) Filter
Arguments: (marketUnit#54279 <=> DIP_1691)
(1213) Project
Arguments: [marketUnit#54279, description#54280, articleHierarchy#54281, defaultCurrency#54282, responsibilities#54283, replenishmentTypes#54284, distributionCenters#54285, assignedArticleHierarchyNodes#54286, minOrderQtySetting#54287, minOrderQtySettingInternal#54288, listingCheck#54289, odsSelection#54290, demandProfiles#54291, constraintProfiles#54292, optimizationProfiles#54293, orderGroupSplitProfiles#54294, supplierMinimumProfiles#54295, multipleRestrictionProfiles#54296, preferredUomSource#54297, handlingOfUnfulfilledDemands#54298, negligibleQuantitiesThreshold#54299, eventtype#54300]
(1214) Project
Arguments: [distributionCenters#54285]
(1215) Generate
Arguments: explode(distributionCenters#54285), false, [distributionCenters#54301]
(1216) Project
Arguments: [distributionCenters#54301]
(1217) Generate
Arguments: explode(distributionCenters#54301.storageLocations), false, [storageLocations#54302]
(1218) Project
Arguments: [distributionCenters#54301.id AS plantId#54303, distributionCenters#54301.internalRefUUID AS plantUuid#54304, storageLocations#54302]
(1219) Project
Arguments: [plantId#54303, plantUuid#54304, storageLocations#54302.id AS storageLocId#54305, storageLocations#54302.internalRefUUID AS storageLocUuid#54306]
(1220) LogicalRelation
Arguments: parquet, [product#54307, plant#54308, orderDateTime#54309, planningStartDateTime#54310], false
(1221) RepartitionByExpression
Arguments: [product#54307, plant#54308], 10
(1222) Project
Arguments: [product#54307, plant#54308, orderDateTime#54309]
(1223) LogicalRelation
Arguments: parquet, [systemId#54311, internalUUID#54312, plant#54313, product#54314, blockedForReplenishmentStartingFrom#54315, productionAspect#54316, salesPlant#54317, listing#54318], false
(1224) Repartition
Arguments: 10, true
(1225) Project
Arguments: [systemId#54311, internalUUID#54312, plant#54313, product#54314, blockedForReplenishmentStartingFrom#54315, productionAspect#54316, salesPlant#54317, listing#54318, struct(systemId, systemId#54311, internalUUID, internalUUID#54312, plant, plant#54313, product, product#54314, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54315, productionAspect, productionAspect#54316, salesPlant, salesPlant#54317, listing, listing#54318) AS productPlant#54319]
(1226) Project
Arguments: [productPlant#54319]
(1227) Join
Arguments: LeftOuter, ((product#54307 <=> productPlant#54319.product.internalRefUUID) AND (plant#54308 <=> productPlant#54319.plant.internalRefUUID))
(1228) Project
Arguments: [product#54307, plant#54308, orderDateTime#54309, productPlant#54319]
(1229) SubqueryAlias
Arguments: wl
(1230) LogicalRelation
Arguments: parquet, [systemId#54320, internalUUID#54321, id#54322, displayId#54323, name#54324, category#54325, companyCode#54326, address#54327, mainDistributionChain#54328, mainPurchasingOrganization#54329, validPurchasingOrganizations#54330, productGroup#54331], false
(1231) Repartition
Arguments: 10, true
(1232) Project
Arguments: [internalUUID#54321, address#54327.timeZone.code AS timezonecode#54332]
(1233) Join
Arguments: LeftOuter, (plant#54308 <=> internalUUID#54321)
(1234) Project
Arguments: [product#54307, plant#54308, orderDateTime#54309, productPlant#54319, internalUUID#54321, CASE WHEN isnotnull(timezonecode#54332) THEN timezonecode#54332 ELSE UTC END AS timezonecode#54333]
(1235) Project
Arguments: [product#54307, plant#54308, orderDateTime#54309, productPlant#54319, timezonecode#54333]
(1236) LogicalRelation
Arguments: parquet, [systemId#54334, internalUUID#54335, id#54336, displayId#54337, name#54338, baseUnitOfMeasure#54339, unitOfMeasures#54340, unitOfMeasureConversions#54341, productionAspect#54342, salesAspect#54343, procurementAspect#54344, productGroup#54345], false
(1237) Repartition
Arguments: 10, true
(1238) Join
Arguments: LeftOuter, (product#54307 = internalUUID#54335)
(1239) Project
Arguments: [product#54307, plant#54308, orderDateTime#54309, productPlant#54319, timezonecode#54333, systemId#54334, internalUUID#54335, id#54336, displayId#54337, name#54338, baseUnitOfMeasure#54339, unitOfMeasures#54340, unitOfMeasureConversions#54341, productionAspect#54342, salesAspect#54343, procurementAspect#54344, productGroup#54345, filter(unitOfMeasureConversions#54341, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54319.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54319.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54339.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54339.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54346]
(1240) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54346.quantityNumerator), true, [quantityNumerator#54347]
(1241) Project
Arguments: [product#54307, plant#54308, orderDateTime#54309, productPlant#54319, timezonecode#54333, systemId#54334, internalUUID#54335, id#54336, displayId#54337, name#54338, baseUnitOfMeasure#54339, unitOfMeasures#54340, unitOfMeasureConversions#54341, productionAspect#54342, salesAspect#54343, procurementAspect#54344, productGroup#54345, filteredUnitOfMeasureConversions#54346, quantityNumerator#54347]
(1242) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54346.quantityDenominator), true, [quantityDenominator#54348]
(1243) Project
Arguments: [product#54307, plant#54308, orderDateTime#54309, productPlant#54319, timezonecode#54333, systemId#54334, internalUUID#54335, id#54336, displayId#54337, name#54338, baseUnitOfMeasure#54339, unitOfMeasures#54340, unitOfMeasureConversions#54341, productionAspect#54342, salesAspect#54343, procurementAspect#54344, productGroup#54345, filteredUnitOfMeasureConversions#54346, quantityNumerator#54347, quantityDenominator#54348]
(1244) Project
Arguments: [product#54307, plant#54308, orderDateTime#54309, productPlant#54319, timezonecode#54333, systemId#54334, internalUUID#54335, id#54336, displayId#54337, name#54338, baseUnitOfMeasure#54339, unitOfMeasures#54340, unitOfMeasureConversions#54341, productionAspect#54342, salesAspect#54343, procurementAspect#54344, productGroup#54345, filteredUnitOfMeasureConversions#54346, quantityNumerator#54347, quantityDenominator#54348, (cast(quantityNumerator#54347 as double) / cast(quantityDenominator#54348 as double)) AS outboundUnit#54349]
(1245) Project
Arguments: [product#54307, plant#54308, orderDateTime#54309, productPlant#54319, timezonecode#54333, systemId#54334, internalUUID#54335, id#54336, displayId#54337, name#54338, baseUnitOfMeasure#54339, unitOfMeasures#54340, unitOfMeasureConversions#54341, productionAspect#54342, salesAspect#54343, procurementAspect#54344, productGroup#54345, filteredUnitOfMeasureConversions#54346, quantityNumerator#54347, quantityDenominator#54348, CASE WHEN (isnull(outboundUnit#54349) OR (outboundUnit#54349 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54349 END AS outboundUnit#54350]
(1246) Project
Arguments: [product#54307, plant#54308, orderDateTime#54309, productPlant#54319, timezonecode#54333, outboundUnit#54350]
(1247) Project
Arguments: [plant#54308]
(1248) Deduplicate
Arguments: [plant#54308]
(1249) Join
Arguments: Inner, (plantUuid#54304 = plant#54308)
(1250) Project
Arguments: [plantId#54303, plantUuid#54304, storageLocId#54305, storageLocUuid#54306]
(1251) Join
Arguments: Inner, (plant#54276.internalRefUUID <=> plantUuid#54304)
(1252) Generate
Arguments: explode(filter(stockQuantities#54278, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#54306) AND (lambda x#50650.storageLocation.Id = storageLocId#54305)), lambda x#50650, false))), false, [stockQuantity#54351]
(1253) Project
Arguments: [systemId#54273, internalUUID#54274, product#54275, plant#54276, calculationDateTime#54277, stockQuantities#54278, plantId#54303, plantUuid#54304, storageLocId#54305, storageLocUuid#54306, stockQuantity#54351]
(1254) Aggregate
Arguments: [plantUuid#54304, internalUUID#54274, plant#54276, product#54275, systemId#54273], [plantUuid#54304, internalUUID#54274, plant#54276, product#54275, systemId#54273, first(calculationDateTime#54277, false) AS calculationDateTime#54352, collect_list(stockQuantity#54351, 0, 0) AS stockQuantities#54353]
(1255) Project
Arguments: [systemId#54273, internalUUID#54274, product#54275, plant#54276, calculationDateTime#54352, stockQuantities#54353]
(1256) Generate
Arguments: explode(stockQuantities#54353), false, [stockQuantity#54354]
(1257) Project
Arguments: [systemId#54273, internalUUID#54274, product#54275, plant#54276, calculationDateTime#54352, stockQuantities#54353, stockQuantity#54354]
(1258) Project
Arguments: [plant#54276.id AS plant#54355, plant#54276.internalRefUUID AS plantUuid#54356, product#54275.id AS product#54357, product#54275.internalRefUUID AS productUuid#54358, calculationDateTime#54352, stockQuantity#54354.storagelocation.id AS storageLocId#54359, stockQuantity#54354.storagelocation.internalRefUUID AS storageLocUuid#54360, stockQuantity#54354.quantity.measure AS quantity#54361, stockQuantity#54354.specialStockIndicator.code AS specialStockIndicator#54362, stockQuantity#54354.stockType.code AS stockType#54363]
(1259) Filter
Arguments: ((specialStockIndicator#54362 = ) AND (stockType#54363 = 01))
(1260) LogicalRelation
Arguments: parquet, [product#54364, plant#54365, orderDateTime#54366, planningStartDateTime#54367], false
(1261) RepartitionByExpression
Arguments: [product#54364, plant#54365], 10
(1262) Project
Arguments: [product#54364, plant#54365, orderDateTime#54366]
(1263) LogicalRelation
Arguments: parquet, [systemId#54368, internalUUID#54369, plant#54370, product#54371, blockedForReplenishmentStartingFrom#54372, productionAspect#54373, salesPlant#54374, listing#54375], false
(1264) Repartition
Arguments: 10, true
(1265) Project
Arguments: [systemId#54368, internalUUID#54369, plant#54370, product#54371, blockedForReplenishmentStartingFrom#54372, productionAspect#54373, salesPlant#54374, listing#54375, struct(systemId, systemId#54368, internalUUID, internalUUID#54369, plant, plant#54370, product, product#54371, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#54372, productionAspect, productionAspect#54373, salesPlant, salesPlant#54374, listing, listing#54375) AS productPlant#54376]
(1266) Project
Arguments: [productPlant#54376]
(1267) Join
Arguments: LeftOuter, ((product#54364 <=> productPlant#54376.product.internalRefUUID) AND (plant#54365 <=> productPlant#54376.plant.internalRefUUID))
(1268) Project
Arguments: [product#54364, plant#54365, orderDateTime#54366, productPlant#54376]
(1269) SubqueryAlias
Arguments: wl
(1270) LogicalRelation
Arguments: parquet, [systemId#54377, internalUUID#54378, id#54379, displayId#54380, name#54381, category#54382, companyCode#54383, address#54384, mainDistributionChain#54385, mainPurchasingOrganization#54386, validPurchasingOrganizations#54387, productGroup#54388], false
(1271) Repartition
Arguments: 10, true
(1272) Project
Arguments: [internalUUID#54378, address#54384.timeZone.code AS timezonecode#54389]
(1273) Join
Arguments: LeftOuter, (plant#54365 <=> internalUUID#54378)
(1274) Project
Arguments: [product#54364, plant#54365, orderDateTime#54366, productPlant#54376, internalUUID#54378, CASE WHEN isnotnull(timezonecode#54389) THEN timezonecode#54389 ELSE UTC END AS timezonecode#54390]
(1275) Project
Arguments: [product#54364, plant#54365, orderDateTime#54366, productPlant#54376, timezonecode#54390]
(1276) LogicalRelation
Arguments: parquet, [systemId#54391, internalUUID#54392, id#54393, displayId#54394, name#54395, baseUnitOfMeasure#54396, unitOfMeasures#54397, unitOfMeasureConversions#54398, productionAspect#54399, salesAspect#54400, procurementAspect#54401, productGroup#54402], false
(1277) Repartition
Arguments: 10, true
(1278) Join
Arguments: LeftOuter, (product#54364 = internalUUID#54392)
(1279) Project
Arguments: [product#54364, plant#54365, orderDateTime#54366, productPlant#54376, timezonecode#54390, systemId#54391, internalUUID#54392, id#54393, displayId#54394, name#54395, baseUnitOfMeasure#54396, unitOfMeasures#54397, unitOfMeasureConversions#54398, productionAspect#54399, salesAspect#54400, procurementAspect#54401, productGroup#54402, filter(unitOfMeasureConversions#54398, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#54376.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#54376.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#54396.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#54396.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#54403]
(1280) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54403.quantityNumerator), true, [quantityNumerator#54404]
(1281) Project
Arguments: [product#54364, plant#54365, orderDateTime#54366, productPlant#54376, timezonecode#54390, systemId#54391, internalUUID#54392, id#54393, displayId#54394, name#54395, baseUnitOfMeasure#54396, unitOfMeasures#54397, unitOfMeasureConversions#54398, productionAspect#54399, salesAspect#54400, procurementAspect#54401, productGroup#54402, filteredUnitOfMeasureConversions#54403, quantityNumerator#54404]
(1282) Generate
Arguments: explode(filteredUnitOfMeasureConversions#54403.quantityDenominator), true, [quantityDenominator#54405]
(1283) Project
Arguments: [product#54364, plant#54365, orderDateTime#54366, productPlant#54376, timezonecode#54390, systemId#54391, internalUUID#54392, id#54393, displayId#54394, name#54395, baseUnitOfMeasure#54396, unitOfMeasures#54397, unitOfMeasureConversions#54398, productionAspect#54399, salesAspect#54400, procurementAspect#54401, productGroup#54402, filteredUnitOfMeasureConversions#54403, quantityNumerator#54404, quantityDenominator#54405]
(1284) Project
Arguments: [product#54364, plant#54365, orderDateTime#54366, productPlant#54376, timezonecode#54390, systemId#54391, internalUUID#54392, id#54393, displayId#54394, name#54395, baseUnitOfMeasure#54396, unitOfMeasures#54397, unitOfMeasureConversions#54398, productionAspect#54399, salesAspect#54400, procurementAspect#54401, productGroup#54402, filteredUnitOfMeasureConversions#54403, quantityNumerator#54404, quantityDenominator#54405, (cast(quantityNumerator#54404 as double) / cast(quantityDenominator#54405 as double)) AS outboundUnit#54406]
(1285) Project
Arguments: [product#54364, plant#54365, orderDateTime#54366, productPlant#54376, timezonecode#54390, systemId#54391, internalUUID#54392, id#54393, displayId#54394, name#54395, baseUnitOfMeasure#54396, unitOfMeasures#54397, unitOfMeasureConversions#54398, productionAspect#54399, salesAspect#54400, procurementAspect#54401, productGroup#54402, filteredUnitOfMeasureConversions#54403, quantityNumerator#54404, quantityDenominator#54405, CASE WHEN (isnull(outboundUnit#54406) OR (outboundUnit#54406 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#54406 END AS outboundUnit#54407]
(1286) Project
Arguments: [product#54364, plant#54365, orderDateTime#54366, productPlant#54376, timezonecode#54390, outboundUnit#54407]
(1287) Join
Arguments: Inner, ((plantUuid#54356 = plant#54365) AND (productUuid#54358 = product#54364))
(1288) Filter
Arguments: (calculationDateTime#54352 <= orderDateTime#54366)
(1289) Project
Arguments: [plantUuid#54356 AS plant#54408, productUuid#54358 AS product#54409, storageLocId#54359, calculationDateTime#54352, quantity#54361]
(1290) Aggregate
Arguments: [plant#54408, product#54409, storageLocId#54359], [plant#54408, product#54409, storageLocId#54359, max(calculationDateTime#54352) AS max_calc_datetime#54410]
(1291) Join
Arguments: Inner, ((((plant#54271 <=> plant#54408) AND (product#54272 <=> product#54409)) AND (storageLocId#54222 <=> storageLocId#54359)) AND (calculationDateTime#54215 <=> max_calc_datetime#54410))
(1292) Project
Arguments: [plant#54271, product#54272, storageLocId#54222, calculationDateTime#54215, quantity#54224]
(1293) Aggregate
Arguments: [product#54272, plant#54271], [product#54272, plant#54271, sum(quantity#54224) AS quantitySum#54411, min(calculationDateTime#54215) AS minCalculationDateTime#54412]
(1294) Project
Arguments: [product#54272, plant#54271, quantitySum#54411, minCalculationDateTime#54412, round(quantitySum#54411, 0) AS roundedQuantitySum#54413]
(1295) Join
Arguments: LeftOuter, ((plant#54093 = plant#54271) AND (product#54092 = product#54272))
(1296) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, roundedQuantitySum#54413, minCalculationDateTime#54412]
(1297) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, roundedQuantitySum#54413, minCalculationDateTime#54412, CASE WHEN isnotnull(minCalculationDateTime#54412) THEN minCalculationDateTime#54412 ELSE orderDateTime#54094 END AS stockDatetime#54414]
(1298) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, roundedQuantitySum#54413, minCalculationDateTime#54412, stockDatetime#54414, CASE WHEN isnotnull(roundedQuantitySum#54413) THEN array(roundedQuantitySum#54413) ELSE array(0.0) END AS stockBatchQuantities#54415]
(1299) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, roundedQuantitySum#54413, minCalculationDateTime#54412, stockDatetime#54414, stockBatchQuantities#54415, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#54416]
(1300) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, roundedQuantitySum#54413, stockDatetime#54414, stockBatchQuantities#54415, stockBatchShelfLifeEndDatetimes#54416]
(1301) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, stockDatetime#54414, stockBatchQuantities#54415, stockBatchShelfLifeEndDatetimes#54416]
(1302) LogicalRelation
Arguments: parquet, [product#54417, plant#54418, demandChannel#54419, demandStream#54420, considerVariance#54421, demandTimeBuckets#54422, demandPointInTimeStart#54423, demandPointInTimeEnd#54424, demandPointInTime#54425], false
(1303) Join
Arguments: LeftOuter, ((product#54092 = product#54417) AND (plant#54093 = plant#54418))
(1304) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, stockDatetime#54414, stockBatchQuantities#54415, stockBatchShelfLifeEndDatetimes#54416, demandChannel#54419, demandStream#54420, considerVariance#54421, demandTimeBuckets#54422, demandPointInTimeStart#54423, demandPointInTimeEnd#54424, demandPointInTime#54425, product#54417, plant#54418]
(1305) Project
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, stockDatetime#54414, stockBatchQuantities#54415, stockBatchShelfLifeEndDatetimes#54416, demandChannel#54419, demandStream#54420, considerVariance#54421, demandTimeBuckets#54422, demandPointInTimeStart#54423, demandPointInTimeEnd#54424, demandPointInTime#54425, CASE WHEN isnotnull(product#54417) THEN struct(demandChannel, demandChannel#54419, demandStream, demandStream#54420, considerVariance, considerVariance#54421, demandTimeBuckets, demandTimeBuckets#54422, demandPointInTimeStart, demandPointInTimeStart#54423, demandPointInTimeEnd, demandPointInTimeEnd#54424, demandPointInTime, demandPointInTime#54425) 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#54426]
(1306) Aggregate
Arguments: [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, stockDatetime#54414, stockBatchQuantities#54415, stockBatchShelfLifeEndDatetimes#54416], [product#54092, plant#54093, orderDateTime#54094, productPlant#54104, timezonecode#54118, outboundUnit#54135, stockDatetime#54414, stockBatchQuantities#54415, stockBatchShelfLifeEndDatetimes#54416, collect_list(rawDemands#54426, 0, 0) AS rawDemands#54427]
(1307) DeserializeToObject
Arguments: createexternalrow(invoke(product#54092.toString()), invoke(plant#54093.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#54094)), if (isnull(productPlant#54104)) null else createexternalrow(invoke(productPlant#54104.systemId.toString()), invoke(productPlant#54104.internalUUID.toString()), if (isnull(productPlant#54104.plant)) null else createexternalrow(invoke(productPlant#54104.plant.internalRefUUID.toString()), invoke(productPlant#54104.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#54104.product)) null else createexternalrow(invoke(productPlant#54104.product.internalRefUUID.toString()), invoke(productPlant#54104.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#54104.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#54104.productionAspect)) null else createexternalrow(if (isnull(productPlant#54104.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#54104.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#54104.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#54104.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#54104.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#54104.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#54104.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#54104.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#54104.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#54104.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#54104.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#54104.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#54104.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#54104.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#54104.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#54104.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#54104.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#54104.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#54104.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#54104.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#54104.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#54104.salesPlant)) null else createexternalrow(if (isnull(productPlant#54104.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#54104.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#54104.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, 7092), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#54104.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#54118.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#54135)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#54414)), mapobjects(lambdavariable(MapObject, DoubleType, true, 7093), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 7093) as double))), stockBatchQuantities#54415, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 7094), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 7094) as timestamp)))), stockBatchShelfLifeEndDatetimes#54416, 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, 7095), 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, 7095))) 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, 7095).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, 7095).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, 7095).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).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, 7095).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, 7095).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, 7095).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).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, 7095).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#54427, 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#51012: org.apache.spark.sql.Row
(1308) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, 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#51017: 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#54428, 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#54429, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7083), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7083), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7084), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7084), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7085), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7085), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7086), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7086), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7087), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7087), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#54430, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7089), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7089), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7090), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7090), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7091), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7091), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#54431]
(1310) Join
Arguments: LeftOuter, ((plant#54429 <=> plant#53768) AND (product#54428 <=> product#53767))
(1311) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, outboundUnit#53810, stockDatetime#54089, stockBatchQuantities#54090, stockBatchShelfLifeEndDatetimes#54091, plant#54429, dayBucketDemands#54430, pointInTimeDemands#54431]
(1312) Project
Arguments: [product#53767, plant#53768, orderDateTime#53769, productPlant#53779, timezonecode#53793, outboundUnit#53810, stockDatetime#54089, stockBatchQuantities#54090, stockBatchShelfLifeEndDatetimes#54091, dayBucketDemands#54430, pointInTimeDemands#54431]
(1313) LogicalRelation
Arguments: parquet, [systemId#54432, internalUUID#54433, id#54434, displayId#54435, supplier#54436, type#54437, status#54438, isMarkedForDeletion#54439, items#54440], false
(1314) Repartition
Arguments: 10, true
(1315) Generate
Arguments: explode(items#54440), false, [item#54441]
(1316) Project
Arguments: [id#54434, internalUUID#54433, isMarkedForDeletion#54439, supplier#54436.internalRefUUID AS supplierUuid#54442, item#54441]
(1317) Filter
Arguments: (((NOT isMarkedForDeletion#54439 AND NOT item#54441.deletionIndicator) AND NOT item#54441.completeIndicator) AND NOT item#54441.returnIndicator)
(1318) Project
Arguments: [id#54434, internalUUID#54433, supplierUuid#54442, item#54441.plant.internalRefUUID AS plant#54443, item#54441.product.internalRefUUID AS product#54444, item#54441.storageLocation.internalRefUUID AS storageLocUuid#54445, item#54441.quantityUnit.code AS quantityUom#54446, item#54441.quantityUnit.internalRefUUID AS quantityUomUuid#54447, item#54441.quantityNumerator AS quantityNumerator#54448, item#54441.quantityDenominator AS quantityDenominator#54449, item#54441.scheduleLines AS scheduleLines#54450, item#54441.confirmations AS confirmations#54451]
(1319) Join
Arguments: Inner, ((product#53767 <=> product#54444) AND (plant#53768 <=> supplierUuid#54442))
(1320) Project
Arguments: [id#54434, internalUUID#54433, supplierUuid#54442, plant#54443, product#54444, storageLocUuid#54445, quantityUom#54446, quantityUomUuid#54447, quantityNumerator#54448, quantityDenominator#54449, scheduleLines#54450, confirmations#54451, stockDatetime#54089, plant#53768]
(1321) Project
Arguments: [id#54434, internalUUID#54433, supplierUuid#54442, product#54444, storageLocUuid#54445, quantityUom#54446, quantityUomUuid#54447, quantityNumerator#54448, quantityDenominator#54449, scheduleLines#54450, confirmations#54451, stockDatetime#54089, plant#53768]
(1322) Project
Arguments: [id#54434, internalUUID#54433, supplierUuid#54442, product#54444, storageLocUuid#54445, quantityUom#54446, quantityUomUuid#54447, quantityNumerator#54448, quantityDenominator#54449, scheduleLines#54450, confirmations#54451, stockDatetime#54089, plant#53768, filter(transform(filter(transform(scheduleLines#54450, lambdafunction(struct(openQty, (greatest((lambda x_26#53747.quantity - coalesce(lambda x_26#53747.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_26#53747.productAvailabilityDateTime, lambda x_26#53747.deliveryAt)), lambda x_26#53747, false)), lambdafunction((lambda x_27#53748.availabilityDatetime < stockDatetime#54089), lambda x_27#53748, false)), lambdafunction(struct(documentId, id#54434, documentUuid, internalUUID#54433, openQty, lambda x_28#53749.openQty, openQtyInBaseUnit, ((lambda x_28#53749.openQty * quantityNumerator#54448) / quantityDenominator#54449), qtyUom, quantityUom#54446, qtyUomUuid, quantityUomUuid#54447, availabilityDatetime, lambda x_28#53749.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_28#53749, false)), lambdafunction(NOT (lambda x_29#53750.openQty = 0.0), lambda x_29#53750, false)) AS openGoodsMovements#53746]
(1323) Aggregate
Arguments: [product#54444, plant#53768], [product#54444, plant#53768, flatten(collect_list(openGoodsMovements#53746, 0, 0)) AS openGoodsMovements#53751]
(1324) Filter
Arguments: (array_size(openGoodsMovements#53751) > 0)
(1325) Union
Arguments: false, false
(1326) Aggregate
Arguments: [product#51393, plant#51392], [product#51393, plant#51392, flatten(collect_list(openGoodsMovements#51770, 0, 0)) AS openGoodsMovements#54502]
(1327) Join
Arguments: LeftOuter, ((product#50545 = product#51393) AND (plant#50546 = plant#51392))
(1328) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovements#54502]
(1329) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, coalesce(openGoodsMovements#54502.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#55221, coalesce(openGoodsMovements#54502.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#55222, coalesce(openGoodsMovements#54502.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#55223]
(1330) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, 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#55324]
(1331) LogicalRelation
Arguments: parquet, [product#55523, plant#55524, orderDateTime#55525, planningStartDateTime#55526], false
(1332) RepartitionByExpression
Arguments: [product#55523, plant#55524], 10
(1333) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525]
(1334) LogicalRelation
Arguments: parquet, [systemId#55527, internalUUID#55528, plant#55529, product#55530, blockedForReplenishmentStartingFrom#55531, productionAspect#55532, salesPlant#55533, listing#55534], false
(1335) Repartition
Arguments: 10, true
(1336) Project
Arguments: [systemId#55527, internalUUID#55528, plant#55529, product#55530, blockedForReplenishmentStartingFrom#55531, productionAspect#55532, salesPlant#55533, listing#55534, struct(systemId, systemId#55527, internalUUID, internalUUID#55528, plant, plant#55529, product, product#55530, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#55531, productionAspect, productionAspect#55532, salesPlant, salesPlant#55533, listing, listing#55534) AS productPlant#55535]
(1337) Project
Arguments: [productPlant#55535]
(1338) Join
Arguments: LeftOuter, ((product#55523 <=> productPlant#55535.product.internalRefUUID) AND (plant#55524 <=> productPlant#55535.plant.internalRefUUID))
(1339) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535]
(1340) SubqueryAlias
Arguments: wl
(1341) LogicalRelation
Arguments: parquet, [systemId#55536, internalUUID#55537, id#55538, displayId#55539, name#55540, category#55541, companyCode#55542, address#55543, mainDistributionChain#55544, mainPurchasingOrganization#55545, validPurchasingOrganizations#55546, productGroup#55547], false
(1342) Repartition
Arguments: 10, true
(1343) Project
Arguments: [internalUUID#55537, address#55543.timeZone.code AS timezonecode#55548]
(1344) Join
Arguments: LeftOuter, (plant#55524 <=> internalUUID#55537)
(1345) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, internalUUID#55537, CASE WHEN isnotnull(timezonecode#55548) THEN timezonecode#55548 ELSE UTC END AS timezonecode#55549]
(1346) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549]
(1347) LogicalRelation
Arguments: parquet, [systemId#55550, internalUUID#55551, id#55552, displayId#55553, name#55554, baseUnitOfMeasure#55555, unitOfMeasures#55556, unitOfMeasureConversions#55557, productionAspect#55558, salesAspect#55559, procurementAspect#55560, productGroup#55561], false
(1348) Repartition
Arguments: 10, true
(1349) Join
Arguments: LeftOuter, (product#55523 = internalUUID#55551)
(1350) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, systemId#55550, internalUUID#55551, id#55552, displayId#55553, name#55554, baseUnitOfMeasure#55555, unitOfMeasures#55556, unitOfMeasureConversions#55557, productionAspect#55558, salesAspect#55559, procurementAspect#55560, productGroup#55561, filter(unitOfMeasureConversions#55557, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#55535.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#55535.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55555.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55555.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55562]
(1351) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55562.quantityNumerator), true, [quantityNumerator#55563]
(1352) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, systemId#55550, internalUUID#55551, id#55552, displayId#55553, name#55554, baseUnitOfMeasure#55555, unitOfMeasures#55556, unitOfMeasureConversions#55557, productionAspect#55558, salesAspect#55559, procurementAspect#55560, productGroup#55561, filteredUnitOfMeasureConversions#55562, quantityNumerator#55563]
(1353) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55562.quantityDenominator), true, [quantityDenominator#55564]
(1354) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, systemId#55550, internalUUID#55551, id#55552, displayId#55553, name#55554, baseUnitOfMeasure#55555, unitOfMeasures#55556, unitOfMeasureConversions#55557, productionAspect#55558, salesAspect#55559, procurementAspect#55560, productGroup#55561, filteredUnitOfMeasureConversions#55562, quantityNumerator#55563, quantityDenominator#55564]
(1355) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, systemId#55550, internalUUID#55551, id#55552, displayId#55553, name#55554, baseUnitOfMeasure#55555, unitOfMeasures#55556, unitOfMeasureConversions#55557, productionAspect#55558, salesAspect#55559, procurementAspect#55560, productGroup#55561, filteredUnitOfMeasureConversions#55562, quantityNumerator#55563, quantityDenominator#55564, (cast(quantityNumerator#55563 as double) / cast(quantityDenominator#55564 as double)) AS outboundUnit#55565]
(1356) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, systemId#55550, internalUUID#55551, id#55552, displayId#55553, name#55554, baseUnitOfMeasure#55555, unitOfMeasures#55556, unitOfMeasureConversions#55557, productionAspect#55558, salesAspect#55559, procurementAspect#55560, productGroup#55561, filteredUnitOfMeasureConversions#55562, quantityNumerator#55563, quantityDenominator#55564, CASE WHEN (isnull(outboundUnit#55565) OR (outboundUnit#55565 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#55565 END AS outboundUnit#55566]
(1357) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566]
(1358) LogicalRelation
Arguments: parquet, [systemId#55567, internalUUID#55568, product#55569, plant#55570, calculationDateTime#55571, stockQuantities#55572], false
(1359) Repartition
Arguments: 10, true
(1360) LogicalRelation
Arguments: parquet, [marketUnit#55573, description#55574, articleHierarchy#55575, defaultCurrency#55576, responsibilities#55577, replenishmentTypes#55578, distributionCenters#55579, assignedArticleHierarchyNodes#55580, minOrderQtySetting#55581, minOrderQtySettingInternal#55582, listingCheck#55583, odsSelection#55584, demandProfiles#55585, constraintProfiles#55586, optimizationProfiles#55587, orderGroupSplitProfiles#55588, supplierMinimumProfiles#55589, multipleRestrictionProfiles#55590, preferredUomSource#55591, handlingOfUnfulfilledDemands#55592, negligibleQuantitiesThreshold#55593, eventtype#55594], false
(1361) Repartition
Arguments: 10, true
(1362) Filter
Arguments: (marketUnit#55573 <=> DIP_1691)
(1363) Project
Arguments: [marketUnit#55573, description#55574, articleHierarchy#55575, defaultCurrency#55576, responsibilities#55577, replenishmentTypes#55578, distributionCenters#55579, assignedArticleHierarchyNodes#55580, minOrderQtySetting#55581, minOrderQtySettingInternal#55582, listingCheck#55583, odsSelection#55584, demandProfiles#55585, constraintProfiles#55586, optimizationProfiles#55587, orderGroupSplitProfiles#55588, supplierMinimumProfiles#55589, multipleRestrictionProfiles#55590, preferredUomSource#55591, handlingOfUnfulfilledDemands#55592, negligibleQuantitiesThreshold#55593, eventtype#55594]
(1364) Project
Arguments: [distributionCenters#55579]
(1365) Generate
Arguments: explode(distributionCenters#55579), false, [distributionCenters#55595]
(1366) Project
Arguments: [distributionCenters#55595]
(1367) Generate
Arguments: explode(distributionCenters#55595.storageLocations), false, [storageLocations#55596]
(1368) Project
Arguments: [distributionCenters#55595.id AS plantId#55597, distributionCenters#55595.internalRefUUID AS plantUuid#55598, storageLocations#55596]
(1369) Project
Arguments: [plantId#55597, plantUuid#55598, storageLocations#55596.id AS storageLocId#55599, storageLocations#55596.internalRefUUID AS storageLocUuid#55600]
(1370) LogicalRelation
Arguments: parquet, [product#55601, plant#55602, orderDateTime#55603, planningStartDateTime#55604], false
(1371) RepartitionByExpression
Arguments: [product#55601, plant#55602], 10
(1372) Project
Arguments: [product#55601, plant#55602, orderDateTime#55603]
(1373) LogicalRelation
Arguments: parquet, [systemId#55605, internalUUID#55606, plant#55607, product#55608, blockedForReplenishmentStartingFrom#55609, productionAspect#55610, salesPlant#55611, listing#55612], false
(1374) Repartition
Arguments: 10, true
(1375) Project
Arguments: [systemId#55605, internalUUID#55606, plant#55607, product#55608, blockedForReplenishmentStartingFrom#55609, productionAspect#55610, salesPlant#55611, listing#55612, struct(systemId, systemId#55605, internalUUID, internalUUID#55606, plant, plant#55607, product, product#55608, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#55609, productionAspect, productionAspect#55610, salesPlant, salesPlant#55611, listing, listing#55612) AS productPlant#55613]
(1376) Project
Arguments: [productPlant#55613]
(1377) Join
Arguments: LeftOuter, ((product#55601 <=> productPlant#55613.product.internalRefUUID) AND (plant#55602 <=> productPlant#55613.plant.internalRefUUID))
(1378) Project
Arguments: [product#55601, plant#55602, orderDateTime#55603, productPlant#55613]
(1379) SubqueryAlias
Arguments: wl
(1380) LogicalRelation
Arguments: parquet, [systemId#55614, internalUUID#55615, id#55616, displayId#55617, name#55618, category#55619, companyCode#55620, address#55621, mainDistributionChain#55622, mainPurchasingOrganization#55623, validPurchasingOrganizations#55624, productGroup#55625], false
(1381) Repartition
Arguments: 10, true
(1382) Project
Arguments: [internalUUID#55615, address#55621.timeZone.code AS timezonecode#55626]
(1383) Join
Arguments: LeftOuter, (plant#55602 <=> internalUUID#55615)
(1384) Project
Arguments: [product#55601, plant#55602, orderDateTime#55603, productPlant#55613, internalUUID#55615, CASE WHEN isnotnull(timezonecode#55626) THEN timezonecode#55626 ELSE UTC END AS timezonecode#55627]
(1385) Project
Arguments: [product#55601, plant#55602, orderDateTime#55603, productPlant#55613, timezonecode#55627]
(1386) LogicalRelation
Arguments: parquet, [systemId#55628, internalUUID#55629, id#55630, displayId#55631, name#55632, baseUnitOfMeasure#55633, unitOfMeasures#55634, unitOfMeasureConversions#55635, productionAspect#55636, salesAspect#55637, procurementAspect#55638, productGroup#55639], false
(1387) Repartition
Arguments: 10, true
(1388) Join
Arguments: LeftOuter, (product#55601 = internalUUID#55629)
(1389) Project
Arguments: [product#55601, plant#55602, orderDateTime#55603, productPlant#55613, timezonecode#55627, systemId#55628, internalUUID#55629, id#55630, displayId#55631, name#55632, baseUnitOfMeasure#55633, unitOfMeasures#55634, unitOfMeasureConversions#55635, productionAspect#55636, salesAspect#55637, procurementAspect#55638, productGroup#55639, filter(unitOfMeasureConversions#55635, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#55613.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#55613.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55633.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55633.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55640]
(1390) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55640.quantityNumerator), true, [quantityNumerator#55641]
(1391) Project
Arguments: [product#55601, plant#55602, orderDateTime#55603, productPlant#55613, timezonecode#55627, systemId#55628, internalUUID#55629, id#55630, displayId#55631, name#55632, baseUnitOfMeasure#55633, unitOfMeasures#55634, unitOfMeasureConversions#55635, productionAspect#55636, salesAspect#55637, procurementAspect#55638, productGroup#55639, filteredUnitOfMeasureConversions#55640, quantityNumerator#55641]
(1392) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55640.quantityDenominator), true, [quantityDenominator#55642]
(1393) Project
Arguments: [product#55601, plant#55602, orderDateTime#55603, productPlant#55613, timezonecode#55627, systemId#55628, internalUUID#55629, id#55630, displayId#55631, name#55632, baseUnitOfMeasure#55633, unitOfMeasures#55634, unitOfMeasureConversions#55635, productionAspect#55636, salesAspect#55637, procurementAspect#55638, productGroup#55639, filteredUnitOfMeasureConversions#55640, quantityNumerator#55641, quantityDenominator#55642]
(1394) Project
Arguments: [product#55601, plant#55602, orderDateTime#55603, productPlant#55613, timezonecode#55627, systemId#55628, internalUUID#55629, id#55630, displayId#55631, name#55632, baseUnitOfMeasure#55633, unitOfMeasures#55634, unitOfMeasureConversions#55635, productionAspect#55636, salesAspect#55637, procurementAspect#55638, productGroup#55639, filteredUnitOfMeasureConversions#55640, quantityNumerator#55641, quantityDenominator#55642, (cast(quantityNumerator#55641 as double) / cast(quantityDenominator#55642 as double)) AS outboundUnit#55643]
(1395) Project
Arguments: [product#55601, plant#55602, orderDateTime#55603, productPlant#55613, timezonecode#55627, systemId#55628, internalUUID#55629, id#55630, displayId#55631, name#55632, baseUnitOfMeasure#55633, unitOfMeasures#55634, unitOfMeasureConversions#55635, productionAspect#55636, salesAspect#55637, procurementAspect#55638, productGroup#55639, filteredUnitOfMeasureConversions#55640, quantityNumerator#55641, quantityDenominator#55642, CASE WHEN (isnull(outboundUnit#55643) OR (outboundUnit#55643 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#55643 END AS outboundUnit#55644]
(1396) Project
Arguments: [product#55601, plant#55602, orderDateTime#55603, productPlant#55613, timezonecode#55627, outboundUnit#55644]
(1397) Project
Arguments: [plant#55602]
(1398) Deduplicate
Arguments: [plant#55602]
(1399) Join
Arguments: Inner, (plantUuid#55598 = plant#55602)
(1400) Project
Arguments: [plantId#55597, plantUuid#55598, storageLocId#55599, storageLocUuid#55600]
(1401) Join
Arguments: Inner, (plant#55570.internalRefUUID <=> plantUuid#55598)
(1402) Generate
Arguments: explode(filter(stockQuantities#55572, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#55600) AND (lambda x#50650.storageLocation.Id = storageLocId#55599)), lambda x#50650, false))), false, [stockQuantity#55645]
(1403) Project
Arguments: [systemId#55567, internalUUID#55568, product#55569, plant#55570, calculationDateTime#55571, stockQuantities#55572, plantId#55597, plantUuid#55598, storageLocId#55599, storageLocUuid#55600, stockQuantity#55645]
(1404) Aggregate
Arguments: [plantUuid#55598, internalUUID#55568, plant#55570, product#55569, systemId#55567], [plantUuid#55598, internalUUID#55568, plant#55570, product#55569, systemId#55567, first(calculationDateTime#55571, false) AS calculationDateTime#55646, collect_list(stockQuantity#55645, 0, 0) AS stockQuantities#55647]
(1405) Project
Arguments: [systemId#55567, internalUUID#55568, product#55569, plant#55570, calculationDateTime#55646, stockQuantities#55647]
(1406) Generate
Arguments: explode(stockQuantities#55647), false, [stockQuantity#55648]
(1407) Project
Arguments: [systemId#55567, internalUUID#55568, product#55569, plant#55570, calculationDateTime#55646, stockQuantities#55647, stockQuantity#55648]
(1408) Project
Arguments: [plant#55570.id AS plant#55649, plant#55570.internalRefUUID AS plantUuid#55650, product#55569.id AS product#55651, product#55569.internalRefUUID AS productUuid#55652, calculationDateTime#55646, stockQuantity#55648.storagelocation.id AS storageLocId#55653, stockQuantity#55648.storagelocation.internalRefUUID AS storageLocUuid#55654, stockQuantity#55648.quantity.measure AS quantity#55655, stockQuantity#55648.specialStockIndicator.code AS specialStockIndicator#55656, stockQuantity#55648.stockType.code AS stockType#55657]
(1409) Filter
Arguments: ((specialStockIndicator#55656 = ) AND (stockType#55657 = 01))
(1410) LogicalRelation
Arguments: parquet, [product#55658, plant#55659, orderDateTime#55660, planningStartDateTime#55661], false
(1411) RepartitionByExpression
Arguments: [product#55658, plant#55659], 10
(1412) Project
Arguments: [product#55658, plant#55659, orderDateTime#55660]
(1413) LogicalRelation
Arguments: parquet, [systemId#55662, internalUUID#55663, plant#55664, product#55665, blockedForReplenishmentStartingFrom#55666, productionAspect#55667, salesPlant#55668, listing#55669], false
(1414) Repartition
Arguments: 10, true
(1415) Project
Arguments: [systemId#55662, internalUUID#55663, plant#55664, product#55665, blockedForReplenishmentStartingFrom#55666, productionAspect#55667, salesPlant#55668, listing#55669, struct(systemId, systemId#55662, internalUUID, internalUUID#55663, plant, plant#55664, product, product#55665, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#55666, productionAspect, productionAspect#55667, salesPlant, salesPlant#55668, listing, listing#55669) AS productPlant#55670]
(1416) Project
Arguments: [productPlant#55670]
(1417) Join
Arguments: LeftOuter, ((product#55658 <=> productPlant#55670.product.internalRefUUID) AND (plant#55659 <=> productPlant#55670.plant.internalRefUUID))
(1418) Project
Arguments: [product#55658, plant#55659, orderDateTime#55660, productPlant#55670]
(1419) SubqueryAlias
Arguments: wl
(1420) LogicalRelation
Arguments: parquet, [systemId#55671, internalUUID#55672, id#55673, displayId#55674, name#55675, category#55676, companyCode#55677, address#55678, mainDistributionChain#55679, mainPurchasingOrganization#55680, validPurchasingOrganizations#55681, productGroup#55682], false
(1421) Repartition
Arguments: 10, true
(1422) Project
Arguments: [internalUUID#55672, address#55678.timeZone.code AS timezonecode#55683]
(1423) Join
Arguments: LeftOuter, (plant#55659 <=> internalUUID#55672)
(1424) Project
Arguments: [product#55658, plant#55659, orderDateTime#55660, productPlant#55670, internalUUID#55672, CASE WHEN isnotnull(timezonecode#55683) THEN timezonecode#55683 ELSE UTC END AS timezonecode#55684]
(1425) Project
Arguments: [product#55658, plant#55659, orderDateTime#55660, productPlant#55670, timezonecode#55684]
(1426) LogicalRelation
Arguments: parquet, [systemId#55685, internalUUID#55686, id#55687, displayId#55688, name#55689, baseUnitOfMeasure#55690, unitOfMeasures#55691, unitOfMeasureConversions#55692, productionAspect#55693, salesAspect#55694, procurementAspect#55695, productGroup#55696], false
(1427) Repartition
Arguments: 10, true
(1428) Join
Arguments: LeftOuter, (product#55658 = internalUUID#55686)
(1429) Project
Arguments: [product#55658, plant#55659, orderDateTime#55660, productPlant#55670, timezonecode#55684, systemId#55685, internalUUID#55686, id#55687, displayId#55688, name#55689, baseUnitOfMeasure#55690, unitOfMeasures#55691, unitOfMeasureConversions#55692, productionAspect#55693, salesAspect#55694, procurementAspect#55695, productGroup#55696, filter(unitOfMeasureConversions#55692, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#55670.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#55670.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55690.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55690.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55697]
(1430) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55697.quantityNumerator), true, [quantityNumerator#55698]
(1431) Project
Arguments: [product#55658, plant#55659, orderDateTime#55660, productPlant#55670, timezonecode#55684, systemId#55685, internalUUID#55686, id#55687, displayId#55688, name#55689, baseUnitOfMeasure#55690, unitOfMeasures#55691, unitOfMeasureConversions#55692, productionAspect#55693, salesAspect#55694, procurementAspect#55695, productGroup#55696, filteredUnitOfMeasureConversions#55697, quantityNumerator#55698]
(1432) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55697.quantityDenominator), true, [quantityDenominator#55699]
(1433) Project
Arguments: [product#55658, plant#55659, orderDateTime#55660, productPlant#55670, timezonecode#55684, systemId#55685, internalUUID#55686, id#55687, displayId#55688, name#55689, baseUnitOfMeasure#55690, unitOfMeasures#55691, unitOfMeasureConversions#55692, productionAspect#55693, salesAspect#55694, procurementAspect#55695, productGroup#55696, filteredUnitOfMeasureConversions#55697, quantityNumerator#55698, quantityDenominator#55699]
(1434) Project
Arguments: [product#55658, plant#55659, orderDateTime#55660, productPlant#55670, timezonecode#55684, systemId#55685, internalUUID#55686, id#55687, displayId#55688, name#55689, baseUnitOfMeasure#55690, unitOfMeasures#55691, unitOfMeasureConversions#55692, productionAspect#55693, salesAspect#55694, procurementAspect#55695, productGroup#55696, filteredUnitOfMeasureConversions#55697, quantityNumerator#55698, quantityDenominator#55699, (cast(quantityNumerator#55698 as double) / cast(quantityDenominator#55699 as double)) AS outboundUnit#55700]
(1435) Project
Arguments: [product#55658, plant#55659, orderDateTime#55660, productPlant#55670, timezonecode#55684, systemId#55685, internalUUID#55686, id#55687, displayId#55688, name#55689, baseUnitOfMeasure#55690, unitOfMeasures#55691, unitOfMeasureConversions#55692, productionAspect#55693, salesAspect#55694, procurementAspect#55695, productGroup#55696, filteredUnitOfMeasureConversions#55697, quantityNumerator#55698, quantityDenominator#55699, CASE WHEN (isnull(outboundUnit#55700) OR (outboundUnit#55700 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#55700 END AS outboundUnit#55701]
(1436) Project
Arguments: [product#55658, plant#55659, orderDateTime#55660, productPlant#55670, timezonecode#55684, outboundUnit#55701]
(1437) Join
Arguments: Inner, ((plantUuid#55650 = plant#55659) AND (productUuid#55652 = product#55658))
(1438) Filter
Arguments: (calculationDateTime#55646 <= orderDateTime#55660)
(1439) Project
Arguments: [plantUuid#55650 AS plant#55702, productUuid#55652 AS product#55703, storageLocId#55653, calculationDateTime#55646, quantity#55655]
(1440) LogicalRelation
Arguments: parquet, [systemId#55704, internalUUID#55705, product#55706, plant#55707, calculationDateTime#55708, stockQuantities#55709], false
(1441) Repartition
Arguments: 10, true
(1442) LogicalRelation
Arguments: parquet, [marketUnit#55710, description#55711, articleHierarchy#55712, defaultCurrency#55713, responsibilities#55714, replenishmentTypes#55715, distributionCenters#55716, assignedArticleHierarchyNodes#55717, minOrderQtySetting#55718, minOrderQtySettingInternal#55719, listingCheck#55720, odsSelection#55721, demandProfiles#55722, constraintProfiles#55723, optimizationProfiles#55724, orderGroupSplitProfiles#55725, supplierMinimumProfiles#55726, multipleRestrictionProfiles#55727, preferredUomSource#55728, handlingOfUnfulfilledDemands#55729, negligibleQuantitiesThreshold#55730, eventtype#55731], false
(1443) Repartition
Arguments: 10, true
(1444) Filter
Arguments: (marketUnit#55710 <=> DIP_1691)
(1445) Project
Arguments: [marketUnit#55710, description#55711, articleHierarchy#55712, defaultCurrency#55713, responsibilities#55714, replenishmentTypes#55715, distributionCenters#55716, assignedArticleHierarchyNodes#55717, minOrderQtySetting#55718, minOrderQtySettingInternal#55719, listingCheck#55720, odsSelection#55721, demandProfiles#55722, constraintProfiles#55723, optimizationProfiles#55724, orderGroupSplitProfiles#55725, supplierMinimumProfiles#55726, multipleRestrictionProfiles#55727, preferredUomSource#55728, handlingOfUnfulfilledDemands#55729, negligibleQuantitiesThreshold#55730, eventtype#55731]
(1446) Project
Arguments: [distributionCenters#55716]
(1447) Generate
Arguments: explode(distributionCenters#55716), false, [distributionCenters#55732]
(1448) Project
Arguments: [distributionCenters#55732]
(1449) Generate
Arguments: explode(distributionCenters#55732.storageLocations), false, [storageLocations#55733]
(1450) Project
Arguments: [distributionCenters#55732.id AS plantId#55734, distributionCenters#55732.internalRefUUID AS plantUuid#55735, storageLocations#55733]
(1451) Project
Arguments: [plantId#55734, plantUuid#55735, storageLocations#55733.id AS storageLocId#55736, storageLocations#55733.internalRefUUID AS storageLocUuid#55737]
(1452) LogicalRelation
Arguments: parquet, [product#55738, plant#55739, orderDateTime#55740, planningStartDateTime#55741], false
(1453) RepartitionByExpression
Arguments: [product#55738, plant#55739], 10
(1454) Project
Arguments: [product#55738, plant#55739, orderDateTime#55740]
(1455) LogicalRelation
Arguments: parquet, [systemId#55742, internalUUID#55743, plant#55744, product#55745, blockedForReplenishmentStartingFrom#55746, productionAspect#55747, salesPlant#55748, listing#55749], false
(1456) Repartition
Arguments: 10, true
(1457) Project
Arguments: [systemId#55742, internalUUID#55743, plant#55744, product#55745, blockedForReplenishmentStartingFrom#55746, productionAspect#55747, salesPlant#55748, listing#55749, struct(systemId, systemId#55742, internalUUID, internalUUID#55743, plant, plant#55744, product, product#55745, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#55746, productionAspect, productionAspect#55747, salesPlant, salesPlant#55748, listing, listing#55749) AS productPlant#55750]
(1458) Project
Arguments: [productPlant#55750]
(1459) Join
Arguments: LeftOuter, ((product#55738 <=> productPlant#55750.product.internalRefUUID) AND (plant#55739 <=> productPlant#55750.plant.internalRefUUID))
(1460) Project
Arguments: [product#55738, plant#55739, orderDateTime#55740, productPlant#55750]
(1461) SubqueryAlias
Arguments: wl
(1462) LogicalRelation
Arguments: parquet, [systemId#55751, internalUUID#55752, id#55753, displayId#55754, name#55755, category#55756, companyCode#55757, address#55758, mainDistributionChain#55759, mainPurchasingOrganization#55760, validPurchasingOrganizations#55761, productGroup#55762], false
(1463) Repartition
Arguments: 10, true
(1464) Project
Arguments: [internalUUID#55752, address#55758.timeZone.code AS timezonecode#55763]
(1465) Join
Arguments: LeftOuter, (plant#55739 <=> internalUUID#55752)
(1466) Project
Arguments: [product#55738, plant#55739, orderDateTime#55740, productPlant#55750, internalUUID#55752, CASE WHEN isnotnull(timezonecode#55763) THEN timezonecode#55763 ELSE UTC END AS timezonecode#55764]
(1467) Project
Arguments: [product#55738, plant#55739, orderDateTime#55740, productPlant#55750, timezonecode#55764]
(1468) LogicalRelation
Arguments: parquet, [systemId#55765, internalUUID#55766, id#55767, displayId#55768, name#55769, baseUnitOfMeasure#55770, unitOfMeasures#55771, unitOfMeasureConversions#55772, productionAspect#55773, salesAspect#55774, procurementAspect#55775, productGroup#55776], false
(1469) Repartition
Arguments: 10, true
(1470) Join
Arguments: LeftOuter, (product#55738 = internalUUID#55766)
(1471) Project
Arguments: [product#55738, plant#55739, orderDateTime#55740, productPlant#55750, timezonecode#55764, systemId#55765, internalUUID#55766, id#55767, displayId#55768, name#55769, baseUnitOfMeasure#55770, unitOfMeasures#55771, unitOfMeasureConversions#55772, productionAspect#55773, salesAspect#55774, procurementAspect#55775, productGroup#55776, filter(unitOfMeasureConversions#55772, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#55750.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#55750.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55770.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55770.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55777]
(1472) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55777.quantityNumerator), true, [quantityNumerator#55778]
(1473) Project
Arguments: [product#55738, plant#55739, orderDateTime#55740, productPlant#55750, timezonecode#55764, systemId#55765, internalUUID#55766, id#55767, displayId#55768, name#55769, baseUnitOfMeasure#55770, unitOfMeasures#55771, unitOfMeasureConversions#55772, productionAspect#55773, salesAspect#55774, procurementAspect#55775, productGroup#55776, filteredUnitOfMeasureConversions#55777, quantityNumerator#55778]
(1474) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55777.quantityDenominator), true, [quantityDenominator#55779]
(1475) Project
Arguments: [product#55738, plant#55739, orderDateTime#55740, productPlant#55750, timezonecode#55764, systemId#55765, internalUUID#55766, id#55767, displayId#55768, name#55769, baseUnitOfMeasure#55770, unitOfMeasures#55771, unitOfMeasureConversions#55772, productionAspect#55773, salesAspect#55774, procurementAspect#55775, productGroup#55776, filteredUnitOfMeasureConversions#55777, quantityNumerator#55778, quantityDenominator#55779]
(1476) Project
Arguments: [product#55738, plant#55739, orderDateTime#55740, productPlant#55750, timezonecode#55764, systemId#55765, internalUUID#55766, id#55767, displayId#55768, name#55769, baseUnitOfMeasure#55770, unitOfMeasures#55771, unitOfMeasureConversions#55772, productionAspect#55773, salesAspect#55774, procurementAspect#55775, productGroup#55776, filteredUnitOfMeasureConversions#55777, quantityNumerator#55778, quantityDenominator#55779, (cast(quantityNumerator#55778 as double) / cast(quantityDenominator#55779 as double)) AS outboundUnit#55780]
(1477) Project
Arguments: [product#55738, plant#55739, orderDateTime#55740, productPlant#55750, timezonecode#55764, systemId#55765, internalUUID#55766, id#55767, displayId#55768, name#55769, baseUnitOfMeasure#55770, unitOfMeasures#55771, unitOfMeasureConversions#55772, productionAspect#55773, salesAspect#55774, procurementAspect#55775, productGroup#55776, filteredUnitOfMeasureConversions#55777, quantityNumerator#55778, quantityDenominator#55779, CASE WHEN (isnull(outboundUnit#55780) OR (outboundUnit#55780 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#55780 END AS outboundUnit#55781]
(1478) Project
Arguments: [product#55738, plant#55739, orderDateTime#55740, productPlant#55750, timezonecode#55764, outboundUnit#55781]
(1479) Project
Arguments: [plant#55739]
(1480) Deduplicate
Arguments: [plant#55739]
(1481) Join
Arguments: Inner, (plantUuid#55735 = plant#55739)
(1482) Project
Arguments: [plantId#55734, plantUuid#55735, storageLocId#55736, storageLocUuid#55737]
(1483) Join
Arguments: Inner, (plant#55707.internalRefUUID <=> plantUuid#55735)
(1484) Generate
Arguments: explode(filter(stockQuantities#55709, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#55737) AND (lambda x#50650.storageLocation.Id = storageLocId#55736)), lambda x#50650, false))), false, [stockQuantity#55782]
(1485) Project
Arguments: [systemId#55704, internalUUID#55705, product#55706, plant#55707, calculationDateTime#55708, stockQuantities#55709, plantId#55734, plantUuid#55735, storageLocId#55736, storageLocUuid#55737, stockQuantity#55782]
(1486) Aggregate
Arguments: [plantUuid#55735, internalUUID#55705, plant#55707, product#55706, systemId#55704], [plantUuid#55735, internalUUID#55705, plant#55707, product#55706, systemId#55704, first(calculationDateTime#55708, false) AS calculationDateTime#55783, collect_list(stockQuantity#55782, 0, 0) AS stockQuantities#55784]
(1487) Project
Arguments: [systemId#55704, internalUUID#55705, product#55706, plant#55707, calculationDateTime#55783, stockQuantities#55784]
(1488) Generate
Arguments: explode(stockQuantities#55784), false, [stockQuantity#55785]
(1489) Project
Arguments: [systemId#55704, internalUUID#55705, product#55706, plant#55707, calculationDateTime#55783, stockQuantities#55784, stockQuantity#55785]
(1490) Project
Arguments: [plant#55707.id AS plant#55786, plant#55707.internalRefUUID AS plantUuid#55787, product#55706.id AS product#55788, product#55706.internalRefUUID AS productUuid#55789, calculationDateTime#55783, stockQuantity#55785.storagelocation.id AS storageLocId#55790, stockQuantity#55785.storagelocation.internalRefUUID AS storageLocUuid#55791, stockQuantity#55785.quantity.measure AS quantity#55792, stockQuantity#55785.specialStockIndicator.code AS specialStockIndicator#55793, stockQuantity#55785.stockType.code AS stockType#55794]
(1491) Filter
Arguments: ((specialStockIndicator#55793 = ) AND (stockType#55794 = 01))
(1492) LogicalRelation
Arguments: parquet, [product#55795, plant#55796, orderDateTime#55797, planningStartDateTime#55798], false
(1493) RepartitionByExpression
Arguments: [product#55795, plant#55796], 10
(1494) Project
Arguments: [product#55795, plant#55796, orderDateTime#55797]
(1495) LogicalRelation
Arguments: parquet, [systemId#55799, internalUUID#55800, plant#55801, product#55802, blockedForReplenishmentStartingFrom#55803, productionAspect#55804, salesPlant#55805, listing#55806], false
(1496) Repartition
Arguments: 10, true
(1497) Project
Arguments: [systemId#55799, internalUUID#55800, plant#55801, product#55802, blockedForReplenishmentStartingFrom#55803, productionAspect#55804, salesPlant#55805, listing#55806, struct(systemId, systemId#55799, internalUUID, internalUUID#55800, plant, plant#55801, product, product#55802, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#55803, productionAspect, productionAspect#55804, salesPlant, salesPlant#55805, listing, listing#55806) AS productPlant#55807]
(1498) Project
Arguments: [productPlant#55807]
(1499) Join
Arguments: LeftOuter, ((product#55795 <=> productPlant#55807.product.internalRefUUID) AND (plant#55796 <=> productPlant#55807.plant.internalRefUUID))
(1500) Project
Arguments: [product#55795, plant#55796, orderDateTime#55797, productPlant#55807]
(1501) SubqueryAlias
Arguments: wl
(1502) LogicalRelation
Arguments: parquet, [systemId#55808, internalUUID#55809, id#55810, displayId#55811, name#55812, category#55813, companyCode#55814, address#55815, mainDistributionChain#55816, mainPurchasingOrganization#55817, validPurchasingOrganizations#55818, productGroup#55819], false
(1503) Repartition
Arguments: 10, true
(1504) Project
Arguments: [internalUUID#55809, address#55815.timeZone.code AS timezonecode#55820]
(1505) Join
Arguments: LeftOuter, (plant#55796 <=> internalUUID#55809)
(1506) Project
Arguments: [product#55795, plant#55796, orderDateTime#55797, productPlant#55807, internalUUID#55809, CASE WHEN isnotnull(timezonecode#55820) THEN timezonecode#55820 ELSE UTC END AS timezonecode#55821]
(1507) Project
Arguments: [product#55795, plant#55796, orderDateTime#55797, productPlant#55807, timezonecode#55821]
(1508) LogicalRelation
Arguments: parquet, [systemId#55822, internalUUID#55823, id#55824, displayId#55825, name#55826, baseUnitOfMeasure#55827, unitOfMeasures#55828, unitOfMeasureConversions#55829, productionAspect#55830, salesAspect#55831, procurementAspect#55832, productGroup#55833], false
(1509) Repartition
Arguments: 10, true
(1510) Join
Arguments: LeftOuter, (product#55795 = internalUUID#55823)
(1511) Project
Arguments: [product#55795, plant#55796, orderDateTime#55797, productPlant#55807, timezonecode#55821, systemId#55822, internalUUID#55823, id#55824, displayId#55825, name#55826, baseUnitOfMeasure#55827, unitOfMeasures#55828, unitOfMeasureConversions#55829, productionAspect#55830, salesAspect#55831, procurementAspect#55832, productGroup#55833, filter(unitOfMeasureConversions#55829, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#55807.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#55807.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55827.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55827.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55834]
(1512) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55834.quantityNumerator), true, [quantityNumerator#55835]
(1513) Project
Arguments: [product#55795, plant#55796, orderDateTime#55797, productPlant#55807, timezonecode#55821, systemId#55822, internalUUID#55823, id#55824, displayId#55825, name#55826, baseUnitOfMeasure#55827, unitOfMeasures#55828, unitOfMeasureConversions#55829, productionAspect#55830, salesAspect#55831, procurementAspect#55832, productGroup#55833, filteredUnitOfMeasureConversions#55834, quantityNumerator#55835]
(1514) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55834.quantityDenominator), true, [quantityDenominator#55836]
(1515) Project
Arguments: [product#55795, plant#55796, orderDateTime#55797, productPlant#55807, timezonecode#55821, systemId#55822, internalUUID#55823, id#55824, displayId#55825, name#55826, baseUnitOfMeasure#55827, unitOfMeasures#55828, unitOfMeasureConversions#55829, productionAspect#55830, salesAspect#55831, procurementAspect#55832, productGroup#55833, filteredUnitOfMeasureConversions#55834, quantityNumerator#55835, quantityDenominator#55836]
(1516) Project
Arguments: [product#55795, plant#55796, orderDateTime#55797, productPlant#55807, timezonecode#55821, systemId#55822, internalUUID#55823, id#55824, displayId#55825, name#55826, baseUnitOfMeasure#55827, unitOfMeasures#55828, unitOfMeasureConversions#55829, productionAspect#55830, salesAspect#55831, procurementAspect#55832, productGroup#55833, filteredUnitOfMeasureConversions#55834, quantityNumerator#55835, quantityDenominator#55836, (cast(quantityNumerator#55835 as double) / cast(quantityDenominator#55836 as double)) AS outboundUnit#55837]
(1517) Project
Arguments: [product#55795, plant#55796, orderDateTime#55797, productPlant#55807, timezonecode#55821, systemId#55822, internalUUID#55823, id#55824, displayId#55825, name#55826, baseUnitOfMeasure#55827, unitOfMeasures#55828, unitOfMeasureConversions#55829, productionAspect#55830, salesAspect#55831, procurementAspect#55832, productGroup#55833, filteredUnitOfMeasureConversions#55834, quantityNumerator#55835, quantityDenominator#55836, CASE WHEN (isnull(outboundUnit#55837) OR (outboundUnit#55837 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#55837 END AS outboundUnit#55838]
(1518) Project
Arguments: [product#55795, plant#55796, orderDateTime#55797, productPlant#55807, timezonecode#55821, outboundUnit#55838]
(1519) Join
Arguments: Inner, ((plantUuid#55787 = plant#55796) AND (productUuid#55789 = product#55795))
(1520) Filter
Arguments: (calculationDateTime#55783 <= orderDateTime#55797)
(1521) Project
Arguments: [plantUuid#55787 AS plant#55839, productUuid#55789 AS product#55840, storageLocId#55790, calculationDateTime#55783, quantity#55792]
(1522) Aggregate
Arguments: [plant#55839, product#55840, storageLocId#55790], [plant#55839, product#55840, storageLocId#55790, max(calculationDateTime#55783) AS max_calc_datetime#55841]
(1523) Join
Arguments: Inner, ((((plant#55702 <=> plant#55839) AND (product#55703 <=> product#55840)) AND (storageLocId#55653 <=> storageLocId#55790)) AND (calculationDateTime#55646 <=> max_calc_datetime#55841))
(1524) Project
Arguments: [plant#55702, product#55703, storageLocId#55653, calculationDateTime#55646, quantity#55655]
(1525) Aggregate
Arguments: [product#55703, plant#55702], [product#55703, plant#55702, sum(quantity#55655) AS quantitySum#55842, min(calculationDateTime#55646) AS minCalculationDateTime#55843]
(1526) Project
Arguments: [product#55703, plant#55702, quantitySum#55842, minCalculationDateTime#55843, round(quantitySum#55842, 0) AS roundedQuantitySum#55844]
(1527) Join
Arguments: LeftOuter, ((plant#55524 = plant#55702) AND (product#55523 = product#55703))
(1528) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, roundedQuantitySum#55844, minCalculationDateTime#55843]
(1529) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, roundedQuantitySum#55844, minCalculationDateTime#55843, CASE WHEN isnotnull(minCalculationDateTime#55843) THEN minCalculationDateTime#55843 ELSE orderDateTime#55525 END AS stockDatetime#55845]
(1530) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, roundedQuantitySum#55844, minCalculationDateTime#55843, stockDatetime#55845, CASE WHEN isnotnull(roundedQuantitySum#55844) THEN array(roundedQuantitySum#55844) ELSE array(0.0) END AS stockBatchQuantities#55846]
(1531) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, roundedQuantitySum#55844, minCalculationDateTime#55843, stockDatetime#55845, stockBatchQuantities#55846, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#55847]
(1532) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, roundedQuantitySum#55844, stockDatetime#55845, stockBatchQuantities#55846, stockBatchShelfLifeEndDatetimes#55847]
(1533) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, stockBatchShelfLifeEndDatetimes#55847]
(1534) LogicalRelation
Arguments: parquet, [product#55848, plant#55849, orderDateTime#55850, planningStartDateTime#55851], false
(1535) RepartitionByExpression
Arguments: [product#55848, plant#55849], 10
(1536) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850]
(1537) LogicalRelation
Arguments: parquet, [systemId#55852, internalUUID#55853, plant#55854, product#55855, blockedForReplenishmentStartingFrom#55856, productionAspect#55857, salesPlant#55858, listing#55859], false
(1538) Repartition
Arguments: 10, true
(1539) Project
Arguments: [systemId#55852, internalUUID#55853, plant#55854, product#55855, blockedForReplenishmentStartingFrom#55856, productionAspect#55857, salesPlant#55858, listing#55859, struct(systemId, systemId#55852, internalUUID, internalUUID#55853, plant, plant#55854, product, product#55855, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#55856, productionAspect, productionAspect#55857, salesPlant, salesPlant#55858, listing, listing#55859) AS productPlant#55860]
(1540) Project
Arguments: [productPlant#55860]
(1541) Join
Arguments: LeftOuter, ((product#55848 <=> productPlant#55860.product.internalRefUUID) AND (plant#55849 <=> productPlant#55860.plant.internalRefUUID))
(1542) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860]
(1543) SubqueryAlias
Arguments: wl
(1544) LogicalRelation
Arguments: parquet, [systemId#55861, internalUUID#55862, id#55863, displayId#55864, name#55865, category#55866, companyCode#55867, address#55868, mainDistributionChain#55869, mainPurchasingOrganization#55870, validPurchasingOrganizations#55871, productGroup#55872], false
(1545) Repartition
Arguments: 10, true
(1546) Project
Arguments: [internalUUID#55862, address#55868.timeZone.code AS timezonecode#55873]
(1547) Join
Arguments: LeftOuter, (plant#55849 <=> internalUUID#55862)
(1548) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, internalUUID#55862, CASE WHEN isnotnull(timezonecode#55873) THEN timezonecode#55873 ELSE UTC END AS timezonecode#55874]
(1549) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874]
(1550) LogicalRelation
Arguments: parquet, [systemId#55875, internalUUID#55876, id#55877, displayId#55878, name#55879, baseUnitOfMeasure#55880, unitOfMeasures#55881, unitOfMeasureConversions#55882, productionAspect#55883, salesAspect#55884, procurementAspect#55885, productGroup#55886], false
(1551) Repartition
Arguments: 10, true
(1552) Join
Arguments: LeftOuter, (product#55848 = internalUUID#55876)
(1553) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, systemId#55875, internalUUID#55876, id#55877, displayId#55878, name#55879, baseUnitOfMeasure#55880, unitOfMeasures#55881, unitOfMeasureConversions#55882, productionAspect#55883, salesAspect#55884, procurementAspect#55885, productGroup#55886, filter(unitOfMeasureConversions#55882, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#55860.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#55860.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55880.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55880.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55887]
(1554) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55887.quantityNumerator), true, [quantityNumerator#55888]
(1555) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, systemId#55875, internalUUID#55876, id#55877, displayId#55878, name#55879, baseUnitOfMeasure#55880, unitOfMeasures#55881, unitOfMeasureConversions#55882, productionAspect#55883, salesAspect#55884, procurementAspect#55885, productGroup#55886, filteredUnitOfMeasureConversions#55887, quantityNumerator#55888]
(1556) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55887.quantityDenominator), true, [quantityDenominator#55889]
(1557) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, systemId#55875, internalUUID#55876, id#55877, displayId#55878, name#55879, baseUnitOfMeasure#55880, unitOfMeasures#55881, unitOfMeasureConversions#55882, productionAspect#55883, salesAspect#55884, procurementAspect#55885, productGroup#55886, filteredUnitOfMeasureConversions#55887, quantityNumerator#55888, quantityDenominator#55889]
(1558) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, systemId#55875, internalUUID#55876, id#55877, displayId#55878, name#55879, baseUnitOfMeasure#55880, unitOfMeasures#55881, unitOfMeasureConversions#55882, productionAspect#55883, salesAspect#55884, procurementAspect#55885, productGroup#55886, filteredUnitOfMeasureConversions#55887, quantityNumerator#55888, quantityDenominator#55889, (cast(quantityNumerator#55888 as double) / cast(quantityDenominator#55889 as double)) AS outboundUnit#55890]
(1559) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, systemId#55875, internalUUID#55876, id#55877, displayId#55878, name#55879, baseUnitOfMeasure#55880, unitOfMeasures#55881, unitOfMeasureConversions#55882, productionAspect#55883, salesAspect#55884, procurementAspect#55885, productGroup#55886, filteredUnitOfMeasureConversions#55887, quantityNumerator#55888, quantityDenominator#55889, CASE WHEN (isnull(outboundUnit#55890) OR (outboundUnit#55890 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#55890 END AS outboundUnit#55891]
(1560) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891]
(1561) LogicalRelation
Arguments: parquet, [systemId#55892, internalUUID#55893, product#55894, plant#55895, calculationDateTime#55896, stockQuantities#55897], false
(1562) Repartition
Arguments: 10, true
(1563) LogicalRelation
Arguments: parquet, [marketUnit#55898, description#55899, articleHierarchy#55900, defaultCurrency#55901, responsibilities#55902, replenishmentTypes#55903, distributionCenters#55904, assignedArticleHierarchyNodes#55905, minOrderQtySetting#55906, minOrderQtySettingInternal#55907, listingCheck#55908, odsSelection#55909, demandProfiles#55910, constraintProfiles#55911, optimizationProfiles#55912, orderGroupSplitProfiles#55913, supplierMinimumProfiles#55914, multipleRestrictionProfiles#55915, preferredUomSource#55916, handlingOfUnfulfilledDemands#55917, negligibleQuantitiesThreshold#55918, eventtype#55919], false
(1564) Repartition
Arguments: 10, true
(1565) Filter
Arguments: (marketUnit#55898 <=> DIP_1691)
(1566) Project
Arguments: [marketUnit#55898, description#55899, articleHierarchy#55900, defaultCurrency#55901, responsibilities#55902, replenishmentTypes#55903, distributionCenters#55904, assignedArticleHierarchyNodes#55905, minOrderQtySetting#55906, minOrderQtySettingInternal#55907, listingCheck#55908, odsSelection#55909, demandProfiles#55910, constraintProfiles#55911, optimizationProfiles#55912, orderGroupSplitProfiles#55913, supplierMinimumProfiles#55914, multipleRestrictionProfiles#55915, preferredUomSource#55916, handlingOfUnfulfilledDemands#55917, negligibleQuantitiesThreshold#55918, eventtype#55919]
(1567) Project
Arguments: [distributionCenters#55904]
(1568) Generate
Arguments: explode(distributionCenters#55904), false, [distributionCenters#55920]
(1569) Project
Arguments: [distributionCenters#55920]
(1570) Generate
Arguments: explode(distributionCenters#55920.storageLocations), false, [storageLocations#55921]
(1571) Project
Arguments: [distributionCenters#55920.id AS plantId#55922, distributionCenters#55920.internalRefUUID AS plantUuid#55923, storageLocations#55921]
(1572) Project
Arguments: [plantId#55922, plantUuid#55923, storageLocations#55921.id AS storageLocId#55924, storageLocations#55921.internalRefUUID AS storageLocUuid#55925]
(1573) LogicalRelation
Arguments: parquet, [product#55926, plant#55927, orderDateTime#55928, planningStartDateTime#55929], false
(1574) RepartitionByExpression
Arguments: [product#55926, plant#55927], 10
(1575) Project
Arguments: [product#55926, plant#55927, orderDateTime#55928]
(1576) LogicalRelation
Arguments: parquet, [systemId#55930, internalUUID#55931, plant#55932, product#55933, blockedForReplenishmentStartingFrom#55934, productionAspect#55935, salesPlant#55936, listing#55937], false
(1577) Repartition
Arguments: 10, true
(1578) Project
Arguments: [systemId#55930, internalUUID#55931, plant#55932, product#55933, blockedForReplenishmentStartingFrom#55934, productionAspect#55935, salesPlant#55936, listing#55937, struct(systemId, systemId#55930, internalUUID, internalUUID#55931, plant, plant#55932, product, product#55933, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#55934, productionAspect, productionAspect#55935, salesPlant, salesPlant#55936, listing, listing#55937) AS productPlant#55938]
(1579) Project
Arguments: [productPlant#55938]
(1580) Join
Arguments: LeftOuter, ((product#55926 <=> productPlant#55938.product.internalRefUUID) AND (plant#55927 <=> productPlant#55938.plant.internalRefUUID))
(1581) Project
Arguments: [product#55926, plant#55927, orderDateTime#55928, productPlant#55938]
(1582) SubqueryAlias
Arguments: wl
(1583) LogicalRelation
Arguments: parquet, [systemId#55939, internalUUID#55940, id#55941, displayId#55942, name#55943, category#55944, companyCode#55945, address#55946, mainDistributionChain#55947, mainPurchasingOrganization#55948, validPurchasingOrganizations#55949, productGroup#55950], false
(1584) Repartition
Arguments: 10, true
(1585) Project
Arguments: [internalUUID#55940, address#55946.timeZone.code AS timezonecode#55951]
(1586) Join
Arguments: LeftOuter, (plant#55927 <=> internalUUID#55940)
(1587) Project
Arguments: [product#55926, plant#55927, orderDateTime#55928, productPlant#55938, internalUUID#55940, CASE WHEN isnotnull(timezonecode#55951) THEN timezonecode#55951 ELSE UTC END AS timezonecode#55952]
(1588) Project
Arguments: [product#55926, plant#55927, orderDateTime#55928, productPlant#55938, timezonecode#55952]
(1589) LogicalRelation
Arguments: parquet, [systemId#55953, internalUUID#55954, id#55955, displayId#55956, name#55957, baseUnitOfMeasure#55958, unitOfMeasures#55959, unitOfMeasureConversions#55960, productionAspect#55961, salesAspect#55962, procurementAspect#55963, productGroup#55964], false
(1590) Repartition
Arguments: 10, true
(1591) Join
Arguments: LeftOuter, (product#55926 = internalUUID#55954)
(1592) Project
Arguments: [product#55926, plant#55927, orderDateTime#55928, productPlant#55938, timezonecode#55952, systemId#55953, internalUUID#55954, id#55955, displayId#55956, name#55957, baseUnitOfMeasure#55958, unitOfMeasures#55959, unitOfMeasureConversions#55960, productionAspect#55961, salesAspect#55962, procurementAspect#55963, productGroup#55964, filter(unitOfMeasureConversions#55960, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#55938.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#55938.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#55958.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#55958.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#55965]
(1593) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55965.quantityNumerator), true, [quantityNumerator#55966]
(1594) Project
Arguments: [product#55926, plant#55927, orderDateTime#55928, productPlant#55938, timezonecode#55952, systemId#55953, internalUUID#55954, id#55955, displayId#55956, name#55957, baseUnitOfMeasure#55958, unitOfMeasures#55959, unitOfMeasureConversions#55960, productionAspect#55961, salesAspect#55962, procurementAspect#55963, productGroup#55964, filteredUnitOfMeasureConversions#55965, quantityNumerator#55966]
(1595) Generate
Arguments: explode(filteredUnitOfMeasureConversions#55965.quantityDenominator), true, [quantityDenominator#55967]
(1596) Project
Arguments: [product#55926, plant#55927, orderDateTime#55928, productPlant#55938, timezonecode#55952, systemId#55953, internalUUID#55954, id#55955, displayId#55956, name#55957, baseUnitOfMeasure#55958, unitOfMeasures#55959, unitOfMeasureConversions#55960, productionAspect#55961, salesAspect#55962, procurementAspect#55963, productGroup#55964, filteredUnitOfMeasureConversions#55965, quantityNumerator#55966, quantityDenominator#55967]
(1597) Project
Arguments: [product#55926, plant#55927, orderDateTime#55928, productPlant#55938, timezonecode#55952, systemId#55953, internalUUID#55954, id#55955, displayId#55956, name#55957, baseUnitOfMeasure#55958, unitOfMeasures#55959, unitOfMeasureConversions#55960, productionAspect#55961, salesAspect#55962, procurementAspect#55963, productGroup#55964, filteredUnitOfMeasureConversions#55965, quantityNumerator#55966, quantityDenominator#55967, (cast(quantityNumerator#55966 as double) / cast(quantityDenominator#55967 as double)) AS outboundUnit#55968]
(1598) Project
Arguments: [product#55926, plant#55927, orderDateTime#55928, productPlant#55938, timezonecode#55952, systemId#55953, internalUUID#55954, id#55955, displayId#55956, name#55957, baseUnitOfMeasure#55958, unitOfMeasures#55959, unitOfMeasureConversions#55960, productionAspect#55961, salesAspect#55962, procurementAspect#55963, productGroup#55964, filteredUnitOfMeasureConversions#55965, quantityNumerator#55966, quantityDenominator#55967, CASE WHEN (isnull(outboundUnit#55968) OR (outboundUnit#55968 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#55968 END AS outboundUnit#55969]
(1599) Project
Arguments: [product#55926, plant#55927, orderDateTime#55928, productPlant#55938, timezonecode#55952, outboundUnit#55969]
(1600) Project
Arguments: [plant#55927]
(1601) Deduplicate
Arguments: [plant#55927]
(1602) Join
Arguments: Inner, (plantUuid#55923 = plant#55927)
(1603) Project
Arguments: [plantId#55922, plantUuid#55923, storageLocId#55924, storageLocUuid#55925]
(1604) Join
Arguments: Inner, (plant#55895.internalRefUUID <=> plantUuid#55923)
(1605) Generate
Arguments: explode(filter(stockQuantities#55897, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#55925) AND (lambda x#50650.storageLocation.Id = storageLocId#55924)), lambda x#50650, false))), false, [stockQuantity#55970]
(1606) Project
Arguments: [systemId#55892, internalUUID#55893, product#55894, plant#55895, calculationDateTime#55896, stockQuantities#55897, plantId#55922, plantUuid#55923, storageLocId#55924, storageLocUuid#55925, stockQuantity#55970]
(1607) Aggregate
Arguments: [plantUuid#55923, internalUUID#55893, plant#55895, product#55894, systemId#55892], [plantUuid#55923, internalUUID#55893, plant#55895, product#55894, systemId#55892, first(calculationDateTime#55896, false) AS calculationDateTime#55971, collect_list(stockQuantity#55970, 0, 0) AS stockQuantities#55972]
(1608) Project
Arguments: [systemId#55892, internalUUID#55893, product#55894, plant#55895, calculationDateTime#55971, stockQuantities#55972]
(1609) Generate
Arguments: explode(stockQuantities#55972), false, [stockQuantity#55973]
(1610) Project
Arguments: [systemId#55892, internalUUID#55893, product#55894, plant#55895, calculationDateTime#55971, stockQuantities#55972, stockQuantity#55973]
(1611) Project
Arguments: [plant#55895.id AS plant#55974, plant#55895.internalRefUUID AS plantUuid#55975, product#55894.id AS product#55976, product#55894.internalRefUUID AS productUuid#55977, calculationDateTime#55971, stockQuantity#55973.storagelocation.id AS storageLocId#55978, stockQuantity#55973.storagelocation.internalRefUUID AS storageLocUuid#55979, stockQuantity#55973.quantity.measure AS quantity#55980, stockQuantity#55973.specialStockIndicator.code AS specialStockIndicator#55981, stockQuantity#55973.stockType.code AS stockType#55982]
(1612) Filter
Arguments: ((specialStockIndicator#55981 = ) AND (stockType#55982 = 01))
(1613) LogicalRelation
Arguments: parquet, [product#55983, plant#55984, orderDateTime#55985, planningStartDateTime#55986], false
(1614) RepartitionByExpression
Arguments: [product#55983, plant#55984], 10
(1615) Project
Arguments: [product#55983, plant#55984, orderDateTime#55985]
(1616) LogicalRelation
Arguments: parquet, [systemId#55987, internalUUID#55988, plant#55989, product#55990, blockedForReplenishmentStartingFrom#55991, productionAspect#55992, salesPlant#55993, listing#55994], false
(1617) Repartition
Arguments: 10, true
(1618) Project
Arguments: [systemId#55987, internalUUID#55988, plant#55989, product#55990, blockedForReplenishmentStartingFrom#55991, productionAspect#55992, salesPlant#55993, listing#55994, struct(systemId, systemId#55987, internalUUID, internalUUID#55988, plant, plant#55989, product, product#55990, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#55991, productionAspect, productionAspect#55992, salesPlant, salesPlant#55993, listing, listing#55994) AS productPlant#55995]
(1619) Project
Arguments: [productPlant#55995]
(1620) Join
Arguments: LeftOuter, ((product#55983 <=> productPlant#55995.product.internalRefUUID) AND (plant#55984 <=> productPlant#55995.plant.internalRefUUID))
(1621) Project
Arguments: [product#55983, plant#55984, orderDateTime#55985, productPlant#55995]
(1622) SubqueryAlias
Arguments: wl
(1623) LogicalRelation
Arguments: parquet, [systemId#55996, internalUUID#55997, id#55998, displayId#55999, name#56000, category#56001, companyCode#56002, address#56003, mainDistributionChain#56004, mainPurchasingOrganization#56005, validPurchasingOrganizations#56006, productGroup#56007], false
(1624) Repartition
Arguments: 10, true
(1625) Project
Arguments: [internalUUID#55997, address#56003.timeZone.code AS timezonecode#56008]
(1626) Join
Arguments: LeftOuter, (plant#55984 <=> internalUUID#55997)
(1627) Project
Arguments: [product#55983, plant#55984, orderDateTime#55985, productPlant#55995, internalUUID#55997, CASE WHEN isnotnull(timezonecode#56008) THEN timezonecode#56008 ELSE UTC END AS timezonecode#56009]
(1628) Project
Arguments: [product#55983, plant#55984, orderDateTime#55985, productPlant#55995, timezonecode#56009]
(1629) LogicalRelation
Arguments: parquet, [systemId#56010, internalUUID#56011, id#56012, displayId#56013, name#56014, baseUnitOfMeasure#56015, unitOfMeasures#56016, unitOfMeasureConversions#56017, productionAspect#56018, salesAspect#56019, procurementAspect#56020, productGroup#56021], false
(1630) Repartition
Arguments: 10, true
(1631) Join
Arguments: LeftOuter, (product#55983 = internalUUID#56011)
(1632) Project
Arguments: [product#55983, plant#55984, orderDateTime#55985, productPlant#55995, timezonecode#56009, systemId#56010, internalUUID#56011, id#56012, displayId#56013, name#56014, baseUnitOfMeasure#56015, unitOfMeasures#56016, unitOfMeasureConversions#56017, productionAspect#56018, salesAspect#56019, procurementAspect#56020, productGroup#56021, filter(unitOfMeasureConversions#56017, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#55995.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#55995.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56015.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56015.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56022]
(1633) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56022.quantityNumerator), true, [quantityNumerator#56023]
(1634) Project
Arguments: [product#55983, plant#55984, orderDateTime#55985, productPlant#55995, timezonecode#56009, systemId#56010, internalUUID#56011, id#56012, displayId#56013, name#56014, baseUnitOfMeasure#56015, unitOfMeasures#56016, unitOfMeasureConversions#56017, productionAspect#56018, salesAspect#56019, procurementAspect#56020, productGroup#56021, filteredUnitOfMeasureConversions#56022, quantityNumerator#56023]
(1635) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56022.quantityDenominator), true, [quantityDenominator#56024]
(1636) Project
Arguments: [product#55983, plant#55984, orderDateTime#55985, productPlant#55995, timezonecode#56009, systemId#56010, internalUUID#56011, id#56012, displayId#56013, name#56014, baseUnitOfMeasure#56015, unitOfMeasures#56016, unitOfMeasureConversions#56017, productionAspect#56018, salesAspect#56019, procurementAspect#56020, productGroup#56021, filteredUnitOfMeasureConversions#56022, quantityNumerator#56023, quantityDenominator#56024]
(1637) Project
Arguments: [product#55983, plant#55984, orderDateTime#55985, productPlant#55995, timezonecode#56009, systemId#56010, internalUUID#56011, id#56012, displayId#56013, name#56014, baseUnitOfMeasure#56015, unitOfMeasures#56016, unitOfMeasureConversions#56017, productionAspect#56018, salesAspect#56019, procurementAspect#56020, productGroup#56021, filteredUnitOfMeasureConversions#56022, quantityNumerator#56023, quantityDenominator#56024, (cast(quantityNumerator#56023 as double) / cast(quantityDenominator#56024 as double)) AS outboundUnit#56025]
(1638) Project
Arguments: [product#55983, plant#55984, orderDateTime#55985, productPlant#55995, timezonecode#56009, systemId#56010, internalUUID#56011, id#56012, displayId#56013, name#56014, baseUnitOfMeasure#56015, unitOfMeasures#56016, unitOfMeasureConversions#56017, productionAspect#56018, salesAspect#56019, procurementAspect#56020, productGroup#56021, filteredUnitOfMeasureConversions#56022, quantityNumerator#56023, quantityDenominator#56024, CASE WHEN (isnull(outboundUnit#56025) OR (outboundUnit#56025 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56025 END AS outboundUnit#56026]
(1639) Project
Arguments: [product#55983, plant#55984, orderDateTime#55985, productPlant#55995, timezonecode#56009, outboundUnit#56026]
(1640) Join
Arguments: Inner, ((plantUuid#55975 = plant#55984) AND (productUuid#55977 = product#55983))
(1641) Filter
Arguments: (calculationDateTime#55971 <= orderDateTime#55985)
(1642) Project
Arguments: [plantUuid#55975 AS plant#56027, productUuid#55977 AS product#56028, storageLocId#55978, calculationDateTime#55971, quantity#55980]
(1643) LogicalRelation
Arguments: parquet, [systemId#56029, internalUUID#56030, product#56031, plant#56032, calculationDateTime#56033, stockQuantities#56034], false
(1644) Repartition
Arguments: 10, true
(1645) LogicalRelation
Arguments: parquet, [marketUnit#56035, description#56036, articleHierarchy#56037, defaultCurrency#56038, responsibilities#56039, replenishmentTypes#56040, distributionCenters#56041, assignedArticleHierarchyNodes#56042, minOrderQtySetting#56043, minOrderQtySettingInternal#56044, listingCheck#56045, odsSelection#56046, demandProfiles#56047, constraintProfiles#56048, optimizationProfiles#56049, orderGroupSplitProfiles#56050, supplierMinimumProfiles#56051, multipleRestrictionProfiles#56052, preferredUomSource#56053, handlingOfUnfulfilledDemands#56054, negligibleQuantitiesThreshold#56055, eventtype#56056], false
(1646) Repartition
Arguments: 10, true
(1647) Filter
Arguments: (marketUnit#56035 <=> DIP_1691)
(1648) Project
Arguments: [marketUnit#56035, description#56036, articleHierarchy#56037, defaultCurrency#56038, responsibilities#56039, replenishmentTypes#56040, distributionCenters#56041, assignedArticleHierarchyNodes#56042, minOrderQtySetting#56043, minOrderQtySettingInternal#56044, listingCheck#56045, odsSelection#56046, demandProfiles#56047, constraintProfiles#56048, optimizationProfiles#56049, orderGroupSplitProfiles#56050, supplierMinimumProfiles#56051, multipleRestrictionProfiles#56052, preferredUomSource#56053, handlingOfUnfulfilledDemands#56054, negligibleQuantitiesThreshold#56055, eventtype#56056]
(1649) Project
Arguments: [distributionCenters#56041]
(1650) Generate
Arguments: explode(distributionCenters#56041), false, [distributionCenters#56057]
(1651) Project
Arguments: [distributionCenters#56057]
(1652) Generate
Arguments: explode(distributionCenters#56057.storageLocations), false, [storageLocations#56058]
(1653) Project
Arguments: [distributionCenters#56057.id AS plantId#56059, distributionCenters#56057.internalRefUUID AS plantUuid#56060, storageLocations#56058]
(1654) Project
Arguments: [plantId#56059, plantUuid#56060, storageLocations#56058.id AS storageLocId#56061, storageLocations#56058.internalRefUUID AS storageLocUuid#56062]
(1655) LogicalRelation
Arguments: parquet, [product#56063, plant#56064, orderDateTime#56065, planningStartDateTime#56066], false
(1656) RepartitionByExpression
Arguments: [product#56063, plant#56064], 10
(1657) Project
Arguments: [product#56063, plant#56064, orderDateTime#56065]
(1658) LogicalRelation
Arguments: parquet, [systemId#56067, internalUUID#56068, plant#56069, product#56070, blockedForReplenishmentStartingFrom#56071, productionAspect#56072, salesPlant#56073, listing#56074], false
(1659) Repartition
Arguments: 10, true
(1660) Project
Arguments: [systemId#56067, internalUUID#56068, plant#56069, product#56070, blockedForReplenishmentStartingFrom#56071, productionAspect#56072, salesPlant#56073, listing#56074, struct(systemId, systemId#56067, internalUUID, internalUUID#56068, plant, plant#56069, product, product#56070, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56071, productionAspect, productionAspect#56072, salesPlant, salesPlant#56073, listing, listing#56074) AS productPlant#56075]
(1661) Project
Arguments: [productPlant#56075]
(1662) Join
Arguments: LeftOuter, ((product#56063 <=> productPlant#56075.product.internalRefUUID) AND (plant#56064 <=> productPlant#56075.plant.internalRefUUID))
(1663) Project
Arguments: [product#56063, plant#56064, orderDateTime#56065, productPlant#56075]
(1664) SubqueryAlias
Arguments: wl
(1665) LogicalRelation
Arguments: parquet, [systemId#56076, internalUUID#56077, id#56078, displayId#56079, name#56080, category#56081, companyCode#56082, address#56083, mainDistributionChain#56084, mainPurchasingOrganization#56085, validPurchasingOrganizations#56086, productGroup#56087], false
(1666) Repartition
Arguments: 10, true
(1667) Project
Arguments: [internalUUID#56077, address#56083.timeZone.code AS timezonecode#56088]
(1668) Join
Arguments: LeftOuter, (plant#56064 <=> internalUUID#56077)
(1669) Project
Arguments: [product#56063, plant#56064, orderDateTime#56065, productPlant#56075, internalUUID#56077, CASE WHEN isnotnull(timezonecode#56088) THEN timezonecode#56088 ELSE UTC END AS timezonecode#56089]
(1670) Project
Arguments: [product#56063, plant#56064, orderDateTime#56065, productPlant#56075, timezonecode#56089]
(1671) LogicalRelation
Arguments: parquet, [systemId#56090, internalUUID#56091, id#56092, displayId#56093, name#56094, baseUnitOfMeasure#56095, unitOfMeasures#56096, unitOfMeasureConversions#56097, productionAspect#56098, salesAspect#56099, procurementAspect#56100, productGroup#56101], false
(1672) Repartition
Arguments: 10, true
(1673) Join
Arguments: LeftOuter, (product#56063 = internalUUID#56091)
(1674) Project
Arguments: [product#56063, plant#56064, orderDateTime#56065, productPlant#56075, timezonecode#56089, systemId#56090, internalUUID#56091, id#56092, displayId#56093, name#56094, baseUnitOfMeasure#56095, unitOfMeasures#56096, unitOfMeasureConversions#56097, productionAspect#56098, salesAspect#56099, procurementAspect#56100, productGroup#56101, filter(unitOfMeasureConversions#56097, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56075.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56075.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56095.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56095.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56102]
(1675) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56102.quantityNumerator), true, [quantityNumerator#56103]
(1676) Project
Arguments: [product#56063, plant#56064, orderDateTime#56065, productPlant#56075, timezonecode#56089, systemId#56090, internalUUID#56091, id#56092, displayId#56093, name#56094, baseUnitOfMeasure#56095, unitOfMeasures#56096, unitOfMeasureConversions#56097, productionAspect#56098, salesAspect#56099, procurementAspect#56100, productGroup#56101, filteredUnitOfMeasureConversions#56102, quantityNumerator#56103]
(1677) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56102.quantityDenominator), true, [quantityDenominator#56104]
(1678) Project
Arguments: [product#56063, plant#56064, orderDateTime#56065, productPlant#56075, timezonecode#56089, systemId#56090, internalUUID#56091, id#56092, displayId#56093, name#56094, baseUnitOfMeasure#56095, unitOfMeasures#56096, unitOfMeasureConversions#56097, productionAspect#56098, salesAspect#56099, procurementAspect#56100, productGroup#56101, filteredUnitOfMeasureConversions#56102, quantityNumerator#56103, quantityDenominator#56104]
(1679) Project
Arguments: [product#56063, plant#56064, orderDateTime#56065, productPlant#56075, timezonecode#56089, systemId#56090, internalUUID#56091, id#56092, displayId#56093, name#56094, baseUnitOfMeasure#56095, unitOfMeasures#56096, unitOfMeasureConversions#56097, productionAspect#56098, salesAspect#56099, procurementAspect#56100, productGroup#56101, filteredUnitOfMeasureConversions#56102, quantityNumerator#56103, quantityDenominator#56104, (cast(quantityNumerator#56103 as double) / cast(quantityDenominator#56104 as double)) AS outboundUnit#56105]
(1680) Project
Arguments: [product#56063, plant#56064, orderDateTime#56065, productPlant#56075, timezonecode#56089, systemId#56090, internalUUID#56091, id#56092, displayId#56093, name#56094, baseUnitOfMeasure#56095, unitOfMeasures#56096, unitOfMeasureConversions#56097, productionAspect#56098, salesAspect#56099, procurementAspect#56100, productGroup#56101, filteredUnitOfMeasureConversions#56102, quantityNumerator#56103, quantityDenominator#56104, CASE WHEN (isnull(outboundUnit#56105) OR (outboundUnit#56105 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56105 END AS outboundUnit#56106]
(1681) Project
Arguments: [product#56063, plant#56064, orderDateTime#56065, productPlant#56075, timezonecode#56089, outboundUnit#56106]
(1682) Project
Arguments: [plant#56064]
(1683) Deduplicate
Arguments: [plant#56064]
(1684) Join
Arguments: Inner, (plantUuid#56060 = plant#56064)
(1685) Project
Arguments: [plantId#56059, plantUuid#56060, storageLocId#56061, storageLocUuid#56062]
(1686) Join
Arguments: Inner, (plant#56032.internalRefUUID <=> plantUuid#56060)
(1687) Generate
Arguments: explode(filter(stockQuantities#56034, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#56062) AND (lambda x#50650.storageLocation.Id = storageLocId#56061)), lambda x#50650, false))), false, [stockQuantity#56107]
(1688) Project
Arguments: [systemId#56029, internalUUID#56030, product#56031, plant#56032, calculationDateTime#56033, stockQuantities#56034, plantId#56059, plantUuid#56060, storageLocId#56061, storageLocUuid#56062, stockQuantity#56107]
(1689) Aggregate
Arguments: [plantUuid#56060, internalUUID#56030, plant#56032, product#56031, systemId#56029], [plantUuid#56060, internalUUID#56030, plant#56032, product#56031, systemId#56029, first(calculationDateTime#56033, false) AS calculationDateTime#56108, collect_list(stockQuantity#56107, 0, 0) AS stockQuantities#56109]
(1690) Project
Arguments: [systemId#56029, internalUUID#56030, product#56031, plant#56032, calculationDateTime#56108, stockQuantities#56109]
(1691) Generate
Arguments: explode(stockQuantities#56109), false, [stockQuantity#56110]
(1692) Project
Arguments: [systemId#56029, internalUUID#56030, product#56031, plant#56032, calculationDateTime#56108, stockQuantities#56109, stockQuantity#56110]
(1693) Project
Arguments: [plant#56032.id AS plant#56111, plant#56032.internalRefUUID AS plantUuid#56112, product#56031.id AS product#56113, product#56031.internalRefUUID AS productUuid#56114, calculationDateTime#56108, stockQuantity#56110.storagelocation.id AS storageLocId#56115, stockQuantity#56110.storagelocation.internalRefUUID AS storageLocUuid#56116, stockQuantity#56110.quantity.measure AS quantity#56117, stockQuantity#56110.specialStockIndicator.code AS specialStockIndicator#56118, stockQuantity#56110.stockType.code AS stockType#56119]
(1694) Filter
Arguments: ((specialStockIndicator#56118 = ) AND (stockType#56119 = 01))
(1695) LogicalRelation
Arguments: parquet, [product#56120, plant#56121, orderDateTime#56122, planningStartDateTime#56123], false
(1696) RepartitionByExpression
Arguments: [product#56120, plant#56121], 10
(1697) Project
Arguments: [product#56120, plant#56121, orderDateTime#56122]
(1698) LogicalRelation
Arguments: parquet, [systemId#56124, internalUUID#56125, plant#56126, product#56127, blockedForReplenishmentStartingFrom#56128, productionAspect#56129, salesPlant#56130, listing#56131], false
(1699) Repartition
Arguments: 10, true
(1700) Project
Arguments: [systemId#56124, internalUUID#56125, plant#56126, product#56127, blockedForReplenishmentStartingFrom#56128, productionAspect#56129, salesPlant#56130, listing#56131, struct(systemId, systemId#56124, internalUUID, internalUUID#56125, plant, plant#56126, product, product#56127, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56128, productionAspect, productionAspect#56129, salesPlant, salesPlant#56130, listing, listing#56131) AS productPlant#56132]
(1701) Project
Arguments: [productPlant#56132]
(1702) Join
Arguments: LeftOuter, ((product#56120 <=> productPlant#56132.product.internalRefUUID) AND (plant#56121 <=> productPlant#56132.plant.internalRefUUID))
(1703) Project
Arguments: [product#56120, plant#56121, orderDateTime#56122, productPlant#56132]
(1704) SubqueryAlias
Arguments: wl
(1705) LogicalRelation
Arguments: parquet, [systemId#56133, internalUUID#56134, id#56135, displayId#56136, name#56137, category#56138, companyCode#56139, address#56140, mainDistributionChain#56141, mainPurchasingOrganization#56142, validPurchasingOrganizations#56143, productGroup#56144], false
(1706) Repartition
Arguments: 10, true
(1707) Project
Arguments: [internalUUID#56134, address#56140.timeZone.code AS timezonecode#56145]
(1708) Join
Arguments: LeftOuter, (plant#56121 <=> internalUUID#56134)
(1709) Project
Arguments: [product#56120, plant#56121, orderDateTime#56122, productPlant#56132, internalUUID#56134, CASE WHEN isnotnull(timezonecode#56145) THEN timezonecode#56145 ELSE UTC END AS timezonecode#56146]
(1710) Project
Arguments: [product#56120, plant#56121, orderDateTime#56122, productPlant#56132, timezonecode#56146]
(1711) LogicalRelation
Arguments: parquet, [systemId#56147, internalUUID#56148, id#56149, displayId#56150, name#56151, baseUnitOfMeasure#56152, unitOfMeasures#56153, unitOfMeasureConversions#56154, productionAspect#56155, salesAspect#56156, procurementAspect#56157, productGroup#56158], false
(1712) Repartition
Arguments: 10, true
(1713) Join
Arguments: LeftOuter, (product#56120 = internalUUID#56148)
(1714) Project
Arguments: [product#56120, plant#56121, orderDateTime#56122, productPlant#56132, timezonecode#56146, systemId#56147, internalUUID#56148, id#56149, displayId#56150, name#56151, baseUnitOfMeasure#56152, unitOfMeasures#56153, unitOfMeasureConversions#56154, productionAspect#56155, salesAspect#56156, procurementAspect#56157, productGroup#56158, filter(unitOfMeasureConversions#56154, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56132.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56132.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56152.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56152.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56159]
(1715) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56159.quantityNumerator), true, [quantityNumerator#56160]
(1716) Project
Arguments: [product#56120, plant#56121, orderDateTime#56122, productPlant#56132, timezonecode#56146, systemId#56147, internalUUID#56148, id#56149, displayId#56150, name#56151, baseUnitOfMeasure#56152, unitOfMeasures#56153, unitOfMeasureConversions#56154, productionAspect#56155, salesAspect#56156, procurementAspect#56157, productGroup#56158, filteredUnitOfMeasureConversions#56159, quantityNumerator#56160]
(1717) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56159.quantityDenominator), true, [quantityDenominator#56161]
(1718) Project
Arguments: [product#56120, plant#56121, orderDateTime#56122, productPlant#56132, timezonecode#56146, systemId#56147, internalUUID#56148, id#56149, displayId#56150, name#56151, baseUnitOfMeasure#56152, unitOfMeasures#56153, unitOfMeasureConversions#56154, productionAspect#56155, salesAspect#56156, procurementAspect#56157, productGroup#56158, filteredUnitOfMeasureConversions#56159, quantityNumerator#56160, quantityDenominator#56161]
(1719) Project
Arguments: [product#56120, plant#56121, orderDateTime#56122, productPlant#56132, timezonecode#56146, systemId#56147, internalUUID#56148, id#56149, displayId#56150, name#56151, baseUnitOfMeasure#56152, unitOfMeasures#56153, unitOfMeasureConversions#56154, productionAspect#56155, salesAspect#56156, procurementAspect#56157, productGroup#56158, filteredUnitOfMeasureConversions#56159, quantityNumerator#56160, quantityDenominator#56161, (cast(quantityNumerator#56160 as double) / cast(quantityDenominator#56161 as double)) AS outboundUnit#56162]
(1720) Project
Arguments: [product#56120, plant#56121, orderDateTime#56122, productPlant#56132, timezonecode#56146, systemId#56147, internalUUID#56148, id#56149, displayId#56150, name#56151, baseUnitOfMeasure#56152, unitOfMeasures#56153, unitOfMeasureConversions#56154, productionAspect#56155, salesAspect#56156, procurementAspect#56157, productGroup#56158, filteredUnitOfMeasureConversions#56159, quantityNumerator#56160, quantityDenominator#56161, CASE WHEN (isnull(outboundUnit#56162) OR (outboundUnit#56162 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56162 END AS outboundUnit#56163]
(1721) Project
Arguments: [product#56120, plant#56121, orderDateTime#56122, productPlant#56132, timezonecode#56146, outboundUnit#56163]
(1722) Join
Arguments: Inner, ((plantUuid#56112 = plant#56121) AND (productUuid#56114 = product#56120))
(1723) Filter
Arguments: (calculationDateTime#56108 <= orderDateTime#56122)
(1724) Project
Arguments: [plantUuid#56112 AS plant#56164, productUuid#56114 AS product#56165, storageLocId#56115, calculationDateTime#56108, quantity#56117]
(1725) Aggregate
Arguments: [plant#56164, product#56165, storageLocId#56115], [plant#56164, product#56165, storageLocId#56115, max(calculationDateTime#56108) AS max_calc_datetime#56166]
(1726) Join
Arguments: Inner, ((((plant#56027 <=> plant#56164) AND (product#56028 <=> product#56165)) AND (storageLocId#55978 <=> storageLocId#56115)) AND (calculationDateTime#55971 <=> max_calc_datetime#56166))
(1727) Project
Arguments: [plant#56027, product#56028, storageLocId#55978, calculationDateTime#55971, quantity#55980]
(1728) Aggregate
Arguments: [product#56028, plant#56027], [product#56028, plant#56027, sum(quantity#55980) AS quantitySum#56167, min(calculationDateTime#55971) AS minCalculationDateTime#56168]
(1729) Project
Arguments: [product#56028, plant#56027, quantitySum#56167, minCalculationDateTime#56168, round(quantitySum#56167, 0) AS roundedQuantitySum#56169]
(1730) Join
Arguments: LeftOuter, ((plant#55849 = plant#56027) AND (product#55848 = product#56028))
(1731) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, roundedQuantitySum#56169, minCalculationDateTime#56168]
(1732) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, roundedQuantitySum#56169, minCalculationDateTime#56168, CASE WHEN isnotnull(minCalculationDateTime#56168) THEN minCalculationDateTime#56168 ELSE orderDateTime#55850 END AS stockDatetime#56170]
(1733) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, roundedQuantitySum#56169, minCalculationDateTime#56168, stockDatetime#56170, CASE WHEN isnotnull(roundedQuantitySum#56169) THEN array(roundedQuantitySum#56169) ELSE array(0.0) END AS stockBatchQuantities#56171]
(1734) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, roundedQuantitySum#56169, minCalculationDateTime#56168, stockDatetime#56170, stockBatchQuantities#56171, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#56172]
(1735) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, roundedQuantitySum#56169, stockDatetime#56170, stockBatchQuantities#56171, stockBatchShelfLifeEndDatetimes#56172]
(1736) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, stockDatetime#56170, stockBatchQuantities#56171, stockBatchShelfLifeEndDatetimes#56172]
(1737) LogicalRelation
Arguments: parquet, [product#56173, plant#56174, demandChannel#56175, demandStream#56176, considerVariance#56177, demandTimeBuckets#56178, demandPointInTimeStart#56179, demandPointInTimeEnd#56180, demandPointInTime#56181], false
(1738) Join
Arguments: LeftOuter, ((product#55848 = product#56173) AND (plant#55849 = plant#56174))
(1739) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, stockDatetime#56170, stockBatchQuantities#56171, stockBatchShelfLifeEndDatetimes#56172, demandChannel#56175, demandStream#56176, considerVariance#56177, demandTimeBuckets#56178, demandPointInTimeStart#56179, demandPointInTimeEnd#56180, demandPointInTime#56181, product#56173, plant#56174]
(1740) Project
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, stockDatetime#56170, stockBatchQuantities#56171, stockBatchShelfLifeEndDatetimes#56172, demandChannel#56175, demandStream#56176, considerVariance#56177, demandTimeBuckets#56178, demandPointInTimeStart#56179, demandPointInTimeEnd#56180, demandPointInTime#56181, CASE WHEN isnotnull(product#56173) THEN struct(demandChannel, demandChannel#56175, demandStream, demandStream#56176, considerVariance, considerVariance#56177, demandTimeBuckets, demandTimeBuckets#56178, demandPointInTimeStart, demandPointInTimeStart#56179, demandPointInTimeEnd, demandPointInTimeEnd#56180, demandPointInTime, demandPointInTime#56181) 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#56182]
(1741) Aggregate
Arguments: [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, stockDatetime#56170, stockBatchQuantities#56171, stockBatchShelfLifeEndDatetimes#56172], [product#55848, plant#55849, orderDateTime#55850, productPlant#55860, timezonecode#55874, outboundUnit#55891, stockDatetime#56170, stockBatchQuantities#56171, stockBatchShelfLifeEndDatetimes#56172, collect_list(rawDemands#56182, 0, 0) AS rawDemands#56183]
(1742) DeserializeToObject
Arguments: createexternalrow(invoke(product#55848.toString()), invoke(plant#55849.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#55850)), if (isnull(productPlant#55860)) null else createexternalrow(invoke(productPlant#55860.systemId.toString()), invoke(productPlant#55860.internalUUID.toString()), if (isnull(productPlant#55860.plant)) null else createexternalrow(invoke(productPlant#55860.plant.internalRefUUID.toString()), invoke(productPlant#55860.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#55860.product)) null else createexternalrow(invoke(productPlant#55860.product.internalRefUUID.toString()), invoke(productPlant#55860.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#55860.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#55860.productionAspect)) null else createexternalrow(if (isnull(productPlant#55860.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#55860.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#55860.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#55860.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#55860.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#55860.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#55860.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#55860.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#55860.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#55860.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#55860.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#55860.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#55860.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#55860.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#55860.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#55860.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#55860.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#55860.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#55860.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#55860.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#55860.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#55860.salesPlant)) null else createexternalrow(if (isnull(productPlant#55860.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#55860.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#55860.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, 7092), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#55860.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#55874.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#55891)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#56170)), mapobjects(lambdavariable(MapObject, DoubleType, true, 7093), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 7093) as double))), stockBatchQuantities#56171, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 7094), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 7094) as timestamp)))), stockBatchShelfLifeEndDatetimes#56172, 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, 7095), 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, 7095))) 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, 7095).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, 7095).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, 7095).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).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, 7095).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, 7095).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, 7095).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).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, 7095).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#56183, 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#51012: org.apache.spark.sql.Row
(1743) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, 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#51017: 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#56184, 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#56185, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7083), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7083), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7084), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7084), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7085), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7085), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7086), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7086), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7087), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7087), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#56186, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7089), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7089), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7090), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7090), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7091), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7091), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#56187]
(1745) Join
Arguments: LeftOuter, ((plant#56185 <=> plant#55524) AND (product#56184 <=> product#55523))
(1746) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, stockBatchShelfLifeEndDatetimes#55847, plant#56185, dayBucketDemands#56186, pointInTimeDemands#56187]
(1747) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, stockBatchShelfLifeEndDatetimes#55847, dayBucketDemands#56186, pointInTimeDemands#56187]
(1748) LogicalRelation
Arguments: parquet, [product#56188, plant#56189, orderDateTime#56190, planningStartDateTime#56191], false
(1749) RepartitionByExpression
Arguments: [product#56188, plant#56189], 10
(1750) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190]
(1751) LogicalRelation
Arguments: parquet, [systemId#56192, internalUUID#56193, plant#56194, product#56195, blockedForReplenishmentStartingFrom#56196, productionAspect#56197, salesPlant#56198, listing#56199], false
(1752) Repartition
Arguments: 10, true
(1753) Project
Arguments: [systemId#56192, internalUUID#56193, plant#56194, product#56195, blockedForReplenishmentStartingFrom#56196, productionAspect#56197, salesPlant#56198, listing#56199, struct(systemId, systemId#56192, internalUUID, internalUUID#56193, plant, plant#56194, product, product#56195, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56196, productionAspect, productionAspect#56197, salesPlant, salesPlant#56198, listing, listing#56199) AS productPlant#56200]
(1754) Project
Arguments: [productPlant#56200]
(1755) Join
Arguments: LeftOuter, ((product#56188 <=> productPlant#56200.product.internalRefUUID) AND (plant#56189 <=> productPlant#56200.plant.internalRefUUID))
(1756) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200]
(1757) SubqueryAlias
Arguments: wl
(1758) LogicalRelation
Arguments: parquet, [systemId#56201, internalUUID#56202, id#56203, displayId#56204, name#56205, category#56206, companyCode#56207, address#56208, mainDistributionChain#56209, mainPurchasingOrganization#56210, validPurchasingOrganizations#56211, productGroup#56212], false
(1759) Repartition
Arguments: 10, true
(1760) Project
Arguments: [internalUUID#56202, address#56208.timeZone.code AS timezonecode#56213]
(1761) Join
Arguments: LeftOuter, (plant#56189 <=> internalUUID#56202)
(1762) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, internalUUID#56202, CASE WHEN isnotnull(timezonecode#56213) THEN timezonecode#56213 ELSE UTC END AS timezonecode#56214]
(1763) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214]
(1764) LogicalRelation
Arguments: parquet, [systemId#56215, internalUUID#56216, id#56217, displayId#56218, name#56219, baseUnitOfMeasure#56220, unitOfMeasures#56221, unitOfMeasureConversions#56222, productionAspect#56223, salesAspect#56224, procurementAspect#56225, productGroup#56226], false
(1765) Repartition
Arguments: 10, true
(1766) Join
Arguments: LeftOuter, (product#56188 = internalUUID#56216)
(1767) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, systemId#56215, internalUUID#56216, id#56217, displayId#56218, name#56219, baseUnitOfMeasure#56220, unitOfMeasures#56221, unitOfMeasureConversions#56222, productionAspect#56223, salesAspect#56224, procurementAspect#56225, productGroup#56226, filter(unitOfMeasureConversions#56222, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56200.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56200.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56220.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56220.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56227]
(1768) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56227.quantityNumerator), true, [quantityNumerator#56228]
(1769) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, systemId#56215, internalUUID#56216, id#56217, displayId#56218, name#56219, baseUnitOfMeasure#56220, unitOfMeasures#56221, unitOfMeasureConversions#56222, productionAspect#56223, salesAspect#56224, procurementAspect#56225, productGroup#56226, filteredUnitOfMeasureConversions#56227, quantityNumerator#56228]
(1770) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56227.quantityDenominator), true, [quantityDenominator#56229]
(1771) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, systemId#56215, internalUUID#56216, id#56217, displayId#56218, name#56219, baseUnitOfMeasure#56220, unitOfMeasures#56221, unitOfMeasureConversions#56222, productionAspect#56223, salesAspect#56224, procurementAspect#56225, productGroup#56226, filteredUnitOfMeasureConversions#56227, quantityNumerator#56228, quantityDenominator#56229]
(1772) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, systemId#56215, internalUUID#56216, id#56217, displayId#56218, name#56219, baseUnitOfMeasure#56220, unitOfMeasures#56221, unitOfMeasureConversions#56222, productionAspect#56223, salesAspect#56224, procurementAspect#56225, productGroup#56226, filteredUnitOfMeasureConversions#56227, quantityNumerator#56228, quantityDenominator#56229, (cast(quantityNumerator#56228 as double) / cast(quantityDenominator#56229 as double)) AS outboundUnit#56230]
(1773) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, systemId#56215, internalUUID#56216, id#56217, displayId#56218, name#56219, baseUnitOfMeasure#56220, unitOfMeasures#56221, unitOfMeasureConversions#56222, productionAspect#56223, salesAspect#56224, procurementAspect#56225, productGroup#56226, filteredUnitOfMeasureConversions#56227, quantityNumerator#56228, quantityDenominator#56229, CASE WHEN (isnull(outboundUnit#56230) OR (outboundUnit#56230 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56230 END AS outboundUnit#56231]
(1774) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, outboundUnit#56231]
(1775) LogicalRelation
Arguments: parquet, [systemId#56232, internalUUID#56233, product#56234, plant#56235, calculationDateTime#56236, stockQuantities#56237], false
(1776) Repartition
Arguments: 10, true
(1777) LogicalRelation
Arguments: parquet, [marketUnit#56238, description#56239, articleHierarchy#56240, defaultCurrency#56241, responsibilities#56242, replenishmentTypes#56243, distributionCenters#56244, assignedArticleHierarchyNodes#56245, minOrderQtySetting#56246, minOrderQtySettingInternal#56247, listingCheck#56248, odsSelection#56249, demandProfiles#56250, constraintProfiles#56251, optimizationProfiles#56252, orderGroupSplitProfiles#56253, supplierMinimumProfiles#56254, multipleRestrictionProfiles#56255, preferredUomSource#56256, handlingOfUnfulfilledDemands#56257, negligibleQuantitiesThreshold#56258, eventtype#56259], false
(1778) Repartition
Arguments: 10, true
(1779) Filter
Arguments: (marketUnit#56238 <=> DIP_1691)
(1780) Project
Arguments: [marketUnit#56238, description#56239, articleHierarchy#56240, defaultCurrency#56241, responsibilities#56242, replenishmentTypes#56243, distributionCenters#56244, assignedArticleHierarchyNodes#56245, minOrderQtySetting#56246, minOrderQtySettingInternal#56247, listingCheck#56248, odsSelection#56249, demandProfiles#56250, constraintProfiles#56251, optimizationProfiles#56252, orderGroupSplitProfiles#56253, supplierMinimumProfiles#56254, multipleRestrictionProfiles#56255, preferredUomSource#56256, handlingOfUnfulfilledDemands#56257, negligibleQuantitiesThreshold#56258, eventtype#56259]
(1781) Project
Arguments: [distributionCenters#56244]
(1782) Generate
Arguments: explode(distributionCenters#56244), false, [distributionCenters#56260]
(1783) Project
Arguments: [distributionCenters#56260]
(1784) Generate
Arguments: explode(distributionCenters#56260.storageLocations), false, [storageLocations#56261]
(1785) Project
Arguments: [distributionCenters#56260.id AS plantId#56262, distributionCenters#56260.internalRefUUID AS plantUuid#56263, storageLocations#56261]
(1786) Project
Arguments: [plantId#56262, plantUuid#56263, storageLocations#56261.id AS storageLocId#56264, storageLocations#56261.internalRefUUID AS storageLocUuid#56265]
(1787) LogicalRelation
Arguments: parquet, [product#56266, plant#56267, orderDateTime#56268, planningStartDateTime#56269], false
(1788) RepartitionByExpression
Arguments: [product#56266, plant#56267], 10
(1789) Project
Arguments: [product#56266, plant#56267, orderDateTime#56268]
(1790) LogicalRelation
Arguments: parquet, [systemId#56270, internalUUID#56271, plant#56272, product#56273, blockedForReplenishmentStartingFrom#56274, productionAspect#56275, salesPlant#56276, listing#56277], false
(1791) Repartition
Arguments: 10, true
(1792) Project
Arguments: [systemId#56270, internalUUID#56271, plant#56272, product#56273, blockedForReplenishmentStartingFrom#56274, productionAspect#56275, salesPlant#56276, listing#56277, struct(systemId, systemId#56270, internalUUID, internalUUID#56271, plant, plant#56272, product, product#56273, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56274, productionAspect, productionAspect#56275, salesPlant, salesPlant#56276, listing, listing#56277) AS productPlant#56278]
(1793) Project
Arguments: [productPlant#56278]
(1794) Join
Arguments: LeftOuter, ((product#56266 <=> productPlant#56278.product.internalRefUUID) AND (plant#56267 <=> productPlant#56278.plant.internalRefUUID))
(1795) Project
Arguments: [product#56266, plant#56267, orderDateTime#56268, productPlant#56278]
(1796) SubqueryAlias
Arguments: wl
(1797) LogicalRelation
Arguments: parquet, [systemId#56279, internalUUID#56280, id#56281, displayId#56282, name#56283, category#56284, companyCode#56285, address#56286, mainDistributionChain#56287, mainPurchasingOrganization#56288, validPurchasingOrganizations#56289, productGroup#56290], false
(1798) Repartition
Arguments: 10, true
(1799) Project
Arguments: [internalUUID#56280, address#56286.timeZone.code AS timezonecode#56291]
(1800) Join
Arguments: LeftOuter, (plant#56267 <=> internalUUID#56280)
(1801) Project
Arguments: [product#56266, plant#56267, orderDateTime#56268, productPlant#56278, internalUUID#56280, CASE WHEN isnotnull(timezonecode#56291) THEN timezonecode#56291 ELSE UTC END AS timezonecode#56292]
(1802) Project
Arguments: [product#56266, plant#56267, orderDateTime#56268, productPlant#56278, timezonecode#56292]
(1803) LogicalRelation
Arguments: parquet, [systemId#56293, internalUUID#56294, id#56295, displayId#56296, name#56297, baseUnitOfMeasure#56298, unitOfMeasures#56299, unitOfMeasureConversions#56300, productionAspect#56301, salesAspect#56302, procurementAspect#56303, productGroup#56304], false
(1804) Repartition
Arguments: 10, true
(1805) Join
Arguments: LeftOuter, (product#56266 = internalUUID#56294)
(1806) Project
Arguments: [product#56266, plant#56267, orderDateTime#56268, productPlant#56278, timezonecode#56292, systemId#56293, internalUUID#56294, id#56295, displayId#56296, name#56297, baseUnitOfMeasure#56298, unitOfMeasures#56299, unitOfMeasureConversions#56300, productionAspect#56301, salesAspect#56302, procurementAspect#56303, productGroup#56304, filter(unitOfMeasureConversions#56300, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56278.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56278.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56298.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56298.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56305]
(1807) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56305.quantityNumerator), true, [quantityNumerator#56306]
(1808) Project
Arguments: [product#56266, plant#56267, orderDateTime#56268, productPlant#56278, timezonecode#56292, systemId#56293, internalUUID#56294, id#56295, displayId#56296, name#56297, baseUnitOfMeasure#56298, unitOfMeasures#56299, unitOfMeasureConversions#56300, productionAspect#56301, salesAspect#56302, procurementAspect#56303, productGroup#56304, filteredUnitOfMeasureConversions#56305, quantityNumerator#56306]
(1809) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56305.quantityDenominator), true, [quantityDenominator#56307]
(1810) Project
Arguments: [product#56266, plant#56267, orderDateTime#56268, productPlant#56278, timezonecode#56292, systemId#56293, internalUUID#56294, id#56295, displayId#56296, name#56297, baseUnitOfMeasure#56298, unitOfMeasures#56299, unitOfMeasureConversions#56300, productionAspect#56301, salesAspect#56302, procurementAspect#56303, productGroup#56304, filteredUnitOfMeasureConversions#56305, quantityNumerator#56306, quantityDenominator#56307]
(1811) Project
Arguments: [product#56266, plant#56267, orderDateTime#56268, productPlant#56278, timezonecode#56292, systemId#56293, internalUUID#56294, id#56295, displayId#56296, name#56297, baseUnitOfMeasure#56298, unitOfMeasures#56299, unitOfMeasureConversions#56300, productionAspect#56301, salesAspect#56302, procurementAspect#56303, productGroup#56304, filteredUnitOfMeasureConversions#56305, quantityNumerator#56306, quantityDenominator#56307, (cast(quantityNumerator#56306 as double) / cast(quantityDenominator#56307 as double)) AS outboundUnit#56308]
(1812) Project
Arguments: [product#56266, plant#56267, orderDateTime#56268, productPlant#56278, timezonecode#56292, systemId#56293, internalUUID#56294, id#56295, displayId#56296, name#56297, baseUnitOfMeasure#56298, unitOfMeasures#56299, unitOfMeasureConversions#56300, productionAspect#56301, salesAspect#56302, procurementAspect#56303, productGroup#56304, filteredUnitOfMeasureConversions#56305, quantityNumerator#56306, quantityDenominator#56307, CASE WHEN (isnull(outboundUnit#56308) OR (outboundUnit#56308 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56308 END AS outboundUnit#56309]
(1813) Project
Arguments: [product#56266, plant#56267, orderDateTime#56268, productPlant#56278, timezonecode#56292, outboundUnit#56309]
(1814) Project
Arguments: [plant#56267]
(1815) Deduplicate
Arguments: [plant#56267]
(1816) Join
Arguments: Inner, (plantUuid#56263 = plant#56267)
(1817) Project
Arguments: [plantId#56262, plantUuid#56263, storageLocId#56264, storageLocUuid#56265]
(1818) Join
Arguments: Inner, (plant#56235.internalRefUUID <=> plantUuid#56263)
(1819) Generate
Arguments: explode(filter(stockQuantities#56237, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#56265) AND (lambda x#50650.storageLocation.Id = storageLocId#56264)), lambda x#50650, false))), false, [stockQuantity#56310]
(1820) Project
Arguments: [systemId#56232, internalUUID#56233, product#56234, plant#56235, calculationDateTime#56236, stockQuantities#56237, plantId#56262, plantUuid#56263, storageLocId#56264, storageLocUuid#56265, stockQuantity#56310]
(1821) Aggregate
Arguments: [plantUuid#56263, internalUUID#56233, plant#56235, product#56234, systemId#56232], [plantUuid#56263, internalUUID#56233, plant#56235, product#56234, systemId#56232, first(calculationDateTime#56236, false) AS calculationDateTime#56311, collect_list(stockQuantity#56310, 0, 0) AS stockQuantities#56312]
(1822) Project
Arguments: [systemId#56232, internalUUID#56233, product#56234, plant#56235, calculationDateTime#56311, stockQuantities#56312]
(1823) Generate
Arguments: explode(stockQuantities#56312), false, [stockQuantity#56313]
(1824) Project
Arguments: [systemId#56232, internalUUID#56233, product#56234, plant#56235, calculationDateTime#56311, stockQuantities#56312, stockQuantity#56313]
(1825) Project
Arguments: [plant#56235.id AS plant#56314, plant#56235.internalRefUUID AS plantUuid#56315, product#56234.id AS product#56316, product#56234.internalRefUUID AS productUuid#56317, calculationDateTime#56311, stockQuantity#56313.storagelocation.id AS storageLocId#56318, stockQuantity#56313.storagelocation.internalRefUUID AS storageLocUuid#56319, stockQuantity#56313.quantity.measure AS quantity#56320, stockQuantity#56313.specialStockIndicator.code AS specialStockIndicator#56321, stockQuantity#56313.stockType.code AS stockType#56322]
(1826) Filter
Arguments: ((specialStockIndicator#56321 = ) AND (stockType#56322 = 01))
(1827) LogicalRelation
Arguments: parquet, [product#56323, plant#56324, orderDateTime#56325, planningStartDateTime#56326], false
(1828) RepartitionByExpression
Arguments: [product#56323, plant#56324], 10
(1829) Project
Arguments: [product#56323, plant#56324, orderDateTime#56325]
(1830) LogicalRelation
Arguments: parquet, [systemId#56327, internalUUID#56328, plant#56329, product#56330, blockedForReplenishmentStartingFrom#56331, productionAspect#56332, salesPlant#56333, listing#56334], false
(1831) Repartition
Arguments: 10, true
(1832) Project
Arguments: [systemId#56327, internalUUID#56328, plant#56329, product#56330, blockedForReplenishmentStartingFrom#56331, productionAspect#56332, salesPlant#56333, listing#56334, struct(systemId, systemId#56327, internalUUID, internalUUID#56328, plant, plant#56329, product, product#56330, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56331, productionAspect, productionAspect#56332, salesPlant, salesPlant#56333, listing, listing#56334) AS productPlant#56335]
(1833) Project
Arguments: [productPlant#56335]
(1834) Join
Arguments: LeftOuter, ((product#56323 <=> productPlant#56335.product.internalRefUUID) AND (plant#56324 <=> productPlant#56335.plant.internalRefUUID))
(1835) Project
Arguments: [product#56323, plant#56324, orderDateTime#56325, productPlant#56335]
(1836) SubqueryAlias
Arguments: wl
(1837) LogicalRelation
Arguments: parquet, [systemId#56336, internalUUID#56337, id#56338, displayId#56339, name#56340, category#56341, companyCode#56342, address#56343, mainDistributionChain#56344, mainPurchasingOrganization#56345, validPurchasingOrganizations#56346, productGroup#56347], false
(1838) Repartition
Arguments: 10, true
(1839) Project
Arguments: [internalUUID#56337, address#56343.timeZone.code AS timezonecode#56348]
(1840) Join
Arguments: LeftOuter, (plant#56324 <=> internalUUID#56337)
(1841) Project
Arguments: [product#56323, plant#56324, orderDateTime#56325, productPlant#56335, internalUUID#56337, CASE WHEN isnotnull(timezonecode#56348) THEN timezonecode#56348 ELSE UTC END AS timezonecode#56349]
(1842) Project
Arguments: [product#56323, plant#56324, orderDateTime#56325, productPlant#56335, timezonecode#56349]
(1843) LogicalRelation
Arguments: parquet, [systemId#56350, internalUUID#56351, id#56352, displayId#56353, name#56354, baseUnitOfMeasure#56355, unitOfMeasures#56356, unitOfMeasureConversions#56357, productionAspect#56358, salesAspect#56359, procurementAspect#56360, productGroup#56361], false
(1844) Repartition
Arguments: 10, true
(1845) Join
Arguments: LeftOuter, (product#56323 = internalUUID#56351)
(1846) Project
Arguments: [product#56323, plant#56324, orderDateTime#56325, productPlant#56335, timezonecode#56349, systemId#56350, internalUUID#56351, id#56352, displayId#56353, name#56354, baseUnitOfMeasure#56355, unitOfMeasures#56356, unitOfMeasureConversions#56357, productionAspect#56358, salesAspect#56359, procurementAspect#56360, productGroup#56361, filter(unitOfMeasureConversions#56357, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56335.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56335.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56355.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56355.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56362]
(1847) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56362.quantityNumerator), true, [quantityNumerator#56363]
(1848) Project
Arguments: [product#56323, plant#56324, orderDateTime#56325, productPlant#56335, timezonecode#56349, systemId#56350, internalUUID#56351, id#56352, displayId#56353, name#56354, baseUnitOfMeasure#56355, unitOfMeasures#56356, unitOfMeasureConversions#56357, productionAspect#56358, salesAspect#56359, procurementAspect#56360, productGroup#56361, filteredUnitOfMeasureConversions#56362, quantityNumerator#56363]
(1849) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56362.quantityDenominator), true, [quantityDenominator#56364]
(1850) Project
Arguments: [product#56323, plant#56324, orderDateTime#56325, productPlant#56335, timezonecode#56349, systemId#56350, internalUUID#56351, id#56352, displayId#56353, name#56354, baseUnitOfMeasure#56355, unitOfMeasures#56356, unitOfMeasureConversions#56357, productionAspect#56358, salesAspect#56359, procurementAspect#56360, productGroup#56361, filteredUnitOfMeasureConversions#56362, quantityNumerator#56363, quantityDenominator#56364]
(1851) Project
Arguments: [product#56323, plant#56324, orderDateTime#56325, productPlant#56335, timezonecode#56349, systemId#56350, internalUUID#56351, id#56352, displayId#56353, name#56354, baseUnitOfMeasure#56355, unitOfMeasures#56356, unitOfMeasureConversions#56357, productionAspect#56358, salesAspect#56359, procurementAspect#56360, productGroup#56361, filteredUnitOfMeasureConversions#56362, quantityNumerator#56363, quantityDenominator#56364, (cast(quantityNumerator#56363 as double) / cast(quantityDenominator#56364 as double)) AS outboundUnit#56365]
(1852) Project
Arguments: [product#56323, plant#56324, orderDateTime#56325, productPlant#56335, timezonecode#56349, systemId#56350, internalUUID#56351, id#56352, displayId#56353, name#56354, baseUnitOfMeasure#56355, unitOfMeasures#56356, unitOfMeasureConversions#56357, productionAspect#56358, salesAspect#56359, procurementAspect#56360, productGroup#56361, filteredUnitOfMeasureConversions#56362, quantityNumerator#56363, quantityDenominator#56364, CASE WHEN (isnull(outboundUnit#56365) OR (outboundUnit#56365 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56365 END AS outboundUnit#56366]
(1853) Project
Arguments: [product#56323, plant#56324, orderDateTime#56325, productPlant#56335, timezonecode#56349, outboundUnit#56366]
(1854) Join
Arguments: Inner, ((plantUuid#56315 = plant#56324) AND (productUuid#56317 = product#56323))
(1855) Filter
Arguments: (calculationDateTime#56311 <= orderDateTime#56325)
(1856) Project
Arguments: [plantUuid#56315 AS plant#56367, productUuid#56317 AS product#56368, storageLocId#56318, calculationDateTime#56311, quantity#56320]
(1857) LogicalRelation
Arguments: parquet, [systemId#56369, internalUUID#56370, product#56371, plant#56372, calculationDateTime#56373, stockQuantities#56374], false
(1858) Repartition
Arguments: 10, true
(1859) LogicalRelation
Arguments: parquet, [marketUnit#56375, description#56376, articleHierarchy#56377, defaultCurrency#56378, responsibilities#56379, replenishmentTypes#56380, distributionCenters#56381, assignedArticleHierarchyNodes#56382, minOrderQtySetting#56383, minOrderQtySettingInternal#56384, listingCheck#56385, odsSelection#56386, demandProfiles#56387, constraintProfiles#56388, optimizationProfiles#56389, orderGroupSplitProfiles#56390, supplierMinimumProfiles#56391, multipleRestrictionProfiles#56392, preferredUomSource#56393, handlingOfUnfulfilledDemands#56394, negligibleQuantitiesThreshold#56395, eventtype#56396], false
(1860) Repartition
Arguments: 10, true
(1861) Filter
Arguments: (marketUnit#56375 <=> DIP_1691)
(1862) Project
Arguments: [marketUnit#56375, description#56376, articleHierarchy#56377, defaultCurrency#56378, responsibilities#56379, replenishmentTypes#56380, distributionCenters#56381, assignedArticleHierarchyNodes#56382, minOrderQtySetting#56383, minOrderQtySettingInternal#56384, listingCheck#56385, odsSelection#56386, demandProfiles#56387, constraintProfiles#56388, optimizationProfiles#56389, orderGroupSplitProfiles#56390, supplierMinimumProfiles#56391, multipleRestrictionProfiles#56392, preferredUomSource#56393, handlingOfUnfulfilledDemands#56394, negligibleQuantitiesThreshold#56395, eventtype#56396]
(1863) Project
Arguments: [distributionCenters#56381]
(1864) Generate
Arguments: explode(distributionCenters#56381), false, [distributionCenters#56397]
(1865) Project
Arguments: [distributionCenters#56397]
(1866) Generate
Arguments: explode(distributionCenters#56397.storageLocations), false, [storageLocations#56398]
(1867) Project
Arguments: [distributionCenters#56397.id AS plantId#56399, distributionCenters#56397.internalRefUUID AS plantUuid#56400, storageLocations#56398]
(1868) Project
Arguments: [plantId#56399, plantUuid#56400, storageLocations#56398.id AS storageLocId#56401, storageLocations#56398.internalRefUUID AS storageLocUuid#56402]
(1869) LogicalRelation
Arguments: parquet, [product#56403, plant#56404, orderDateTime#56405, planningStartDateTime#56406], false
(1870) RepartitionByExpression
Arguments: [product#56403, plant#56404], 10
(1871) Project
Arguments: [product#56403, plant#56404, orderDateTime#56405]
(1872) LogicalRelation
Arguments: parquet, [systemId#56407, internalUUID#56408, plant#56409, product#56410, blockedForReplenishmentStartingFrom#56411, productionAspect#56412, salesPlant#56413, listing#56414], false
(1873) Repartition
Arguments: 10, true
(1874) Project
Arguments: [systemId#56407, internalUUID#56408, plant#56409, product#56410, blockedForReplenishmentStartingFrom#56411, productionAspect#56412, salesPlant#56413, listing#56414, struct(systemId, systemId#56407, internalUUID, internalUUID#56408, plant, plant#56409, product, product#56410, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56411, productionAspect, productionAspect#56412, salesPlant, salesPlant#56413, listing, listing#56414) AS productPlant#56415]
(1875) Project
Arguments: [productPlant#56415]
(1876) Join
Arguments: LeftOuter, ((product#56403 <=> productPlant#56415.product.internalRefUUID) AND (plant#56404 <=> productPlant#56415.plant.internalRefUUID))
(1877) Project
Arguments: [product#56403, plant#56404, orderDateTime#56405, productPlant#56415]
(1878) SubqueryAlias
Arguments: wl
(1879) LogicalRelation
Arguments: parquet, [systemId#56416, internalUUID#56417, id#56418, displayId#56419, name#56420, category#56421, companyCode#56422, address#56423, mainDistributionChain#56424, mainPurchasingOrganization#56425, validPurchasingOrganizations#56426, productGroup#56427], false
(1880) Repartition
Arguments: 10, true
(1881) Project
Arguments: [internalUUID#56417, address#56423.timeZone.code AS timezonecode#56428]
(1882) Join
Arguments: LeftOuter, (plant#56404 <=> internalUUID#56417)
(1883) Project
Arguments: [product#56403, plant#56404, orderDateTime#56405, productPlant#56415, internalUUID#56417, CASE WHEN isnotnull(timezonecode#56428) THEN timezonecode#56428 ELSE UTC END AS timezonecode#56429]
(1884) Project
Arguments: [product#56403, plant#56404, orderDateTime#56405, productPlant#56415, timezonecode#56429]
(1885) LogicalRelation
Arguments: parquet, [systemId#56430, internalUUID#56431, id#56432, displayId#56433, name#56434, baseUnitOfMeasure#56435, unitOfMeasures#56436, unitOfMeasureConversions#56437, productionAspect#56438, salesAspect#56439, procurementAspect#56440, productGroup#56441], false
(1886) Repartition
Arguments: 10, true
(1887) Join
Arguments: LeftOuter, (product#56403 = internalUUID#56431)
(1888) Project
Arguments: [product#56403, plant#56404, orderDateTime#56405, productPlant#56415, timezonecode#56429, systemId#56430, internalUUID#56431, id#56432, displayId#56433, name#56434, baseUnitOfMeasure#56435, unitOfMeasures#56436, unitOfMeasureConversions#56437, productionAspect#56438, salesAspect#56439, procurementAspect#56440, productGroup#56441, filter(unitOfMeasureConversions#56437, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56415.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56415.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56435.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56435.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56442]
(1889) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56442.quantityNumerator), true, [quantityNumerator#56443]
(1890) Project
Arguments: [product#56403, plant#56404, orderDateTime#56405, productPlant#56415, timezonecode#56429, systemId#56430, internalUUID#56431, id#56432, displayId#56433, name#56434, baseUnitOfMeasure#56435, unitOfMeasures#56436, unitOfMeasureConversions#56437, productionAspect#56438, salesAspect#56439, procurementAspect#56440, productGroup#56441, filteredUnitOfMeasureConversions#56442, quantityNumerator#56443]
(1891) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56442.quantityDenominator), true, [quantityDenominator#56444]
(1892) Project
Arguments: [product#56403, plant#56404, orderDateTime#56405, productPlant#56415, timezonecode#56429, systemId#56430, internalUUID#56431, id#56432, displayId#56433, name#56434, baseUnitOfMeasure#56435, unitOfMeasures#56436, unitOfMeasureConversions#56437, productionAspect#56438, salesAspect#56439, procurementAspect#56440, productGroup#56441, filteredUnitOfMeasureConversions#56442, quantityNumerator#56443, quantityDenominator#56444]
(1893) Project
Arguments: [product#56403, plant#56404, orderDateTime#56405, productPlant#56415, timezonecode#56429, systemId#56430, internalUUID#56431, id#56432, displayId#56433, name#56434, baseUnitOfMeasure#56435, unitOfMeasures#56436, unitOfMeasureConversions#56437, productionAspect#56438, salesAspect#56439, procurementAspect#56440, productGroup#56441, filteredUnitOfMeasureConversions#56442, quantityNumerator#56443, quantityDenominator#56444, (cast(quantityNumerator#56443 as double) / cast(quantityDenominator#56444 as double)) AS outboundUnit#56445]
(1894) Project
Arguments: [product#56403, plant#56404, orderDateTime#56405, productPlant#56415, timezonecode#56429, systemId#56430, internalUUID#56431, id#56432, displayId#56433, name#56434, baseUnitOfMeasure#56435, unitOfMeasures#56436, unitOfMeasureConversions#56437, productionAspect#56438, salesAspect#56439, procurementAspect#56440, productGroup#56441, filteredUnitOfMeasureConversions#56442, quantityNumerator#56443, quantityDenominator#56444, CASE WHEN (isnull(outboundUnit#56445) OR (outboundUnit#56445 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56445 END AS outboundUnit#56446]
(1895) Project
Arguments: [product#56403, plant#56404, orderDateTime#56405, productPlant#56415, timezonecode#56429, outboundUnit#56446]
(1896) Project
Arguments: [plant#56404]
(1897) Deduplicate
Arguments: [plant#56404]
(1898) Join
Arguments: Inner, (plantUuid#56400 = plant#56404)
(1899) Project
Arguments: [plantId#56399, plantUuid#56400, storageLocId#56401, storageLocUuid#56402]
(1900) Join
Arguments: Inner, (plant#56372.internalRefUUID <=> plantUuid#56400)
(1901) Generate
Arguments: explode(filter(stockQuantities#56374, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#56402) AND (lambda x#50650.storageLocation.Id = storageLocId#56401)), lambda x#50650, false))), false, [stockQuantity#56447]
(1902) Project
Arguments: [systemId#56369, internalUUID#56370, product#56371, plant#56372, calculationDateTime#56373, stockQuantities#56374, plantId#56399, plantUuid#56400, storageLocId#56401, storageLocUuid#56402, stockQuantity#56447]
(1903) Aggregate
Arguments: [plantUuid#56400, internalUUID#56370, plant#56372, product#56371, systemId#56369], [plantUuid#56400, internalUUID#56370, plant#56372, product#56371, systemId#56369, first(calculationDateTime#56373, false) AS calculationDateTime#56448, collect_list(stockQuantity#56447, 0, 0) AS stockQuantities#56449]
(1904) Project
Arguments: [systemId#56369, internalUUID#56370, product#56371, plant#56372, calculationDateTime#56448, stockQuantities#56449]
(1905) Generate
Arguments: explode(stockQuantities#56449), false, [stockQuantity#56450]
(1906) Project
Arguments: [systemId#56369, internalUUID#56370, product#56371, plant#56372, calculationDateTime#56448, stockQuantities#56449, stockQuantity#56450]
(1907) Project
Arguments: [plant#56372.id AS plant#56451, plant#56372.internalRefUUID AS plantUuid#56452, product#56371.id AS product#56453, product#56371.internalRefUUID AS productUuid#56454, calculationDateTime#56448, stockQuantity#56450.storagelocation.id AS storageLocId#56455, stockQuantity#56450.storagelocation.internalRefUUID AS storageLocUuid#56456, stockQuantity#56450.quantity.measure AS quantity#56457, stockQuantity#56450.specialStockIndicator.code AS specialStockIndicator#56458, stockQuantity#56450.stockType.code AS stockType#56459]
(1908) Filter
Arguments: ((specialStockIndicator#56458 = ) AND (stockType#56459 = 01))
(1909) LogicalRelation
Arguments: parquet, [product#56460, plant#56461, orderDateTime#56462, planningStartDateTime#56463], false
(1910) RepartitionByExpression
Arguments: [product#56460, plant#56461], 10
(1911) Project
Arguments: [product#56460, plant#56461, orderDateTime#56462]
(1912) LogicalRelation
Arguments: parquet, [systemId#56464, internalUUID#56465, plant#56466, product#56467, blockedForReplenishmentStartingFrom#56468, productionAspect#56469, salesPlant#56470, listing#56471], false
(1913) Repartition
Arguments: 10, true
(1914) Project
Arguments: [systemId#56464, internalUUID#56465, plant#56466, product#56467, blockedForReplenishmentStartingFrom#56468, productionAspect#56469, salesPlant#56470, listing#56471, struct(systemId, systemId#56464, internalUUID, internalUUID#56465, plant, plant#56466, product, product#56467, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56468, productionAspect, productionAspect#56469, salesPlant, salesPlant#56470, listing, listing#56471) AS productPlant#56472]
(1915) Project
Arguments: [productPlant#56472]
(1916) Join
Arguments: LeftOuter, ((product#56460 <=> productPlant#56472.product.internalRefUUID) AND (plant#56461 <=> productPlant#56472.plant.internalRefUUID))
(1917) Project
Arguments: [product#56460, plant#56461, orderDateTime#56462, productPlant#56472]
(1918) SubqueryAlias
Arguments: wl
(1919) LogicalRelation
Arguments: parquet, [systemId#56473, internalUUID#56474, id#56475, displayId#56476, name#56477, category#56478, companyCode#56479, address#56480, mainDistributionChain#56481, mainPurchasingOrganization#56482, validPurchasingOrganizations#56483, productGroup#56484], false
(1920) Repartition
Arguments: 10, true
(1921) Project
Arguments: [internalUUID#56474, address#56480.timeZone.code AS timezonecode#56485]
(1922) Join
Arguments: LeftOuter, (plant#56461 <=> internalUUID#56474)
(1923) Project
Arguments: [product#56460, plant#56461, orderDateTime#56462, productPlant#56472, internalUUID#56474, CASE WHEN isnotnull(timezonecode#56485) THEN timezonecode#56485 ELSE UTC END AS timezonecode#56486]
(1924) Project
Arguments: [product#56460, plant#56461, orderDateTime#56462, productPlant#56472, timezonecode#56486]
(1925) LogicalRelation
Arguments: parquet, [systemId#56487, internalUUID#56488, id#56489, displayId#56490, name#56491, baseUnitOfMeasure#56492, unitOfMeasures#56493, unitOfMeasureConversions#56494, productionAspect#56495, salesAspect#56496, procurementAspect#56497, productGroup#56498], false
(1926) Repartition
Arguments: 10, true
(1927) Join
Arguments: LeftOuter, (product#56460 = internalUUID#56488)
(1928) Project
Arguments: [product#56460, plant#56461, orderDateTime#56462, productPlant#56472, timezonecode#56486, systemId#56487, internalUUID#56488, id#56489, displayId#56490, name#56491, baseUnitOfMeasure#56492, unitOfMeasures#56493, unitOfMeasureConversions#56494, productionAspect#56495, salesAspect#56496, procurementAspect#56497, productGroup#56498, filter(unitOfMeasureConversions#56494, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56472.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56472.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56492.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56492.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56499]
(1929) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56499.quantityNumerator), true, [quantityNumerator#56500]
(1930) Project
Arguments: [product#56460, plant#56461, orderDateTime#56462, productPlant#56472, timezonecode#56486, systemId#56487, internalUUID#56488, id#56489, displayId#56490, name#56491, baseUnitOfMeasure#56492, unitOfMeasures#56493, unitOfMeasureConversions#56494, productionAspect#56495, salesAspect#56496, procurementAspect#56497, productGroup#56498, filteredUnitOfMeasureConversions#56499, quantityNumerator#56500]
(1931) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56499.quantityDenominator), true, [quantityDenominator#56501]
(1932) Project
Arguments: [product#56460, plant#56461, orderDateTime#56462, productPlant#56472, timezonecode#56486, systemId#56487, internalUUID#56488, id#56489, displayId#56490, name#56491, baseUnitOfMeasure#56492, unitOfMeasures#56493, unitOfMeasureConversions#56494, productionAspect#56495, salesAspect#56496, procurementAspect#56497, productGroup#56498, filteredUnitOfMeasureConversions#56499, quantityNumerator#56500, quantityDenominator#56501]
(1933) Project
Arguments: [product#56460, plant#56461, orderDateTime#56462, productPlant#56472, timezonecode#56486, systemId#56487, internalUUID#56488, id#56489, displayId#56490, name#56491, baseUnitOfMeasure#56492, unitOfMeasures#56493, unitOfMeasureConversions#56494, productionAspect#56495, salesAspect#56496, procurementAspect#56497, productGroup#56498, filteredUnitOfMeasureConversions#56499, quantityNumerator#56500, quantityDenominator#56501, (cast(quantityNumerator#56500 as double) / cast(quantityDenominator#56501 as double)) AS outboundUnit#56502]
(1934) Project
Arguments: [product#56460, plant#56461, orderDateTime#56462, productPlant#56472, timezonecode#56486, systemId#56487, internalUUID#56488, id#56489, displayId#56490, name#56491, baseUnitOfMeasure#56492, unitOfMeasures#56493, unitOfMeasureConversions#56494, productionAspect#56495, salesAspect#56496, procurementAspect#56497, productGroup#56498, filteredUnitOfMeasureConversions#56499, quantityNumerator#56500, quantityDenominator#56501, CASE WHEN (isnull(outboundUnit#56502) OR (outboundUnit#56502 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56502 END AS outboundUnit#56503]
(1935) Project
Arguments: [product#56460, plant#56461, orderDateTime#56462, productPlant#56472, timezonecode#56486, outboundUnit#56503]
(1936) Join
Arguments: Inner, ((plantUuid#56452 = plant#56461) AND (productUuid#56454 = product#56460))
(1937) Filter
Arguments: (calculationDateTime#56448 <= orderDateTime#56462)
(1938) Project
Arguments: [plantUuid#56452 AS plant#56504, productUuid#56454 AS product#56505, storageLocId#56455, calculationDateTime#56448, quantity#56457]
(1939) Aggregate
Arguments: [plant#56504, product#56505, storageLocId#56455], [plant#56504, product#56505, storageLocId#56455, max(calculationDateTime#56448) AS max_calc_datetime#56506]
(1940) Join
Arguments: Inner, ((((plant#56367 <=> plant#56504) AND (product#56368 <=> product#56505)) AND (storageLocId#56318 <=> storageLocId#56455)) AND (calculationDateTime#56311 <=> max_calc_datetime#56506))
(1941) Project
Arguments: [plant#56367, product#56368, storageLocId#56318, calculationDateTime#56311, quantity#56320]
(1942) Aggregate
Arguments: [product#56368, plant#56367], [product#56368, plant#56367, sum(quantity#56320) AS quantitySum#56507, min(calculationDateTime#56311) AS minCalculationDateTime#56508]
(1943) Project
Arguments: [product#56368, plant#56367, quantitySum#56507, minCalculationDateTime#56508, round(quantitySum#56507, 0) AS roundedQuantitySum#56509]
(1944) Join
Arguments: LeftOuter, ((plant#56189 = plant#56367) AND (product#56188 = product#56368))
(1945) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, outboundUnit#56231, roundedQuantitySum#56509, minCalculationDateTime#56508]
(1946) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, outboundUnit#56231, roundedQuantitySum#56509, minCalculationDateTime#56508, CASE WHEN isnotnull(minCalculationDateTime#56508) THEN minCalculationDateTime#56508 ELSE orderDateTime#56190 END AS stockDatetime#56510]
(1947) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, outboundUnit#56231, roundedQuantitySum#56509, minCalculationDateTime#56508, stockDatetime#56510, CASE WHEN isnotnull(roundedQuantitySum#56509) THEN array(roundedQuantitySum#56509) ELSE array(0.0) END AS stockBatchQuantities#56511]
(1948) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, outboundUnit#56231, roundedQuantitySum#56509, minCalculationDateTime#56508, stockDatetime#56510, stockBatchQuantities#56511, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#56512]
(1949) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, outboundUnit#56231, roundedQuantitySum#56509, stockDatetime#56510, stockBatchQuantities#56511, stockBatchShelfLifeEndDatetimes#56512]
(1950) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, outboundUnit#56231, stockDatetime#56510, stockBatchQuantities#56511, stockBatchShelfLifeEndDatetimes#56512]
(1951) LogicalRelation
Arguments: parquet, [product#56513, plant#56514, orderDateTime#56515, planningStartDateTime#56516], false
(1952) RepartitionByExpression
Arguments: [product#56513, plant#56514], 10
(1953) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515]
(1954) LogicalRelation
Arguments: parquet, [systemId#56517, internalUUID#56518, plant#56519, product#56520, blockedForReplenishmentStartingFrom#56521, productionAspect#56522, salesPlant#56523, listing#56524], false
(1955) Repartition
Arguments: 10, true
(1956) Project
Arguments: [systemId#56517, internalUUID#56518, plant#56519, product#56520, blockedForReplenishmentStartingFrom#56521, productionAspect#56522, salesPlant#56523, listing#56524, struct(systemId, systemId#56517, internalUUID, internalUUID#56518, plant, plant#56519, product, product#56520, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56521, productionAspect, productionAspect#56522, salesPlant, salesPlant#56523, listing, listing#56524) AS productPlant#56525]
(1957) Project
Arguments: [productPlant#56525]
(1958) Join
Arguments: LeftOuter, ((product#56513 <=> productPlant#56525.product.internalRefUUID) AND (plant#56514 <=> productPlant#56525.plant.internalRefUUID))
(1959) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525]
(1960) SubqueryAlias
Arguments: wl
(1961) LogicalRelation
Arguments: parquet, [systemId#56526, internalUUID#56527, id#56528, displayId#56529, name#56530, category#56531, companyCode#56532, address#56533, mainDistributionChain#56534, mainPurchasingOrganization#56535, validPurchasingOrganizations#56536, productGroup#56537], false
(1962) Repartition
Arguments: 10, true
(1963) Project
Arguments: [internalUUID#56527, address#56533.timeZone.code AS timezonecode#56538]
(1964) Join
Arguments: LeftOuter, (plant#56514 <=> internalUUID#56527)
(1965) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, internalUUID#56527, CASE WHEN isnotnull(timezonecode#56538) THEN timezonecode#56538 ELSE UTC END AS timezonecode#56539]
(1966) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539]
(1967) LogicalRelation
Arguments: parquet, [systemId#56540, internalUUID#56541, id#56542, displayId#56543, name#56544, baseUnitOfMeasure#56545, unitOfMeasures#56546, unitOfMeasureConversions#56547, productionAspect#56548, salesAspect#56549, procurementAspect#56550, productGroup#56551], false
(1968) Repartition
Arguments: 10, true
(1969) Join
Arguments: LeftOuter, (product#56513 = internalUUID#56541)
(1970) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, systemId#56540, internalUUID#56541, id#56542, displayId#56543, name#56544, baseUnitOfMeasure#56545, unitOfMeasures#56546, unitOfMeasureConversions#56547, productionAspect#56548, salesAspect#56549, procurementAspect#56550, productGroup#56551, filter(unitOfMeasureConversions#56547, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56525.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56525.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56545.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56545.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56552]
(1971) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56552.quantityNumerator), true, [quantityNumerator#56553]
(1972) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, systemId#56540, internalUUID#56541, id#56542, displayId#56543, name#56544, baseUnitOfMeasure#56545, unitOfMeasures#56546, unitOfMeasureConversions#56547, productionAspect#56548, salesAspect#56549, procurementAspect#56550, productGroup#56551, filteredUnitOfMeasureConversions#56552, quantityNumerator#56553]
(1973) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56552.quantityDenominator), true, [quantityDenominator#56554]
(1974) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, systemId#56540, internalUUID#56541, id#56542, displayId#56543, name#56544, baseUnitOfMeasure#56545, unitOfMeasures#56546, unitOfMeasureConversions#56547, productionAspect#56548, salesAspect#56549, procurementAspect#56550, productGroup#56551, filteredUnitOfMeasureConversions#56552, quantityNumerator#56553, quantityDenominator#56554]
(1975) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, systemId#56540, internalUUID#56541, id#56542, displayId#56543, name#56544, baseUnitOfMeasure#56545, unitOfMeasures#56546, unitOfMeasureConversions#56547, productionAspect#56548, salesAspect#56549, procurementAspect#56550, productGroup#56551, filteredUnitOfMeasureConversions#56552, quantityNumerator#56553, quantityDenominator#56554, (cast(quantityNumerator#56553 as double) / cast(quantityDenominator#56554 as double)) AS outboundUnit#56555]
(1976) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, systemId#56540, internalUUID#56541, id#56542, displayId#56543, name#56544, baseUnitOfMeasure#56545, unitOfMeasures#56546, unitOfMeasureConversions#56547, productionAspect#56548, salesAspect#56549, procurementAspect#56550, productGroup#56551, filteredUnitOfMeasureConversions#56552, quantityNumerator#56553, quantityDenominator#56554, CASE WHEN (isnull(outboundUnit#56555) OR (outboundUnit#56555 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56555 END AS outboundUnit#56556]
(1977) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, outboundUnit#56556]
(1978) LogicalRelation
Arguments: parquet, [systemId#56557, internalUUID#56558, product#56559, plant#56560, calculationDateTime#56561, stockQuantities#56562], false
(1979) Repartition
Arguments: 10, true
(1980) LogicalRelation
Arguments: parquet, [marketUnit#56563, description#56564, articleHierarchy#56565, defaultCurrency#56566, responsibilities#56567, replenishmentTypes#56568, distributionCenters#56569, assignedArticleHierarchyNodes#56570, minOrderQtySetting#56571, minOrderQtySettingInternal#56572, listingCheck#56573, odsSelection#56574, demandProfiles#56575, constraintProfiles#56576, optimizationProfiles#56577, orderGroupSplitProfiles#56578, supplierMinimumProfiles#56579, multipleRestrictionProfiles#56580, preferredUomSource#56581, handlingOfUnfulfilledDemands#56582, negligibleQuantitiesThreshold#56583, eventtype#56584], false
(1981) Repartition
Arguments: 10, true
(1982) Filter
Arguments: (marketUnit#56563 <=> DIP_1691)
(1983) Project
Arguments: [marketUnit#56563, description#56564, articleHierarchy#56565, defaultCurrency#56566, responsibilities#56567, replenishmentTypes#56568, distributionCenters#56569, assignedArticleHierarchyNodes#56570, minOrderQtySetting#56571, minOrderQtySettingInternal#56572, listingCheck#56573, odsSelection#56574, demandProfiles#56575, constraintProfiles#56576, optimizationProfiles#56577, orderGroupSplitProfiles#56578, supplierMinimumProfiles#56579, multipleRestrictionProfiles#56580, preferredUomSource#56581, handlingOfUnfulfilledDemands#56582, negligibleQuantitiesThreshold#56583, eventtype#56584]
(1984) Project
Arguments: [distributionCenters#56569]
(1985) Generate
Arguments: explode(distributionCenters#56569), false, [distributionCenters#56585]
(1986) Project
Arguments: [distributionCenters#56585]
(1987) Generate
Arguments: explode(distributionCenters#56585.storageLocations), false, [storageLocations#56586]
(1988) Project
Arguments: [distributionCenters#56585.id AS plantId#56587, distributionCenters#56585.internalRefUUID AS plantUuid#56588, storageLocations#56586]
(1989) Project
Arguments: [plantId#56587, plantUuid#56588, storageLocations#56586.id AS storageLocId#56589, storageLocations#56586.internalRefUUID AS storageLocUuid#56590]
(1990) LogicalRelation
Arguments: parquet, [product#56591, plant#56592, orderDateTime#56593, planningStartDateTime#56594], false
(1991) RepartitionByExpression
Arguments: [product#56591, plant#56592], 10
(1992) Project
Arguments: [product#56591, plant#56592, orderDateTime#56593]
(1993) LogicalRelation
Arguments: parquet, [systemId#56595, internalUUID#56596, plant#56597, product#56598, blockedForReplenishmentStartingFrom#56599, productionAspect#56600, salesPlant#56601, listing#56602], false
(1994) Repartition
Arguments: 10, true
(1995) Project
Arguments: [systemId#56595, internalUUID#56596, plant#56597, product#56598, blockedForReplenishmentStartingFrom#56599, productionAspect#56600, salesPlant#56601, listing#56602, struct(systemId, systemId#56595, internalUUID, internalUUID#56596, plant, plant#56597, product, product#56598, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56599, productionAspect, productionAspect#56600, salesPlant, salesPlant#56601, listing, listing#56602) AS productPlant#56603]
(1996) Project
Arguments: [productPlant#56603]
(1997) Join
Arguments: LeftOuter, ((product#56591 <=> productPlant#56603.product.internalRefUUID) AND (plant#56592 <=> productPlant#56603.plant.internalRefUUID))
(1998) Project
Arguments: [product#56591, plant#56592, orderDateTime#56593, productPlant#56603]
(1999) SubqueryAlias
Arguments: wl
(2000) LogicalRelation
Arguments: parquet, [systemId#56604, internalUUID#56605, id#56606, displayId#56607, name#56608, category#56609, companyCode#56610, address#56611, mainDistributionChain#56612, mainPurchasingOrganization#56613, validPurchasingOrganizations#56614, productGroup#56615], false
(2001) Repartition
Arguments: 10, true
(2002) Project
Arguments: [internalUUID#56605, address#56611.timeZone.code AS timezonecode#56616]
(2003) Join
Arguments: LeftOuter, (plant#56592 <=> internalUUID#56605)
(2004) Project
Arguments: [product#56591, plant#56592, orderDateTime#56593, productPlant#56603, internalUUID#56605, CASE WHEN isnotnull(timezonecode#56616) THEN timezonecode#56616 ELSE UTC END AS timezonecode#56617]
(2005) Project
Arguments: [product#56591, plant#56592, orderDateTime#56593, productPlant#56603, timezonecode#56617]
(2006) LogicalRelation
Arguments: parquet, [systemId#56618, internalUUID#56619, id#56620, displayId#56621, name#56622, baseUnitOfMeasure#56623, unitOfMeasures#56624, unitOfMeasureConversions#56625, productionAspect#56626, salesAspect#56627, procurementAspect#56628, productGroup#56629], false
(2007) Repartition
Arguments: 10, true
(2008) Join
Arguments: LeftOuter, (product#56591 = internalUUID#56619)
(2009) Project
Arguments: [product#56591, plant#56592, orderDateTime#56593, productPlant#56603, timezonecode#56617, systemId#56618, internalUUID#56619, id#56620, displayId#56621, name#56622, baseUnitOfMeasure#56623, unitOfMeasures#56624, unitOfMeasureConversions#56625, productionAspect#56626, salesAspect#56627, procurementAspect#56628, productGroup#56629, filter(unitOfMeasureConversions#56625, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56603.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56603.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56623.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56623.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56630]
(2010) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56630.quantityNumerator), true, [quantityNumerator#56631]
(2011) Project
Arguments: [product#56591, plant#56592, orderDateTime#56593, productPlant#56603, timezonecode#56617, systemId#56618, internalUUID#56619, id#56620, displayId#56621, name#56622, baseUnitOfMeasure#56623, unitOfMeasures#56624, unitOfMeasureConversions#56625, productionAspect#56626, salesAspect#56627, procurementAspect#56628, productGroup#56629, filteredUnitOfMeasureConversions#56630, quantityNumerator#56631]
(2012) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56630.quantityDenominator), true, [quantityDenominator#56632]
(2013) Project
Arguments: [product#56591, plant#56592, orderDateTime#56593, productPlant#56603, timezonecode#56617, systemId#56618, internalUUID#56619, id#56620, displayId#56621, name#56622, baseUnitOfMeasure#56623, unitOfMeasures#56624, unitOfMeasureConversions#56625, productionAspect#56626, salesAspect#56627, procurementAspect#56628, productGroup#56629, filteredUnitOfMeasureConversions#56630, quantityNumerator#56631, quantityDenominator#56632]
(2014) Project
Arguments: [product#56591, plant#56592, orderDateTime#56593, productPlant#56603, timezonecode#56617, systemId#56618, internalUUID#56619, id#56620, displayId#56621, name#56622, baseUnitOfMeasure#56623, unitOfMeasures#56624, unitOfMeasureConversions#56625, productionAspect#56626, salesAspect#56627, procurementAspect#56628, productGroup#56629, filteredUnitOfMeasureConversions#56630, quantityNumerator#56631, quantityDenominator#56632, (cast(quantityNumerator#56631 as double) / cast(quantityDenominator#56632 as double)) AS outboundUnit#56633]
(2015) Project
Arguments: [product#56591, plant#56592, orderDateTime#56593, productPlant#56603, timezonecode#56617, systemId#56618, internalUUID#56619, id#56620, displayId#56621, name#56622, baseUnitOfMeasure#56623, unitOfMeasures#56624, unitOfMeasureConversions#56625, productionAspect#56626, salesAspect#56627, procurementAspect#56628, productGroup#56629, filteredUnitOfMeasureConversions#56630, quantityNumerator#56631, quantityDenominator#56632, CASE WHEN (isnull(outboundUnit#56633) OR (outboundUnit#56633 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56633 END AS outboundUnit#56634]
(2016) Project
Arguments: [product#56591, plant#56592, orderDateTime#56593, productPlant#56603, timezonecode#56617, outboundUnit#56634]
(2017) Project
Arguments: [plant#56592]
(2018) Deduplicate
Arguments: [plant#56592]
(2019) Join
Arguments: Inner, (plantUuid#56588 = plant#56592)
(2020) Project
Arguments: [plantId#56587, plantUuid#56588, storageLocId#56589, storageLocUuid#56590]
(2021) Join
Arguments: Inner, (plant#56560.internalRefUUID <=> plantUuid#56588)
(2022) Generate
Arguments: explode(filter(stockQuantities#56562, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#56590) AND (lambda x#50650.storageLocation.Id = storageLocId#56589)), lambda x#50650, false))), false, [stockQuantity#56635]
(2023) Project
Arguments: [systemId#56557, internalUUID#56558, product#56559, plant#56560, calculationDateTime#56561, stockQuantities#56562, plantId#56587, plantUuid#56588, storageLocId#56589, storageLocUuid#56590, stockQuantity#56635]
(2024) Aggregate
Arguments: [plantUuid#56588, internalUUID#56558, plant#56560, product#56559, systemId#56557], [plantUuid#56588, internalUUID#56558, plant#56560, product#56559, systemId#56557, first(calculationDateTime#56561, false) AS calculationDateTime#56636, collect_list(stockQuantity#56635, 0, 0) AS stockQuantities#56637]
(2025) Project
Arguments: [systemId#56557, internalUUID#56558, product#56559, plant#56560, calculationDateTime#56636, stockQuantities#56637]
(2026) Generate
Arguments: explode(stockQuantities#56637), false, [stockQuantity#56638]
(2027) Project
Arguments: [systemId#56557, internalUUID#56558, product#56559, plant#56560, calculationDateTime#56636, stockQuantities#56637, stockQuantity#56638]
(2028) Project
Arguments: [plant#56560.id AS plant#56639, plant#56560.internalRefUUID AS plantUuid#56640, product#56559.id AS product#56641, product#56559.internalRefUUID AS productUuid#56642, calculationDateTime#56636, stockQuantity#56638.storagelocation.id AS storageLocId#56643, stockQuantity#56638.storagelocation.internalRefUUID AS storageLocUuid#56644, stockQuantity#56638.quantity.measure AS quantity#56645, stockQuantity#56638.specialStockIndicator.code AS specialStockIndicator#56646, stockQuantity#56638.stockType.code AS stockType#56647]
(2029) Filter
Arguments: ((specialStockIndicator#56646 = ) AND (stockType#56647 = 01))
(2030) LogicalRelation
Arguments: parquet, [product#56648, plant#56649, orderDateTime#56650, planningStartDateTime#56651], false
(2031) RepartitionByExpression
Arguments: [product#56648, plant#56649], 10
(2032) Project
Arguments: [product#56648, plant#56649, orderDateTime#56650]
(2033) LogicalRelation
Arguments: parquet, [systemId#56652, internalUUID#56653, plant#56654, product#56655, blockedForReplenishmentStartingFrom#56656, productionAspect#56657, salesPlant#56658, listing#56659], false
(2034) Repartition
Arguments: 10, true
(2035) Project
Arguments: [systemId#56652, internalUUID#56653, plant#56654, product#56655, blockedForReplenishmentStartingFrom#56656, productionAspect#56657, salesPlant#56658, listing#56659, struct(systemId, systemId#56652, internalUUID, internalUUID#56653, plant, plant#56654, product, product#56655, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56656, productionAspect, productionAspect#56657, salesPlant, salesPlant#56658, listing, listing#56659) AS productPlant#56660]
(2036) Project
Arguments: [productPlant#56660]
(2037) Join
Arguments: LeftOuter, ((product#56648 <=> productPlant#56660.product.internalRefUUID) AND (plant#56649 <=> productPlant#56660.plant.internalRefUUID))
(2038) Project
Arguments: [product#56648, plant#56649, orderDateTime#56650, productPlant#56660]
(2039) SubqueryAlias
Arguments: wl
(2040) LogicalRelation
Arguments: parquet, [systemId#56661, internalUUID#56662, id#56663, displayId#56664, name#56665, category#56666, companyCode#56667, address#56668, mainDistributionChain#56669, mainPurchasingOrganization#56670, validPurchasingOrganizations#56671, productGroup#56672], false
(2041) Repartition
Arguments: 10, true
(2042) Project
Arguments: [internalUUID#56662, address#56668.timeZone.code AS timezonecode#56673]
(2043) Join
Arguments: LeftOuter, (plant#56649 <=> internalUUID#56662)
(2044) Project
Arguments: [product#56648, plant#56649, orderDateTime#56650, productPlant#56660, internalUUID#56662, CASE WHEN isnotnull(timezonecode#56673) THEN timezonecode#56673 ELSE UTC END AS timezonecode#56674]
(2045) Project
Arguments: [product#56648, plant#56649, orderDateTime#56650, productPlant#56660, timezonecode#56674]
(2046) LogicalRelation
Arguments: parquet, [systemId#56675, internalUUID#56676, id#56677, displayId#56678, name#56679, baseUnitOfMeasure#56680, unitOfMeasures#56681, unitOfMeasureConversions#56682, productionAspect#56683, salesAspect#56684, procurementAspect#56685, productGroup#56686], false
(2047) Repartition
Arguments: 10, true
(2048) Join
Arguments: LeftOuter, (product#56648 = internalUUID#56676)
(2049) Project
Arguments: [product#56648, plant#56649, orderDateTime#56650, productPlant#56660, timezonecode#56674, systemId#56675, internalUUID#56676, id#56677, displayId#56678, name#56679, baseUnitOfMeasure#56680, unitOfMeasures#56681, unitOfMeasureConversions#56682, productionAspect#56683, salesAspect#56684, procurementAspect#56685, productGroup#56686, filter(unitOfMeasureConversions#56682, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56660.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56660.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56680.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56680.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56687]
(2050) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56687.quantityNumerator), true, [quantityNumerator#56688]
(2051) Project
Arguments: [product#56648, plant#56649, orderDateTime#56650, productPlant#56660, timezonecode#56674, systemId#56675, internalUUID#56676, id#56677, displayId#56678, name#56679, baseUnitOfMeasure#56680, unitOfMeasures#56681, unitOfMeasureConversions#56682, productionAspect#56683, salesAspect#56684, procurementAspect#56685, productGroup#56686, filteredUnitOfMeasureConversions#56687, quantityNumerator#56688]
(2052) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56687.quantityDenominator), true, [quantityDenominator#56689]
(2053) Project
Arguments: [product#56648, plant#56649, orderDateTime#56650, productPlant#56660, timezonecode#56674, systemId#56675, internalUUID#56676, id#56677, displayId#56678, name#56679, baseUnitOfMeasure#56680, unitOfMeasures#56681, unitOfMeasureConversions#56682, productionAspect#56683, salesAspect#56684, procurementAspect#56685, productGroup#56686, filteredUnitOfMeasureConversions#56687, quantityNumerator#56688, quantityDenominator#56689]
(2054) Project
Arguments: [product#56648, plant#56649, orderDateTime#56650, productPlant#56660, timezonecode#56674, systemId#56675, internalUUID#56676, id#56677, displayId#56678, name#56679, baseUnitOfMeasure#56680, unitOfMeasures#56681, unitOfMeasureConversions#56682, productionAspect#56683, salesAspect#56684, procurementAspect#56685, productGroup#56686, filteredUnitOfMeasureConversions#56687, quantityNumerator#56688, quantityDenominator#56689, (cast(quantityNumerator#56688 as double) / cast(quantityDenominator#56689 as double)) AS outboundUnit#56690]
(2055) Project
Arguments: [product#56648, plant#56649, orderDateTime#56650, productPlant#56660, timezonecode#56674, systemId#56675, internalUUID#56676, id#56677, displayId#56678, name#56679, baseUnitOfMeasure#56680, unitOfMeasures#56681, unitOfMeasureConversions#56682, productionAspect#56683, salesAspect#56684, procurementAspect#56685, productGroup#56686, filteredUnitOfMeasureConversions#56687, quantityNumerator#56688, quantityDenominator#56689, CASE WHEN (isnull(outboundUnit#56690) OR (outboundUnit#56690 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56690 END AS outboundUnit#56691]
(2056) Project
Arguments: [product#56648, plant#56649, orderDateTime#56650, productPlant#56660, timezonecode#56674, outboundUnit#56691]
(2057) Join
Arguments: Inner, ((plantUuid#56640 = plant#56649) AND (productUuid#56642 = product#56648))
(2058) Filter
Arguments: (calculationDateTime#56636 <= orderDateTime#56650)
(2059) Project
Arguments: [plantUuid#56640 AS plant#56692, productUuid#56642 AS product#56693, storageLocId#56643, calculationDateTime#56636, quantity#56645]
(2060) LogicalRelation
Arguments: parquet, [systemId#56694, internalUUID#56695, product#56696, plant#56697, calculationDateTime#56698, stockQuantities#56699], false
(2061) Repartition
Arguments: 10, true
(2062) LogicalRelation
Arguments: parquet, [marketUnit#56700, description#56701, articleHierarchy#56702, defaultCurrency#56703, responsibilities#56704, replenishmentTypes#56705, distributionCenters#56706, assignedArticleHierarchyNodes#56707, minOrderQtySetting#56708, minOrderQtySettingInternal#56709, listingCheck#56710, odsSelection#56711, demandProfiles#56712, constraintProfiles#56713, optimizationProfiles#56714, orderGroupSplitProfiles#56715, supplierMinimumProfiles#56716, multipleRestrictionProfiles#56717, preferredUomSource#56718, handlingOfUnfulfilledDemands#56719, negligibleQuantitiesThreshold#56720, eventtype#56721], false
(2063) Repartition
Arguments: 10, true
(2064) Filter
Arguments: (marketUnit#56700 <=> DIP_1691)
(2065) Project
Arguments: [marketUnit#56700, description#56701, articleHierarchy#56702, defaultCurrency#56703, responsibilities#56704, replenishmentTypes#56705, distributionCenters#56706, assignedArticleHierarchyNodes#56707, minOrderQtySetting#56708, minOrderQtySettingInternal#56709, listingCheck#56710, odsSelection#56711, demandProfiles#56712, constraintProfiles#56713, optimizationProfiles#56714, orderGroupSplitProfiles#56715, supplierMinimumProfiles#56716, multipleRestrictionProfiles#56717, preferredUomSource#56718, handlingOfUnfulfilledDemands#56719, negligibleQuantitiesThreshold#56720, eventtype#56721]
(2066) Project
Arguments: [distributionCenters#56706]
(2067) Generate
Arguments: explode(distributionCenters#56706), false, [distributionCenters#56722]
(2068) Project
Arguments: [distributionCenters#56722]
(2069) Generate
Arguments: explode(distributionCenters#56722.storageLocations), false, [storageLocations#56723]
(2070) Project
Arguments: [distributionCenters#56722.id AS plantId#56724, distributionCenters#56722.internalRefUUID AS plantUuid#56725, storageLocations#56723]
(2071) Project
Arguments: [plantId#56724, plantUuid#56725, storageLocations#56723.id AS storageLocId#56726, storageLocations#56723.internalRefUUID AS storageLocUuid#56727]
(2072) LogicalRelation
Arguments: parquet, [product#56728, plant#56729, orderDateTime#56730, planningStartDateTime#56731], false
(2073) RepartitionByExpression
Arguments: [product#56728, plant#56729], 10
(2074) Project
Arguments: [product#56728, plant#56729, orderDateTime#56730]
(2075) LogicalRelation
Arguments: parquet, [systemId#56732, internalUUID#56733, plant#56734, product#56735, blockedForReplenishmentStartingFrom#56736, productionAspect#56737, salesPlant#56738, listing#56739], false
(2076) Repartition
Arguments: 10, true
(2077) Project
Arguments: [systemId#56732, internalUUID#56733, plant#56734, product#56735, blockedForReplenishmentStartingFrom#56736, productionAspect#56737, salesPlant#56738, listing#56739, struct(systemId, systemId#56732, internalUUID, internalUUID#56733, plant, plant#56734, product, product#56735, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56736, productionAspect, productionAspect#56737, salesPlant, salesPlant#56738, listing, listing#56739) AS productPlant#56740]
(2078) Project
Arguments: [productPlant#56740]
(2079) Join
Arguments: LeftOuter, ((product#56728 <=> productPlant#56740.product.internalRefUUID) AND (plant#56729 <=> productPlant#56740.plant.internalRefUUID))
(2080) Project
Arguments: [product#56728, plant#56729, orderDateTime#56730, productPlant#56740]
(2081) SubqueryAlias
Arguments: wl
(2082) LogicalRelation
Arguments: parquet, [systemId#56741, internalUUID#56742, id#56743, displayId#56744, name#56745, category#56746, companyCode#56747, address#56748, mainDistributionChain#56749, mainPurchasingOrganization#56750, validPurchasingOrganizations#56751, productGroup#56752], false
(2083) Repartition
Arguments: 10, true
(2084) Project
Arguments: [internalUUID#56742, address#56748.timeZone.code AS timezonecode#56753]
(2085) Join
Arguments: LeftOuter, (plant#56729 <=> internalUUID#56742)
(2086) Project
Arguments: [product#56728, plant#56729, orderDateTime#56730, productPlant#56740, internalUUID#56742, CASE WHEN isnotnull(timezonecode#56753) THEN timezonecode#56753 ELSE UTC END AS timezonecode#56754]
(2087) Project
Arguments: [product#56728, plant#56729, orderDateTime#56730, productPlant#56740, timezonecode#56754]
(2088) LogicalRelation
Arguments: parquet, [systemId#56755, internalUUID#56756, id#56757, displayId#56758, name#56759, baseUnitOfMeasure#56760, unitOfMeasures#56761, unitOfMeasureConversions#56762, productionAspect#56763, salesAspect#56764, procurementAspect#56765, productGroup#56766], false
(2089) Repartition
Arguments: 10, true
(2090) Join
Arguments: LeftOuter, (product#56728 = internalUUID#56756)
(2091) Project
Arguments: [product#56728, plant#56729, orderDateTime#56730, productPlant#56740, timezonecode#56754, systemId#56755, internalUUID#56756, id#56757, displayId#56758, name#56759, baseUnitOfMeasure#56760, unitOfMeasures#56761, unitOfMeasureConversions#56762, productionAspect#56763, salesAspect#56764, procurementAspect#56765, productGroup#56766, filter(unitOfMeasureConversions#56762, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56740.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56740.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56760.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56760.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56767]
(2092) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56767.quantityNumerator), true, [quantityNumerator#56768]
(2093) Project
Arguments: [product#56728, plant#56729, orderDateTime#56730, productPlant#56740, timezonecode#56754, systemId#56755, internalUUID#56756, id#56757, displayId#56758, name#56759, baseUnitOfMeasure#56760, unitOfMeasures#56761, unitOfMeasureConversions#56762, productionAspect#56763, salesAspect#56764, procurementAspect#56765, productGroup#56766, filteredUnitOfMeasureConversions#56767, quantityNumerator#56768]
(2094) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56767.quantityDenominator), true, [quantityDenominator#56769]
(2095) Project
Arguments: [product#56728, plant#56729, orderDateTime#56730, productPlant#56740, timezonecode#56754, systemId#56755, internalUUID#56756, id#56757, displayId#56758, name#56759, baseUnitOfMeasure#56760, unitOfMeasures#56761, unitOfMeasureConversions#56762, productionAspect#56763, salesAspect#56764, procurementAspect#56765, productGroup#56766, filteredUnitOfMeasureConversions#56767, quantityNumerator#56768, quantityDenominator#56769]
(2096) Project
Arguments: [product#56728, plant#56729, orderDateTime#56730, productPlant#56740, timezonecode#56754, systemId#56755, internalUUID#56756, id#56757, displayId#56758, name#56759, baseUnitOfMeasure#56760, unitOfMeasures#56761, unitOfMeasureConversions#56762, productionAspect#56763, salesAspect#56764, procurementAspect#56765, productGroup#56766, filteredUnitOfMeasureConversions#56767, quantityNumerator#56768, quantityDenominator#56769, (cast(quantityNumerator#56768 as double) / cast(quantityDenominator#56769 as double)) AS outboundUnit#56770]
(2097) Project
Arguments: [product#56728, plant#56729, orderDateTime#56730, productPlant#56740, timezonecode#56754, systemId#56755, internalUUID#56756, id#56757, displayId#56758, name#56759, baseUnitOfMeasure#56760, unitOfMeasures#56761, unitOfMeasureConversions#56762, productionAspect#56763, salesAspect#56764, procurementAspect#56765, productGroup#56766, filteredUnitOfMeasureConversions#56767, quantityNumerator#56768, quantityDenominator#56769, CASE WHEN (isnull(outboundUnit#56770) OR (outboundUnit#56770 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56770 END AS outboundUnit#56771]
(2098) Project
Arguments: [product#56728, plant#56729, orderDateTime#56730, productPlant#56740, timezonecode#56754, outboundUnit#56771]
(2099) Project
Arguments: [plant#56729]
(2100) Deduplicate
Arguments: [plant#56729]
(2101) Join
Arguments: Inner, (plantUuid#56725 = plant#56729)
(2102) Project
Arguments: [plantId#56724, plantUuid#56725, storageLocId#56726, storageLocUuid#56727]
(2103) Join
Arguments: Inner, (plant#56697.internalRefUUID <=> plantUuid#56725)
(2104) Generate
Arguments: explode(filter(stockQuantities#56699, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#56727) AND (lambda x#50650.storageLocation.Id = storageLocId#56726)), lambda x#50650, false))), false, [stockQuantity#56772]
(2105) Project
Arguments: [systemId#56694, internalUUID#56695, product#56696, plant#56697, calculationDateTime#56698, stockQuantities#56699, plantId#56724, plantUuid#56725, storageLocId#56726, storageLocUuid#56727, stockQuantity#56772]
(2106) Aggregate
Arguments: [plantUuid#56725, internalUUID#56695, plant#56697, product#56696, systemId#56694], [plantUuid#56725, internalUUID#56695, plant#56697, product#56696, systemId#56694, first(calculationDateTime#56698, false) AS calculationDateTime#56773, collect_list(stockQuantity#56772, 0, 0) AS stockQuantities#56774]
(2107) Project
Arguments: [systemId#56694, internalUUID#56695, product#56696, plant#56697, calculationDateTime#56773, stockQuantities#56774]
(2108) Generate
Arguments: explode(stockQuantities#56774), false, [stockQuantity#56775]
(2109) Project
Arguments: [systemId#56694, internalUUID#56695, product#56696, plant#56697, calculationDateTime#56773, stockQuantities#56774, stockQuantity#56775]
(2110) Project
Arguments: [plant#56697.id AS plant#56776, plant#56697.internalRefUUID AS plantUuid#56777, product#56696.id AS product#56778, product#56696.internalRefUUID AS productUuid#56779, calculationDateTime#56773, stockQuantity#56775.storagelocation.id AS storageLocId#56780, stockQuantity#56775.storagelocation.internalRefUUID AS storageLocUuid#56781, stockQuantity#56775.quantity.measure AS quantity#56782, stockQuantity#56775.specialStockIndicator.code AS specialStockIndicator#56783, stockQuantity#56775.stockType.code AS stockType#56784]
(2111) Filter
Arguments: ((specialStockIndicator#56783 = ) AND (stockType#56784 = 01))
(2112) LogicalRelation
Arguments: parquet, [product#56785, plant#56786, orderDateTime#56787, planningStartDateTime#56788], false
(2113) RepartitionByExpression
Arguments: [product#56785, plant#56786], 10
(2114) Project
Arguments: [product#56785, plant#56786, orderDateTime#56787]
(2115) LogicalRelation
Arguments: parquet, [systemId#56789, internalUUID#56790, plant#56791, product#56792, blockedForReplenishmentStartingFrom#56793, productionAspect#56794, salesPlant#56795, listing#56796], false
(2116) Repartition
Arguments: 10, true
(2117) Project
Arguments: [systemId#56789, internalUUID#56790, plant#56791, product#56792, blockedForReplenishmentStartingFrom#56793, productionAspect#56794, salesPlant#56795, listing#56796, struct(systemId, systemId#56789, internalUUID, internalUUID#56790, plant, plant#56791, product, product#56792, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56793, productionAspect, productionAspect#56794, salesPlant, salesPlant#56795, listing, listing#56796) AS productPlant#56797]
(2118) Project
Arguments: [productPlant#56797]
(2119) Join
Arguments: LeftOuter, ((product#56785 <=> productPlant#56797.product.internalRefUUID) AND (plant#56786 <=> productPlant#56797.plant.internalRefUUID))
(2120) Project
Arguments: [product#56785, plant#56786, orderDateTime#56787, productPlant#56797]
(2121) SubqueryAlias
Arguments: wl
(2122) LogicalRelation
Arguments: parquet, [systemId#56798, internalUUID#56799, id#56800, displayId#56801, name#56802, category#56803, companyCode#56804, address#56805, mainDistributionChain#56806, mainPurchasingOrganization#56807, validPurchasingOrganizations#56808, productGroup#56809], false
(2123) Repartition
Arguments: 10, true
(2124) Project
Arguments: [internalUUID#56799, address#56805.timeZone.code AS timezonecode#56810]
(2125) Join
Arguments: LeftOuter, (plant#56786 <=> internalUUID#56799)
(2126) Project
Arguments: [product#56785, plant#56786, orderDateTime#56787, productPlant#56797, internalUUID#56799, CASE WHEN isnotnull(timezonecode#56810) THEN timezonecode#56810 ELSE UTC END AS timezonecode#56811]
(2127) Project
Arguments: [product#56785, plant#56786, orderDateTime#56787, productPlant#56797, timezonecode#56811]
(2128) LogicalRelation
Arguments: parquet, [systemId#56812, internalUUID#56813, id#56814, displayId#56815, name#56816, baseUnitOfMeasure#56817, unitOfMeasures#56818, unitOfMeasureConversions#56819, productionAspect#56820, salesAspect#56821, procurementAspect#56822, productGroup#56823], false
(2129) Repartition
Arguments: 10, true
(2130) Join
Arguments: LeftOuter, (product#56785 = internalUUID#56813)
(2131) Project
Arguments: [product#56785, plant#56786, orderDateTime#56787, productPlant#56797, timezonecode#56811, systemId#56812, internalUUID#56813, id#56814, displayId#56815, name#56816, baseUnitOfMeasure#56817, unitOfMeasures#56818, unitOfMeasureConversions#56819, productionAspect#56820, salesAspect#56821, procurementAspect#56822, productGroup#56823, filter(unitOfMeasureConversions#56819, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56797.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56797.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56817.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56817.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56824]
(2132) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56824.quantityNumerator), true, [quantityNumerator#56825]
(2133) Project
Arguments: [product#56785, plant#56786, orderDateTime#56787, productPlant#56797, timezonecode#56811, systemId#56812, internalUUID#56813, id#56814, displayId#56815, name#56816, baseUnitOfMeasure#56817, unitOfMeasures#56818, unitOfMeasureConversions#56819, productionAspect#56820, salesAspect#56821, procurementAspect#56822, productGroup#56823, filteredUnitOfMeasureConversions#56824, quantityNumerator#56825]
(2134) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56824.quantityDenominator), true, [quantityDenominator#56826]
(2135) Project
Arguments: [product#56785, plant#56786, orderDateTime#56787, productPlant#56797, timezonecode#56811, systemId#56812, internalUUID#56813, id#56814, displayId#56815, name#56816, baseUnitOfMeasure#56817, unitOfMeasures#56818, unitOfMeasureConversions#56819, productionAspect#56820, salesAspect#56821, procurementAspect#56822, productGroup#56823, filteredUnitOfMeasureConversions#56824, quantityNumerator#56825, quantityDenominator#56826]
(2136) Project
Arguments: [product#56785, plant#56786, orderDateTime#56787, productPlant#56797, timezonecode#56811, systemId#56812, internalUUID#56813, id#56814, displayId#56815, name#56816, baseUnitOfMeasure#56817, unitOfMeasures#56818, unitOfMeasureConversions#56819, productionAspect#56820, salesAspect#56821, procurementAspect#56822, productGroup#56823, filteredUnitOfMeasureConversions#56824, quantityNumerator#56825, quantityDenominator#56826, (cast(quantityNumerator#56825 as double) / cast(quantityDenominator#56826 as double)) AS outboundUnit#56827]
(2137) Project
Arguments: [product#56785, plant#56786, orderDateTime#56787, productPlant#56797, timezonecode#56811, systemId#56812, internalUUID#56813, id#56814, displayId#56815, name#56816, baseUnitOfMeasure#56817, unitOfMeasures#56818, unitOfMeasureConversions#56819, productionAspect#56820, salesAspect#56821, procurementAspect#56822, productGroup#56823, filteredUnitOfMeasureConversions#56824, quantityNumerator#56825, quantityDenominator#56826, CASE WHEN (isnull(outboundUnit#56827) OR (outboundUnit#56827 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56827 END AS outboundUnit#56828]
(2138) Project
Arguments: [product#56785, plant#56786, orderDateTime#56787, productPlant#56797, timezonecode#56811, outboundUnit#56828]
(2139) Join
Arguments: Inner, ((plantUuid#56777 = plant#56786) AND (productUuid#56779 = product#56785))
(2140) Filter
Arguments: (calculationDateTime#56773 <= orderDateTime#56787)
(2141) Project
Arguments: [plantUuid#56777 AS plant#56829, productUuid#56779 AS product#56830, storageLocId#56780, calculationDateTime#56773, quantity#56782]
(2142) Aggregate
Arguments: [plant#56829, product#56830, storageLocId#56780], [plant#56829, product#56830, storageLocId#56780, max(calculationDateTime#56773) AS max_calc_datetime#56831]
(2143) Join
Arguments: Inner, ((((plant#56692 <=> plant#56829) AND (product#56693 <=> product#56830)) AND (storageLocId#56643 <=> storageLocId#56780)) AND (calculationDateTime#56636 <=> max_calc_datetime#56831))
(2144) Project
Arguments: [plant#56692, product#56693, storageLocId#56643, calculationDateTime#56636, quantity#56645]
(2145) Aggregate
Arguments: [product#56693, plant#56692], [product#56693, plant#56692, sum(quantity#56645) AS quantitySum#56832, min(calculationDateTime#56636) AS minCalculationDateTime#56833]
(2146) Project
Arguments: [product#56693, plant#56692, quantitySum#56832, minCalculationDateTime#56833, round(quantitySum#56832, 0) AS roundedQuantitySum#56834]
(2147) Join
Arguments: LeftOuter, ((plant#56514 = plant#56692) AND (product#56513 = product#56693))
(2148) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, outboundUnit#56556, roundedQuantitySum#56834, minCalculationDateTime#56833]
(2149) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, outboundUnit#56556, roundedQuantitySum#56834, minCalculationDateTime#56833, CASE WHEN isnotnull(minCalculationDateTime#56833) THEN minCalculationDateTime#56833 ELSE orderDateTime#56515 END AS stockDatetime#56835]
(2150) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, outboundUnit#56556, roundedQuantitySum#56834, minCalculationDateTime#56833, stockDatetime#56835, CASE WHEN isnotnull(roundedQuantitySum#56834) THEN array(roundedQuantitySum#56834) ELSE array(0.0) END AS stockBatchQuantities#56836]
(2151) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, outboundUnit#56556, roundedQuantitySum#56834, minCalculationDateTime#56833, stockDatetime#56835, stockBatchQuantities#56836, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#56837]
(2152) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, outboundUnit#56556, roundedQuantitySum#56834, stockDatetime#56835, stockBatchQuantities#56836, stockBatchShelfLifeEndDatetimes#56837]
(2153) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, outboundUnit#56556, stockDatetime#56835, stockBatchQuantities#56836, stockBatchShelfLifeEndDatetimes#56837]
(2154) LogicalRelation
Arguments: parquet, [product#56838, plant#56839, demandChannel#56840, demandStream#56841, considerVariance#56842, demandTimeBuckets#56843, demandPointInTimeStart#56844, demandPointInTimeEnd#56845, demandPointInTime#56846], false
(2155) Join
Arguments: LeftOuter, ((product#56513 = product#56838) AND (plant#56514 = plant#56839))
(2156) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, outboundUnit#56556, stockDatetime#56835, stockBatchQuantities#56836, stockBatchShelfLifeEndDatetimes#56837, demandChannel#56840, demandStream#56841, considerVariance#56842, demandTimeBuckets#56843, demandPointInTimeStart#56844, demandPointInTimeEnd#56845, demandPointInTime#56846, product#56838, plant#56839]
(2157) Project
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, outboundUnit#56556, stockDatetime#56835, stockBatchQuantities#56836, stockBatchShelfLifeEndDatetimes#56837, demandChannel#56840, demandStream#56841, considerVariance#56842, demandTimeBuckets#56843, demandPointInTimeStart#56844, demandPointInTimeEnd#56845, demandPointInTime#56846, CASE WHEN isnotnull(product#56838) THEN struct(demandChannel, demandChannel#56840, demandStream, demandStream#56841, considerVariance, considerVariance#56842, demandTimeBuckets, demandTimeBuckets#56843, demandPointInTimeStart, demandPointInTimeStart#56844, demandPointInTimeEnd, demandPointInTimeEnd#56845, demandPointInTime, demandPointInTime#56846) 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#56847]
(2158) Aggregate
Arguments: [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, outboundUnit#56556, stockDatetime#56835, stockBatchQuantities#56836, stockBatchShelfLifeEndDatetimes#56837], [product#56513, plant#56514, orderDateTime#56515, productPlant#56525, timezonecode#56539, outboundUnit#56556, stockDatetime#56835, stockBatchQuantities#56836, stockBatchShelfLifeEndDatetimes#56837, collect_list(rawDemands#56847, 0, 0) AS rawDemands#56848]
(2159) DeserializeToObject
Arguments: createexternalrow(invoke(product#56513.toString()), invoke(plant#56514.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#56515)), if (isnull(productPlant#56525)) null else createexternalrow(invoke(productPlant#56525.systemId.toString()), invoke(productPlant#56525.internalUUID.toString()), if (isnull(productPlant#56525.plant)) null else createexternalrow(invoke(productPlant#56525.plant.internalRefUUID.toString()), invoke(productPlant#56525.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#56525.product)) null else createexternalrow(invoke(productPlant#56525.product.internalRefUUID.toString()), invoke(productPlant#56525.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#56525.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#56525.productionAspect)) null else createexternalrow(if (isnull(productPlant#56525.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#56525.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#56525.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#56525.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#56525.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#56525.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#56525.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#56525.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#56525.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#56525.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#56525.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#56525.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#56525.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#56525.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#56525.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#56525.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#56525.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#56525.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#56525.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#56525.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#56525.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#56525.salesPlant)) null else createexternalrow(if (isnull(productPlant#56525.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#56525.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#56525.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, 7092), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#56525.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#56539.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#56556)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#56835)), mapobjects(lambdavariable(MapObject, DoubleType, true, 7093), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 7093) as double))), stockBatchQuantities#56836, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 7094), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 7094) as timestamp)))), stockBatchShelfLifeEndDatetimes#56837, 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, 7095), 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, 7095))) 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, 7095).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, 7095).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, 7095).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).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, 7095).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, 7095).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, 7095).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).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, 7095).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#56848, 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#51012: org.apache.spark.sql.Row
(2160) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, 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#51017: 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#56849, 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#56850, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7083), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7083), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7084), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7084), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7085), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7085), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7086), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7086), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7087), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7087), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#56851, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7089), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7089), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7090), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7090), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7091), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7091), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#56852]
(2162) Join
Arguments: LeftOuter, ((plant#56850 <=> plant#56189) AND (product#56849 <=> product#56188))
(2163) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, outboundUnit#56231, stockDatetime#56510, stockBatchQuantities#56511, stockBatchShelfLifeEndDatetimes#56512, plant#56850, dayBucketDemands#56851, pointInTimeDemands#56852]
(2164) Project
Arguments: [product#56188, plant#56189, orderDateTime#56190, productPlant#56200, timezonecode#56214, outboundUnit#56231, stockDatetime#56510, stockBatchQuantities#56511, stockBatchShelfLifeEndDatetimes#56512, dayBucketDemands#56851, pointInTimeDemands#56852]
(2165) LogicalRelation
Arguments: parquet, [marketUnit#56853, description#56854, articleHierarchy#56855, defaultCurrency#56856, responsibilities#56857, replenishmentTypes#56858, distributionCenters#56859, assignedArticleHierarchyNodes#56860, minOrderQtySetting#56861, minOrderQtySettingInternal#56862, listingCheck#56863, odsSelection#56864, demandProfiles#56865, constraintProfiles#56866, optimizationProfiles#56867, orderGroupSplitProfiles#56868, supplierMinimumProfiles#56869, multipleRestrictionProfiles#56870, preferredUomSource#56871, handlingOfUnfulfilledDemands#56872, negligibleQuantitiesThreshold#56873, eventtype#56874], false
(2166) Repartition
Arguments: 10, true
(2167) Filter
Arguments: (marketUnit#56853 <=> DIP_1691)
(2168) Project
Arguments: [marketUnit#56853, description#56854, articleHierarchy#56855, defaultCurrency#56856, responsibilities#56857, replenishmentTypes#56858, distributionCenters#56859, assignedArticleHierarchyNodes#56860, minOrderQtySetting#56861, minOrderQtySettingInternal#56862, listingCheck#56863, odsSelection#56864, demandProfiles#56865, constraintProfiles#56866, optimizationProfiles#56867, orderGroupSplitProfiles#56868, supplierMinimumProfiles#56869, multipleRestrictionProfiles#56870, preferredUomSource#56871, handlingOfUnfulfilledDemands#56872, negligibleQuantitiesThreshold#56873, eventtype#56874]
(2169) Project
Arguments: [distributionCenters#56859]
(2170) Generate
Arguments: explode(distributionCenters#56859), false, [distributionCenters#56875]
(2171) Project
Arguments: [distributionCenters#56875]
(2172) Generate
Arguments: explode(distributionCenters#56875.storageLocations), false, [storageLocations#56876]
(2173) Project
Arguments: [distributionCenters#56875.id AS plantId#56877, distributionCenters#56875.internalRefUUID AS plantUuid#56878, storageLocations#56876]
(2174) Project
Arguments: [plantId#56877, plantUuid#56878, storageLocations#56876.id AS storageLocId#56879, storageLocations#56876.internalRefUUID AS storageLocUuid#56880]
(2175) LogicalRelation
Arguments: parquet, [product#56881, plant#56882, orderDateTime#56883, planningStartDateTime#56884], false
(2176) RepartitionByExpression
Arguments: [product#56881, plant#56882], 10
(2177) Project
Arguments: [product#56881, plant#56882, orderDateTime#56883]
(2178) LogicalRelation
Arguments: parquet, [systemId#56885, internalUUID#56886, plant#56887, product#56888, blockedForReplenishmentStartingFrom#56889, productionAspect#56890, salesPlant#56891, listing#56892], false
(2179) Repartition
Arguments: 10, true
(2180) Project
Arguments: [systemId#56885, internalUUID#56886, plant#56887, product#56888, blockedForReplenishmentStartingFrom#56889, productionAspect#56890, salesPlant#56891, listing#56892, struct(systemId, systemId#56885, internalUUID, internalUUID#56886, plant, plant#56887, product, product#56888, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56889, productionAspect, productionAspect#56890, salesPlant, salesPlant#56891, listing, listing#56892) AS productPlant#56893]
(2181) Project
Arguments: [productPlant#56893]
(2182) Join
Arguments: LeftOuter, ((product#56881 <=> productPlant#56893.product.internalRefUUID) AND (plant#56882 <=> productPlant#56893.plant.internalRefUUID))
(2183) Project
Arguments: [product#56881, plant#56882, orderDateTime#56883, productPlant#56893]
(2184) SubqueryAlias
Arguments: wl
(2185) LogicalRelation
Arguments: parquet, [systemId#56894, internalUUID#56895, id#56896, displayId#56897, name#56898, category#56899, companyCode#56900, address#56901, mainDistributionChain#56902, mainPurchasingOrganization#56903, validPurchasingOrganizations#56904, productGroup#56905], false
(2186) Repartition
Arguments: 10, true
(2187) Project
Arguments: [internalUUID#56895, address#56901.timeZone.code AS timezonecode#56906]
(2188) Join
Arguments: LeftOuter, (plant#56882 <=> internalUUID#56895)
(2189) Project
Arguments: [product#56881, plant#56882, orderDateTime#56883, productPlant#56893, internalUUID#56895, CASE WHEN isnotnull(timezonecode#56906) THEN timezonecode#56906 ELSE UTC END AS timezonecode#56907]
(2190) Project
Arguments: [product#56881, plant#56882, orderDateTime#56883, productPlant#56893, timezonecode#56907]
(2191) LogicalRelation
Arguments: parquet, [systemId#56908, internalUUID#56909, id#56910, displayId#56911, name#56912, baseUnitOfMeasure#56913, unitOfMeasures#56914, unitOfMeasureConversions#56915, productionAspect#56916, salesAspect#56917, procurementAspect#56918, productGroup#56919], false
(2192) Repartition
Arguments: 10, true
(2193) Join
Arguments: LeftOuter, (product#56881 = internalUUID#56909)
(2194) Project
Arguments: [product#56881, plant#56882, orderDateTime#56883, productPlant#56893, timezonecode#56907, systemId#56908, internalUUID#56909, id#56910, displayId#56911, name#56912, baseUnitOfMeasure#56913, unitOfMeasures#56914, unitOfMeasureConversions#56915, productionAspect#56916, salesAspect#56917, procurementAspect#56918, productGroup#56919, filter(unitOfMeasureConversions#56915, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56893.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56893.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56913.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56913.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56920]
(2195) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56920.quantityNumerator), true, [quantityNumerator#56921]
(2196) Project
Arguments: [product#56881, plant#56882, orderDateTime#56883, productPlant#56893, timezonecode#56907, systemId#56908, internalUUID#56909, id#56910, displayId#56911, name#56912, baseUnitOfMeasure#56913, unitOfMeasures#56914, unitOfMeasureConversions#56915, productionAspect#56916, salesAspect#56917, procurementAspect#56918, productGroup#56919, filteredUnitOfMeasureConversions#56920, quantityNumerator#56921]
(2197) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56920.quantityDenominator), true, [quantityDenominator#56922]
(2198) Project
Arguments: [product#56881, plant#56882, orderDateTime#56883, productPlant#56893, timezonecode#56907, systemId#56908, internalUUID#56909, id#56910, displayId#56911, name#56912, baseUnitOfMeasure#56913, unitOfMeasures#56914, unitOfMeasureConversions#56915, productionAspect#56916, salesAspect#56917, procurementAspect#56918, productGroup#56919, filteredUnitOfMeasureConversions#56920, quantityNumerator#56921, quantityDenominator#56922]
(2199) Project
Arguments: [product#56881, plant#56882, orderDateTime#56883, productPlant#56893, timezonecode#56907, systemId#56908, internalUUID#56909, id#56910, displayId#56911, name#56912, baseUnitOfMeasure#56913, unitOfMeasures#56914, unitOfMeasureConversions#56915, productionAspect#56916, salesAspect#56917, procurementAspect#56918, productGroup#56919, filteredUnitOfMeasureConversions#56920, quantityNumerator#56921, quantityDenominator#56922, (cast(quantityNumerator#56921 as double) / cast(quantityDenominator#56922 as double)) AS outboundUnit#56923]
(2200) Project
Arguments: [product#56881, plant#56882, orderDateTime#56883, productPlant#56893, timezonecode#56907, systemId#56908, internalUUID#56909, id#56910, displayId#56911, name#56912, baseUnitOfMeasure#56913, unitOfMeasures#56914, unitOfMeasureConversions#56915, productionAspect#56916, salesAspect#56917, procurementAspect#56918, productGroup#56919, filteredUnitOfMeasureConversions#56920, quantityNumerator#56921, quantityDenominator#56922, CASE WHEN (isnull(outboundUnit#56923) OR (outboundUnit#56923 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56923 END AS outboundUnit#56924]
(2201) Project
Arguments: [product#56881, plant#56882, orderDateTime#56883, productPlant#56893, timezonecode#56907, outboundUnit#56924]
(2202) Project
Arguments: [plant#56882]
(2203) Deduplicate
Arguments: [plant#56882]
(2204) Join
Arguments: Inner, (plantUuid#56878 = plant#56882)
(2205) Project
Arguments: [plantId#56877, plantUuid#56878, storageLocId#56879, storageLocUuid#56880]
(2206) Project
Arguments: [plantId#56877, plantUuid#56878 AS plant#56925, storageLocId#56879, storageLocUuid#56880]
(2207) Join
Arguments: Inner, (plant#56189 = plant#56925)
(2208) Project
Arguments: [plant#56189, product#56188, orderDateTime#56190, productPlant#56200, timezonecode#56214, outboundUnit#56231, stockDatetime#56510, stockBatchQuantities#56511, stockBatchShelfLifeEndDatetimes#56512, dayBucketDemands#56851, pointInTimeDemands#56852, plantId#56877, storageLocId#56879, storageLocUuid#56880, plant#56925]
(2209) LogicalRelation
Arguments: parquet, [systemId#56926, internalUUID#56927, id#56928, displayId#56929, supplier#56930, type#56931, status#56932, isMarkedForDeletion#56933, items#56934], false
(2210) Repartition
Arguments: 10, true
(2211) Generate
Arguments: explode(items#56934), false, [item#56935]
(2212) Project
Arguments: [id#56928, internalUUID#56927, isMarkedForDeletion#56933, supplier#56930.internalRefUUID AS supplierUuid#56936, item#56935]
(2213) Filter
Arguments: (((NOT isMarkedForDeletion#56933 AND NOT item#56935.deletionIndicator) AND NOT item#56935.completeIndicator) AND NOT item#56935.returnIndicator)
(2214) Project
Arguments: [id#56928, internalUUID#56927, supplierUuid#56936, item#56935.plant.internalRefUUID AS plant#56937, item#56935.product.internalRefUUID AS product#56938, item#56935.storageLocation.internalRefUUID AS storageLocUuid#56939, item#56935.quantityUnit.code AS quantityUom#56940, item#56935.quantityUnit.internalRefUUID AS quantityUomUuid#56941, item#56935.quantityNumerator AS quantityNumerator#56942, item#56935.quantityDenominator AS quantityDenominator#56943, item#56935.scheduleLines AS scheduleLines#56944, item#56935.confirmations AS confirmations#56945]
(2215) Join
Arguments: Inner, (((product#56188 = product#56938) AND (plant#56189 = plant#56937)) AND (storageLocUuid#56880 = storageLocUuid#56939))
(2216) Project
Arguments: [product#56188, plant#56189, storageLocUuid#56880, orderDateTime#56190, productPlant#56200, timezonecode#56214, outboundUnit#56231, stockDatetime#56510, stockBatchQuantities#56511, stockBatchShelfLifeEndDatetimes#56512, dayBucketDemands#56851, pointInTimeDemands#56852, plantId#56877, storageLocId#56879, id#56928, internalUUID#56927, supplierUuid#56936, quantityUom#56940, quantityUomUuid#56941, quantityNumerator#56942, quantityDenominator#56943, scheduleLines#56944, confirmations#56945, product#56938, plant#56937, ... 2 more fields]
(2217) Project
Arguments: [id#56928, internalUUID#56927, supplierUuid#56936, plant#56937, product#56938, storageLocUuid#56939, quantityUom#56940, quantityUomUuid#56941, quantityNumerator#56942, quantityDenominator#56943, scheduleLines#56944, confirmations#56945, stockDatetime#56510, timezonecode#56214]
(2218) Project
Arguments: [id#56928, internalUUID#56927, supplierUuid#56936, plant#56937, product#56938, storageLocUuid#56939, quantityUom#56940, quantityUomUuid#56941, quantityNumerator#56942, quantityDenominator#56943, scheduleLines#56944, confirmations#56945, stockDatetime#56510, timezonecode#56214, array_size(filter(confirmations#56945, lambdafunction((((lambda x_22#51761.deletionIndicator = false) AND (lambda x_22#51761.isRelevantForConfirmation = true)) AND isnotnull(lambda x_22#51761.confirmedDeliveryAt)), lambda x_22#51761, false))) AS _w0#56946]
(2219) Window
Arguments: [sum(_w0#56946) windowspecdefinition(internalUUID#56927, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#56947L], [internalUUID#56927]
(2220) Project
Arguments: [id#56928, internalUUID#56927, supplierUuid#56936, plant#56937, product#56938, storageLocUuid#56939, quantityUom#56940, quantityUomUuid#56941, quantityNumerator#56942, quantityDenominator#56943, scheduleLines#56944, confirmations#56945, stockDatetime#56510, timezonecode#56214, _w0#56946, _we0#56947L, filter(transform(CASE WHEN (_we0#56947L > cast(0 as bigint)) THEN transform(filter(confirmations#56945, lambdafunction((((lambda x_22#51762.deletionIndicator = false) AND (lambda x_22#51762.isRelevantForConfirmation = true)) AND isnotnull(lambda x_22#51762.confirmedDeliveryAt)), lambda x_22#51762, false)), lambdafunction(struct(openQty, greatest((lambda x_23#51765.confirmedQuantity - coalesce(lambda x_23#51765.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_23#51765.confirmedDeliveryAt), lambda x_23#51765, false)) ELSE transform(scheduleLines#56944, lambdafunction(struct(openQty, greatest((lambda x_21#51763.quantity - coalesce(lambda x_21#51763.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_21#51763.deliveryAt), lambda x_21#51763, false)) END, lambdafunction(struct(documentId, id#56928, documentUuid, internalUUID#56927, openQty, lambda x_24#51766.openQty, openQtyInBaseUnit, ((lambda x_24#51766.openQty * quantityNumerator#56942) / quantityDenominator#56943), qtyUom, quantityUom#56940, qtyUomUuid, quantityUomUuid#56941, availabilityDatetime, lambda x_24#51766.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_24#51766, false)), lambdafunction(NOT (lambda x_25#51767.openQty = 0.0), lambda x_25#51767, false)) AS openGoodsMovements#56948]
(2221) Project
Arguments: [id#56928, internalUUID#56927, supplierUuid#56936, plant#56937, product#56938, storageLocUuid#56939, quantityUom#56940, quantityUomUuid#56941, quantityNumerator#56942, quantityDenominator#56943, scheduleLines#56944, confirmations#56945, stockDatetime#56510, timezonecode#56214, openGoodsMovements#56948]
(2222) Aggregate
Arguments: [product#56938, plant#56937], [product#56938, plant#56937, flatten(collect_list(openGoodsMovements#56948, 0, 0)) AS openGoodsMovements#56949]
(2223) Filter
Arguments: (array_size(openGoodsMovements#56949) > 0)
(2224) LogicalRelation
Arguments: parquet, [product#56950, plant#56951, orderDateTime#56952, planningStartDateTime#56953], false
(2225) RepartitionByExpression
Arguments: [product#56950, plant#56951], 10
(2226) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952]
(2227) LogicalRelation
Arguments: parquet, [systemId#56954, internalUUID#56955, plant#56956, product#56957, blockedForReplenishmentStartingFrom#56958, productionAspect#56959, salesPlant#56960, listing#56961], false
(2228) Repartition
Arguments: 10, true
(2229) Project
Arguments: [systemId#56954, internalUUID#56955, plant#56956, product#56957, blockedForReplenishmentStartingFrom#56958, productionAspect#56959, salesPlant#56960, listing#56961, struct(systemId, systemId#56954, internalUUID, internalUUID#56955, plant, plant#56956, product, product#56957, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#56958, productionAspect, productionAspect#56959, salesPlant, salesPlant#56960, listing, listing#56961) AS productPlant#56962]
(2230) Project
Arguments: [productPlant#56962]
(2231) Join
Arguments: LeftOuter, ((product#56950 <=> productPlant#56962.product.internalRefUUID) AND (plant#56951 <=> productPlant#56962.plant.internalRefUUID))
(2232) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962]
(2233) SubqueryAlias
Arguments: wl
(2234) LogicalRelation
Arguments: parquet, [systemId#56963, internalUUID#56964, id#56965, displayId#56966, name#56967, category#56968, companyCode#56969, address#56970, mainDistributionChain#56971, mainPurchasingOrganization#56972, validPurchasingOrganizations#56973, productGroup#56974], false
(2235) Repartition
Arguments: 10, true
(2236) Project
Arguments: [internalUUID#56964, address#56970.timeZone.code AS timezonecode#56975]
(2237) Join
Arguments: LeftOuter, (plant#56951 <=> internalUUID#56964)
(2238) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, internalUUID#56964, CASE WHEN isnotnull(timezonecode#56975) THEN timezonecode#56975 ELSE UTC END AS timezonecode#56976]
(2239) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976]
(2240) LogicalRelation
Arguments: parquet, [systemId#56977, internalUUID#56978, id#56979, displayId#56980, name#56981, baseUnitOfMeasure#56982, unitOfMeasures#56983, unitOfMeasureConversions#56984, productionAspect#56985, salesAspect#56986, procurementAspect#56987, productGroup#56988], false
(2241) Repartition
Arguments: 10, true
(2242) Join
Arguments: LeftOuter, (product#56950 = internalUUID#56978)
(2243) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, systemId#56977, internalUUID#56978, id#56979, displayId#56980, name#56981, baseUnitOfMeasure#56982, unitOfMeasures#56983, unitOfMeasureConversions#56984, productionAspect#56985, salesAspect#56986, procurementAspect#56987, productGroup#56988, filter(unitOfMeasureConversions#56984, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#56962.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#56962.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#56982.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#56982.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#56989]
(2244) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56989.quantityNumerator), true, [quantityNumerator#56990]
(2245) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, systemId#56977, internalUUID#56978, id#56979, displayId#56980, name#56981, baseUnitOfMeasure#56982, unitOfMeasures#56983, unitOfMeasureConversions#56984, productionAspect#56985, salesAspect#56986, procurementAspect#56987, productGroup#56988, filteredUnitOfMeasureConversions#56989, quantityNumerator#56990]
(2246) Generate
Arguments: explode(filteredUnitOfMeasureConversions#56989.quantityDenominator), true, [quantityDenominator#56991]
(2247) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, systemId#56977, internalUUID#56978, id#56979, displayId#56980, name#56981, baseUnitOfMeasure#56982, unitOfMeasures#56983, unitOfMeasureConversions#56984, productionAspect#56985, salesAspect#56986, procurementAspect#56987, productGroup#56988, filteredUnitOfMeasureConversions#56989, quantityNumerator#56990, quantityDenominator#56991]
(2248) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, systemId#56977, internalUUID#56978, id#56979, displayId#56980, name#56981, baseUnitOfMeasure#56982, unitOfMeasures#56983, unitOfMeasureConversions#56984, productionAspect#56985, salesAspect#56986, procurementAspect#56987, productGroup#56988, filteredUnitOfMeasureConversions#56989, quantityNumerator#56990, quantityDenominator#56991, (cast(quantityNumerator#56990 as double) / cast(quantityDenominator#56991 as double)) AS outboundUnit#56992]
(2249) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, systemId#56977, internalUUID#56978, id#56979, displayId#56980, name#56981, baseUnitOfMeasure#56982, unitOfMeasures#56983, unitOfMeasureConversions#56984, productionAspect#56985, salesAspect#56986, procurementAspect#56987, productGroup#56988, filteredUnitOfMeasureConversions#56989, quantityNumerator#56990, quantityDenominator#56991, CASE WHEN (isnull(outboundUnit#56992) OR (outboundUnit#56992 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#56992 END AS outboundUnit#56993]
(2250) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, outboundUnit#56993]
(2251) LogicalRelation
Arguments: parquet, [systemId#56994, internalUUID#56995, product#56996, plant#56997, calculationDateTime#56998, stockQuantities#56999], false
(2252) Repartition
Arguments: 10, true
(2253) LogicalRelation
Arguments: parquet, [marketUnit#57000, description#57001, articleHierarchy#57002, defaultCurrency#57003, responsibilities#57004, replenishmentTypes#57005, distributionCenters#57006, assignedArticleHierarchyNodes#57007, minOrderQtySetting#57008, minOrderQtySettingInternal#57009, listingCheck#57010, odsSelection#57011, demandProfiles#57012, constraintProfiles#57013, optimizationProfiles#57014, orderGroupSplitProfiles#57015, supplierMinimumProfiles#57016, multipleRestrictionProfiles#57017, preferredUomSource#57018, handlingOfUnfulfilledDemands#57019, negligibleQuantitiesThreshold#57020, eventtype#57021], false
(2254) Repartition
Arguments: 10, true
(2255) Filter
Arguments: (marketUnit#57000 <=> DIP_1691)
(2256) Project
Arguments: [marketUnit#57000, description#57001, articleHierarchy#57002, defaultCurrency#57003, responsibilities#57004, replenishmentTypes#57005, distributionCenters#57006, assignedArticleHierarchyNodes#57007, minOrderQtySetting#57008, minOrderQtySettingInternal#57009, listingCheck#57010, odsSelection#57011, demandProfiles#57012, constraintProfiles#57013, optimizationProfiles#57014, orderGroupSplitProfiles#57015, supplierMinimumProfiles#57016, multipleRestrictionProfiles#57017, preferredUomSource#57018, handlingOfUnfulfilledDemands#57019, negligibleQuantitiesThreshold#57020, eventtype#57021]
(2257) Project
Arguments: [distributionCenters#57006]
(2258) Generate
Arguments: explode(distributionCenters#57006), false, [distributionCenters#57022]
(2259) Project
Arguments: [distributionCenters#57022]
(2260) Generate
Arguments: explode(distributionCenters#57022.storageLocations), false, [storageLocations#57023]
(2261) Project
Arguments: [distributionCenters#57022.id AS plantId#57024, distributionCenters#57022.internalRefUUID AS plantUuid#57025, storageLocations#57023]
(2262) Project
Arguments: [plantId#57024, plantUuid#57025, storageLocations#57023.id AS storageLocId#57026, storageLocations#57023.internalRefUUID AS storageLocUuid#57027]
(2263) LogicalRelation
Arguments: parquet, [product#57028, plant#57029, orderDateTime#57030, planningStartDateTime#57031], false
(2264) RepartitionByExpression
Arguments: [product#57028, plant#57029], 10
(2265) Project
Arguments: [product#57028, plant#57029, orderDateTime#57030]
(2266) LogicalRelation
Arguments: parquet, [systemId#57032, internalUUID#57033, plant#57034, product#57035, blockedForReplenishmentStartingFrom#57036, productionAspect#57037, salesPlant#57038, listing#57039], false
(2267) Repartition
Arguments: 10, true
(2268) Project
Arguments: [systemId#57032, internalUUID#57033, plant#57034, product#57035, blockedForReplenishmentStartingFrom#57036, productionAspect#57037, salesPlant#57038, listing#57039, struct(systemId, systemId#57032, internalUUID, internalUUID#57033, plant, plant#57034, product, product#57035, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#57036, productionAspect, productionAspect#57037, salesPlant, salesPlant#57038, listing, listing#57039) AS productPlant#57040]
(2269) Project
Arguments: [productPlant#57040]
(2270) Join
Arguments: LeftOuter, ((product#57028 <=> productPlant#57040.product.internalRefUUID) AND (plant#57029 <=> productPlant#57040.plant.internalRefUUID))
(2271) Project
Arguments: [product#57028, plant#57029, orderDateTime#57030, productPlant#57040]
(2272) SubqueryAlias
Arguments: wl
(2273) LogicalRelation
Arguments: parquet, [systemId#57041, internalUUID#57042, id#57043, displayId#57044, name#57045, category#57046, companyCode#57047, address#57048, mainDistributionChain#57049, mainPurchasingOrganization#57050, validPurchasingOrganizations#57051, productGroup#57052], false
(2274) Repartition
Arguments: 10, true
(2275) Project
Arguments: [internalUUID#57042, address#57048.timeZone.code AS timezonecode#57053]
(2276) Join
Arguments: LeftOuter, (plant#57029 <=> internalUUID#57042)
(2277) Project
Arguments: [product#57028, plant#57029, orderDateTime#57030, productPlant#57040, internalUUID#57042, CASE WHEN isnotnull(timezonecode#57053) THEN timezonecode#57053 ELSE UTC END AS timezonecode#57054]
(2278) Project
Arguments: [product#57028, plant#57029, orderDateTime#57030, productPlant#57040, timezonecode#57054]
(2279) LogicalRelation
Arguments: parquet, [systemId#57055, internalUUID#57056, id#57057, displayId#57058, name#57059, baseUnitOfMeasure#57060, unitOfMeasures#57061, unitOfMeasureConversions#57062, productionAspect#57063, salesAspect#57064, procurementAspect#57065, productGroup#57066], false
(2280) Repartition
Arguments: 10, true
(2281) Join
Arguments: LeftOuter, (product#57028 = internalUUID#57056)
(2282) Project
Arguments: [product#57028, plant#57029, orderDateTime#57030, productPlant#57040, timezonecode#57054, systemId#57055, internalUUID#57056, id#57057, displayId#57058, name#57059, baseUnitOfMeasure#57060, unitOfMeasures#57061, unitOfMeasureConversions#57062, productionAspect#57063, salesAspect#57064, procurementAspect#57065, productGroup#57066, filter(unitOfMeasureConversions#57062, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#57040.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#57040.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57060.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57060.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57067]
(2283) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57067.quantityNumerator), true, [quantityNumerator#57068]
(2284) Project
Arguments: [product#57028, plant#57029, orderDateTime#57030, productPlant#57040, timezonecode#57054, systemId#57055, internalUUID#57056, id#57057, displayId#57058, name#57059, baseUnitOfMeasure#57060, unitOfMeasures#57061, unitOfMeasureConversions#57062, productionAspect#57063, salesAspect#57064, procurementAspect#57065, productGroup#57066, filteredUnitOfMeasureConversions#57067, quantityNumerator#57068]
(2285) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57067.quantityDenominator), true, [quantityDenominator#57069]
(2286) Project
Arguments: [product#57028, plant#57029, orderDateTime#57030, productPlant#57040, timezonecode#57054, systemId#57055, internalUUID#57056, id#57057, displayId#57058, name#57059, baseUnitOfMeasure#57060, unitOfMeasures#57061, unitOfMeasureConversions#57062, productionAspect#57063, salesAspect#57064, procurementAspect#57065, productGroup#57066, filteredUnitOfMeasureConversions#57067, quantityNumerator#57068, quantityDenominator#57069]
(2287) Project
Arguments: [product#57028, plant#57029, orderDateTime#57030, productPlant#57040, timezonecode#57054, systemId#57055, internalUUID#57056, id#57057, displayId#57058, name#57059, baseUnitOfMeasure#57060, unitOfMeasures#57061, unitOfMeasureConversions#57062, productionAspect#57063, salesAspect#57064, procurementAspect#57065, productGroup#57066, filteredUnitOfMeasureConversions#57067, quantityNumerator#57068, quantityDenominator#57069, (cast(quantityNumerator#57068 as double) / cast(quantityDenominator#57069 as double)) AS outboundUnit#57070]
(2288) Project
Arguments: [product#57028, plant#57029, orderDateTime#57030, productPlant#57040, timezonecode#57054, systemId#57055, internalUUID#57056, id#57057, displayId#57058, name#57059, baseUnitOfMeasure#57060, unitOfMeasures#57061, unitOfMeasureConversions#57062, productionAspect#57063, salesAspect#57064, procurementAspect#57065, productGroup#57066, filteredUnitOfMeasureConversions#57067, quantityNumerator#57068, quantityDenominator#57069, CASE WHEN (isnull(outboundUnit#57070) OR (outboundUnit#57070 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#57070 END AS outboundUnit#57071]
(2289) Project
Arguments: [product#57028, plant#57029, orderDateTime#57030, productPlant#57040, timezonecode#57054, outboundUnit#57071]
(2290) Project
Arguments: [plant#57029]
(2291) Deduplicate
Arguments: [plant#57029]
(2292) Join
Arguments: Inner, (plantUuid#57025 = plant#57029)
(2293) Project
Arguments: [plantId#57024, plantUuid#57025, storageLocId#57026, storageLocUuid#57027]
(2294) Join
Arguments: Inner, (plant#56997.internalRefUUID <=> plantUuid#57025)
(2295) Generate
Arguments: explode(filter(stockQuantities#56999, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#57027) AND (lambda x#50650.storageLocation.Id = storageLocId#57026)), lambda x#50650, false))), false, [stockQuantity#57072]
(2296) Project
Arguments: [systemId#56994, internalUUID#56995, product#56996, plant#56997, calculationDateTime#56998, stockQuantities#56999, plantId#57024, plantUuid#57025, storageLocId#57026, storageLocUuid#57027, stockQuantity#57072]
(2297) Aggregate
Arguments: [plantUuid#57025, internalUUID#56995, plant#56997, product#56996, systemId#56994], [plantUuid#57025, internalUUID#56995, plant#56997, product#56996, systemId#56994, first(calculationDateTime#56998, false) AS calculationDateTime#57073, collect_list(stockQuantity#57072, 0, 0) AS stockQuantities#57074]
(2298) Project
Arguments: [systemId#56994, internalUUID#56995, product#56996, plant#56997, calculationDateTime#57073, stockQuantities#57074]
(2299) Generate
Arguments: explode(stockQuantities#57074), false, [stockQuantity#57075]
(2300) Project
Arguments: [systemId#56994, internalUUID#56995, product#56996, plant#56997, calculationDateTime#57073, stockQuantities#57074, stockQuantity#57075]
(2301) Project
Arguments: [plant#56997.id AS plant#57076, plant#56997.internalRefUUID AS plantUuid#57077, product#56996.id AS product#57078, product#56996.internalRefUUID AS productUuid#57079, calculationDateTime#57073, stockQuantity#57075.storagelocation.id AS storageLocId#57080, stockQuantity#57075.storagelocation.internalRefUUID AS storageLocUuid#57081, stockQuantity#57075.quantity.measure AS quantity#57082, stockQuantity#57075.specialStockIndicator.code AS specialStockIndicator#57083, stockQuantity#57075.stockType.code AS stockType#57084]
(2302) Filter
Arguments: ((specialStockIndicator#57083 = ) AND (stockType#57084 = 01))
(2303) LogicalRelation
Arguments: parquet, [product#57085, plant#57086, orderDateTime#57087, planningStartDateTime#57088], false
(2304) RepartitionByExpression
Arguments: [product#57085, plant#57086], 10
(2305) Project
Arguments: [product#57085, plant#57086, orderDateTime#57087]
(2306) LogicalRelation
Arguments: parquet, [systemId#57089, internalUUID#57090, plant#57091, product#57092, blockedForReplenishmentStartingFrom#57093, productionAspect#57094, salesPlant#57095, listing#57096], false
(2307) Repartition
Arguments: 10, true
(2308) Project
Arguments: [systemId#57089, internalUUID#57090, plant#57091, product#57092, blockedForReplenishmentStartingFrom#57093, productionAspect#57094, salesPlant#57095, listing#57096, struct(systemId, systemId#57089, internalUUID, internalUUID#57090, plant, plant#57091, product, product#57092, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#57093, productionAspect, productionAspect#57094, salesPlant, salesPlant#57095, listing, listing#57096) AS productPlant#57097]
(2309) Project
Arguments: [productPlant#57097]
(2310) Join
Arguments: LeftOuter, ((product#57085 <=> productPlant#57097.product.internalRefUUID) AND (plant#57086 <=> productPlant#57097.plant.internalRefUUID))
(2311) Project
Arguments: [product#57085, plant#57086, orderDateTime#57087, productPlant#57097]
(2312) SubqueryAlias
Arguments: wl
(2313) LogicalRelation
Arguments: parquet, [systemId#57098, internalUUID#57099, id#57100, displayId#57101, name#57102, category#57103, companyCode#57104, address#57105, mainDistributionChain#57106, mainPurchasingOrganization#57107, validPurchasingOrganizations#57108, productGroup#57109], false
(2314) Repartition
Arguments: 10, true
(2315) Project
Arguments: [internalUUID#57099, address#57105.timeZone.code AS timezonecode#57110]
(2316) Join
Arguments: LeftOuter, (plant#57086 <=> internalUUID#57099)
(2317) Project
Arguments: [product#57085, plant#57086, orderDateTime#57087, productPlant#57097, internalUUID#57099, CASE WHEN isnotnull(timezonecode#57110) THEN timezonecode#57110 ELSE UTC END AS timezonecode#57111]
(2318) Project
Arguments: [product#57085, plant#57086, orderDateTime#57087, productPlant#57097, timezonecode#57111]
(2319) LogicalRelation
Arguments: parquet, [systemId#57112, internalUUID#57113, id#57114, displayId#57115, name#57116, baseUnitOfMeasure#57117, unitOfMeasures#57118, unitOfMeasureConversions#57119, productionAspect#57120, salesAspect#57121, procurementAspect#57122, productGroup#57123], false
(2320) Repartition
Arguments: 10, true
(2321) Join
Arguments: LeftOuter, (product#57085 = internalUUID#57113)
(2322) Project
Arguments: [product#57085, plant#57086, orderDateTime#57087, productPlant#57097, timezonecode#57111, systemId#57112, internalUUID#57113, id#57114, displayId#57115, name#57116, baseUnitOfMeasure#57117, unitOfMeasures#57118, unitOfMeasureConversions#57119, productionAspect#57120, salesAspect#57121, procurementAspect#57122, productGroup#57123, filter(unitOfMeasureConversions#57119, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#57097.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#57097.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57117.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57117.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57124]
(2323) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57124.quantityNumerator), true, [quantityNumerator#57125]
(2324) Project
Arguments: [product#57085, plant#57086, orderDateTime#57087, productPlant#57097, timezonecode#57111, systemId#57112, internalUUID#57113, id#57114, displayId#57115, name#57116, baseUnitOfMeasure#57117, unitOfMeasures#57118, unitOfMeasureConversions#57119, productionAspect#57120, salesAspect#57121, procurementAspect#57122, productGroup#57123, filteredUnitOfMeasureConversions#57124, quantityNumerator#57125]
(2325) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57124.quantityDenominator), true, [quantityDenominator#57126]
(2326) Project
Arguments: [product#57085, plant#57086, orderDateTime#57087, productPlant#57097, timezonecode#57111, systemId#57112, internalUUID#57113, id#57114, displayId#57115, name#57116, baseUnitOfMeasure#57117, unitOfMeasures#57118, unitOfMeasureConversions#57119, productionAspect#57120, salesAspect#57121, procurementAspect#57122, productGroup#57123, filteredUnitOfMeasureConversions#57124, quantityNumerator#57125, quantityDenominator#57126]
(2327) Project
Arguments: [product#57085, plant#57086, orderDateTime#57087, productPlant#57097, timezonecode#57111, systemId#57112, internalUUID#57113, id#57114, displayId#57115, name#57116, baseUnitOfMeasure#57117, unitOfMeasures#57118, unitOfMeasureConversions#57119, productionAspect#57120, salesAspect#57121, procurementAspect#57122, productGroup#57123, filteredUnitOfMeasureConversions#57124, quantityNumerator#57125, quantityDenominator#57126, (cast(quantityNumerator#57125 as double) / cast(quantityDenominator#57126 as double)) AS outboundUnit#57127]
(2328) Project
Arguments: [product#57085, plant#57086, orderDateTime#57087, productPlant#57097, timezonecode#57111, systemId#57112, internalUUID#57113, id#57114, displayId#57115, name#57116, baseUnitOfMeasure#57117, unitOfMeasures#57118, unitOfMeasureConversions#57119, productionAspect#57120, salesAspect#57121, procurementAspect#57122, productGroup#57123, filteredUnitOfMeasureConversions#57124, quantityNumerator#57125, quantityDenominator#57126, CASE WHEN (isnull(outboundUnit#57127) OR (outboundUnit#57127 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#57127 END AS outboundUnit#57128]
(2329) Project
Arguments: [product#57085, plant#57086, orderDateTime#57087, productPlant#57097, timezonecode#57111, outboundUnit#57128]
(2330) Join
Arguments: Inner, ((plantUuid#57077 = plant#57086) AND (productUuid#57079 = product#57085))
(2331) Filter
Arguments: (calculationDateTime#57073 <= orderDateTime#57087)
(2332) Project
Arguments: [plantUuid#57077 AS plant#57129, productUuid#57079 AS product#57130, storageLocId#57080, calculationDateTime#57073, quantity#57082]
(2333) LogicalRelation
Arguments: parquet, [systemId#57131, internalUUID#57132, product#57133, plant#57134, calculationDateTime#57135, stockQuantities#57136], false
(2334) Repartition
Arguments: 10, true
(2335) LogicalRelation
Arguments: parquet, [marketUnit#57137, description#57138, articleHierarchy#57139, defaultCurrency#57140, responsibilities#57141, replenishmentTypes#57142, distributionCenters#57143, assignedArticleHierarchyNodes#57144, minOrderQtySetting#57145, minOrderQtySettingInternal#57146, listingCheck#57147, odsSelection#57148, demandProfiles#57149, constraintProfiles#57150, optimizationProfiles#57151, orderGroupSplitProfiles#57152, supplierMinimumProfiles#57153, multipleRestrictionProfiles#57154, preferredUomSource#57155, handlingOfUnfulfilledDemands#57156, negligibleQuantitiesThreshold#57157, eventtype#57158], false
(2336) Repartition
Arguments: 10, true
(2337) Filter
Arguments: (marketUnit#57137 <=> DIP_1691)
(2338) Project
Arguments: [marketUnit#57137, description#57138, articleHierarchy#57139, defaultCurrency#57140, responsibilities#57141, replenishmentTypes#57142, distributionCenters#57143, assignedArticleHierarchyNodes#57144, minOrderQtySetting#57145, minOrderQtySettingInternal#57146, listingCheck#57147, odsSelection#57148, demandProfiles#57149, constraintProfiles#57150, optimizationProfiles#57151, orderGroupSplitProfiles#57152, supplierMinimumProfiles#57153, multipleRestrictionProfiles#57154, preferredUomSource#57155, handlingOfUnfulfilledDemands#57156, negligibleQuantitiesThreshold#57157, eventtype#57158]
(2339) Project
Arguments: [distributionCenters#57143]
(2340) Generate
Arguments: explode(distributionCenters#57143), false, [distributionCenters#57159]
(2341) Project
Arguments: [distributionCenters#57159]
(2342) Generate
Arguments: explode(distributionCenters#57159.storageLocations), false, [storageLocations#57160]
(2343) Project
Arguments: [distributionCenters#57159.id AS plantId#57161, distributionCenters#57159.internalRefUUID AS plantUuid#57162, storageLocations#57160]
(2344) Project
Arguments: [plantId#57161, plantUuid#57162, storageLocations#57160.id AS storageLocId#57163, storageLocations#57160.internalRefUUID AS storageLocUuid#57164]
(2345) LogicalRelation
Arguments: parquet, [product#57165, plant#57166, orderDateTime#57167, planningStartDateTime#57168], false
(2346) RepartitionByExpression
Arguments: [product#57165, plant#57166], 10
(2347) Project
Arguments: [product#57165, plant#57166, orderDateTime#57167]
(2348) LogicalRelation
Arguments: parquet, [systemId#57169, internalUUID#57170, plant#57171, product#57172, blockedForReplenishmentStartingFrom#57173, productionAspect#57174, salesPlant#57175, listing#57176], false
(2349) Repartition
Arguments: 10, true
(2350) Project
Arguments: [systemId#57169, internalUUID#57170, plant#57171, product#57172, blockedForReplenishmentStartingFrom#57173, productionAspect#57174, salesPlant#57175, listing#57176, struct(systemId, systemId#57169, internalUUID, internalUUID#57170, plant, plant#57171, product, product#57172, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#57173, productionAspect, productionAspect#57174, salesPlant, salesPlant#57175, listing, listing#57176) AS productPlant#57177]
(2351) Project
Arguments: [productPlant#57177]
(2352) Join
Arguments: LeftOuter, ((product#57165 <=> productPlant#57177.product.internalRefUUID) AND (plant#57166 <=> productPlant#57177.plant.internalRefUUID))
(2353) Project
Arguments: [product#57165, plant#57166, orderDateTime#57167, productPlant#57177]
(2354) SubqueryAlias
Arguments: wl
(2355) LogicalRelation
Arguments: parquet, [systemId#57178, internalUUID#57179, id#57180, displayId#57181, name#57182, category#57183, companyCode#57184, address#57185, mainDistributionChain#57186, mainPurchasingOrganization#57187, validPurchasingOrganizations#57188, productGroup#57189], false
(2356) Repartition
Arguments: 10, true
(2357) Project
Arguments: [internalUUID#57179, address#57185.timeZone.code AS timezonecode#57190]
(2358) Join
Arguments: LeftOuter, (plant#57166 <=> internalUUID#57179)
(2359) Project
Arguments: [product#57165, plant#57166, orderDateTime#57167, productPlant#57177, internalUUID#57179, CASE WHEN isnotnull(timezonecode#57190) THEN timezonecode#57190 ELSE UTC END AS timezonecode#57191]
(2360) Project
Arguments: [product#57165, plant#57166, orderDateTime#57167, productPlant#57177, timezonecode#57191]
(2361) LogicalRelation
Arguments: parquet, [systemId#57192, internalUUID#57193, id#57194, displayId#57195, name#57196, baseUnitOfMeasure#57197, unitOfMeasures#57198, unitOfMeasureConversions#57199, productionAspect#57200, salesAspect#57201, procurementAspect#57202, productGroup#57203], false
(2362) Repartition
Arguments: 10, true
(2363) Join
Arguments: LeftOuter, (product#57165 = internalUUID#57193)
(2364) Project
Arguments: [product#57165, plant#57166, orderDateTime#57167, productPlant#57177, timezonecode#57191, systemId#57192, internalUUID#57193, id#57194, displayId#57195, name#57196, baseUnitOfMeasure#57197, unitOfMeasures#57198, unitOfMeasureConversions#57199, productionAspect#57200, salesAspect#57201, procurementAspect#57202, productGroup#57203, filter(unitOfMeasureConversions#57199, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#57177.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#57177.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57197.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57197.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57204]
(2365) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57204.quantityNumerator), true, [quantityNumerator#57205]
(2366) Project
Arguments: [product#57165, plant#57166, orderDateTime#57167, productPlant#57177, timezonecode#57191, systemId#57192, internalUUID#57193, id#57194, displayId#57195, name#57196, baseUnitOfMeasure#57197, unitOfMeasures#57198, unitOfMeasureConversions#57199, productionAspect#57200, salesAspect#57201, procurementAspect#57202, productGroup#57203, filteredUnitOfMeasureConversions#57204, quantityNumerator#57205]
(2367) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57204.quantityDenominator), true, [quantityDenominator#57206]
(2368) Project
Arguments: [product#57165, plant#57166, orderDateTime#57167, productPlant#57177, timezonecode#57191, systemId#57192, internalUUID#57193, id#57194, displayId#57195, name#57196, baseUnitOfMeasure#57197, unitOfMeasures#57198, unitOfMeasureConversions#57199, productionAspect#57200, salesAspect#57201, procurementAspect#57202, productGroup#57203, filteredUnitOfMeasureConversions#57204, quantityNumerator#57205, quantityDenominator#57206]
(2369) Project
Arguments: [product#57165, plant#57166, orderDateTime#57167, productPlant#57177, timezonecode#57191, systemId#57192, internalUUID#57193, id#57194, displayId#57195, name#57196, baseUnitOfMeasure#57197, unitOfMeasures#57198, unitOfMeasureConversions#57199, productionAspect#57200, salesAspect#57201, procurementAspect#57202, productGroup#57203, filteredUnitOfMeasureConversions#57204, quantityNumerator#57205, quantityDenominator#57206, (cast(quantityNumerator#57205 as double) / cast(quantityDenominator#57206 as double)) AS outboundUnit#57207]
(2370) Project
Arguments: [product#57165, plant#57166, orderDateTime#57167, productPlant#57177, timezonecode#57191, systemId#57192, internalUUID#57193, id#57194, displayId#57195, name#57196, baseUnitOfMeasure#57197, unitOfMeasures#57198, unitOfMeasureConversions#57199, productionAspect#57200, salesAspect#57201, procurementAspect#57202, productGroup#57203, filteredUnitOfMeasureConversions#57204, quantityNumerator#57205, quantityDenominator#57206, CASE WHEN (isnull(outboundUnit#57207) OR (outboundUnit#57207 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#57207 END AS outboundUnit#57208]
(2371) Project
Arguments: [product#57165, plant#57166, orderDateTime#57167, productPlant#57177, timezonecode#57191, outboundUnit#57208]
(2372) Project
Arguments: [plant#57166]
(2373) Deduplicate
Arguments: [plant#57166]
(2374) Join
Arguments: Inner, (plantUuid#57162 = plant#57166)
(2375) Project
Arguments: [plantId#57161, plantUuid#57162, storageLocId#57163, storageLocUuid#57164]
(2376) Join
Arguments: Inner, (plant#57134.internalRefUUID <=> plantUuid#57162)
(2377) Generate
Arguments: explode(filter(stockQuantities#57136, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#57164) AND (lambda x#50650.storageLocation.Id = storageLocId#57163)), lambda x#50650, false))), false, [stockQuantity#57209]
(2378) Project
Arguments: [systemId#57131, internalUUID#57132, product#57133, plant#57134, calculationDateTime#57135, stockQuantities#57136, plantId#57161, plantUuid#57162, storageLocId#57163, storageLocUuid#57164, stockQuantity#57209]
(2379) Aggregate
Arguments: [plantUuid#57162, internalUUID#57132, plant#57134, product#57133, systemId#57131], [plantUuid#57162, internalUUID#57132, plant#57134, product#57133, systemId#57131, first(calculationDateTime#57135, false) AS calculationDateTime#57210, collect_list(stockQuantity#57209, 0, 0) AS stockQuantities#57211]
(2380) Project
Arguments: [systemId#57131, internalUUID#57132, product#57133, plant#57134, calculationDateTime#57210, stockQuantities#57211]
(2381) Generate
Arguments: explode(stockQuantities#57211), false, [stockQuantity#57212]
(2382) Project
Arguments: [systemId#57131, internalUUID#57132, product#57133, plant#57134, calculationDateTime#57210, stockQuantities#57211, stockQuantity#57212]
(2383) Project
Arguments: [plant#57134.id AS plant#57213, plant#57134.internalRefUUID AS plantUuid#57214, product#57133.id AS product#57215, product#57133.internalRefUUID AS productUuid#57216, calculationDateTime#57210, stockQuantity#57212.storagelocation.id AS storageLocId#57217, stockQuantity#57212.storagelocation.internalRefUUID AS storageLocUuid#57218, stockQuantity#57212.quantity.measure AS quantity#57219, stockQuantity#57212.specialStockIndicator.code AS specialStockIndicator#57220, stockQuantity#57212.stockType.code AS stockType#57221]
(2384) Filter
Arguments: ((specialStockIndicator#57220 = ) AND (stockType#57221 = 01))
(2385) LogicalRelation
Arguments: parquet, [product#57222, plant#57223, orderDateTime#57224, planningStartDateTime#57225], false
(2386) RepartitionByExpression
Arguments: [product#57222, plant#57223], 10
(2387) Project
Arguments: [product#57222, plant#57223, orderDateTime#57224]
(2388) LogicalRelation
Arguments: parquet, [systemId#57226, internalUUID#57227, plant#57228, product#57229, blockedForReplenishmentStartingFrom#57230, productionAspect#57231, salesPlant#57232, listing#57233], false
(2389) Repartition
Arguments: 10, true
(2390) Project
Arguments: [systemId#57226, internalUUID#57227, plant#57228, product#57229, blockedForReplenishmentStartingFrom#57230, productionAspect#57231, salesPlant#57232, listing#57233, struct(systemId, systemId#57226, internalUUID, internalUUID#57227, plant, plant#57228, product, product#57229, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#57230, productionAspect, productionAspect#57231, salesPlant, salesPlant#57232, listing, listing#57233) AS productPlant#57234]
(2391) Project
Arguments: [productPlant#57234]
(2392) Join
Arguments: LeftOuter, ((product#57222 <=> productPlant#57234.product.internalRefUUID) AND (plant#57223 <=> productPlant#57234.plant.internalRefUUID))
(2393) Project
Arguments: [product#57222, plant#57223, orderDateTime#57224, productPlant#57234]
(2394) SubqueryAlias
Arguments: wl
(2395) LogicalRelation
Arguments: parquet, [systemId#57235, internalUUID#57236, id#57237, displayId#57238, name#57239, category#57240, companyCode#57241, address#57242, mainDistributionChain#57243, mainPurchasingOrganization#57244, validPurchasingOrganizations#57245, productGroup#57246], false
(2396) Repartition
Arguments: 10, true
(2397) Project
Arguments: [internalUUID#57236, address#57242.timeZone.code AS timezonecode#57247]
(2398) Join
Arguments: LeftOuter, (plant#57223 <=> internalUUID#57236)
(2399) Project
Arguments: [product#57222, plant#57223, orderDateTime#57224, productPlant#57234, internalUUID#57236, CASE WHEN isnotnull(timezonecode#57247) THEN timezonecode#57247 ELSE UTC END AS timezonecode#57248]
(2400) Project
Arguments: [product#57222, plant#57223, orderDateTime#57224, productPlant#57234, timezonecode#57248]
(2401) LogicalRelation
Arguments: parquet, [systemId#57249, internalUUID#57250, id#57251, displayId#57252, name#57253, baseUnitOfMeasure#57254, unitOfMeasures#57255, unitOfMeasureConversions#57256, productionAspect#57257, salesAspect#57258, procurementAspect#57259, productGroup#57260], false
(2402) Repartition
Arguments: 10, true
(2403) Join
Arguments: LeftOuter, (product#57222 = internalUUID#57250)
(2404) Project
Arguments: [product#57222, plant#57223, orderDateTime#57224, productPlant#57234, timezonecode#57248, systemId#57249, internalUUID#57250, id#57251, displayId#57252, name#57253, baseUnitOfMeasure#57254, unitOfMeasures#57255, unitOfMeasureConversions#57256, productionAspect#57257, salesAspect#57258, procurementAspect#57259, productGroup#57260, filter(unitOfMeasureConversions#57256, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#57234.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#57234.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57254.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57254.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57261]
(2405) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57261.quantityNumerator), true, [quantityNumerator#57262]
(2406) Project
Arguments: [product#57222, plant#57223, orderDateTime#57224, productPlant#57234, timezonecode#57248, systemId#57249, internalUUID#57250, id#57251, displayId#57252, name#57253, baseUnitOfMeasure#57254, unitOfMeasures#57255, unitOfMeasureConversions#57256, productionAspect#57257, salesAspect#57258, procurementAspect#57259, productGroup#57260, filteredUnitOfMeasureConversions#57261, quantityNumerator#57262]
(2407) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57261.quantityDenominator), true, [quantityDenominator#57263]
(2408) Project
Arguments: [product#57222, plant#57223, orderDateTime#57224, productPlant#57234, timezonecode#57248, systemId#57249, internalUUID#57250, id#57251, displayId#57252, name#57253, baseUnitOfMeasure#57254, unitOfMeasures#57255, unitOfMeasureConversions#57256, productionAspect#57257, salesAspect#57258, procurementAspect#57259, productGroup#57260, filteredUnitOfMeasureConversions#57261, quantityNumerator#57262, quantityDenominator#57263]
(2409) Project
Arguments: [product#57222, plant#57223, orderDateTime#57224, productPlant#57234, timezonecode#57248, systemId#57249, internalUUID#57250, id#57251, displayId#57252, name#57253, baseUnitOfMeasure#57254, unitOfMeasures#57255, unitOfMeasureConversions#57256, productionAspect#57257, salesAspect#57258, procurementAspect#57259, productGroup#57260, filteredUnitOfMeasureConversions#57261, quantityNumerator#57262, quantityDenominator#57263, (cast(quantityNumerator#57262 as double) / cast(quantityDenominator#57263 as double)) AS outboundUnit#57264]
(2410) Project
Arguments: [product#57222, plant#57223, orderDateTime#57224, productPlant#57234, timezonecode#57248, systemId#57249, internalUUID#57250, id#57251, displayId#57252, name#57253, baseUnitOfMeasure#57254, unitOfMeasures#57255, unitOfMeasureConversions#57256, productionAspect#57257, salesAspect#57258, procurementAspect#57259, productGroup#57260, filteredUnitOfMeasureConversions#57261, quantityNumerator#57262, quantityDenominator#57263, CASE WHEN (isnull(outboundUnit#57264) OR (outboundUnit#57264 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#57264 END AS outboundUnit#57265]
(2411) Project
Arguments: [product#57222, plant#57223, orderDateTime#57224, productPlant#57234, timezonecode#57248, outboundUnit#57265]
(2412) Join
Arguments: Inner, ((plantUuid#57214 = plant#57223) AND (productUuid#57216 = product#57222))
(2413) Filter
Arguments: (calculationDateTime#57210 <= orderDateTime#57224)
(2414) Project
Arguments: [plantUuid#57214 AS plant#57266, productUuid#57216 AS product#57267, storageLocId#57217, calculationDateTime#57210, quantity#57219]
(2415) Aggregate
Arguments: [plant#57266, product#57267, storageLocId#57217], [plant#57266, product#57267, storageLocId#57217, max(calculationDateTime#57210) AS max_calc_datetime#57268]
(2416) Join
Arguments: Inner, ((((plant#57129 <=> plant#57266) AND (product#57130 <=> product#57267)) AND (storageLocId#57080 <=> storageLocId#57217)) AND (calculationDateTime#57073 <=> max_calc_datetime#57268))
(2417) Project
Arguments: [plant#57129, product#57130, storageLocId#57080, calculationDateTime#57073, quantity#57082]
(2418) Aggregate
Arguments: [product#57130, plant#57129], [product#57130, plant#57129, sum(quantity#57082) AS quantitySum#57269, min(calculationDateTime#57073) AS minCalculationDateTime#57270]
(2419) Project
Arguments: [product#57130, plant#57129, quantitySum#57269, minCalculationDateTime#57270, round(quantitySum#57269, 0) AS roundedQuantitySum#57271]
(2420) Join
Arguments: LeftOuter, ((plant#56951 = plant#57129) AND (product#56950 = product#57130))
(2421) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, outboundUnit#56993, roundedQuantitySum#57271, minCalculationDateTime#57270]
(2422) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, outboundUnit#56993, roundedQuantitySum#57271, minCalculationDateTime#57270, CASE WHEN isnotnull(minCalculationDateTime#57270) THEN minCalculationDateTime#57270 ELSE orderDateTime#56952 END AS stockDatetime#57272]
(2423) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, outboundUnit#56993, roundedQuantitySum#57271, minCalculationDateTime#57270, stockDatetime#57272, CASE WHEN isnotnull(roundedQuantitySum#57271) THEN array(roundedQuantitySum#57271) ELSE array(0.0) END AS stockBatchQuantities#57273]
(2424) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, outboundUnit#56993, roundedQuantitySum#57271, minCalculationDateTime#57270, stockDatetime#57272, stockBatchQuantities#57273, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#57274]
(2425) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, outboundUnit#56993, roundedQuantitySum#57271, stockDatetime#57272, stockBatchQuantities#57273, stockBatchShelfLifeEndDatetimes#57274]
(2426) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, outboundUnit#56993, stockDatetime#57272, stockBatchQuantities#57273, stockBatchShelfLifeEndDatetimes#57274]
(2427) LogicalRelation
Arguments: parquet, [product#57275, plant#57276, orderDateTime#57277, planningStartDateTime#57278], false
(2428) RepartitionByExpression
Arguments: [product#57275, plant#57276], 10
(2429) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277]
(2430) LogicalRelation
Arguments: parquet, [systemId#57279, internalUUID#57280, plant#57281, product#57282, blockedForReplenishmentStartingFrom#57283, productionAspect#57284, salesPlant#57285, listing#57286], false
(2431) Repartition
Arguments: 10, true
(2432) Project
Arguments: [systemId#57279, internalUUID#57280, plant#57281, product#57282, blockedForReplenishmentStartingFrom#57283, productionAspect#57284, salesPlant#57285, listing#57286, struct(systemId, systemId#57279, internalUUID, internalUUID#57280, plant, plant#57281, product, product#57282, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#57283, productionAspect, productionAspect#57284, salesPlant, salesPlant#57285, listing, listing#57286) AS productPlant#57287]
(2433) Project
Arguments: [productPlant#57287]
(2434) Join
Arguments: LeftOuter, ((product#57275 <=> productPlant#57287.product.internalRefUUID) AND (plant#57276 <=> productPlant#57287.plant.internalRefUUID))
(2435) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287]
(2436) SubqueryAlias
Arguments: wl
(2437) LogicalRelation
Arguments: parquet, [systemId#57288, internalUUID#57289, id#57290, displayId#57291, name#57292, category#57293, companyCode#57294, address#57295, mainDistributionChain#57296, mainPurchasingOrganization#57297, validPurchasingOrganizations#57298, productGroup#57299], false
(2438) Repartition
Arguments: 10, true
(2439) Project
Arguments: [internalUUID#57289, address#57295.timeZone.code AS timezonecode#57300]
(2440) Join
Arguments: LeftOuter, (plant#57276 <=> internalUUID#57289)
(2441) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, internalUUID#57289, CASE WHEN isnotnull(timezonecode#57300) THEN timezonecode#57300 ELSE UTC END AS timezonecode#57301]
(2442) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301]
(2443) LogicalRelation
Arguments: parquet, [systemId#57302, internalUUID#57303, id#57304, displayId#57305, name#57306, baseUnitOfMeasure#57307, unitOfMeasures#57308, unitOfMeasureConversions#57309, productionAspect#57310, salesAspect#57311, procurementAspect#57312, productGroup#57313], false
(2444) Repartition
Arguments: 10, true
(2445) Join
Arguments: LeftOuter, (product#57275 = internalUUID#57303)
(2446) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, systemId#57302, internalUUID#57303, id#57304, displayId#57305, name#57306, baseUnitOfMeasure#57307, unitOfMeasures#57308, unitOfMeasureConversions#57309, productionAspect#57310, salesAspect#57311, procurementAspect#57312, productGroup#57313, filter(unitOfMeasureConversions#57309, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#57287.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#57287.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57307.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57307.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57314]
(2447) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57314.quantityNumerator), true, [quantityNumerator#57315]
(2448) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, systemId#57302, internalUUID#57303, id#57304, displayId#57305, name#57306, baseUnitOfMeasure#57307, unitOfMeasures#57308, unitOfMeasureConversions#57309, productionAspect#57310, salesAspect#57311, procurementAspect#57312, productGroup#57313, filteredUnitOfMeasureConversions#57314, quantityNumerator#57315]
(2449) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57314.quantityDenominator), true, [quantityDenominator#57316]
(2450) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, systemId#57302, internalUUID#57303, id#57304, displayId#57305, name#57306, baseUnitOfMeasure#57307, unitOfMeasures#57308, unitOfMeasureConversions#57309, productionAspect#57310, salesAspect#57311, procurementAspect#57312, productGroup#57313, filteredUnitOfMeasureConversions#57314, quantityNumerator#57315, quantityDenominator#57316]
(2451) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, systemId#57302, internalUUID#57303, id#57304, displayId#57305, name#57306, baseUnitOfMeasure#57307, unitOfMeasures#57308, unitOfMeasureConversions#57309, productionAspect#57310, salesAspect#57311, procurementAspect#57312, productGroup#57313, filteredUnitOfMeasureConversions#57314, quantityNumerator#57315, quantityDenominator#57316, (cast(quantityNumerator#57315 as double) / cast(quantityDenominator#57316 as double)) AS outboundUnit#57317]
(2452) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, systemId#57302, internalUUID#57303, id#57304, displayId#57305, name#57306, baseUnitOfMeasure#57307, unitOfMeasures#57308, unitOfMeasureConversions#57309, productionAspect#57310, salesAspect#57311, procurementAspect#57312, productGroup#57313, filteredUnitOfMeasureConversions#57314, quantityNumerator#57315, quantityDenominator#57316, CASE WHEN (isnull(outboundUnit#57317) OR (outboundUnit#57317 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#57317 END AS outboundUnit#57318]
(2453) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318]
(2454) LogicalRelation
Arguments: parquet, [systemId#57319, internalUUID#57320, product#57321, plant#57322, calculationDateTime#57323, stockQuantities#57324], false
(2455) Repartition
Arguments: 10, true
(2456) LogicalRelation
Arguments: parquet, [marketUnit#57325, description#57326, articleHierarchy#57327, defaultCurrency#57328, responsibilities#57329, replenishmentTypes#57330, distributionCenters#57331, assignedArticleHierarchyNodes#57332, minOrderQtySetting#57333, minOrderQtySettingInternal#57334, listingCheck#57335, odsSelection#57336, demandProfiles#57337, constraintProfiles#57338, optimizationProfiles#57339, orderGroupSplitProfiles#57340, supplierMinimumProfiles#57341, multipleRestrictionProfiles#57342, preferredUomSource#57343, handlingOfUnfulfilledDemands#57344, negligibleQuantitiesThreshold#57345, eventtype#57346], false
(2457) Repartition
Arguments: 10, true
(2458) Filter
Arguments: (marketUnit#57325 <=> DIP_1691)
(2459) Project
Arguments: [marketUnit#57325, description#57326, articleHierarchy#57327, defaultCurrency#57328, responsibilities#57329, replenishmentTypes#57330, distributionCenters#57331, assignedArticleHierarchyNodes#57332, minOrderQtySetting#57333, minOrderQtySettingInternal#57334, listingCheck#57335, odsSelection#57336, demandProfiles#57337, constraintProfiles#57338, optimizationProfiles#57339, orderGroupSplitProfiles#57340, supplierMinimumProfiles#57341, multipleRestrictionProfiles#57342, preferredUomSource#57343, handlingOfUnfulfilledDemands#57344, negligibleQuantitiesThreshold#57345, eventtype#57346]
(2460) Project
Arguments: [distributionCenters#57331]
(2461) Generate
Arguments: explode(distributionCenters#57331), false, [distributionCenters#57347]
(2462) Project
Arguments: [distributionCenters#57347]
(2463) Generate
Arguments: explode(distributionCenters#57347.storageLocations), false, [storageLocations#57348]
(2464) Project
Arguments: [distributionCenters#57347.id AS plantId#57349, distributionCenters#57347.internalRefUUID AS plantUuid#57350, storageLocations#57348]
(2465) Project
Arguments: [plantId#57349, plantUuid#57350, storageLocations#57348.id AS storageLocId#57351, storageLocations#57348.internalRefUUID AS storageLocUuid#57352]
(2466) LogicalRelation
Arguments: parquet, [product#57353, plant#57354, orderDateTime#57355, planningStartDateTime#57356], false
(2467) RepartitionByExpression
Arguments: [product#57353, plant#57354], 10
(2468) Project
Arguments: [product#57353, plant#57354, orderDateTime#57355]
(2469) LogicalRelation
Arguments: parquet, [systemId#57357, internalUUID#57358, plant#57359, product#57360, blockedForReplenishmentStartingFrom#57361, productionAspect#57362, salesPlant#57363, listing#57364], false
(2470) Repartition
Arguments: 10, true
(2471) Project
Arguments: [systemId#57357, internalUUID#57358, plant#57359, product#57360, blockedForReplenishmentStartingFrom#57361, productionAspect#57362, salesPlant#57363, listing#57364, struct(systemId, systemId#57357, internalUUID, internalUUID#57358, plant, plant#57359, product, product#57360, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#57361, productionAspect, productionAspect#57362, salesPlant, salesPlant#57363, listing, listing#57364) AS productPlant#57365]
(2472) Project
Arguments: [productPlant#57365]
(2473) Join
Arguments: LeftOuter, ((product#57353 <=> productPlant#57365.product.internalRefUUID) AND (plant#57354 <=> productPlant#57365.plant.internalRefUUID))
(2474) Project
Arguments: [product#57353, plant#57354, orderDateTime#57355, productPlant#57365]
(2475) SubqueryAlias
Arguments: wl
(2476) LogicalRelation
Arguments: parquet, [systemId#57366, internalUUID#57367, id#57368, displayId#57369, name#57370, category#57371, companyCode#57372, address#57373, mainDistributionChain#57374, mainPurchasingOrganization#57375, validPurchasingOrganizations#57376, productGroup#57377], false
(2477) Repartition
Arguments: 10, true
(2478) Project
Arguments: [internalUUID#57367, address#57373.timeZone.code AS timezonecode#57378]
(2479) Join
Arguments: LeftOuter, (plant#57354 <=> internalUUID#57367)
(2480) Project
Arguments: [product#57353, plant#57354, orderDateTime#57355, productPlant#57365, internalUUID#57367, CASE WHEN isnotnull(timezonecode#57378) THEN timezonecode#57378 ELSE UTC END AS timezonecode#57379]
(2481) Project
Arguments: [product#57353, plant#57354, orderDateTime#57355, productPlant#57365, timezonecode#57379]
(2482) LogicalRelation
Arguments: parquet, [systemId#57380, internalUUID#57381, id#57382, displayId#57383, name#57384, baseUnitOfMeasure#57385, unitOfMeasures#57386, unitOfMeasureConversions#57387, productionAspect#57388, salesAspect#57389, procurementAspect#57390, productGroup#57391], false
(2483) Repartition
Arguments: 10, true
(2484) Join
Arguments: LeftOuter, (product#57353 = internalUUID#57381)
(2485) Project
Arguments: [product#57353, plant#57354, orderDateTime#57355, productPlant#57365, timezonecode#57379, systemId#57380, internalUUID#57381, id#57382, displayId#57383, name#57384, baseUnitOfMeasure#57385, unitOfMeasures#57386, unitOfMeasureConversions#57387, productionAspect#57388, salesAspect#57389, procurementAspect#57390, productGroup#57391, filter(unitOfMeasureConversions#57387, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#57365.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#57365.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57385.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57385.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57392]
(2486) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57392.quantityNumerator), true, [quantityNumerator#57393]
(2487) Project
Arguments: [product#57353, plant#57354, orderDateTime#57355, productPlant#57365, timezonecode#57379, systemId#57380, internalUUID#57381, id#57382, displayId#57383, name#57384, baseUnitOfMeasure#57385, unitOfMeasures#57386, unitOfMeasureConversions#57387, productionAspect#57388, salesAspect#57389, procurementAspect#57390, productGroup#57391, filteredUnitOfMeasureConversions#57392, quantityNumerator#57393]
(2488) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57392.quantityDenominator), true, [quantityDenominator#57394]
(2489) Project
Arguments: [product#57353, plant#57354, orderDateTime#57355, productPlant#57365, timezonecode#57379, systemId#57380, internalUUID#57381, id#57382, displayId#57383, name#57384, baseUnitOfMeasure#57385, unitOfMeasures#57386, unitOfMeasureConversions#57387, productionAspect#57388, salesAspect#57389, procurementAspect#57390, productGroup#57391, filteredUnitOfMeasureConversions#57392, quantityNumerator#57393, quantityDenominator#57394]
(2490) Project
Arguments: [product#57353, plant#57354, orderDateTime#57355, productPlant#57365, timezonecode#57379, systemId#57380, internalUUID#57381, id#57382, displayId#57383, name#57384, baseUnitOfMeasure#57385, unitOfMeasures#57386, unitOfMeasureConversions#57387, productionAspect#57388, salesAspect#57389, procurementAspect#57390, productGroup#57391, filteredUnitOfMeasureConversions#57392, quantityNumerator#57393, quantityDenominator#57394, (cast(quantityNumerator#57393 as double) / cast(quantityDenominator#57394 as double)) AS outboundUnit#57395]
(2491) Project
Arguments: [product#57353, plant#57354, orderDateTime#57355, productPlant#57365, timezonecode#57379, systemId#57380, internalUUID#57381, id#57382, displayId#57383, name#57384, baseUnitOfMeasure#57385, unitOfMeasures#57386, unitOfMeasureConversions#57387, productionAspect#57388, salesAspect#57389, procurementAspect#57390, productGroup#57391, filteredUnitOfMeasureConversions#57392, quantityNumerator#57393, quantityDenominator#57394, CASE WHEN (isnull(outboundUnit#57395) OR (outboundUnit#57395 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#57395 END AS outboundUnit#57396]
(2492) Project
Arguments: [product#57353, plant#57354, orderDateTime#57355, productPlant#57365, timezonecode#57379, outboundUnit#57396]
(2493) Project
Arguments: [plant#57354]
(2494) Deduplicate
Arguments: [plant#57354]
(2495) Join
Arguments: Inner, (plantUuid#57350 = plant#57354)
(2496) Project
Arguments: [plantId#57349, plantUuid#57350, storageLocId#57351, storageLocUuid#57352]
(2497) Join
Arguments: Inner, (plant#57322.internalRefUUID <=> plantUuid#57350)
(2498) Generate
Arguments: explode(filter(stockQuantities#57324, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#57352) AND (lambda x#50650.storageLocation.Id = storageLocId#57351)), lambda x#50650, false))), false, [stockQuantity#57397]
(2499) Project
Arguments: [systemId#57319, internalUUID#57320, product#57321, plant#57322, calculationDateTime#57323, stockQuantities#57324, plantId#57349, plantUuid#57350, storageLocId#57351, storageLocUuid#57352, stockQuantity#57397]
(2500) Aggregate
Arguments: [plantUuid#57350, internalUUID#57320, plant#57322, product#57321, systemId#57319], [plantUuid#57350, internalUUID#57320, plant#57322, product#57321, systemId#57319, first(calculationDateTime#57323, false) AS calculationDateTime#57398, collect_list(stockQuantity#57397, 0, 0) AS stockQuantities#57399]
(2501) Project
Arguments: [systemId#57319, internalUUID#57320, product#57321, plant#57322, calculationDateTime#57398, stockQuantities#57399]
(2502) Generate
Arguments: explode(stockQuantities#57399), false, [stockQuantity#57400]
(2503) Project
Arguments: [systemId#57319, internalUUID#57320, product#57321, plant#57322, calculationDateTime#57398, stockQuantities#57399, stockQuantity#57400]
(2504) Project
Arguments: [plant#57322.id AS plant#57401, plant#57322.internalRefUUID AS plantUuid#57402, product#57321.id AS product#57403, product#57321.internalRefUUID AS productUuid#57404, calculationDateTime#57398, stockQuantity#57400.storagelocation.id AS storageLocId#57405, stockQuantity#57400.storagelocation.internalRefUUID AS storageLocUuid#57406, stockQuantity#57400.quantity.measure AS quantity#57407, stockQuantity#57400.specialStockIndicator.code AS specialStockIndicator#57408, stockQuantity#57400.stockType.code AS stockType#57409]
(2505) Filter
Arguments: ((specialStockIndicator#57408 = ) AND (stockType#57409 = 01))
(2506) LogicalRelation
Arguments: parquet, [product#57410, plant#57411, orderDateTime#57412, planningStartDateTime#57413], false
(2507) RepartitionByExpression
Arguments: [product#57410, plant#57411], 10
(2508) Project
Arguments: [product#57410, plant#57411, orderDateTime#57412]
(2509) LogicalRelation
Arguments: parquet, [systemId#57414, internalUUID#57415, plant#57416, product#57417, blockedForReplenishmentStartingFrom#57418, productionAspect#57419, salesPlant#57420, listing#57421], false
(2510) Repartition
Arguments: 10, true
(2511) Project
Arguments: [systemId#57414, internalUUID#57415, plant#57416, product#57417, blockedForReplenishmentStartingFrom#57418, productionAspect#57419, salesPlant#57420, listing#57421, struct(systemId, systemId#57414, internalUUID, internalUUID#57415, plant, plant#57416, product, product#57417, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#57418, productionAspect, productionAspect#57419, salesPlant, salesPlant#57420, listing, listing#57421) AS productPlant#57422]
(2512) Project
Arguments: [productPlant#57422]
(2513) Join
Arguments: LeftOuter, ((product#57410 <=> productPlant#57422.product.internalRefUUID) AND (plant#57411 <=> productPlant#57422.plant.internalRefUUID))
(2514) Project
Arguments: [product#57410, plant#57411, orderDateTime#57412, productPlant#57422]
(2515) SubqueryAlias
Arguments: wl
(2516) LogicalRelation
Arguments: parquet, [systemId#57423, internalUUID#57424, id#57425, displayId#57426, name#57427, category#57428, companyCode#57429, address#57430, mainDistributionChain#57431, mainPurchasingOrganization#57432, validPurchasingOrganizations#57433, productGroup#57434], false
(2517) Repartition
Arguments: 10, true
(2518) Project
Arguments: [internalUUID#57424, address#57430.timeZone.code AS timezonecode#57435]
(2519) Join
Arguments: LeftOuter, (plant#57411 <=> internalUUID#57424)
(2520) Project
Arguments: [product#57410, plant#57411, orderDateTime#57412, productPlant#57422, internalUUID#57424, CASE WHEN isnotnull(timezonecode#57435) THEN timezonecode#57435 ELSE UTC END AS timezonecode#57436]
(2521) Project
Arguments: [product#57410, plant#57411, orderDateTime#57412, productPlant#57422, timezonecode#57436]
(2522) LogicalRelation
Arguments: parquet, [systemId#57437, internalUUID#57438, id#57439, displayId#57440, name#57441, baseUnitOfMeasure#57442, unitOfMeasures#57443, unitOfMeasureConversions#57444, productionAspect#57445, salesAspect#57446, procurementAspect#57447, productGroup#57448], false
(2523) Repartition
Arguments: 10, true
(2524) Join
Arguments: LeftOuter, (product#57410 = internalUUID#57438)
(2525) Project
Arguments: [product#57410, plant#57411, orderDateTime#57412, productPlant#57422, timezonecode#57436, systemId#57437, internalUUID#57438, id#57439, displayId#57440, name#57441, baseUnitOfMeasure#57442, unitOfMeasures#57443, unitOfMeasureConversions#57444, productionAspect#57445, salesAspect#57446, procurementAspect#57447, productGroup#57448, filter(unitOfMeasureConversions#57444, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#57422.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#57422.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57442.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57442.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57449]
(2526) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57449.quantityNumerator), true, [quantityNumerator#57450]
(2527) Project
Arguments: [product#57410, plant#57411, orderDateTime#57412, productPlant#57422, timezonecode#57436, systemId#57437, internalUUID#57438, id#57439, displayId#57440, name#57441, baseUnitOfMeasure#57442, unitOfMeasures#57443, unitOfMeasureConversions#57444, productionAspect#57445, salesAspect#57446, procurementAspect#57447, productGroup#57448, filteredUnitOfMeasureConversions#57449, quantityNumerator#57450]
(2528) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57449.quantityDenominator), true, [quantityDenominator#57451]
(2529) Project
Arguments: [product#57410, plant#57411, orderDateTime#57412, productPlant#57422, timezonecode#57436, systemId#57437, internalUUID#57438, id#57439, displayId#57440, name#57441, baseUnitOfMeasure#57442, unitOfMeasures#57443, unitOfMeasureConversions#57444, productionAspect#57445, salesAspect#57446, procurementAspect#57447, productGroup#57448, filteredUnitOfMeasureConversions#57449, quantityNumerator#57450, quantityDenominator#57451]
(2530) Project
Arguments: [product#57410, plant#57411, orderDateTime#57412, productPlant#57422, timezonecode#57436, systemId#57437, internalUUID#57438, id#57439, displayId#57440, name#57441, baseUnitOfMeasure#57442, unitOfMeasures#57443, unitOfMeasureConversions#57444, productionAspect#57445, salesAspect#57446, procurementAspect#57447, productGroup#57448, filteredUnitOfMeasureConversions#57449, quantityNumerator#57450, quantityDenominator#57451, (cast(quantityNumerator#57450 as double) / cast(quantityDenominator#57451 as double)) AS outboundUnit#57452]
(2531) Project
Arguments: [product#57410, plant#57411, orderDateTime#57412, productPlant#57422, timezonecode#57436, systemId#57437, internalUUID#57438, id#57439, displayId#57440, name#57441, baseUnitOfMeasure#57442, unitOfMeasures#57443, unitOfMeasureConversions#57444, productionAspect#57445, salesAspect#57446, procurementAspect#57447, productGroup#57448, filteredUnitOfMeasureConversions#57449, quantityNumerator#57450, quantityDenominator#57451, CASE WHEN (isnull(outboundUnit#57452) OR (outboundUnit#57452 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#57452 END AS outboundUnit#57453]
(2532) Project
Arguments: [product#57410, plant#57411, orderDateTime#57412, productPlant#57422, timezonecode#57436, outboundUnit#57453]
(2533) Join
Arguments: Inner, ((plantUuid#57402 = plant#57411) AND (productUuid#57404 = product#57410))
(2534) Filter
Arguments: (calculationDateTime#57398 <= orderDateTime#57412)
(2535) Project
Arguments: [plantUuid#57402 AS plant#57454, productUuid#57404 AS product#57455, storageLocId#57405, calculationDateTime#57398, quantity#57407]
(2536) LogicalRelation
Arguments: parquet, [systemId#57456, internalUUID#57457, product#57458, plant#57459, calculationDateTime#57460, stockQuantities#57461], false
(2537) Repartition
Arguments: 10, true
(2538) LogicalRelation
Arguments: parquet, [marketUnit#57462, description#57463, articleHierarchy#57464, defaultCurrency#57465, responsibilities#57466, replenishmentTypes#57467, distributionCenters#57468, assignedArticleHierarchyNodes#57469, minOrderQtySetting#57470, minOrderQtySettingInternal#57471, listingCheck#57472, odsSelection#57473, demandProfiles#57474, constraintProfiles#57475, optimizationProfiles#57476, orderGroupSplitProfiles#57477, supplierMinimumProfiles#57478, multipleRestrictionProfiles#57479, preferredUomSource#57480, handlingOfUnfulfilledDemands#57481, negligibleQuantitiesThreshold#57482, eventtype#57483], false
(2539) Repartition
Arguments: 10, true
(2540) Filter
Arguments: (marketUnit#57462 <=> DIP_1691)
(2541) Project
Arguments: [marketUnit#57462, description#57463, articleHierarchy#57464, defaultCurrency#57465, responsibilities#57466, replenishmentTypes#57467, distributionCenters#57468, assignedArticleHierarchyNodes#57469, minOrderQtySetting#57470, minOrderQtySettingInternal#57471, listingCheck#57472, odsSelection#57473, demandProfiles#57474, constraintProfiles#57475, optimizationProfiles#57476, orderGroupSplitProfiles#57477, supplierMinimumProfiles#57478, multipleRestrictionProfiles#57479, preferredUomSource#57480, handlingOfUnfulfilledDemands#57481, negligibleQuantitiesThreshold#57482, eventtype#57483]
(2542) Project
Arguments: [distributionCenters#57468]
(2543) Generate
Arguments: explode(distributionCenters#57468), false, [distributionCenters#57484]
(2544) Project
Arguments: [distributionCenters#57484]
(2545) Generate
Arguments: explode(distributionCenters#57484.storageLocations), false, [storageLocations#57485]
(2546) Project
Arguments: [distributionCenters#57484.id AS plantId#57486, distributionCenters#57484.internalRefUUID AS plantUuid#57487, storageLocations#57485]
(2547) Project
Arguments: [plantId#57486, plantUuid#57487, storageLocations#57485.id AS storageLocId#57488, storageLocations#57485.internalRefUUID AS storageLocUuid#57489]
(2548) LogicalRelation
Arguments: parquet, [product#57490, plant#57491, orderDateTime#57492, planningStartDateTime#57493], false
(2549) RepartitionByExpression
Arguments: [product#57490, plant#57491], 10
(2550) Project
Arguments: [product#57490, plant#57491, orderDateTime#57492]
(2551) LogicalRelation
Arguments: parquet, [systemId#57494, internalUUID#57495, plant#57496, product#57497, blockedForReplenishmentStartingFrom#57498, productionAspect#57499, salesPlant#57500, listing#57501], false
(2552) Repartition
Arguments: 10, true
(2553) Project
Arguments: [systemId#57494, internalUUID#57495, plant#57496, product#57497, blockedForReplenishmentStartingFrom#57498, productionAspect#57499, salesPlant#57500, listing#57501, struct(systemId, systemId#57494, internalUUID, internalUUID#57495, plant, plant#57496, product, product#57497, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#57498, productionAspect, productionAspect#57499, salesPlant, salesPlant#57500, listing, listing#57501) AS productPlant#57502]
(2554) Project
Arguments: [productPlant#57502]
(2555) Join
Arguments: LeftOuter, ((product#57490 <=> productPlant#57502.product.internalRefUUID) AND (plant#57491 <=> productPlant#57502.plant.internalRefUUID))
(2556) Project
Arguments: [product#57490, plant#57491, orderDateTime#57492, productPlant#57502]
(2557) SubqueryAlias
Arguments: wl
(2558) LogicalRelation
Arguments: parquet, [systemId#57503, internalUUID#57504, id#57505, displayId#57506, name#57507, category#57508, companyCode#57509, address#57510, mainDistributionChain#57511, mainPurchasingOrganization#57512, validPurchasingOrganizations#57513, productGroup#57514], false
(2559) Repartition
Arguments: 10, true
(2560) Project
Arguments: [internalUUID#57504, address#57510.timeZone.code AS timezonecode#57515]
(2561) Join
Arguments: LeftOuter, (plant#57491 <=> internalUUID#57504)
(2562) Project
Arguments: [product#57490, plant#57491, orderDateTime#57492, productPlant#57502, internalUUID#57504, CASE WHEN isnotnull(timezonecode#57515) THEN timezonecode#57515 ELSE UTC END AS timezonecode#57516]
(2563) Project
Arguments: [product#57490, plant#57491, orderDateTime#57492, productPlant#57502, timezonecode#57516]
(2564) LogicalRelation
Arguments: parquet, [systemId#57517, internalUUID#57518, id#57519, displayId#57520, name#57521, baseUnitOfMeasure#57522, unitOfMeasures#57523, unitOfMeasureConversions#57524, productionAspect#57525, salesAspect#57526, procurementAspect#57527, productGroup#57528], false
(2565) Repartition
Arguments: 10, true
(2566) Join
Arguments: LeftOuter, (product#57490 = internalUUID#57518)
(2567) Project
Arguments: [product#57490, plant#57491, orderDateTime#57492, productPlant#57502, timezonecode#57516, systemId#57517, internalUUID#57518, id#57519, displayId#57520, name#57521, baseUnitOfMeasure#57522, unitOfMeasures#57523, unitOfMeasureConversions#57524, productionAspect#57525, salesAspect#57526, procurementAspect#57527, productGroup#57528, filter(unitOfMeasureConversions#57524, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#57502.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#57502.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57522.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57522.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57529]
(2568) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57529.quantityNumerator), true, [quantityNumerator#57530]
(2569) Project
Arguments: [product#57490, plant#57491, orderDateTime#57492, productPlant#57502, timezonecode#57516, systemId#57517, internalUUID#57518, id#57519, displayId#57520, name#57521, baseUnitOfMeasure#57522, unitOfMeasures#57523, unitOfMeasureConversions#57524, productionAspect#57525, salesAspect#57526, procurementAspect#57527, productGroup#57528, filteredUnitOfMeasureConversions#57529, quantityNumerator#57530]
(2570) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57529.quantityDenominator), true, [quantityDenominator#57531]
(2571) Project
Arguments: [product#57490, plant#57491, orderDateTime#57492, productPlant#57502, timezonecode#57516, systemId#57517, internalUUID#57518, id#57519, displayId#57520, name#57521, baseUnitOfMeasure#57522, unitOfMeasures#57523, unitOfMeasureConversions#57524, productionAspect#57525, salesAspect#57526, procurementAspect#57527, productGroup#57528, filteredUnitOfMeasureConversions#57529, quantityNumerator#57530, quantityDenominator#57531]
(2572) Project
Arguments: [product#57490, plant#57491, orderDateTime#57492, productPlant#57502, timezonecode#57516, systemId#57517, internalUUID#57518, id#57519, displayId#57520, name#57521, baseUnitOfMeasure#57522, unitOfMeasures#57523, unitOfMeasureConversions#57524, productionAspect#57525, salesAspect#57526, procurementAspect#57527, productGroup#57528, filteredUnitOfMeasureConversions#57529, quantityNumerator#57530, quantityDenominator#57531, (cast(quantityNumerator#57530 as double) / cast(quantityDenominator#57531 as double)) AS outboundUnit#57532]
(2573) Project
Arguments: [product#57490, plant#57491, orderDateTime#57492, productPlant#57502, timezonecode#57516, systemId#57517, internalUUID#57518, id#57519, displayId#57520, name#57521, baseUnitOfMeasure#57522, unitOfMeasures#57523, unitOfMeasureConversions#57524, productionAspect#57525, salesAspect#57526, procurementAspect#57527, productGroup#57528, filteredUnitOfMeasureConversions#57529, quantityNumerator#57530, quantityDenominator#57531, CASE WHEN (isnull(outboundUnit#57532) OR (outboundUnit#57532 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#57532 END AS outboundUnit#57533]
(2574) Project
Arguments: [product#57490, plant#57491, orderDateTime#57492, productPlant#57502, timezonecode#57516, outboundUnit#57533]
(2575) Project
Arguments: [plant#57491]
(2576) Deduplicate
Arguments: [plant#57491]
(2577) Join
Arguments: Inner, (plantUuid#57487 = plant#57491)
(2578) Project
Arguments: [plantId#57486, plantUuid#57487, storageLocId#57488, storageLocUuid#57489]
(2579) Join
Arguments: Inner, (plant#57459.internalRefUUID <=> plantUuid#57487)
(2580) Generate
Arguments: explode(filter(stockQuantities#57461, lambdafunction(((lambda x#50650.storageLocation.internalRefUuid = storageLocUuid#57489) AND (lambda x#50650.storageLocation.Id = storageLocId#57488)), lambda x#50650, false))), false, [stockQuantity#57534]
(2581) Project
Arguments: [systemId#57456, internalUUID#57457, product#57458, plant#57459, calculationDateTime#57460, stockQuantities#57461, plantId#57486, plantUuid#57487, storageLocId#57488, storageLocUuid#57489, stockQuantity#57534]
(2582) Aggregate
Arguments: [plantUuid#57487, internalUUID#57457, plant#57459, product#57458, systemId#57456], [plantUuid#57487, internalUUID#57457, plant#57459, product#57458, systemId#57456, first(calculationDateTime#57460, false) AS calculationDateTime#57535, collect_list(stockQuantity#57534, 0, 0) AS stockQuantities#57536]
(2583) Project
Arguments: [systemId#57456, internalUUID#57457, product#57458, plant#57459, calculationDateTime#57535, stockQuantities#57536]
(2584) Generate
Arguments: explode(stockQuantities#57536), false, [stockQuantity#57537]
(2585) Project
Arguments: [systemId#57456, internalUUID#57457, product#57458, plant#57459, calculationDateTime#57535, stockQuantities#57536, stockQuantity#57537]
(2586) Project
Arguments: [plant#57459.id AS plant#57538, plant#57459.internalRefUUID AS plantUuid#57539, product#57458.id AS product#57540, product#57458.internalRefUUID AS productUuid#57541, calculationDateTime#57535, stockQuantity#57537.storagelocation.id AS storageLocId#57542, stockQuantity#57537.storagelocation.internalRefUUID AS storageLocUuid#57543, stockQuantity#57537.quantity.measure AS quantity#57544, stockQuantity#57537.specialStockIndicator.code AS specialStockIndicator#57545, stockQuantity#57537.stockType.code AS stockType#57546]
(2587) Filter
Arguments: ((specialStockIndicator#57545 = ) AND (stockType#57546 = 01))
(2588) LogicalRelation
Arguments: parquet, [product#57547, plant#57548, orderDateTime#57549, planningStartDateTime#57550], false
(2589) RepartitionByExpression
Arguments: [product#57547, plant#57548], 10
(2590) Project
Arguments: [product#57547, plant#57548, orderDateTime#57549]
(2591) LogicalRelation
Arguments: parquet, [systemId#57551, internalUUID#57552, plant#57553, product#57554, blockedForReplenishmentStartingFrom#57555, productionAspect#57556, salesPlant#57557, listing#57558], false
(2592) Repartition
Arguments: 10, true
(2593) Project
Arguments: [systemId#57551, internalUUID#57552, plant#57553, product#57554, blockedForReplenishmentStartingFrom#57555, productionAspect#57556, salesPlant#57557, listing#57558, struct(systemId, systemId#57551, internalUUID, internalUUID#57552, plant, plant#57553, product, product#57554, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#57555, productionAspect, productionAspect#57556, salesPlant, salesPlant#57557, listing, listing#57558) AS productPlant#57559]
(2594) Project
Arguments: [productPlant#57559]
(2595) Join
Arguments: LeftOuter, ((product#57547 <=> productPlant#57559.product.internalRefUUID) AND (plant#57548 <=> productPlant#57559.plant.internalRefUUID))
(2596) Project
Arguments: [product#57547, plant#57548, orderDateTime#57549, productPlant#57559]
(2597) SubqueryAlias
Arguments: wl
(2598) LogicalRelation
Arguments: parquet, [systemId#57560, internalUUID#57561, id#57562, displayId#57563, name#57564, category#57565, companyCode#57566, address#57567, mainDistributionChain#57568, mainPurchasingOrganization#57569, validPurchasingOrganizations#57570, productGroup#57571], false
(2599) Repartition
Arguments: 10, true
(2600) Project
Arguments: [internalUUID#57561, address#57567.timeZone.code AS timezonecode#57572]
(2601) Join
Arguments: LeftOuter, (plant#57548 <=> internalUUID#57561)
(2602) Project
Arguments: [product#57547, plant#57548, orderDateTime#57549, productPlant#57559, internalUUID#57561, CASE WHEN isnotnull(timezonecode#57572) THEN timezonecode#57572 ELSE UTC END AS timezonecode#57573]
(2603) Project
Arguments: [product#57547, plant#57548, orderDateTime#57549, productPlant#57559, timezonecode#57573]
(2604) LogicalRelation
Arguments: parquet, [systemId#57574, internalUUID#57575, id#57576, displayId#57577, name#57578, baseUnitOfMeasure#57579, unitOfMeasures#57580, unitOfMeasureConversions#57581, productionAspect#57582, salesAspect#57583, procurementAspect#57584, productGroup#57585], false
(2605) Repartition
Arguments: 10, true
(2606) Join
Arguments: LeftOuter, (product#57547 = internalUUID#57575)
(2607) Project
Arguments: [product#57547, plant#57548, orderDateTime#57549, productPlant#57559, timezonecode#57573, systemId#57574, internalUUID#57575, id#57576, displayId#57577, name#57578, baseUnitOfMeasure#57579, unitOfMeasures#57580, unitOfMeasureConversions#57581, productionAspect#57582, salesAspect#57583, procurementAspect#57584, productGroup#57585, filter(unitOfMeasureConversions#57581, lambdafunction((((lambda u#50592.measurementUnit1.code = productPlant#57559.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#50592.measurementUnit1.internalRefUUID = productPlant#57559.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#50592.measurementUnit2.code = baseUnitOfMeasure#57579.code) AND (lambda u#50592.measurementUnit2.internalRefUUID = baseUnitOfMeasure#57579.internalRefUUID))), lambda u#50592, false)) AS filteredUnitOfMeasureConversions#57586]
(2608) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57586.quantityNumerator), true, [quantityNumerator#57587]
(2609) Project
Arguments: [product#57547, plant#57548, orderDateTime#57549, productPlant#57559, timezonecode#57573, systemId#57574, internalUUID#57575, id#57576, displayId#57577, name#57578, baseUnitOfMeasure#57579, unitOfMeasures#57580, unitOfMeasureConversions#57581, productionAspect#57582, salesAspect#57583, procurementAspect#57584, productGroup#57585, filteredUnitOfMeasureConversions#57586, quantityNumerator#57587]
(2610) Generate
Arguments: explode(filteredUnitOfMeasureConversions#57586.quantityDenominator), true, [quantityDenominator#57588]
(2611) Project
Arguments: [product#57547, plant#57548, orderDateTime#57549, productPlant#57559, timezonecode#57573, systemId#57574, internalUUID#57575, id#57576, displayId#57577, name#57578, baseUnitOfMeasure#57579, unitOfMeasures#57580, unitOfMeasureConversions#57581, productionAspect#57582, salesAspect#57583, procurementAspect#57584, productGroup#57585, filteredUnitOfMeasureConversions#57586, quantityNumerator#57587, quantityDenominator#57588]
(2612) Project
Arguments: [product#57547, plant#57548, orderDateTime#57549, productPlant#57559, timezonecode#57573, systemId#57574, internalUUID#57575, id#57576, displayId#57577, name#57578, baseUnitOfMeasure#57579, unitOfMeasures#57580, unitOfMeasureConversions#57581, productionAspect#57582, salesAspect#57583, procurementAspect#57584, productGroup#57585, filteredUnitOfMeasureConversions#57586, quantityNumerator#57587, quantityDenominator#57588, (cast(quantityNumerator#57587 as double) / cast(quantityDenominator#57588 as double)) AS outboundUnit#57589]
(2613) Project
Arguments: [product#57547, plant#57548, orderDateTime#57549, productPlant#57559, timezonecode#57573, systemId#57574, internalUUID#57575, id#57576, displayId#57577, name#57578, baseUnitOfMeasure#57579, unitOfMeasures#57580, unitOfMeasureConversions#57581, productionAspect#57582, salesAspect#57583, procurementAspect#57584, productGroup#57585, filteredUnitOfMeasureConversions#57586, quantityNumerator#57587, quantityDenominator#57588, CASE WHEN (isnull(outboundUnit#57589) OR (outboundUnit#57589 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#57589 END AS outboundUnit#57590]
(2614) Project
Arguments: [product#57547, plant#57548, orderDateTime#57549, productPlant#57559, timezonecode#57573, outboundUnit#57590]
(2615) Join
Arguments: Inner, ((plantUuid#57539 = plant#57548) AND (productUuid#57541 = product#57547))
(2616) Filter
Arguments: (calculationDateTime#57535 <= orderDateTime#57549)
(2617) Project
Arguments: [plantUuid#57539 AS plant#57591, productUuid#57541 AS product#57592, storageLocId#57542, calculationDateTime#57535, quantity#57544]
(2618) Aggregate
Arguments: [plant#57591, product#57592, storageLocId#57542], [plant#57591, product#57592, storageLocId#57542, max(calculationDateTime#57535) AS max_calc_datetime#57593]
(2619) Join
Arguments: Inner, ((((plant#57454 <=> plant#57591) AND (product#57455 <=> product#57592)) AND (storageLocId#57405 <=> storageLocId#57542)) AND (calculationDateTime#57398 <=> max_calc_datetime#57593))
(2620) Project
Arguments: [plant#57454, product#57455, storageLocId#57405, calculationDateTime#57398, quantity#57407]
(2621) Aggregate
Arguments: [product#57455, plant#57454], [product#57455, plant#57454, sum(quantity#57407) AS quantitySum#57594, min(calculationDateTime#57398) AS minCalculationDateTime#57595]
(2622) Project
Arguments: [product#57455, plant#57454, quantitySum#57594, minCalculationDateTime#57595, round(quantitySum#57594, 0) AS roundedQuantitySum#57596]
(2623) Join
Arguments: LeftOuter, ((plant#57276 = plant#57454) AND (product#57275 = product#57455))
(2624) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, roundedQuantitySum#57596, minCalculationDateTime#57595]
(2625) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, roundedQuantitySum#57596, minCalculationDateTime#57595, CASE WHEN isnotnull(minCalculationDateTime#57595) THEN minCalculationDateTime#57595 ELSE orderDateTime#57277 END AS stockDatetime#57597]
(2626) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, roundedQuantitySum#57596, minCalculationDateTime#57595, stockDatetime#57597, CASE WHEN isnotnull(roundedQuantitySum#57596) THEN array(roundedQuantitySum#57596) ELSE array(0.0) END AS stockBatchQuantities#57598]
(2627) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, roundedQuantitySum#57596, minCalculationDateTime#57595, stockDatetime#57597, stockBatchQuantities#57598, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#57599]
(2628) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, roundedQuantitySum#57596, stockDatetime#57597, stockBatchQuantities#57598, stockBatchShelfLifeEndDatetimes#57599]
(2629) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, stockDatetime#57597, stockBatchQuantities#57598, stockBatchShelfLifeEndDatetimes#57599]
(2630) LogicalRelation
Arguments: parquet, [product#57600, plant#57601, demandChannel#57602, demandStream#57603, considerVariance#57604, demandTimeBuckets#57605, demandPointInTimeStart#57606, demandPointInTimeEnd#57607, demandPointInTime#57608], false
(2631) Join
Arguments: LeftOuter, ((product#57275 = product#57600) AND (plant#57276 = plant#57601))
(2632) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, stockDatetime#57597, stockBatchQuantities#57598, stockBatchShelfLifeEndDatetimes#57599, demandChannel#57602, demandStream#57603, considerVariance#57604, demandTimeBuckets#57605, demandPointInTimeStart#57606, demandPointInTimeEnd#57607, demandPointInTime#57608, product#57600, plant#57601]
(2633) Project
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, stockDatetime#57597, stockBatchQuantities#57598, stockBatchShelfLifeEndDatetimes#57599, demandChannel#57602, demandStream#57603, considerVariance#57604, demandTimeBuckets#57605, demandPointInTimeStart#57606, demandPointInTimeEnd#57607, demandPointInTime#57608, CASE WHEN isnotnull(product#57600) THEN struct(demandChannel, demandChannel#57602, demandStream, demandStream#57603, considerVariance, considerVariance#57604, demandTimeBuckets, demandTimeBuckets#57605, demandPointInTimeStart, demandPointInTimeStart#57606, demandPointInTimeEnd, demandPointInTimeEnd#57607, demandPointInTime, demandPointInTime#57608) 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#57609]
(2634) Aggregate
Arguments: [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, stockDatetime#57597, stockBatchQuantities#57598, stockBatchShelfLifeEndDatetimes#57599], [product#57275, plant#57276, orderDateTime#57277, productPlant#57287, timezonecode#57301, outboundUnit#57318, stockDatetime#57597, stockBatchQuantities#57598, stockBatchShelfLifeEndDatetimes#57599, collect_list(rawDemands#57609, 0, 0) AS rawDemands#57610]
(2635) DeserializeToObject
Arguments: createexternalrow(invoke(product#57275.toString()), invoke(plant#57276.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#57277)), if (isnull(productPlant#57287)) null else createexternalrow(invoke(productPlant#57287.systemId.toString()), invoke(productPlant#57287.internalUUID.toString()), if (isnull(productPlant#57287.plant)) null else createexternalrow(invoke(productPlant#57287.plant.internalRefUUID.toString()), invoke(productPlant#57287.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#57287.product)) null else createexternalrow(invoke(productPlant#57287.product.internalRefUUID.toString()), invoke(productPlant#57287.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#57287.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#57287.productionAspect)) null else createexternalrow(if (isnull(productPlant#57287.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#57287.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#57287.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#57287.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#57287.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#57287.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#57287.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#57287.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#57287.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#57287.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#57287.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#57287.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#57287.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#57287.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#57287.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#57287.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#57287.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#57287.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#57287.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#57287.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#57287.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#57287.salesPlant)) null else createexternalrow(if (isnull(productPlant#57287.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#57287.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#57287.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, 7092), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 7092).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#57287.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#57301.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#57318)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#57597)), mapobjects(lambdavariable(MapObject, DoubleType, true, 7093), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 7093) as double))), stockBatchQuantities#57598, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 7094), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 7094) as timestamp)))), stockBatchShelfLifeEndDatetimes#57599, 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, 7095), 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, 7095))) 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, 7095).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, 7095).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, 7095).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7096).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, 7095).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, 7095).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, 7095).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 7097).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, 7095).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#57610, 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#51012: org.apache.spark.sql.Row
(2636) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x0000000801eb8468@22994051, 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#51017: 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#57611, 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#57612, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7083), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7083), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7084), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7084), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7085), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7085), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7086), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7086), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 7087), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7087), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7082), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#57613, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7089), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7089), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7090), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7090), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7091), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7091), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 7088), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#57614]
(2638) Join
Arguments: LeftOuter, ((plant#57612 <=> plant#56951) AND (product#57611 <=> product#56950))
(2639) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, outboundUnit#56993, stockDatetime#57272, stockBatchQuantities#57273, stockBatchShelfLifeEndDatetimes#57274, plant#57612, dayBucketDemands#57613, pointInTimeDemands#57614]
(2640) Project
Arguments: [product#56950, plant#56951, orderDateTime#56952, productPlant#56962, timezonecode#56976, outboundUnit#56993, stockDatetime#57272, stockBatchQuantities#57273, stockBatchShelfLifeEndDatetimes#57274, dayBucketDemands#57613, pointInTimeDemands#57614]
(2641) LogicalRelation
Arguments: parquet, [systemId#57615, internalUUID#57616, id#57617, displayId#57618, supplier#57619, type#57620, status#57621, isMarkedForDeletion#57622, items#57623], false
(2642) Repartition
Arguments: 10, true
(2643) Generate
Arguments: explode(items#57623), false, [item#57624]
(2644) Project
Arguments: [id#57617, internalUUID#57616, isMarkedForDeletion#57622, supplier#57619.internalRefUUID AS supplierUuid#57625, item#57624]
(2645) Filter
Arguments: (((NOT isMarkedForDeletion#57622 AND NOT item#57624.deletionIndicator) AND NOT item#57624.completeIndicator) AND NOT item#57624.returnIndicator)
(2646) Project
Arguments: [id#57617, internalUUID#57616, supplierUuid#57625, item#57624.plant.internalRefUUID AS plant#57626, item#57624.product.internalRefUUID AS product#57627, item#57624.storageLocation.internalRefUUID AS storageLocUuid#57628, item#57624.quantityUnit.code AS quantityUom#57629, item#57624.quantityUnit.internalRefUUID AS quantityUomUuid#57630, item#57624.quantityNumerator AS quantityNumerator#57631, item#57624.quantityDenominator AS quantityDenominator#57632, item#57624.scheduleLines AS scheduleLines#57633, item#57624.confirmations AS confirmations#57634]
(2647) Join
Arguments: Inner, ((product#56950 <=> product#57627) AND (plant#56951 <=> supplierUuid#57625))
(2648) Project
Arguments: [id#57617, internalUUID#57616, supplierUuid#57625, plant#57626, product#57627, storageLocUuid#57628, quantityUom#57629, quantityUomUuid#57630, quantityNumerator#57631, quantityDenominator#57632, scheduleLines#57633, confirmations#57634, stockDatetime#57272, plant#56951]
(2649) Project
Arguments: [id#57617, internalUUID#57616, supplierUuid#57625, product#57627, storageLocUuid#57628, quantityUom#57629, quantityUomUuid#57630, quantityNumerator#57631, quantityDenominator#57632, scheduleLines#57633, confirmations#57634, stockDatetime#57272, plant#56951]
(2650) Project
Arguments: [id#57617, internalUUID#57616, supplierUuid#57625, product#57627, storageLocUuid#57628, quantityUom#57629, quantityUomUuid#57630, quantityNumerator#57631, quantityDenominator#57632, scheduleLines#57633, confirmations#57634, stockDatetime#57272, plant#56951, filter(transform(filter(transform(scheduleLines#57633, lambdafunction(struct(openQty, (greatest((lambda x_26#53747.quantity - coalesce(lambda x_26#53747.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_26#53747.productAvailabilityDateTime, lambda x_26#53747.deliveryAt)), lambda x_26#53747, false)), lambdafunction((lambda x_27#53748.availabilityDatetime < stockDatetime#57272), lambda x_27#53748, false)), lambdafunction(struct(documentId, id#57617, documentUuid, internalUUID#57616, openQty, lambda x_28#53749.openQty, openQtyInBaseUnit, ((lambda x_28#53749.openQty * quantityNumerator#57631) / quantityDenominator#57632), qtyUom, quantityUom#57629, qtyUomUuid, quantityUomUuid#57630, availabilityDatetime, lambda x_28#53749.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_28#53749, false)), lambdafunction(NOT (lambda x_29#53750.openQty = 0.0), lambda x_29#53750, false)) AS openGoodsMovements#57635]
(2651) Aggregate
Arguments: [product#57627, plant#56951], [product#57627, plant#56951, flatten(collect_list(openGoodsMovements#57635, 0, 0)) AS openGoodsMovements#57636]
(2652) Filter
Arguments: (array_size(openGoodsMovements#57636) > 0)
(2653) Union
Arguments: false, false
(2654) Aggregate
Arguments: [product#56938, plant#56937], [product#56938, plant#56937, flatten(collect_list(openGoodsMovements#56949, 0, 0)) AS openGoodsMovements#57637]
(2655) Join
Arguments: LeftOuter, ((product#55523 = product#56938) AND (plant#55524 = plant#56937))
(2656) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, stockBatchShelfLifeEndDatetimes#55847, dayBucketDemands#56186, pointInTimeDemands#56187, openGoodsMovements#57637]
(2657) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, stockBatchShelfLifeEndDatetimes#55847, dayBucketDemands#56186, pointInTimeDemands#56187, coalesce(openGoodsMovements#57637.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#57638, coalesce(openGoodsMovements#57637.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#57639, coalesce(openGoodsMovements#57637.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#57640]
(2658) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, stockBatchShelfLifeEndDatetimes#55847, dayBucketDemands#56186, pointInTimeDemands#56187, openGoodsMovementQuantities#57638, openGoodsMovementAvailabilityDatetimes#57639, openGoodsMovementShelfLifeEndDatetimes#57640, 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#57641]
(2659) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, stockBatchShelfLifeEndDatetimes#55847, dayBucketDemands#56186, pointInTimeDemands#56187, openGoodsMovementQuantities#57638, openGoodsMovementAvailabilityDatetimes#57639, openGoodsMovementShelfLifeEndDatetimes#57640, configuration#57641, productPlant#55535.listing AS listing#55463]
(2660) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, stockBatchShelfLifeEndDatetimes#55847, dayBucketDemands#56186, pointInTimeDemands#56187, openGoodsMovementQuantities#57638, openGoodsMovementAvailabilityDatetimes#57639, openGoodsMovementShelfLifeEndDatetimes#57640, configuration#57641, CASE WHEN isnotnull(listing#55463) THEN listing#55463 ELSE cast(array() as array<struct<validFrom:timestamp,validTo:timestamp,isListed:boolean>>) END AS listing#55465]
(2661) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, stockBatchShelfLifeEndDatetimes#55847, dayBucketDemands#56186, pointInTimeDemands#56187, openGoodsMovementQuantities#57638, openGoodsMovementAvailabilityDatetimes#57639, openGoodsMovementShelfLifeEndDatetimes#57640, configuration#57641, filter(listing#55465, lambdafunction((lambda listing#55467.isListed = true), lambda listing#55467, false)) AS listing#55466]
(2662) Project
Arguments: [product#55523, plant#55524, orderDateTime#55525, productPlant#55535, timezonecode#55549, outboundUnit#55566, stockDatetime#55845, stockBatchQuantities#55846, stockBatchShelfLifeEndDatetimes#55847, dayBucketDemands#56186, pointInTimeDemands#56187, openGoodsMovementQuantities#57638, openGoodsMovementAvailabilityDatetimes#57639, openGoodsMovementShelfLifeEndDatetimes#57640, configuration#57641, array_sort(listing#55466, lambdafunction(if ((isnull(lambda left#55469) AND isnull(lambda right#55470))) 0 else if (isnull(lambda left#55469)) 1 else if (isnull(lambda right#55470)) -1 else if ((lambda left#55469 < lambda right#55470)) -1 else if ((lambda left#55469 > lambda right#55470)) 1 else 0, lambda left#55469, lambda right#55470, false), false) AS listing#55468]
(2663) DeserializeToObject
Arguments: createexternalrow(invoke(product#55523.toString()), invoke(plant#55524.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#55525)), if (isnull(productPlant#55535)) null else createexternalrow(invoke(productPlant#55535.systemId.toString()), invoke(productPlant#55535.internalUUID.toString()), if (isnull(productPlant#55535.plant)) null else createexternalrow(invoke(productPlant#55535.plant.internalRefUUID.toString()), invoke(productPlant#55535.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#55535.product)) null else createexternalrow(invoke(productPlant#55535.product.internalRefUUID.toString()), invoke(productPlant#55535.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#55535.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#55535.productionAspect)) null else createexternalrow(if (isnull(productPlant#55535.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#55535.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#55535.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#55535.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#55535.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#55535.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#55535.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#55535.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#55535.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#55535.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#55535.productionAspect.productPlanningPlants.minimumLotSize)), if (isnull(productPlant#55535.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#55535.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#55535.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#55535.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#55535.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#55535.salesPlant)) null else createexternalrow(if (isnull(productPlant#55535.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#55535.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#55535.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, 8180), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 8180))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 8180).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 8180).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 8180).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#55535.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#55549.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#55566)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#55845)), mapobjects(lambdavariable(MapObject, DoubleType, true, 8181), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 8181) as double))), stockBatchQuantities#55846, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 8182), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 8182) as timestamp)))), stockBatchShelfLifeEndDatetimes#55847, 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, 8183), 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, 8183))) 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, 8183).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, 8183).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, 8183).considerVariance)), mapobjects(lambdavariable(MapObject, DoubleType, false, 8184), assertnotnull(static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, false, 8184) 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, 8183).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 8185), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 8185) 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, 8183).demandVariances, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 8186), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 8186) 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, 8183).anchorDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StringType, false, 8187), assertnotnull(invoke(cast(lambdavariable(MapObject, StringType, false, 8187) 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, 8183).anchorWeekdays, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, IntegerType, false, 8188), assertnotnull(static_invoke(java.lang.Integer.valueOf(cast(lambdavariable(MapObject, IntegerType, false, 8188) 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, 8183).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#56186, 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, 8189), 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, 8189))) 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, 8189).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, 8189).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, 8189).considerVariance)), mapobjects(lambdavariable(MapObject, TimestampType, false, 8190), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 8190) 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, 8189).demandDatetimes, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, false, 8191), assertnotnull(static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, false, 8191) 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, 8189).demandValues, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 8192), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 8192) 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, 8189).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, 8189).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, 8189).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#56187, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, DoubleType, true, 8193), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 8193) as double))), openGoodsMovementQuantities#57638, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, true, 8194), static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, true, 8194) as timestamp))), openGoodsMovementAvailabilityDatetimes#57639, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 8195), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 8195) as timestamp)))), openGoodsMovementShelfLifeEndDatetimes#57640, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 8196), assertnotnull(if (isnull(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 8196))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 8196).configurationValidityDatetime)), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 8196).configurationName.toString()), invoke(lambdavariable(MapObject, StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false), false, 8196).configurationValue.toString()), StructField(configurationValidityDatetime,TimestampType,false), StructField(configurationName,StringType,false), StructField(configurationValue,StringType,false))), configuration#57641, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 8197), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 8197))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 8197).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 8197).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 8197).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), listing#55468, 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#55503: 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#55510: 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#55517, 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#55518, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 8176), static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 8176), 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#55519, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 8177), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 8177), 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#55520, assertnotnull(mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 8178), static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 8178), 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#55521, 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, 8179), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 8179), 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#55522]
(2666) Join
Arguments: LeftOuter, ((product#50545 = product#55517) AND (plant#50546 = plant#55518))
(2667) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, configuration#55324, timeDependentSettingsName#55519, timeDependentSettingsStartDatetime#55520, timeDependentSettingsEndDatetime#55521, timeDependentSettingsValue#55522]
(2668) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, configuration#55324, CASE WHEN isnotnull(timeDependentSettingsName#55519) THEN timeDependentSettingsName#55519 ELSE cast(array() as array<string>) END AS timeDependentSettingsName#57796, timeDependentSettingsStartDatetime#55520, timeDependentSettingsEndDatetime#55521, timeDependentSettingsValue#55522]
(2669) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, configuration#55324, timeDependentSettingsName#57796, CASE WHEN isnotnull(timeDependentSettingsStartDatetime#55520) THEN timeDependentSettingsStartDatetime#55520 ELSE cast(array() as array<timestamp>) END AS timeDependentSettingsStartDatetime#57797, timeDependentSettingsEndDatetime#55521, timeDependentSettingsValue#55522]
(2670) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, configuration#55324, timeDependentSettingsName#57796, timeDependentSettingsStartDatetime#57797, CASE WHEN isnotnull(timeDependentSettingsEndDatetime#55521) THEN timeDependentSettingsEndDatetime#55521 ELSE cast(array() as array<timestamp>) END AS timeDependentSettingsEndDatetime#57798, timeDependentSettingsValue#55522]
(2671) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, productPlant#50559, timezonecode#50577, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, configuration#55324, timeDependentSettingsName#57796, timeDependentSettingsStartDatetime#57797, timeDependentSettingsEndDatetime#57798, CASE WHEN isnotnull(timeDependentSettingsValue#55522) THEN timeDependentSettingsValue#55522 ELSE cast(array() as array<double>) END AS timeDependentSettingsValue#57799]
(2672) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, timezonecode#50577, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, configuration#55324, timeDependentSettingsName#57796, timeDependentSettingsStartDatetime#57797, timeDependentSettingsEndDatetime#57798, timeDependentSettingsValue#57799]
(2673) Project
Arguments: [product#50545, plant#50546, orderDateTime#50547, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, configuration#55324, timeDependentSettingsName#57796, timeDependentSettingsStartDatetime#57797, timeDependentSettingsEndDatetime#57798, timeDependentSettingsValue#57799]
(2674) Project
Arguments: [product#50545, plant#50546, outboundUnit#50604, stockDatetime#50949, stockBatchQuantities#50950, stockBatchShelfLifeEndDatetimes#50951, dayBucketDemands#51024, pointInTimeDemands#51025, openGoodsMovementQuantities#55221, openGoodsMovementAvailabilityDatetimes#55222, openGoodsMovementShelfLifeEndDatetimes#55223, configuration#55324, timeDependentSettingsName#57796, timeDependentSettingsStartDatetime#57797, timeDependentSettingsEndDatetime#57798, timeDependentSettingsValue#57799]