== Physical Plan ==
Execute SaveIntoDataSourceCommand (1)
+- SaveIntoDataSourceCommand (2)
+- Project (1342)
+- Project (1341)
+- Project (1340)
+- Project (1339)
+- Project (1338)
+- Project (1337)
+- Project (1336)
+- Project (1335)
+- Project (1334)
+- Project (1333)
+- Project (1332)
+- Project (1331)
+- Project (1330)
+- Project (1329)
+- Join (1328)
:- 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 (1327)
+- Union (1326)
:- Filter (896)
: +- Aggregate (895)
: +- Project (894)
: +- Project (893)
: +- Window (892)
: +- Project (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 (1325)
+- Aggregate (1324)
+- Project (1323)
+- Project (1322)
+- Project (1321)
+- Join (1320)
:- Project (1313)
: +- Project (1312)
: +- Join (1311)
: :- Project (1099)
: : +- Project (1098)
: : +- Project (1097)
: : +- Project (1096)
: : +- Project (1095)
: : +- Project (1094)
: : +- Join (1093)
: : :- Project (923)
: : : +- Project (922)
: : : +- Project (921)
: : : +- Project (920)
: : : +- Generate (919)
: : : +- Project (918)
: : : +- Generate (917)
: : : +- Project (916)
: : : +- Join (915)
: : : :- Project (912)
: : : : +- Project (911)
: : : : +- Join (910)
: : : : :- SubqueryAlias (906)
: : : : : +- Project (905)
: : : : : +- Join (904)
: : : : : :- Project (899)
: : : : : : +- RepartitionByExpression (898)
: : : : : : +- LogicalRelation (897)
: : : : : +- Project (903)
: : : : : +- Project (902)
: : : : : +- Repartition (901)
: : : : : +- LogicalRelation (900)
: : : : +- Project (909)
: : : : +- Repartition (908)
: : : : +- LogicalRelation (907)
: : : +- Repartition (914)
: : : +- LogicalRelation (913)
: : +- Project (1092)
: : +- Aggregate (1091)
: : +- Project (1090)
: : +- Join (1089)
: : :- Project (1005)
: : : +- Filter (1004)
: : : +- Join (1003)
: : : :- Filter (975)
: : : : +- Project (974)
: : : : +- Project (973)
: : : : +- Generate (972)
: : : : +- Project (971)
: : : : +- Aggregate (970)
: : : : +- Project (969)
: : : : +- Generate (968)
: : : : +- Join (967)
: : : : :- Repartition (925)
: : : : : +- LogicalRelation (924)
: : : : +- Project (966)
: : : : +- Join (965)
: : : : :- Project (935)
: : : : : +- Project (934)
: : : : : +- Generate (933)
: : : : : +- Project (932)
: : : : : +- Generate (931)
: : : : : +- Project (930)
: : : : : +- Project (929)
: : : : : +- Filter (928)
: : : : : +- Repartition (927)
: : : : : +- LogicalRelation (926)
: : : : +- Deduplicate (964)
: : : : +- Project (963)
: : : : +- Project (962)
: : : : +- Project (961)
: : : : +- Project (960)
: : : : +- Project (959)
: : : : +- Generate (958)
: : : : +- Project (957)
: : : : +- Generate (956)
: : : : +- Project (955)
: : : : +- Join (954)
: : : : :- Project (951)
: : : : : +- Project (950)
: : : : : +- Join (949)
: : : : : :- SubqueryAlias (945)
: : : : : : +- Project (944)
: : : : : : +- Join (943)
: : : : : : :- Project (938)
: : : : : : : +- RepartitionByExpression (937)
: : : : : : : +- LogicalRelation (936)
: : : : : : +- Project (942)
: : : : : : +- Project (941)
: : : : : : +- Repartition (940)
: : : : : : +- LogicalRelation (939)
: : : : : +- Project (948)
: : : : : +- Repartition (947)
: : : : : +- LogicalRelation (946)
: : : : +- Repartition (953)
: : : : +- LogicalRelation (952)
: : : +- Project (1002)
: : : +- Project (1001)
: : : +- Project (1000)
: : : +- Project (999)
: : : +- Generate (998)
: : : +- Project (997)
: : : +- Generate (996)
: : : +- Project (995)
: : : +- Join (994)
: : : :- Project (991)
: : : : +- Project (990)
: : : : +- Join (989)
: : : : :- SubqueryAlias (985)
: : : : : +- Project (984)
: : : : : +- Join (983)
: : : : : :- Project (978)
: : : : : : +- RepartitionByExpression (977)
: : : : : : +- LogicalRelation (976)
: : : : : +- Project (982)
: : : : : +- Project (981)
: : : : : +- Repartition (980)
: : : : : +- LogicalRelation (979)
: : : : +- Project (988)
: : : : +- Repartition (987)
: : : : +- LogicalRelation (986)
: : : +- Repartition (993)
: : : +- LogicalRelation (992)
: : +- Aggregate (1088)
: : +- Project (1087)
: : +- Filter (1086)
: : +- Join (1085)
: : :- Filter (1057)
: : : +- Project (1056)
: : : +- Project (1055)
: : : +- Generate (1054)
: : : +- Project (1053)
: : : +- Aggregate (1052)
: : : +- Project (1051)
: : : +- Generate (1050)
: : : +- Join (1049)
: : : :- Repartition (1007)
: : : : +- LogicalRelation (1006)
: : : +- Project (1048)
: : : +- Join (1047)
: : : :- Project (1017)
: : : : +- Project (1016)
: : : : +- Generate (1015)
: : : : +- Project (1014)
: : : : +- Generate (1013)
: : : : +- Project (1012)
: : : : +- Project (1011)
: : : : +- Filter (1010)
: : : : +- Repartition (1009)
: : : : +- LogicalRelation (1008)
: : : +- Deduplicate (1046)
: : : +- Project (1045)
: : : +- Project (1044)
: : : +- Project (1043)
: : : +- Project (1042)
: : : +- Project (1041)
: : : +- Generate (1040)
: : : +- Project (1039)
: : : +- Generate (1038)
: : : +- Project (1037)
: : : +- Join (1036)
: : : :- Project (1033)
: : : : +- Project (1032)
: : : : +- Join (1031)
: : : : :- SubqueryAlias (1027)
: : : : : +- Project (1026)
: : : : : +- Join (1025)
: : : : : :- Project (1020)
: : : : : : +- RepartitionByExpression (1019)
: : : : : : +- LogicalRelation (1018)
: : : : : +- Project (1024)
: : : : : +- Project (1023)
: : : : : +- Repartition (1022)
: : : : : +- LogicalRelation (1021)
: : : : +- Project (1030)
: : : : +- Repartition (1029)
: : : : +- LogicalRelation (1028)
: : : +- Repartition (1035)
: : : +- LogicalRelation (1034)
: : +- Project (1084)
: : +- Project (1083)
: : +- Project (1082)
: : +- Project (1081)
: : +- Generate (1080)
: : +- Project (1079)
: : +- Generate (1078)
: : +- Project (1077)
: : +- Join (1076)
: : :- Project (1073)
: : : +- Project (1072)
: : : +- Join (1071)
: : : :- SubqueryAlias (1067)
: : : : +- Project (1066)
: : : : +- Join (1065)
: : : : :- Project (1060)
: : : : : +- RepartitionByExpression (1059)
: : : : : +- LogicalRelation (1058)
: : : : +- Project (1064)
: : : : +- Project (1063)
: : : : +- Repartition (1062)
: : : : +- LogicalRelation (1061)
: : : +- Project (1070)
: : : +- Repartition (1069)
: : : +- LogicalRelation (1068)
: : +- Repartition (1075)
: : +- LogicalRelation (1074)
: +- SerializeFromObject (1310)
: +- MapElements (1309)
: +- DeserializeToObject (1308)
: +- Aggregate (1307)
: +- Project (1306)
: +- Project (1305)
: +- Join (1304)
: :- Project (1302)
: : +- Project (1301)
: : +- Project (1300)
: : +- Project (1299)
: : +- Project (1298)
: : +- Project (1297)
: : +- Join (1296)
: : :- Project (1126)
: : : +- Project (1125)
: : : +- Project (1124)
: : : +- Project (1123)
: : : +- Generate (1122)
: : : +- Project (1121)
: : : +- Generate (1120)
: : : +- Project (1119)
: : : +- Join (1118)
: : : :- Project (1115)
: : : : +- Project (1114)
: : : : +- Join (1113)
: : : : :- SubqueryAlias (1109)
: : : : : +- Project (1108)
: : : : : +- Join (1107)
: : : : : :- Project (1102)
: : : : : : +- RepartitionByExpression (1101)
: : : : : : +- LogicalRelation (1100)
: : : : : +- Project (1106)
: : : : : +- Project (1105)
: : : : : +- Repartition (1104)
: : : : : +- LogicalRelation (1103)
: : : : +- Project (1112)
: : : : +- Repartition (1111)
: : : : +- LogicalRelation (1110)
: : : +- Repartition (1117)
: : : +- LogicalRelation (1116)
: : +- Project (1295)
: : +- Aggregate (1294)
: : +- Project (1293)
: : +- Join (1292)
: : :- Project (1208)
: : : +- Filter (1207)
: : : +- Join (1206)
: : : :- Filter (1178)
: : : : +- Project (1177)
: : : : +- Project (1176)
: : : : +- Generate (1175)
: : : : +- Project (1174)
: : : : +- Aggregate (1173)
: : : : +- Project (1172)
: : : : +- Generate (1171)
: : : : +- Join (1170)
: : : : :- Repartition (1128)
: : : : : +- LogicalRelation (1127)
: : : : +- Project (1169)
: : : : +- Join (1168)
: : : : :- Project (1138)
: : : : : +- Project (1137)
: : : : : +- Generate (1136)
: : : : : +- Project (1135)
: : : : : +- Generate (1134)
: : : : : +- Project (1133)
: : : : : +- Project (1132)
: : : : : +- Filter (1131)
: : : : : +- Repartition (1130)
: : : : : +- LogicalRelation (1129)
: : : : +- Deduplicate (1167)
: : : : +- Project (1166)
: : : : +- Project (1165)
: : : : +- Project (1164)
: : : : +- Project (1163)
: : : : +- Project (1162)
: : : : +- Generate (1161)
: : : : +- Project (1160)
: : : : +- Generate (1159)
: : : : +- Project (1158)
: : : : +- Join (1157)
: : : : :- Project (1154)
: : : : : +- Project (1153)
: : : : : +- Join (1152)
: : : : : :- SubqueryAlias (1148)
: : : : : : +- Project (1147)
: : : : : : +- Join (1146)
: : : : : : :- Project (1141)
: : : : : : : +- RepartitionByExpression (1140)
: : : : : : : +- LogicalRelation (1139)
: : : : : : +- Project (1145)
: : : : : : +- Project (1144)
: : : : : : +- Repartition (1143)
: : : : : : +- LogicalRelation (1142)
: : : : : +- Project (1151)
: : : : : +- Repartition (1150)
: : : : : +- LogicalRelation (1149)
: : : : +- Repartition (1156)
: : : : +- LogicalRelation (1155)
: : : +- Project (1205)
: : : +- Project (1204)
: : : +- Project (1203)
: : : +- Project (1202)
: : : +- Generate (1201)
: : : +- Project (1200)
: : : +- Generate (1199)
: : : +- Project (1198)
: : : +- Join (1197)
: : : :- Project (1194)
: : : : +- Project (1193)
: : : : +- Join (1192)
: : : : :- SubqueryAlias (1188)
: : : : : +- Project (1187)
: : : : : +- Join (1186)
: : : : : :- Project (1181)
: : : : : : +- RepartitionByExpression (1180)
: : : : : : +- LogicalRelation (1179)
: : : : : +- Project (1185)
: : : : : +- Project (1184)
: : : : : +- Repartition (1183)
: : : : : +- LogicalRelation (1182)
: : : : +- Project (1191)
: : : : +- Repartition (1190)
: : : : +- LogicalRelation (1189)
: : : +- Repartition (1196)
: : : +- LogicalRelation (1195)
: : +- Aggregate (1291)
: : +- Project (1290)
: : +- Filter (1289)
: : +- Join (1288)
: : :- Filter (1260)
: : : +- Project (1259)
: : : +- Project (1258)
: : : +- Generate (1257)
: : : +- Project (1256)
: : : +- Aggregate (1255)
: : : +- Project (1254)
: : : +- Generate (1253)
: : : +- Join (1252)
: : : :- Repartition (1210)
: : : : +- LogicalRelation (1209)
: : : +- Project (1251)
: : : +- Join (1250)
: : : :- Project (1220)
: : : : +- Project (1219)
: : : : +- Generate (1218)
: : : : +- Project (1217)
: : : : +- Generate (1216)
: : : : +- Project (1215)
: : : : +- Project (1214)
: : : : +- Filter (1213)
: : : : +- Repartition (1212)
: : : : +- LogicalRelation (1211)
: : : +- Deduplicate (1249)
: : : +- Project (1248)
: : : +- Project (1247)
: : : +- Project (1246)
: : : +- Project (1245)
: : : +- Project (1244)
: : : +- Generate (1243)
: : : +- Project (1242)
: : : +- Generate (1241)
: : : +- Project (1240)
: : : +- Join (1239)
: : : :- Project (1236)
: : : : +- Project (1235)
: : : : +- Join (1234)
: : : : :- SubqueryAlias (1230)
: : : : : +- Project (1229)
: : : : : +- Join (1228)
: : : : : :- Project (1223)
: : : : : : +- RepartitionByExpression (1222)
: : : : : : +- LogicalRelation (1221)
: : : : : +- Project (1227)
: : : : : +- Project (1226)
: : : : : +- Repartition (1225)
: : : : : +- LogicalRelation (1224)
: : : : +- Project (1233)
: : : : +- Repartition (1232)
: : : : +- LogicalRelation (1231)
: : : +- Repartition (1238)
: : : +- LogicalRelation (1237)
: : +- Project (1287)
: : +- Project (1286)
: : +- Project (1285)
: : +- Project (1284)
: : +- Generate (1283)
: : +- Project (1282)
: : +- Generate (1281)
: : +- Project (1280)
: : +- Join (1279)
: : :- Project (1276)
: : : +- Project (1275)
: : : +- Join (1274)
: : : :- SubqueryAlias (1270)
: : : : +- Project (1269)
: : : : +- Join (1268)
: : : : :- Project (1263)
: : : : : +- RepartitionByExpression (1262)
: : : : : +- LogicalRelation (1261)
: : : : +- Project (1267)
: : : : +- Project (1266)
: : : : +- Repartition (1265)
: : : : +- LogicalRelation (1264)
: : : +- Project (1273)
: : : +- Repartition (1272)
: : : +- LogicalRelation (1271)
: : +- Repartition (1278)
: : +- LogicalRelation (1277)
: +- LogicalRelation (1303)
+- Project (1319)
+- Filter (1318)
+- Project (1317)
+- Generate (1316)
+- Repartition (1315)
+- LogicalRelation (1314)
(1) Execute SaveIntoDataSourceCommand
Output: []
(2) SaveIntoDataSourceCommand
Arguments: org.apache.spark.sql.delta.sources.DeltaDataSource@5153b42b, [path=hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-quantity-kpi-service/internal/data-snapshot/10000002107/0_1_10000002107], Overwrite
(3) LogicalRelation
Arguments: parquet, [product#69015, plant#69016, orderDateTime#69017, planningStartDateTime#69018], false
(4) RepartitionByExpression
Arguments: [product#69015, plant#69016], 25
(5) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017]
(6) LogicalRelation
Arguments: parquet, [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039], false
(7) Repartition
Arguments: 25, true
(8) Project
Arguments: [systemId#69026, internalUUID#69028, plant#69030, product#69032, blockedForReplenishmentStartingFrom#69033, productionAspect#69035, salesPlant#69037, listing#69039, struct(systemId, systemId#69026, internalUUID, internalUUID#69028, plant, plant#69030, product, product#69032, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69033, productionAspect, productionAspect#69035, salesPlant, salesPlant#69037, listing, listing#69039) AS productPlant#69043]
(9) Project
Arguments: [productPlant#69043]
(10) Join
Arguments: LeftOuter, ((product#69015 <=> productPlant#69043.product.internalRefUUID) AND (plant#69016 <=> productPlant#69043.plant.internalRefUUID))
(11) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043]
(12) SubqueryAlias
Arguments: wl
(13) LogicalRelation
Arguments: parquet, [systemId#69049, internalUUID#69050, id#69051, displayId#69052, name#69053, category#69054, companyCode#69055, address#69056, mainDistributionChain#69057, mainPurchasingOrganization#69058, validPurchasingOrganizations#69059, productGroup#69060], false
(14) Repartition
Arguments: 25, true
(15) Project
Arguments: [internalUUID#69050, address#69056.timeZone.code AS timezonecode#69073]
(16) Join
Arguments: LeftOuter, (plant#69016 <=> internalUUID#69050)
(17) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, internalUUID#69050, CASE WHEN isnotnull(timezonecode#69073) THEN timezonecode#69073 ELSE UTC END AS timezonecode#69080]
(18) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080]
(19) LogicalRelation
Arguments: parquet, [systemId#69081, internalUUID#69082, id#69083, displayId#69084, name#69085, baseUnitOfMeasure#69086, unitOfMeasures#69087, unitOfMeasureConversions#69088, productionAspect#69089, salesAspect#69090, procurementAspect#69091, productGroup#69092], false
(20) Repartition
Arguments: 25, true
(21) Join
Arguments: LeftOuter, (product#69015 = internalUUID#69082)
(22) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, systemId#69081, internalUUID#69082, id#69083, displayId#69084, name#69085, baseUnitOfMeasure#69086, unitOfMeasures#69087, unitOfMeasureConversions#69088, productionAspect#69089, salesAspect#69090, procurementAspect#69091, productGroup#69092, filter(unitOfMeasureConversions#69088, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#69043.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#69043.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69086.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69086.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69108]
(23) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69108.quantityNumerator), true, [quantityNumerator#69123]
(24) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, systemId#69081, internalUUID#69082, id#69083, displayId#69084, name#69085, baseUnitOfMeasure#69086, unitOfMeasures#69087, unitOfMeasureConversions#69088, productionAspect#69089, salesAspect#69090, procurementAspect#69091, productGroup#69092, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123]
(25) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69108.quantityDenominator), true, [quantityDenominator#69130]
(26) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, systemId#69081, internalUUID#69082, id#69083, displayId#69084, name#69085, baseUnitOfMeasure#69086, unitOfMeasures#69087, unitOfMeasureConversions#69088, productionAspect#69089, salesAspect#69090, procurementAspect#69091, productGroup#69092, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123, quantityDenominator#69130]
(27) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, systemId#69081, internalUUID#69082, id#69083, displayId#69084, name#69085, baseUnitOfMeasure#69086, unitOfMeasures#69087, unitOfMeasureConversions#69088, productionAspect#69089, salesAspect#69090, procurementAspect#69091, productGroup#69092, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123, quantityDenominator#69130, (cast(quantityNumerator#69123 as double) / cast(quantityDenominator#69130 as double)) AS outboundUnit#69132]
(28) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, systemId#69081, internalUUID#69082, id#69083, displayId#69084, name#69085, baseUnitOfMeasure#69086, unitOfMeasures#69087, unitOfMeasureConversions#69088, productionAspect#69089, salesAspect#69090, procurementAspect#69091, productGroup#69092, filteredUnitOfMeasureConversions#69108, quantityNumerator#69123, quantityDenominator#69130, CASE WHEN (isnull(outboundUnit#69132) OR (outboundUnit#69132 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69132 END AS outboundUnit#69133]
(29) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133]
(30) LogicalRelation
Arguments: parquet, [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256], false
(31) Repartition
Arguments: 25, true
(32) LogicalRelation
Arguments: parquet, [marketUnit#69147, description#69151, articleHierarchy#69153, defaultCurrency#69155, responsibilities#69157, replenishmentTypes#69159, distributionCenters#69161, assignedArticleHierarchyNodes#69163, minOrderQtySetting#69165, listingCheck#69166, odsSelection#69167, demandProfiles#69168, constraintProfiles#69169, optimizationProfiles#69170, orderGroupSplitProfiles#69171, supplierMinimumProfiles#69172, multipleRestrictionProfiles#69173, preferredUomSource#69174, handlingOfUnfulfilledDemands#69175, negligibleQuantitiesThreshold#69176, eventtype#69177, minOrderQtySettingInternal#69178], false
(33) Repartition
Arguments: 25, true
(34) Filter
Arguments: (marketUnit#69147 <=> Daily_grocery)
(35) Project
Arguments: [marketUnit#69147, description#69151, articleHierarchy#69153, defaultCurrency#69155, responsibilities#69157, replenishmentTypes#69159, distributionCenters#69161, assignedArticleHierarchyNodes#69163, minOrderQtySetting#69165, listingCheck#69166, odsSelection#69167, demandProfiles#69168, constraintProfiles#69169, optimizationProfiles#69170, orderGroupSplitProfiles#69171, supplierMinimumProfiles#69172, multipleRestrictionProfiles#69173, preferredUomSource#69174, handlingOfUnfulfilledDemands#69175, negligibleQuantitiesThreshold#69176, eventtype#69177, minOrderQtySettingInternal#69178]
(36) Project
Arguments: [distributionCenters#69161]
(37) Generate
Arguments: explode(distributionCenters#69161), false, [distributionCenters#69184]
(38) Project
Arguments: [distributionCenters#69184]
(39) Generate
Arguments: explode(distributionCenters#69184.storageLocations), false, [storageLocations#69198]
(40) Project
Arguments: [distributionCenters#69184.id AS plantId#69188, distributionCenters#69184.internalRefUUID AS plantUuid#69189, storageLocations#69198]
(41) Project
Arguments: [plantId#69188, plantUuid#69189, storageLocations#69198.id AS storageLocId#69201, storageLocations#69198.internalRefUUID AS storageLocUuid#69202]
(42) LogicalRelation
Arguments: parquet, [product#69783, plant#69784, orderDateTime#69785, planningStartDateTime#69786], false
(43) RepartitionByExpression
Arguments: [product#69783, plant#69784], 25
(44) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785]
(45) LogicalRelation
Arguments: parquet, [systemId#69787, internalUUID#69788, plant#69789, product#69790, blockedForReplenishmentStartingFrom#69791, productionAspect#69792, salesPlant#69793, listing#69794], false
(46) Repartition
Arguments: 25, true
(47) Project
Arguments: [systemId#69787, internalUUID#69788, plant#69789, product#69790, blockedForReplenishmentStartingFrom#69791, productionAspect#69792, salesPlant#69793, listing#69794, struct(systemId, systemId#69787, internalUUID, internalUUID#69788, plant, plant#69789, product, product#69790, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69791, productionAspect, productionAspect#69792, salesPlant, salesPlant#69793, listing, listing#69794) AS productPlant#69796]
(48) Project
Arguments: [productPlant#69796]
(49) Join
Arguments: LeftOuter, ((product#69783 <=> productPlant#69796.product.internalRefUUID) AND (plant#69784 <=> productPlant#69796.plant.internalRefUUID))
(50) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796]
(51) SubqueryAlias
Arguments: wl
(52) LogicalRelation
Arguments: parquet, [systemId#69809, internalUUID#69810, id#69811, displayId#69812, name#69813, category#69814, companyCode#69815, address#69816, mainDistributionChain#69817, mainPurchasingOrganization#69818, validPurchasingOrganizations#69819, productGroup#69820], false
(53) Repartition
Arguments: 25, true
(54) Project
Arguments: [internalUUID#69810, address#69816.timeZone.code AS timezonecode#69822]
(55) Join
Arguments: LeftOuter, (plant#69784 <=> internalUUID#69810)
(56) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, internalUUID#69810, CASE WHEN isnotnull(timezonecode#69822) THEN timezonecode#69822 ELSE UTC END AS timezonecode#69824]
(57) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824]
(58) LogicalRelation
Arguments: parquet, [systemId#69837, internalUUID#69838, id#69839, displayId#69840, name#69841, baseUnitOfMeasure#69842, unitOfMeasures#69843, unitOfMeasureConversions#69844, productionAspect#69845, salesAspect#69846, procurementAspect#69847, productGroup#69848], false
(59) Repartition
Arguments: 25, true
(60) Join
Arguments: LeftOuter, (product#69783 = internalUUID#69838)
(61) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824, systemId#69837, internalUUID#69838, id#69839, displayId#69840, name#69841, baseUnitOfMeasure#69842, unitOfMeasures#69843, unitOfMeasureConversions#69844, productionAspect#69845, salesAspect#69846, procurementAspect#69847, productGroup#69848, filter(unitOfMeasureConversions#69844, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#69796.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#69796.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69842.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69842.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69850]
(62) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69850.quantityNumerator), true, [quantityNumerator#69852]
(63) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824, systemId#69837, internalUUID#69838, id#69839, displayId#69840, name#69841, baseUnitOfMeasure#69842, unitOfMeasures#69843, unitOfMeasureConversions#69844, productionAspect#69845, salesAspect#69846, procurementAspect#69847, productGroup#69848, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852]
(64) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69850.quantityDenominator), true, [quantityDenominator#69853]
(65) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824, systemId#69837, internalUUID#69838, id#69839, displayId#69840, name#69841, baseUnitOfMeasure#69842, unitOfMeasures#69843, unitOfMeasureConversions#69844, productionAspect#69845, salesAspect#69846, procurementAspect#69847, productGroup#69848, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852, quantityDenominator#69853]
(66) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824, systemId#69837, internalUUID#69838, id#69839, displayId#69840, name#69841, baseUnitOfMeasure#69842, unitOfMeasures#69843, unitOfMeasureConversions#69844, productionAspect#69845, salesAspect#69846, procurementAspect#69847, productGroup#69848, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852, quantityDenominator#69853, (cast(quantityNumerator#69852 as double) / cast(quantityDenominator#69853 as double)) AS outboundUnit#69855]
(67) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824, systemId#69837, internalUUID#69838, id#69839, displayId#69840, name#69841, baseUnitOfMeasure#69842, unitOfMeasures#69843, unitOfMeasureConversions#69844, productionAspect#69845, salesAspect#69846, procurementAspect#69847, productGroup#69848, filteredUnitOfMeasureConversions#69850, quantityNumerator#69852, quantityDenominator#69853, CASE WHEN (isnull(outboundUnit#69855) OR (outboundUnit#69855 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69855 END AS outboundUnit#69857]
(68) Project
Arguments: [product#69783, plant#69784, orderDateTime#69785, productPlant#69796, timezonecode#69824, outboundUnit#69857]
(69) Project
Arguments: [plant#69784]
(70) Deduplicate
Arguments: [plant#69784]
(71) Join
Arguments: Inner, (plantUuid#69189 = plant#69784)
(72) Project
Arguments: [plantId#69188, plantUuid#69189, storageLocId#69201, storageLocUuid#69202]
(73) Join
Arguments: Inner, (plant#69254.internalRefUUID <=> plantUuid#69189)
(74) Generate
Arguments: explode(filter(stockQuantities#69256, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#69202) AND (lambda x#69270.storageLocation.Id = storageLocId#69201)), lambda x#69270, false))), false, [stockQuantity#69271]
(75) Project
Arguments: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69255, stockQuantities#69256, plantId#69188, plantUuid#69189, storageLocId#69201, storageLocUuid#69202, stockQuantity#69271]
(76) Aggregate
Arguments: [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251], [plantUuid#69189, internalUUID#69252, plant#69254, product#69253, systemId#69251, first(calculationDateTime#69255, false) AS calculationDateTime#69308, collect_list(stockQuantity#69271, 0, 0) AS stockQuantities#69309]
(77) Project
Arguments: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309]
(78) Generate
Arguments: explode(stockQuantities#69309), false, [stockQuantity#69367]
(79) Project
Arguments: [systemId#69251, internalUUID#69252, product#69253, plant#69254, calculationDateTime#69308, stockQuantities#69309, stockQuantity#69367]
(80) Project
Arguments: [plant#69254.id AS plant#69369, plant#69254.internalRefUUID AS plantUuid#69370, product#69253.id AS product#69371, product#69253.internalRefUUID AS productUuid#69372, calculationDateTime#69308, stockQuantity#69367.storagelocation.id AS storageLocId#69373, stockQuantity#69367.storagelocation.internalRefUUID AS storageLocUuid#69374, stockQuantity#69367.quantity.measure AS quantity#69375, stockQuantity#69367.specialStockIndicator.code AS specialStockIndicator#69376, stockQuantity#69367.stockType.code AS stockType#69377]
(81) Filter
Arguments: ((specialStockIndicator#69376 = ) AND (stockType#69377 = 01))
(82) LogicalRelation
Arguments: parquet, [product#69391, plant#69392, orderDateTime#69393, planningStartDateTime#69394], false
(83) RepartitionByExpression
Arguments: [product#69391, plant#69392], 25
(84) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393]
(85) LogicalRelation
Arguments: parquet, [systemId#69395, internalUUID#69396, plant#69397, product#69398, blockedForReplenishmentStartingFrom#69399, productionAspect#69400, salesPlant#69401, listing#69402], false
(86) Repartition
Arguments: 25, true
(87) Project
Arguments: [systemId#69395, internalUUID#69396, plant#69397, product#69398, blockedForReplenishmentStartingFrom#69399, productionAspect#69400, salesPlant#69401, listing#69402, struct(systemId, systemId#69395, internalUUID, internalUUID#69396, plant, plant#69397, product, product#69398, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69399, productionAspect, productionAspect#69400, salesPlant, salesPlant#69401, listing, listing#69402) AS productPlant#69403]
(88) Project
Arguments: [productPlant#69403]
(89) Join
Arguments: LeftOuter, ((product#69391 <=> productPlant#69403.product.internalRefUUID) AND (plant#69392 <=> productPlant#69403.plant.internalRefUUID))
(90) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403]
(91) SubqueryAlias
Arguments: wl
(92) LogicalRelation
Arguments: parquet, [systemId#69404, internalUUID#69405, id#69406, displayId#69407, name#69408, category#69409, companyCode#69410, address#69411, mainDistributionChain#69412, mainPurchasingOrganization#69413, validPurchasingOrganizations#69414, productGroup#69415], false
(93) Repartition
Arguments: 25, true
(94) Project
Arguments: [internalUUID#69405, address#69411.timeZone.code AS timezonecode#69416]
(95) Join
Arguments: LeftOuter, (plant#69392 <=> internalUUID#69405)
(96) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, internalUUID#69405, CASE WHEN isnotnull(timezonecode#69416) THEN timezonecode#69416 ELSE UTC END AS timezonecode#69417]
(97) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417]
(98) LogicalRelation
Arguments: parquet, [systemId#69418, internalUUID#69419, id#69420, displayId#69421, name#69422, baseUnitOfMeasure#69423, unitOfMeasures#69424, unitOfMeasureConversions#69425, productionAspect#69426, salesAspect#69427, procurementAspect#69428, productGroup#69429], false
(99) Repartition
Arguments: 25, true
(100) Join
Arguments: LeftOuter, (product#69391 = internalUUID#69419)
(101) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417, systemId#69418, internalUUID#69419, id#69420, displayId#69421, name#69422, baseUnitOfMeasure#69423, unitOfMeasures#69424, unitOfMeasureConversions#69425, productionAspect#69426, salesAspect#69427, procurementAspect#69428, productGroup#69429, filter(unitOfMeasureConversions#69425, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#69403.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#69403.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69423.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69423.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69430]
(102) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69430.quantityNumerator), true, [quantityNumerator#69431]
(103) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417, systemId#69418, internalUUID#69419, id#69420, displayId#69421, name#69422, baseUnitOfMeasure#69423, unitOfMeasures#69424, unitOfMeasureConversions#69425, productionAspect#69426, salesAspect#69427, procurementAspect#69428, productGroup#69429, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431]
(104) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69430.quantityDenominator), true, [quantityDenominator#69432]
(105) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417, systemId#69418, internalUUID#69419, id#69420, displayId#69421, name#69422, baseUnitOfMeasure#69423, unitOfMeasures#69424, unitOfMeasureConversions#69425, productionAspect#69426, salesAspect#69427, procurementAspect#69428, productGroup#69429, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431, quantityDenominator#69432]
(106) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417, systemId#69418, internalUUID#69419, id#69420, displayId#69421, name#69422, baseUnitOfMeasure#69423, unitOfMeasures#69424, unitOfMeasureConversions#69425, productionAspect#69426, salesAspect#69427, procurementAspect#69428, productGroup#69429, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431, quantityDenominator#69432, (cast(quantityNumerator#69431 as double) / cast(quantityDenominator#69432 as double)) AS outboundUnit#69433]
(107) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417, systemId#69418, internalUUID#69419, id#69420, displayId#69421, name#69422, baseUnitOfMeasure#69423, unitOfMeasures#69424, unitOfMeasureConversions#69425, productionAspect#69426, salesAspect#69427, procurementAspect#69428, productGroup#69429, filteredUnitOfMeasureConversions#69430, quantityNumerator#69431, quantityDenominator#69432, CASE WHEN (isnull(outboundUnit#69433) OR (outboundUnit#69433 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69433 END AS outboundUnit#69434]
(108) Project
Arguments: [product#69391, plant#69392, orderDateTime#69393, productPlant#69403, timezonecode#69417, outboundUnit#69434]
(109) Join
Arguments: Inner, ((plantUuid#69370 = plant#69392) AND (productUuid#69372 = product#69391))
(110) Filter
Arguments: (calculationDateTime#69308 <= orderDateTime#69393)
(111) Project
Arguments: [plantUuid#69370 AS plant#69448, productUuid#69372 AS product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375]
(112) LogicalRelation
Arguments: parquet, [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597], false
(113) Repartition
Arguments: 25, true
(114) LogicalRelation
Arguments: parquet, [marketUnit#69598, description#69599, articleHierarchy#69600, defaultCurrency#69601, responsibilities#69602, replenishmentTypes#69603, distributionCenters#69604, assignedArticleHierarchyNodes#69605, minOrderQtySetting#69606, listingCheck#69607, odsSelection#69608, demandProfiles#69609, constraintProfiles#69610, optimizationProfiles#69611, orderGroupSplitProfiles#69612, supplierMinimumProfiles#69613, multipleRestrictionProfiles#69614, preferredUomSource#69615, handlingOfUnfulfilledDemands#69616, negligibleQuantitiesThreshold#69617, eventtype#69618, minOrderQtySettingInternal#69619], false
(115) Repartition
Arguments: 25, true
(116) Filter
Arguments: (marketUnit#69598 <=> Daily_grocery)
(117) Project
Arguments: [marketUnit#69598, description#69599, articleHierarchy#69600, defaultCurrency#69601, responsibilities#69602, replenishmentTypes#69603, distributionCenters#69604, assignedArticleHierarchyNodes#69605, minOrderQtySetting#69606, listingCheck#69607, odsSelection#69608, demandProfiles#69609, constraintProfiles#69610, optimizationProfiles#69611, orderGroupSplitProfiles#69612, supplierMinimumProfiles#69613, multipleRestrictionProfiles#69614, preferredUomSource#69615, handlingOfUnfulfilledDemands#69616, negligibleQuantitiesThreshold#69617, eventtype#69618, minOrderQtySettingInternal#69619]
(118) Project
Arguments: [distributionCenters#69604]
(119) Generate
Arguments: explode(distributionCenters#69604), false, [distributionCenters#69622]
(120) Project
Arguments: [distributionCenters#69622]
(121) Generate
Arguments: explode(distributionCenters#69622.storageLocations), false, [storageLocations#69623]
(122) Project
Arguments: [distributionCenters#69622.id AS plantId#69624, distributionCenters#69622.internalRefUUID AS plantUuid#69625, storageLocations#69623]
(123) Project
Arguments: [plantId#69624, plantUuid#69625, storageLocations#69623.id AS storageLocId#69626, storageLocations#69623.internalRefUUID AS storageLocUuid#69627]
(124) LogicalRelation
Arguments: parquet, [product#69628, plant#69629, orderDateTime#69630, planningStartDateTime#69631], false
(125) RepartitionByExpression
Arguments: [product#69628, plant#69629], 25
(126) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630]
(127) LogicalRelation
Arguments: parquet, [systemId#69632, internalUUID#69633, plant#69634, product#69635, blockedForReplenishmentStartingFrom#69636, productionAspect#69637, salesPlant#69638, listing#69639], false
(128) Repartition
Arguments: 25, true
(129) Project
Arguments: [systemId#69632, internalUUID#69633, plant#69634, product#69635, blockedForReplenishmentStartingFrom#69636, productionAspect#69637, salesPlant#69638, listing#69639, struct(systemId, systemId#69632, internalUUID, internalUUID#69633, plant, plant#69634, product, product#69635, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69636, productionAspect, productionAspect#69637, salesPlant, salesPlant#69638, listing, listing#69639) AS productPlant#69640]
(130) Project
Arguments: [productPlant#69640]
(131) Join
Arguments: LeftOuter, ((product#69628 <=> productPlant#69640.product.internalRefUUID) AND (plant#69629 <=> productPlant#69640.plant.internalRefUUID))
(132) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640]
(133) SubqueryAlias
Arguments: wl
(134) LogicalRelation
Arguments: parquet, [systemId#69641, internalUUID#69642, id#69643, displayId#69644, name#69645, category#69646, companyCode#69647, address#69648, mainDistributionChain#69649, mainPurchasingOrganization#69650, validPurchasingOrganizations#69651, productGroup#69652], false
(135) Repartition
Arguments: 25, true
(136) Project
Arguments: [internalUUID#69642, address#69648.timeZone.code AS timezonecode#69653]
(137) Join
Arguments: LeftOuter, (plant#69629 <=> internalUUID#69642)
(138) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, internalUUID#69642, CASE WHEN isnotnull(timezonecode#69653) THEN timezonecode#69653 ELSE UTC END AS timezonecode#69654]
(139) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654]
(140) LogicalRelation
Arguments: parquet, [systemId#69655, internalUUID#69656, id#69657, displayId#69658, name#69659, baseUnitOfMeasure#69660, unitOfMeasures#69661, unitOfMeasureConversions#69662, productionAspect#69663, salesAspect#69664, procurementAspect#69665, productGroup#69666], false
(141) Repartition
Arguments: 25, true
(142) Join
Arguments: LeftOuter, (product#69628 = internalUUID#69656)
(143) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654, systemId#69655, internalUUID#69656, id#69657, displayId#69658, name#69659, baseUnitOfMeasure#69660, unitOfMeasures#69661, unitOfMeasureConversions#69662, productionAspect#69663, salesAspect#69664, procurementAspect#69665, productGroup#69666, filter(unitOfMeasureConversions#69662, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#69640.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#69640.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69660.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69660.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69667]
(144) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69667.quantityNumerator), true, [quantityNumerator#69668]
(145) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654, systemId#69655, internalUUID#69656, id#69657, displayId#69658, name#69659, baseUnitOfMeasure#69660, unitOfMeasures#69661, unitOfMeasureConversions#69662, productionAspect#69663, salesAspect#69664, procurementAspect#69665, productGroup#69666, filteredUnitOfMeasureConversions#69667, quantityNumerator#69668]
(146) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69667.quantityDenominator), true, [quantityDenominator#69669]
(147) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654, systemId#69655, internalUUID#69656, id#69657, displayId#69658, name#69659, baseUnitOfMeasure#69660, unitOfMeasures#69661, unitOfMeasureConversions#69662, productionAspect#69663, salesAspect#69664, procurementAspect#69665, productGroup#69666, filteredUnitOfMeasureConversions#69667, quantityNumerator#69668, quantityDenominator#69669]
(148) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654, systemId#69655, internalUUID#69656, id#69657, displayId#69658, name#69659, baseUnitOfMeasure#69660, unitOfMeasures#69661, unitOfMeasureConversions#69662, productionAspect#69663, salesAspect#69664, procurementAspect#69665, productGroup#69666, filteredUnitOfMeasureConversions#69667, quantityNumerator#69668, quantityDenominator#69669, (cast(quantityNumerator#69668 as double) / cast(quantityDenominator#69669 as double)) AS outboundUnit#69670]
(149) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654, systemId#69655, internalUUID#69656, id#69657, displayId#69658, name#69659, baseUnitOfMeasure#69660, unitOfMeasures#69661, unitOfMeasureConversions#69662, productionAspect#69663, salesAspect#69664, procurementAspect#69665, productGroup#69666, filteredUnitOfMeasureConversions#69667, quantityNumerator#69668, quantityDenominator#69669, CASE WHEN (isnull(outboundUnit#69670) OR (outboundUnit#69670 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69670 END AS outboundUnit#69671]
(150) Project
Arguments: [product#69628, plant#69629, orderDateTime#69630, productPlant#69640, timezonecode#69654, outboundUnit#69671]
(151) Project
Arguments: [plant#69629]
(152) Deduplicate
Arguments: [plant#69629]
(153) Join
Arguments: Inner, (plantUuid#69625 = plant#69629)
(154) Project
Arguments: [plantId#69624, plantUuid#69625, storageLocId#69626, storageLocUuid#69627]
(155) Join
Arguments: Inner, (plant#69595.internalRefUUID <=> plantUuid#69625)
(156) Generate
Arguments: explode(filter(stockQuantities#69597, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#69627) AND (lambda x#69270.storageLocation.Id = storageLocId#69626)), lambda x#69270, false))), false, [stockQuantity#69672]
(157) Project
Arguments: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69596, stockQuantities#69597, plantId#69624, plantUuid#69625, storageLocId#69626, storageLocUuid#69627, stockQuantity#69672]
(158) Aggregate
Arguments: [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592], [plantUuid#69625, internalUUID#69593, plant#69595, product#69594, systemId#69592, first(calculationDateTime#69596, false) AS calculationDateTime#69673, collect_list(stockQuantity#69672, 0, 0) AS stockQuantities#69674]
(159) Project
Arguments: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69673, stockQuantities#69674]
(160) Generate
Arguments: explode(stockQuantities#69674), false, [stockQuantity#69675]
(161) Project
Arguments: [systemId#69592, internalUUID#69593, product#69594, plant#69595, calculationDateTime#69673, stockQuantities#69674, stockQuantity#69675]
(162) Project
Arguments: [plant#69595.id AS plant#69676, plant#69595.internalRefUUID AS plantUuid#69677, product#69594.id AS product#69678, product#69594.internalRefUUID AS productUuid#69679, calculationDateTime#69673, stockQuantity#69675.storagelocation.id AS storageLocId#69680, stockQuantity#69675.storagelocation.internalRefUUID AS storageLocUuid#69681, stockQuantity#69675.quantity.measure AS quantity#69682, stockQuantity#69675.specialStockIndicator.code AS specialStockIndicator#69683, stockQuantity#69675.stockType.code AS stockType#69684]
(163) Filter
Arguments: ((specialStockIndicator#69683 = ) AND (stockType#69684 = 01))
(164) LogicalRelation
Arguments: parquet, [product#69685, plant#69686, orderDateTime#69687, planningStartDateTime#69688], false
(165) RepartitionByExpression
Arguments: [product#69685, plant#69686], 25
(166) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687]
(167) LogicalRelation
Arguments: parquet, [systemId#69689, internalUUID#69690, plant#69691, product#69692, blockedForReplenishmentStartingFrom#69693, productionAspect#69694, salesPlant#69695, listing#69696], false
(168) Repartition
Arguments: 25, true
(169) Project
Arguments: [systemId#69689, internalUUID#69690, plant#69691, product#69692, blockedForReplenishmentStartingFrom#69693, productionAspect#69694, salesPlant#69695, listing#69696, struct(systemId, systemId#69689, internalUUID, internalUUID#69690, plant, plant#69691, product, product#69692, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69693, productionAspect, productionAspect#69694, salesPlant, salesPlant#69695, listing, listing#69696) AS productPlant#69697]
(170) Project
Arguments: [productPlant#69697]
(171) Join
Arguments: LeftOuter, ((product#69685 <=> productPlant#69697.product.internalRefUUID) AND (plant#69686 <=> productPlant#69697.plant.internalRefUUID))
(172) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697]
(173) SubqueryAlias
Arguments: wl
(174) LogicalRelation
Arguments: parquet, [systemId#69698, internalUUID#69699, id#69700, displayId#69701, name#69702, category#69703, companyCode#69704, address#69705, mainDistributionChain#69706, mainPurchasingOrganization#69707, validPurchasingOrganizations#69708, productGroup#69709], false
(175) Repartition
Arguments: 25, true
(176) Project
Arguments: [internalUUID#69699, address#69705.timeZone.code AS timezonecode#69710]
(177) Join
Arguments: LeftOuter, (plant#69686 <=> internalUUID#69699)
(178) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, internalUUID#69699, CASE WHEN isnotnull(timezonecode#69710) THEN timezonecode#69710 ELSE UTC END AS timezonecode#69711]
(179) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711]
(180) LogicalRelation
Arguments: parquet, [systemId#69712, internalUUID#69713, id#69714, displayId#69715, name#69716, baseUnitOfMeasure#69717, unitOfMeasures#69718, unitOfMeasureConversions#69719, productionAspect#69720, salesAspect#69721, procurementAspect#69722, productGroup#69723], false
(181) Repartition
Arguments: 25, true
(182) Join
Arguments: LeftOuter, (product#69685 = internalUUID#69713)
(183) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711, systemId#69712, internalUUID#69713, id#69714, displayId#69715, name#69716, baseUnitOfMeasure#69717, unitOfMeasures#69718, unitOfMeasureConversions#69719, productionAspect#69720, salesAspect#69721, procurementAspect#69722, productGroup#69723, filter(unitOfMeasureConversions#69719, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#69697.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#69697.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#69717.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69717.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#69724]
(184) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69724.quantityNumerator), true, [quantityNumerator#69725]
(185) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711, systemId#69712, internalUUID#69713, id#69714, displayId#69715, name#69716, baseUnitOfMeasure#69717, unitOfMeasures#69718, unitOfMeasureConversions#69719, productionAspect#69720, salesAspect#69721, procurementAspect#69722, productGroup#69723, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725]
(186) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69724.quantityDenominator), true, [quantityDenominator#69726]
(187) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711, systemId#69712, internalUUID#69713, id#69714, displayId#69715, name#69716, baseUnitOfMeasure#69717, unitOfMeasures#69718, unitOfMeasureConversions#69719, productionAspect#69720, salesAspect#69721, procurementAspect#69722, productGroup#69723, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725, quantityDenominator#69726]
(188) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711, systemId#69712, internalUUID#69713, id#69714, displayId#69715, name#69716, baseUnitOfMeasure#69717, unitOfMeasures#69718, unitOfMeasureConversions#69719, productionAspect#69720, salesAspect#69721, procurementAspect#69722, productGroup#69723, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725, quantityDenominator#69726, (cast(quantityNumerator#69725 as double) / cast(quantityDenominator#69726 as double)) AS outboundUnit#69727]
(189) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711, systemId#69712, internalUUID#69713, id#69714, displayId#69715, name#69716, baseUnitOfMeasure#69717, unitOfMeasures#69718, unitOfMeasureConversions#69719, productionAspect#69720, salesAspect#69721, procurementAspect#69722, productGroup#69723, filteredUnitOfMeasureConversions#69724, quantityNumerator#69725, quantityDenominator#69726, CASE WHEN (isnull(outboundUnit#69727) OR (outboundUnit#69727 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69727 END AS outboundUnit#69728]
(190) Project
Arguments: [product#69685, plant#69686, orderDateTime#69687, productPlant#69697, timezonecode#69711, outboundUnit#69728]
(191) Join
Arguments: Inner, ((plantUuid#69677 = plant#69686) AND (productUuid#69679 = product#69685))
(192) Filter
Arguments: (calculationDateTime#69673 <= orderDateTime#69687)
(193) Project
Arguments: [plantUuid#69677 AS plant#69729, productUuid#69679 AS product#69730, storageLocId#69680, calculationDateTime#69673, quantity#69682]
(194) Aggregate
Arguments: [plant#69729, product#69730, storageLocId#69680], [plant#69729, product#69730, storageLocId#69680, max(calculationDateTime#69673) AS max_calc_datetime#69450]
(195) Join
Arguments: Inner, ((((plant#69448 <=> plant#69729) AND (product#69449 <=> product#69730)) AND (storageLocId#69373 <=> storageLocId#69680)) AND (calculationDateTime#69308 <=> max_calc_datetime#69450))
(196) Project
Arguments: [plant#69448, product#69449, storageLocId#69373, calculationDateTime#69308, quantity#69375]
(197) Aggregate
Arguments: [product#69449, plant#69448], [product#69449, plant#69448, sum(quantity#69375) AS quantitySum#69753, min(calculationDateTime#69308) AS minCalculationDateTime#69754]
(198) Project
Arguments: [product#69449, plant#69448, quantitySum#69753, minCalculationDateTime#69754, round(quantitySum#69753, 0) AS roundedQuantitySum#69770]
(199) Join
Arguments: LeftOuter, ((plant#69016 = plant#69448) AND (product#69015 = product#69449))
(200) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, roundedQuantitySum#69770, minCalculationDateTime#69754]
(201) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, roundedQuantitySum#69770, minCalculationDateTime#69754, CASE WHEN isnotnull(minCalculationDateTime#69754) THEN minCalculationDateTime#69754 ELSE orderDateTime#69017 END AS stockDatetime#69867]
(202) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, roundedQuantitySum#69770, minCalculationDateTime#69754, stockDatetime#69867, CASE WHEN isnotnull(roundedQuantitySum#69770) THEN array(roundedQuantitySum#69770) ELSE array(0.0) END AS stockBatchQuantities#69870]
(203) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, roundedQuantitySum#69770, minCalculationDateTime#69754, stockDatetime#69867, stockBatchQuantities#69870, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#69872]
(204) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, roundedQuantitySum#69770, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872]
(205) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872]
(206) LogicalRelation
Arguments: parquet, [product#70356, plant#70357, orderDateTime#70358, planningStartDateTime#70359], false
(207) RepartitionByExpression
Arguments: [product#70356, plant#70357], 25
(208) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358]
(209) LogicalRelation
Arguments: parquet, [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367], false
(210) Repartition
Arguments: 25, true
(211) Project
Arguments: [systemId#70360, internalUUID#70361, plant#70362, product#70363, blockedForReplenishmentStartingFrom#70364, productionAspect#70365, salesPlant#70366, listing#70367, struct(systemId, systemId#70360, internalUUID, internalUUID#70361, plant, plant#70362, product, product#70363, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70364, productionAspect, productionAspect#70365, salesPlant, salesPlant#70366, listing, listing#70367) AS productPlant#70368]
(212) Project
Arguments: [productPlant#70368]
(213) Join
Arguments: LeftOuter, ((product#70356 <=> productPlant#70368.product.internalRefUUID) AND (plant#70357 <=> productPlant#70368.plant.internalRefUUID))
(214) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368]
(215) SubqueryAlias
Arguments: wl
(216) LogicalRelation
Arguments: parquet, [systemId#70369, internalUUID#70370, id#70371, displayId#70372, name#70373, category#70374, companyCode#70375, address#70376, mainDistributionChain#70377, mainPurchasingOrganization#70378, validPurchasingOrganizations#70379, productGroup#70380], false
(217) Repartition
Arguments: 25, true
(218) Project
Arguments: [internalUUID#70370, address#70376.timeZone.code AS timezonecode#70381]
(219) Join
Arguments: LeftOuter, (plant#70357 <=> internalUUID#70370)
(220) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, internalUUID#70370, CASE WHEN isnotnull(timezonecode#70381) THEN timezonecode#70381 ELSE UTC END AS timezonecode#70382]
(221) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382]
(222) LogicalRelation
Arguments: parquet, [systemId#70383, internalUUID#70384, id#70385, displayId#70386, name#70387, baseUnitOfMeasure#70388, unitOfMeasures#70389, unitOfMeasureConversions#70390, productionAspect#70391, salesAspect#70392, procurementAspect#70393, productGroup#70394], false
(223) Repartition
Arguments: 25, true
(224) Join
Arguments: LeftOuter, (product#70356 = internalUUID#70384)
(225) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, systemId#70383, internalUUID#70384, id#70385, displayId#70386, name#70387, baseUnitOfMeasure#70388, unitOfMeasures#70389, unitOfMeasureConversions#70390, productionAspect#70391, salesAspect#70392, procurementAspect#70393, productGroup#70394, filter(unitOfMeasureConversions#70390, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70368.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70368.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70388.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70388.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70396]
(226) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70396.quantityNumerator), true, [quantityNumerator#70398]
(227) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, systemId#70383, internalUUID#70384, id#70385, displayId#70386, name#70387, baseUnitOfMeasure#70388, unitOfMeasures#70389, unitOfMeasureConversions#70390, productionAspect#70391, salesAspect#70392, procurementAspect#70393, productGroup#70394, filteredUnitOfMeasureConversions#70396, quantityNumerator#70398]
(228) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70396.quantityDenominator), true, [quantityDenominator#70399]
(229) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, systemId#70383, internalUUID#70384, id#70385, displayId#70386, name#70387, baseUnitOfMeasure#70388, unitOfMeasures#70389, unitOfMeasureConversions#70390, productionAspect#70391, salesAspect#70392, procurementAspect#70393, productGroup#70394, filteredUnitOfMeasureConversions#70396, quantityNumerator#70398, quantityDenominator#70399]
(230) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, systemId#70383, internalUUID#70384, id#70385, displayId#70386, name#70387, baseUnitOfMeasure#70388, unitOfMeasures#70389, unitOfMeasureConversions#70390, productionAspect#70391, salesAspect#70392, procurementAspect#70393, productGroup#70394, filteredUnitOfMeasureConversions#70396, quantityNumerator#70398, quantityDenominator#70399, (cast(quantityNumerator#70398 as double) / cast(quantityDenominator#70399 as double)) AS outboundUnit#70400]
(231) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, systemId#70383, internalUUID#70384, id#70385, displayId#70386, name#70387, baseUnitOfMeasure#70388, unitOfMeasures#70389, unitOfMeasureConversions#70390, productionAspect#70391, salesAspect#70392, procurementAspect#70393, productGroup#70394, filteredUnitOfMeasureConversions#70396, quantityNumerator#70398, quantityDenominator#70399, CASE WHEN (isnull(outboundUnit#70400) OR (outboundUnit#70400 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70400 END AS outboundUnit#70401]
(232) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401]
(233) LogicalRelation
Arguments: parquet, [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407], false
(234) Repartition
Arguments: 25, true
(235) LogicalRelation
Arguments: parquet, [marketUnit#70408, description#70409, articleHierarchy#70410, defaultCurrency#70411, responsibilities#70412, replenishmentTypes#70413, distributionCenters#70414, assignedArticleHierarchyNodes#70415, minOrderQtySetting#70416, listingCheck#70417, odsSelection#70418, demandProfiles#70419, constraintProfiles#70420, optimizationProfiles#70421, orderGroupSplitProfiles#70422, supplierMinimumProfiles#70423, multipleRestrictionProfiles#70424, preferredUomSource#70425, handlingOfUnfulfilledDemands#70426, negligibleQuantitiesThreshold#70427, eventtype#70428, minOrderQtySettingInternal#70429], false
(236) Repartition
Arguments: 25, true
(237) Filter
Arguments: (marketUnit#70408 <=> Daily_grocery)
(238) Project
Arguments: [marketUnit#70408, description#70409, articleHierarchy#70410, defaultCurrency#70411, responsibilities#70412, replenishmentTypes#70413, distributionCenters#70414, assignedArticleHierarchyNodes#70415, minOrderQtySetting#70416, listingCheck#70417, odsSelection#70418, demandProfiles#70419, constraintProfiles#70420, optimizationProfiles#70421, orderGroupSplitProfiles#70422, supplierMinimumProfiles#70423, multipleRestrictionProfiles#70424, preferredUomSource#70425, handlingOfUnfulfilledDemands#70426, negligibleQuantitiesThreshold#70427, eventtype#70428, minOrderQtySettingInternal#70429]
(239) Project
Arguments: [distributionCenters#70414]
(240) Generate
Arguments: explode(distributionCenters#70414), false, [distributionCenters#70430]
(241) Project
Arguments: [distributionCenters#70430]
(242) Generate
Arguments: explode(distributionCenters#70430.storageLocations), false, [storageLocations#70431]
(243) Project
Arguments: [distributionCenters#70430.id AS plantId#70432, distributionCenters#70430.internalRefUUID AS plantUuid#70433, storageLocations#70431]
(244) Project
Arguments: [plantId#70432, plantUuid#70433, storageLocations#70431.id AS storageLocId#70434, storageLocations#70431.internalRefUUID AS storageLocUuid#70435]
(245) LogicalRelation
Arguments: parquet, [product#70437, plant#70438, orderDateTime#70439, planningStartDateTime#70440], false
(246) RepartitionByExpression
Arguments: [product#70437, plant#70438], 25
(247) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439]
(248) LogicalRelation
Arguments: parquet, [systemId#70442, internalUUID#70443, plant#70444, product#70445, blockedForReplenishmentStartingFrom#70446, productionAspect#70447, salesPlant#70448, listing#70449], false
(249) Repartition
Arguments: 25, true
(250) Project
Arguments: [systemId#70442, internalUUID#70443, plant#70444, product#70445, blockedForReplenishmentStartingFrom#70446, productionAspect#70447, salesPlant#70448, listing#70449, struct(systemId, systemId#70442, internalUUID, internalUUID#70443, plant, plant#70444, product, product#70445, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70446, productionAspect, productionAspect#70447, salesPlant, salesPlant#70448, listing, listing#70449) AS productPlant#70451]
(251) Project
Arguments: [productPlant#70451]
(252) Join
Arguments: LeftOuter, ((product#70437 <=> productPlant#70451.product.internalRefUUID) AND (plant#70438 <=> productPlant#70451.plant.internalRefUUID))
(253) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451]
(254) SubqueryAlias
Arguments: wl
(255) LogicalRelation
Arguments: parquet, [systemId#70453, internalUUID#70454, id#70455, displayId#70456, name#70457, category#70458, companyCode#70459, address#70460, mainDistributionChain#70461, mainPurchasingOrganization#70462, validPurchasingOrganizations#70463, productGroup#70464], false
(256) Repartition
Arguments: 25, true
(257) Project
Arguments: [internalUUID#70454, address#70460.timeZone.code AS timezonecode#70465]
(258) Join
Arguments: LeftOuter, (plant#70438 <=> internalUUID#70454)
(259) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, internalUUID#70454, CASE WHEN isnotnull(timezonecode#70465) THEN timezonecode#70465 ELSE UTC END AS timezonecode#70470]
(260) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470]
(261) LogicalRelation
Arguments: parquet, [systemId#70471, internalUUID#70472, id#70473, displayId#70474, name#70475, baseUnitOfMeasure#70476, unitOfMeasures#70477, unitOfMeasureConversions#70478, productionAspect#70479, salesAspect#70480, procurementAspect#70481, productGroup#70482], false
(262) Repartition
Arguments: 25, true
(263) Join
Arguments: LeftOuter, (product#70437 = internalUUID#70472)
(264) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470, systemId#70471, internalUUID#70472, id#70473, displayId#70474, name#70475, baseUnitOfMeasure#70476, unitOfMeasures#70477, unitOfMeasureConversions#70478, productionAspect#70479, salesAspect#70480, procurementAspect#70481, productGroup#70482, filter(unitOfMeasureConversions#70478, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70451.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70451.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70476.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70476.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70483]
(265) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70483.quantityNumerator), true, [quantityNumerator#70484]
(266) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470, systemId#70471, internalUUID#70472, id#70473, displayId#70474, name#70475, baseUnitOfMeasure#70476, unitOfMeasures#70477, unitOfMeasureConversions#70478, productionAspect#70479, salesAspect#70480, procurementAspect#70481, productGroup#70482, filteredUnitOfMeasureConversions#70483, quantityNumerator#70484]
(267) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70483.quantityDenominator), true, [quantityDenominator#70487]
(268) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470, systemId#70471, internalUUID#70472, id#70473, displayId#70474, name#70475, baseUnitOfMeasure#70476, unitOfMeasures#70477, unitOfMeasureConversions#70478, productionAspect#70479, salesAspect#70480, procurementAspect#70481, productGroup#70482, filteredUnitOfMeasureConversions#70483, quantityNumerator#70484, quantityDenominator#70487]
(269) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470, systemId#70471, internalUUID#70472, id#70473, displayId#70474, name#70475, baseUnitOfMeasure#70476, unitOfMeasures#70477, unitOfMeasureConversions#70478, productionAspect#70479, salesAspect#70480, procurementAspect#70481, productGroup#70482, filteredUnitOfMeasureConversions#70483, quantityNumerator#70484, quantityDenominator#70487, (cast(quantityNumerator#70484 as double) / cast(quantityDenominator#70487 as double)) AS outboundUnit#70488]
(270) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470, systemId#70471, internalUUID#70472, id#70473, displayId#70474, name#70475, baseUnitOfMeasure#70476, unitOfMeasures#70477, unitOfMeasureConversions#70478, productionAspect#70479, salesAspect#70480, procurementAspect#70481, productGroup#70482, filteredUnitOfMeasureConversions#70483, quantityNumerator#70484, quantityDenominator#70487, CASE WHEN (isnull(outboundUnit#70488) OR (outboundUnit#70488 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70488 END AS outboundUnit#70491]
(271) Project
Arguments: [product#70437, plant#70438, orderDateTime#70439, productPlant#70451, timezonecode#70470, outboundUnit#70491]
(272) Project
Arguments: [plant#70438]
(273) Deduplicate
Arguments: [plant#70438]
(274) Join
Arguments: Inner, (plantUuid#70433 = plant#70438)
(275) Project
Arguments: [plantId#70432, plantUuid#70433, storageLocId#70434, storageLocUuid#70435]
(276) Join
Arguments: Inner, (plant#70405.internalRefUUID <=> plantUuid#70433)
(277) Generate
Arguments: explode(filter(stockQuantities#70407, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#70435) AND (lambda x#69270.storageLocation.Id = storageLocId#70434)), lambda x#69270, false))), false, [stockQuantity#70498]
(278) Project
Arguments: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70406, stockQuantities#70407, plantId#70432, plantUuid#70433, storageLocId#70434, storageLocUuid#70435, stockQuantity#70498]
(279) Aggregate
Arguments: [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402], [plantUuid#70433, internalUUID#70403, plant#70405, product#70404, systemId#70402, first(calculationDateTime#70406, false) AS calculationDateTime#70499, collect_list(stockQuantity#70498, 0, 0) AS stockQuantities#70500]
(280) Project
Arguments: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500]
(281) Generate
Arguments: explode(stockQuantities#70500), false, [stockQuantity#70501]
(282) Project
Arguments: [systemId#70402, internalUUID#70403, product#70404, plant#70405, calculationDateTime#70499, stockQuantities#70500, stockQuantity#70501]
(283) Project
Arguments: [plant#70405.id AS plant#70502, plant#70405.internalRefUUID AS plantUuid#70503, product#70404.id AS product#70504, product#70404.internalRefUUID AS productUuid#70505, calculationDateTime#70499, stockQuantity#70501.storagelocation.id AS storageLocId#70506, stockQuantity#70501.storagelocation.internalRefUUID AS storageLocUuid#70507, stockQuantity#70501.quantity.measure AS quantity#70508, stockQuantity#70501.specialStockIndicator.code AS specialStockIndicator#70509, stockQuantity#70501.stockType.code AS stockType#70510]
(284) Filter
Arguments: ((specialStockIndicator#70509 = ) AND (stockType#70510 = 01))
(285) LogicalRelation
Arguments: parquet, [product#70513, plant#70514, orderDateTime#70515, planningStartDateTime#70516], false
(286) RepartitionByExpression
Arguments: [product#70513, plant#70514], 25
(287) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515]
(288) LogicalRelation
Arguments: parquet, [systemId#70517, internalUUID#70518, plant#70519, product#70520, blockedForReplenishmentStartingFrom#70521, productionAspect#70522, salesPlant#70523, listing#70524], false
(289) Repartition
Arguments: 25, true
(290) Project
Arguments: [systemId#70517, internalUUID#70518, plant#70519, product#70520, blockedForReplenishmentStartingFrom#70521, productionAspect#70522, salesPlant#70523, listing#70524, struct(systemId, systemId#70517, internalUUID, internalUUID#70518, plant, plant#70519, product, product#70520, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70521, productionAspect, productionAspect#70522, salesPlant, salesPlant#70523, listing, listing#70524) AS productPlant#70525]
(291) Project
Arguments: [productPlant#70525]
(292) Join
Arguments: LeftOuter, ((product#70513 <=> productPlant#70525.product.internalRefUUID) AND (plant#70514 <=> productPlant#70525.plant.internalRefUUID))
(293) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525]
(294) SubqueryAlias
Arguments: wl
(295) LogicalRelation
Arguments: parquet, [systemId#70528, internalUUID#70529, id#70530, displayId#70531, name#70532, category#70533, companyCode#70534, address#70535, mainDistributionChain#70536, mainPurchasingOrganization#70537, validPurchasingOrganizations#70538, productGroup#70539], false
(296) Repartition
Arguments: 25, true
(297) Project
Arguments: [internalUUID#70529, address#70535.timeZone.code AS timezonecode#70540]
(298) Join
Arguments: LeftOuter, (plant#70514 <=> internalUUID#70529)
(299) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, internalUUID#70529, CASE WHEN isnotnull(timezonecode#70540) THEN timezonecode#70540 ELSE UTC END AS timezonecode#70541]
(300) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541]
(301) LogicalRelation
Arguments: parquet, [systemId#70542, internalUUID#70543, id#70544, displayId#70545, name#70546, baseUnitOfMeasure#70547, unitOfMeasures#70548, unitOfMeasureConversions#70549, productionAspect#70550, salesAspect#70551, procurementAspect#70552, productGroup#70553], false
(302) Repartition
Arguments: 25, true
(303) Join
Arguments: LeftOuter, (product#70513 = internalUUID#70543)
(304) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541, systemId#70542, internalUUID#70543, id#70544, displayId#70545, name#70546, baseUnitOfMeasure#70547, unitOfMeasures#70548, unitOfMeasureConversions#70549, productionAspect#70550, salesAspect#70551, procurementAspect#70552, productGroup#70553, filter(unitOfMeasureConversions#70549, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70525.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70525.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70547.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70547.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70554]
(305) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70554.quantityNumerator), true, [quantityNumerator#70555]
(306) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541, systemId#70542, internalUUID#70543, id#70544, displayId#70545, name#70546, baseUnitOfMeasure#70547, unitOfMeasures#70548, unitOfMeasureConversions#70549, productionAspect#70550, salesAspect#70551, procurementAspect#70552, productGroup#70553, filteredUnitOfMeasureConversions#70554, quantityNumerator#70555]
(307) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70554.quantityDenominator), true, [quantityDenominator#70556]
(308) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541, systemId#70542, internalUUID#70543, id#70544, displayId#70545, name#70546, baseUnitOfMeasure#70547, unitOfMeasures#70548, unitOfMeasureConversions#70549, productionAspect#70550, salesAspect#70551, procurementAspect#70552, productGroup#70553, filteredUnitOfMeasureConversions#70554, quantityNumerator#70555, quantityDenominator#70556]
(309) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541, systemId#70542, internalUUID#70543, id#70544, displayId#70545, name#70546, baseUnitOfMeasure#70547, unitOfMeasures#70548, unitOfMeasureConversions#70549, productionAspect#70550, salesAspect#70551, procurementAspect#70552, productGroup#70553, filteredUnitOfMeasureConversions#70554, quantityNumerator#70555, quantityDenominator#70556, (cast(quantityNumerator#70555 as double) / cast(quantityDenominator#70556 as double)) AS outboundUnit#70557]
(310) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541, systemId#70542, internalUUID#70543, id#70544, displayId#70545, name#70546, baseUnitOfMeasure#70547, unitOfMeasures#70548, unitOfMeasureConversions#70549, productionAspect#70550, salesAspect#70551, procurementAspect#70552, productGroup#70553, filteredUnitOfMeasureConversions#70554, quantityNumerator#70555, quantityDenominator#70556, CASE WHEN (isnull(outboundUnit#70557) OR (outboundUnit#70557 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70557 END AS outboundUnit#70558]
(311) Project
Arguments: [product#70513, plant#70514, orderDateTime#70515, productPlant#70525, timezonecode#70541, outboundUnit#70558]
(312) Join
Arguments: Inner, ((plantUuid#70503 = plant#70514) AND (productUuid#70505 = product#70513))
(313) Filter
Arguments: (calculationDateTime#70499 <= orderDateTime#70515)
(314) Project
Arguments: [plantUuid#70503 AS plant#70559, productUuid#70505 AS product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
(315) LogicalRelation
Arguments: parquet, [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566], false
(316) Repartition
Arguments: 25, true
(317) LogicalRelation
Arguments: parquet, [marketUnit#70567, description#70568, articleHierarchy#70569, defaultCurrency#70570, responsibilities#70571, replenishmentTypes#70572, distributionCenters#70573, assignedArticleHierarchyNodes#70574, minOrderQtySetting#70575, listingCheck#70576, odsSelection#70577, demandProfiles#70578, constraintProfiles#70579, optimizationProfiles#70580, orderGroupSplitProfiles#70581, supplierMinimumProfiles#70582, multipleRestrictionProfiles#70583, preferredUomSource#70584, handlingOfUnfulfilledDemands#70585, negligibleQuantitiesThreshold#70586, eventtype#70587, minOrderQtySettingInternal#70588], false
(318) Repartition
Arguments: 25, true
(319) Filter
Arguments: (marketUnit#70567 <=> Daily_grocery)
(320) Project
Arguments: [marketUnit#70567, description#70568, articleHierarchy#70569, defaultCurrency#70570, responsibilities#70571, replenishmentTypes#70572, distributionCenters#70573, assignedArticleHierarchyNodes#70574, minOrderQtySetting#70575, listingCheck#70576, odsSelection#70577, demandProfiles#70578, constraintProfiles#70579, optimizationProfiles#70580, orderGroupSplitProfiles#70581, supplierMinimumProfiles#70582, multipleRestrictionProfiles#70583, preferredUomSource#70584, handlingOfUnfulfilledDemands#70585, negligibleQuantitiesThreshold#70586, eventtype#70587, minOrderQtySettingInternal#70588]
(321) Project
Arguments: [distributionCenters#70573]
(322) Generate
Arguments: explode(distributionCenters#70573), false, [distributionCenters#70589]
(323) Project
Arguments: [distributionCenters#70589]
(324) Generate
Arguments: explode(distributionCenters#70589.storageLocations), false, [storageLocations#70590]
(325) Project
Arguments: [distributionCenters#70589.id AS plantId#70591, distributionCenters#70589.internalRefUUID AS plantUuid#70592, storageLocations#70590]
(326) Project
Arguments: [plantId#70591, plantUuid#70592, storageLocations#70590.id AS storageLocId#70593, storageLocations#70590.internalRefUUID AS storageLocUuid#70594]
(327) LogicalRelation
Arguments: parquet, [product#70595, plant#70596, orderDateTime#70597, planningStartDateTime#70598], false
(328) RepartitionByExpression
Arguments: [product#70595, plant#70596], 25
(329) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597]
(330) LogicalRelation
Arguments: parquet, [systemId#70599, internalUUID#70600, plant#70601, product#70602, blockedForReplenishmentStartingFrom#70603, productionAspect#70604, salesPlant#70605, listing#70606], false
(331) Repartition
Arguments: 25, true
(332) Project
Arguments: [systemId#70599, internalUUID#70600, plant#70601, product#70602, blockedForReplenishmentStartingFrom#70603, productionAspect#70604, salesPlant#70605, listing#70606, struct(systemId, systemId#70599, internalUUID, internalUUID#70600, plant, plant#70601, product, product#70602, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70603, productionAspect, productionAspect#70604, salesPlant, salesPlant#70605, listing, listing#70606) AS productPlant#70607]
(333) Project
Arguments: [productPlant#70607]
(334) Join
Arguments: LeftOuter, ((product#70595 <=> productPlant#70607.product.internalRefUUID) AND (plant#70596 <=> productPlant#70607.plant.internalRefUUID))
(335) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607]
(336) SubqueryAlias
Arguments: wl
(337) LogicalRelation
Arguments: parquet, [systemId#70608, internalUUID#70609, id#70610, displayId#70611, name#70612, category#70613, companyCode#70614, address#70615, mainDistributionChain#70616, mainPurchasingOrganization#70617, validPurchasingOrganizations#70618, productGroup#70619], false
(338) Repartition
Arguments: 25, true
(339) Project
Arguments: [internalUUID#70609, address#70615.timeZone.code AS timezonecode#70620]
(340) Join
Arguments: LeftOuter, (plant#70596 <=> internalUUID#70609)
(341) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, internalUUID#70609, CASE WHEN isnotnull(timezonecode#70620) THEN timezonecode#70620 ELSE UTC END AS timezonecode#70621]
(342) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621]
(343) LogicalRelation
Arguments: parquet, [systemId#70622, internalUUID#70623, id#70624, displayId#70625, name#70626, baseUnitOfMeasure#70627, unitOfMeasures#70628, unitOfMeasureConversions#70629, productionAspect#70630, salesAspect#70631, procurementAspect#70632, productGroup#70633], false
(344) Repartition
Arguments: 25, true
(345) Join
Arguments: LeftOuter, (product#70595 = internalUUID#70623)
(346) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621, systemId#70622, internalUUID#70623, id#70624, displayId#70625, name#70626, baseUnitOfMeasure#70627, unitOfMeasures#70628, unitOfMeasureConversions#70629, productionAspect#70630, salesAspect#70631, procurementAspect#70632, productGroup#70633, filter(unitOfMeasureConversions#70629, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70607.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70607.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70627.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70627.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70634]
(347) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70634.quantityNumerator), true, [quantityNumerator#70635]
(348) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621, systemId#70622, internalUUID#70623, id#70624, displayId#70625, name#70626, baseUnitOfMeasure#70627, unitOfMeasures#70628, unitOfMeasureConversions#70629, productionAspect#70630, salesAspect#70631, procurementAspect#70632, productGroup#70633, filteredUnitOfMeasureConversions#70634, quantityNumerator#70635]
(349) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70634.quantityDenominator), true, [quantityDenominator#70636]
(350) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621, systemId#70622, internalUUID#70623, id#70624, displayId#70625, name#70626, baseUnitOfMeasure#70627, unitOfMeasures#70628, unitOfMeasureConversions#70629, productionAspect#70630, salesAspect#70631, procurementAspect#70632, productGroup#70633, filteredUnitOfMeasureConversions#70634, quantityNumerator#70635, quantityDenominator#70636]
(351) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621, systemId#70622, internalUUID#70623, id#70624, displayId#70625, name#70626, baseUnitOfMeasure#70627, unitOfMeasures#70628, unitOfMeasureConversions#70629, productionAspect#70630, salesAspect#70631, procurementAspect#70632, productGroup#70633, filteredUnitOfMeasureConversions#70634, quantityNumerator#70635, quantityDenominator#70636, (cast(quantityNumerator#70635 as double) / cast(quantityDenominator#70636 as double)) AS outboundUnit#70637]
(352) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621, systemId#70622, internalUUID#70623, id#70624, displayId#70625, name#70626, baseUnitOfMeasure#70627, unitOfMeasures#70628, unitOfMeasureConversions#70629, productionAspect#70630, salesAspect#70631, procurementAspect#70632, productGroup#70633, filteredUnitOfMeasureConversions#70634, quantityNumerator#70635, quantityDenominator#70636, CASE WHEN (isnull(outboundUnit#70637) OR (outboundUnit#70637 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70637 END AS outboundUnit#70638]
(353) Project
Arguments: [product#70595, plant#70596, orderDateTime#70597, productPlant#70607, timezonecode#70621, outboundUnit#70638]
(354) Project
Arguments: [plant#70596]
(355) Deduplicate
Arguments: [plant#70596]
(356) Join
Arguments: Inner, (plantUuid#70592 = plant#70596)
(357) Project
Arguments: [plantId#70591, plantUuid#70592, storageLocId#70593, storageLocUuid#70594]
(358) Join
Arguments: Inner, (plant#70564.internalRefUUID <=> plantUuid#70592)
(359) Generate
Arguments: explode(filter(stockQuantities#70566, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#70594) AND (lambda x#69270.storageLocation.Id = storageLocId#70593)), lambda x#69270, false))), false, [stockQuantity#70639]
(360) Project
Arguments: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70565, stockQuantities#70566, plantId#70591, plantUuid#70592, storageLocId#70593, storageLocUuid#70594, stockQuantity#70639]
(361) Aggregate
Arguments: [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561], [plantUuid#70592, internalUUID#70562, plant#70564, product#70563, systemId#70561, first(calculationDateTime#70565, false) AS calculationDateTime#70640, collect_list(stockQuantity#70639, 0, 0) AS stockQuantities#70641]
(362) Project
Arguments: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70640, stockQuantities#70641]
(363) Generate
Arguments: explode(stockQuantities#70641), false, [stockQuantity#70642]
(364) Project
Arguments: [systemId#70561, internalUUID#70562, product#70563, plant#70564, calculationDateTime#70640, stockQuantities#70641, stockQuantity#70642]
(365) Project
Arguments: [plant#70564.id AS plant#70643, plant#70564.internalRefUUID AS plantUuid#70644, product#70563.id AS product#70645, product#70563.internalRefUUID AS productUuid#70646, calculationDateTime#70640, stockQuantity#70642.storagelocation.id AS storageLocId#70647, stockQuantity#70642.storagelocation.internalRefUUID AS storageLocUuid#70648, stockQuantity#70642.quantity.measure AS quantity#70649, stockQuantity#70642.specialStockIndicator.code AS specialStockIndicator#70650, stockQuantity#70642.stockType.code AS stockType#70651]
(366) Filter
Arguments: ((specialStockIndicator#70650 = ) AND (stockType#70651 = 01))
(367) LogicalRelation
Arguments: parquet, [product#70652, plant#70653, orderDateTime#70654, planningStartDateTime#70655], false
(368) RepartitionByExpression
Arguments: [product#70652, plant#70653], 25
(369) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654]
(370) LogicalRelation
Arguments: parquet, [systemId#70656, internalUUID#70657, plant#70658, product#70659, blockedForReplenishmentStartingFrom#70660, productionAspect#70661, salesPlant#70662, listing#70663], false
(371) Repartition
Arguments: 25, true
(372) Project
Arguments: [systemId#70656, internalUUID#70657, plant#70658, product#70659, blockedForReplenishmentStartingFrom#70660, productionAspect#70661, salesPlant#70662, listing#70663, struct(systemId, systemId#70656, internalUUID, internalUUID#70657, plant, plant#70658, product, product#70659, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70660, productionAspect, productionAspect#70661, salesPlant, salesPlant#70662, listing, listing#70663) AS productPlant#70664]
(373) Project
Arguments: [productPlant#70664]
(374) Join
Arguments: LeftOuter, ((product#70652 <=> productPlant#70664.product.internalRefUUID) AND (plant#70653 <=> productPlant#70664.plant.internalRefUUID))
(375) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664]
(376) SubqueryAlias
Arguments: wl
(377) LogicalRelation
Arguments: parquet, [systemId#70665, internalUUID#70666, id#70667, displayId#70668, name#70669, category#70670, companyCode#70671, address#70672, mainDistributionChain#70673, mainPurchasingOrganization#70674, validPurchasingOrganizations#70675, productGroup#70676], false
(378) Repartition
Arguments: 25, true
(379) Project
Arguments: [internalUUID#70666, address#70672.timeZone.code AS timezonecode#70677]
(380) Join
Arguments: LeftOuter, (plant#70653 <=> internalUUID#70666)
(381) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, internalUUID#70666, CASE WHEN isnotnull(timezonecode#70677) THEN timezonecode#70677 ELSE UTC END AS timezonecode#70678]
(382) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678]
(383) LogicalRelation
Arguments: parquet, [systemId#70679, internalUUID#70680, id#70681, displayId#70682, name#70683, baseUnitOfMeasure#70684, unitOfMeasures#70685, unitOfMeasureConversions#70686, productionAspect#70687, salesAspect#70688, procurementAspect#70689, productGroup#70690], false
(384) Repartition
Arguments: 25, true
(385) Join
Arguments: LeftOuter, (product#70652 = internalUUID#70680)
(386) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678, systemId#70679, internalUUID#70680, id#70681, displayId#70682, name#70683, baseUnitOfMeasure#70684, unitOfMeasures#70685, unitOfMeasureConversions#70686, productionAspect#70687, salesAspect#70688, procurementAspect#70689, productGroup#70690, filter(unitOfMeasureConversions#70686, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70664.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70664.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70684.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70684.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70691]
(387) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70691.quantityNumerator), true, [quantityNumerator#70692]
(388) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678, systemId#70679, internalUUID#70680, id#70681, displayId#70682, name#70683, baseUnitOfMeasure#70684, unitOfMeasures#70685, unitOfMeasureConversions#70686, productionAspect#70687, salesAspect#70688, procurementAspect#70689, productGroup#70690, filteredUnitOfMeasureConversions#70691, quantityNumerator#70692]
(389) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70691.quantityDenominator), true, [quantityDenominator#70693]
(390) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678, systemId#70679, internalUUID#70680, id#70681, displayId#70682, name#70683, baseUnitOfMeasure#70684, unitOfMeasures#70685, unitOfMeasureConversions#70686, productionAspect#70687, salesAspect#70688, procurementAspect#70689, productGroup#70690, filteredUnitOfMeasureConversions#70691, quantityNumerator#70692, quantityDenominator#70693]
(391) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678, systemId#70679, internalUUID#70680, id#70681, displayId#70682, name#70683, baseUnitOfMeasure#70684, unitOfMeasures#70685, unitOfMeasureConversions#70686, productionAspect#70687, salesAspect#70688, procurementAspect#70689, productGroup#70690, filteredUnitOfMeasureConversions#70691, quantityNumerator#70692, quantityDenominator#70693, (cast(quantityNumerator#70692 as double) / cast(quantityDenominator#70693 as double)) AS outboundUnit#70694]
(392) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678, systemId#70679, internalUUID#70680, id#70681, displayId#70682, name#70683, baseUnitOfMeasure#70684, unitOfMeasures#70685, unitOfMeasureConversions#70686, productionAspect#70687, salesAspect#70688, procurementAspect#70689, productGroup#70690, filteredUnitOfMeasureConversions#70691, quantityNumerator#70692, quantityDenominator#70693, CASE WHEN (isnull(outboundUnit#70694) OR (outboundUnit#70694 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70694 END AS outboundUnit#70695]
(393) Project
Arguments: [product#70652, plant#70653, orderDateTime#70654, productPlant#70664, timezonecode#70678, outboundUnit#70695]
(394) Join
Arguments: Inner, ((plantUuid#70644 = plant#70653) AND (productUuid#70646 = product#70652))
(395) Filter
Arguments: (calculationDateTime#70640 <= orderDateTime#70654)
(396) Project
Arguments: [plantUuid#70644 AS plant#70696, productUuid#70646 AS product#70697, storageLocId#70647, calculationDateTime#70640, quantity#70649]
(397) Aggregate
Arguments: [plant#70696, product#70697, storageLocId#70647], [plant#70696, product#70697, storageLocId#70647, max(calculationDateTime#70640) AS max_calc_datetime#70698]
(398) Join
Arguments: Inner, ((((plant#70559 <=> plant#70696) AND (product#70560 <=> product#70697)) AND (storageLocId#70506 <=> storageLocId#70647)) AND (calculationDateTime#70499 <=> max_calc_datetime#70698))
(399) Project
Arguments: [plant#70559, product#70560, storageLocId#70506, calculationDateTime#70499, quantity#70508]
(400) Aggregate
Arguments: [product#70560, plant#70559], [product#70560, plant#70559, sum(quantity#70508) AS quantitySum#70699, min(calculationDateTime#70499) AS minCalculationDateTime#70700]
(401) Project
Arguments: [product#70560, plant#70559, quantitySum#70699, minCalculationDateTime#70700, round(quantitySum#70699, 0) AS roundedQuantitySum#70701]
(402) Join
Arguments: LeftOuter, ((plant#70357 = plant#70559) AND (product#70356 = product#70560))
(403) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, roundedQuantitySum#70701, minCalculationDateTime#70700]
(404) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, roundedQuantitySum#70701, minCalculationDateTime#70700, CASE WHEN isnotnull(minCalculationDateTime#70700) THEN minCalculationDateTime#70700 ELSE orderDateTime#70358 END AS stockDatetime#70702]
(405) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, roundedQuantitySum#70701, minCalculationDateTime#70700, stockDatetime#70702, CASE WHEN isnotnull(roundedQuantitySum#70701) THEN array(roundedQuantitySum#70701) ELSE array(0.0) END AS stockBatchQuantities#70703]
(406) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, roundedQuantitySum#70701, minCalculationDateTime#70700, stockDatetime#70702, stockBatchQuantities#70703, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#70704]
(407) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, roundedQuantitySum#70701, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704]
(408) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704]
(409) LogicalRelation
Arguments: parquet, [product#69898, plant#69899, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906], false
(410) Join
Arguments: LeftOuter, ((product#70356 = product#69898) AND (plant#70357 = plant#69899))
(411) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906, product#69898, plant#69899]
(412) Project
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704, demandChannel#69900, demandStream#69901, considerVariance#69902, demandTimeBuckets#69903, demandPointInTimeStart#69904, demandPointInTimeEnd#69905, demandPointInTime#69906, CASE WHEN isnotnull(product#69898) THEN struct(demandChannel, demandChannel#69900, demandStream, demandStream#69901, considerVariance, considerVariance#69902, demandTimeBuckets, demandTimeBuckets#69903, demandPointInTimeStart, demandPointInTimeStart#69904, demandPointInTimeEnd, demandPointInTimeEnd#69905, demandPointInTime, demandPointInTime#69906) 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#69977]
(413) Aggregate
Arguments: [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704], [product#70356, plant#70357, orderDateTime#70358, productPlant#70368, timezonecode#70382, outboundUnit#70401, stockDatetime#70702, stockBatchQuantities#70703, stockBatchShelfLifeEndDatetimes#70704, collect_list(rawDemands#69977, 0, 0) AS rawDemands#70004]
(414) DeserializeToObject
Arguments: createexternalrow(invoke(product#70356.toString()), invoke(plant#70357.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#70358)), if (isnull(productPlant#70368)) null else createexternalrow(invoke(productPlant#70368.systemId.toString()), invoke(productPlant#70368.internalUUID.toString()), if (isnull(productPlant#70368.plant)) null else createexternalrow(invoke(productPlant#70368.plant.internalRefUUID.toString()), invoke(productPlant#70368.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#70368.product)) null else createexternalrow(invoke(productPlant#70368.product.internalRefUUID.toString()), invoke(productPlant#70368.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#70368.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#70368.productionAspect)) null else createexternalrow(if (isnull(productPlant#70368.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#70368.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#70368.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#70368.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#70368.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#70368.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#70368.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#70368.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#70368.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#70368.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(minimumSafetyStock,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(minimumSafetyStock,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#70368.salesPlant)) null else createexternalrow(if (isnull(productPlant#70368.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#70368.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#70368.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, 10028), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#70368.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(minimumSafetyStock,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#70382.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#70401)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#70702)), mapobjects(lambdavariable(MapObject, DoubleType, true, 10029), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 10029) as double))), stockBatchQuantities#70703, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 10030), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 10030) as timestamp)))), stockBatchShelfLifeEndDatetimes#70704, 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, 10031), 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, 10031))) 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, 10031).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, 10031).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, 10031).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032).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, 10031).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, 10031).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, 10031).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033).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, 10031).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#70004, 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(minimumSafetyStock,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#70342: org.apache.spark.sql.Row
(415) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@22b451ac, 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(minimumSafetyStock,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#70347: 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#70352, 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#70353, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10019), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10019), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10020), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10020), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10021), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10021), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10022), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10022), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10023), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10023), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#70354, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10025), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10025), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10026), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10026), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10027), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10027), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#70355]
(417) Join
Arguments: LeftOuter, ((plant#70353 <=> plant#69016) AND (product#70352 <=> product#69015))
(418) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, plant#70353, dayBucketDemands#70354, pointInTimeDemands#70355]
(419) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355]
(420) LogicalRelation
Arguments: parquet, [product#77193, plant#77194, orderDateTime#77195, planningStartDateTime#77196], false
(421) RepartitionByExpression
Arguments: [product#77193, plant#77194], 25
(422) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195]
(423) LogicalRelation
Arguments: parquet, [systemId#77197, internalUUID#77198, plant#77199, product#77200, blockedForReplenishmentStartingFrom#77201, productionAspect#77202, salesPlant#77203, listing#77204], false
(424) Repartition
Arguments: 25, true
(425) Project
Arguments: [systemId#77197, internalUUID#77198, plant#77199, product#77200, blockedForReplenishmentStartingFrom#77201, productionAspect#77202, salesPlant#77203, listing#77204, struct(systemId, systemId#77197, internalUUID, internalUUID#77198, plant, plant#77199, product, product#77200, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#77201, productionAspect, productionAspect#77202, salesPlant, salesPlant#77203, listing, listing#77204) AS productPlant#77218]
(426) Project
Arguments: [productPlant#77218]
(427) Join
Arguments: LeftOuter, ((product#77193 <=> productPlant#77218.product.internalRefUUID) AND (plant#77194 <=> productPlant#77218.plant.internalRefUUID))
(428) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218]
(429) SubqueryAlias
Arguments: wl
(430) LogicalRelation
Arguments: parquet, [systemId#77232, internalUUID#77233, id#77234, displayId#77235, name#77236, category#77237, companyCode#77238, address#77239, mainDistributionChain#77240, mainPurchasingOrganization#77241, validPurchasingOrganizations#77242, productGroup#77243], false
(431) Repartition
Arguments: 25, true
(432) Project
Arguments: [internalUUID#77233, address#77239.timeZone.code AS timezonecode#77244]
(433) Join
Arguments: LeftOuter, (plant#77194 <=> internalUUID#77233)
(434) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, internalUUID#77233, CASE WHEN isnotnull(timezonecode#77244) THEN timezonecode#77244 ELSE UTC END AS timezonecode#77245]
(435) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245]
(436) LogicalRelation
Arguments: parquet, [systemId#77247, internalUUID#77248, id#77249, displayId#77250, name#77251, baseUnitOfMeasure#77252, unitOfMeasures#77253, unitOfMeasureConversions#77254, productionAspect#77255, salesAspect#77256, procurementAspect#77257, productGroup#77258], false
(437) Repartition
Arguments: 25, true
(438) Join
Arguments: LeftOuter, (product#77193 = internalUUID#77248)
(439) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, systemId#77247, internalUUID#77248, id#77249, displayId#77250, name#77251, baseUnitOfMeasure#77252, unitOfMeasures#77253, unitOfMeasureConversions#77254, productionAspect#77255, salesAspect#77256, procurementAspect#77257, productGroup#77258, filter(unitOfMeasureConversions#77254, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#77218.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#77218.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#77252.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#77252.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#77261]
(440) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77261.quantityNumerator), true, [quantityNumerator#77262]
(441) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, systemId#77247, internalUUID#77248, id#77249, displayId#77250, name#77251, baseUnitOfMeasure#77252, unitOfMeasures#77253, unitOfMeasureConversions#77254, productionAspect#77255, salesAspect#77256, procurementAspect#77257, productGroup#77258, filteredUnitOfMeasureConversions#77261, quantityNumerator#77262]
(442) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77261.quantityDenominator), true, [quantityDenominator#77264]
(443) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, systemId#77247, internalUUID#77248, id#77249, displayId#77250, name#77251, baseUnitOfMeasure#77252, unitOfMeasures#77253, unitOfMeasureConversions#77254, productionAspect#77255, salesAspect#77256, procurementAspect#77257, productGroup#77258, filteredUnitOfMeasureConversions#77261, quantityNumerator#77262, quantityDenominator#77264]
(444) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, systemId#77247, internalUUID#77248, id#77249, displayId#77250, name#77251, baseUnitOfMeasure#77252, unitOfMeasures#77253, unitOfMeasureConversions#77254, productionAspect#77255, salesAspect#77256, procurementAspect#77257, productGroup#77258, filteredUnitOfMeasureConversions#77261, quantityNumerator#77262, quantityDenominator#77264, (cast(quantityNumerator#77262 as double) / cast(quantityDenominator#77264 as double)) AS outboundUnit#77294]
(445) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, systemId#77247, internalUUID#77248, id#77249, displayId#77250, name#77251, baseUnitOfMeasure#77252, unitOfMeasures#77253, unitOfMeasureConversions#77254, productionAspect#77255, salesAspect#77256, procurementAspect#77257, productGroup#77258, filteredUnitOfMeasureConversions#77261, quantityNumerator#77262, quantityDenominator#77264, CASE WHEN (isnull(outboundUnit#77294) OR (outboundUnit#77294 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#77294 END AS outboundUnit#77296]
(446) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, outboundUnit#77296]
(447) LogicalRelation
Arguments: parquet, [systemId#77298, internalUUID#77299, product#77300, plant#77301, calculationDateTime#77302, stockQuantities#77303], false
(448) Repartition
Arguments: 25, true
(449) LogicalRelation
Arguments: parquet, [marketUnit#77304, description#77305, articleHierarchy#77306, defaultCurrency#77307, responsibilities#77308, replenishmentTypes#77309, distributionCenters#77310, assignedArticleHierarchyNodes#77311, minOrderQtySetting#77312, listingCheck#77313, odsSelection#77314, demandProfiles#77315, constraintProfiles#77316, optimizationProfiles#77317, orderGroupSplitProfiles#77318, supplierMinimumProfiles#77319, multipleRestrictionProfiles#77320, preferredUomSource#77321, handlingOfUnfulfilledDemands#77322, negligibleQuantitiesThreshold#77323, eventtype#77325, minOrderQtySettingInternal#77327], false
(450) Repartition
Arguments: 25, true
(451) Filter
Arguments: (marketUnit#77304 <=> Daily_grocery)
(452) Project
Arguments: [marketUnit#77304, description#77305, articleHierarchy#77306, defaultCurrency#77307, responsibilities#77308, replenishmentTypes#77309, distributionCenters#77310, assignedArticleHierarchyNodes#77311, minOrderQtySetting#77312, listingCheck#77313, odsSelection#77314, demandProfiles#77315, constraintProfiles#77316, optimizationProfiles#77317, orderGroupSplitProfiles#77318, supplierMinimumProfiles#77319, multipleRestrictionProfiles#77320, preferredUomSource#77321, handlingOfUnfulfilledDemands#77322, negligibleQuantitiesThreshold#77323, eventtype#77325, minOrderQtySettingInternal#77327]
(453) Project
Arguments: [distributionCenters#77310]
(454) Generate
Arguments: explode(distributionCenters#77310), false, [distributionCenters#77342]
(455) Project
Arguments: [distributionCenters#77342]
(456) Generate
Arguments: explode(distributionCenters#77342.storageLocations), false, [storageLocations#77344]
(457) Project
Arguments: [distributionCenters#77342.id AS plantId#77345, distributionCenters#77342.internalRefUUID AS plantUuid#77346, storageLocations#77344]
(458) Project
Arguments: [plantId#77345, plantUuid#77346, storageLocations#77344.id AS storageLocId#77347, storageLocations#77344.internalRefUUID AS storageLocUuid#77348]
(459) LogicalRelation
Arguments: parquet, [product#77349, plant#77350, orderDateTime#77351, planningStartDateTime#77352], false
(460) RepartitionByExpression
Arguments: [product#77349, plant#77350], 25
(461) Project
Arguments: [product#77349, plant#77350, orderDateTime#77351]
(462) LogicalRelation
Arguments: parquet, [systemId#77365, internalUUID#77366, plant#77367, product#77368, blockedForReplenishmentStartingFrom#77369, productionAspect#77370, salesPlant#77371, listing#77372], false
(463) Repartition
Arguments: 25, true
(464) Project
Arguments: [systemId#77365, internalUUID#77366, plant#77367, product#77368, blockedForReplenishmentStartingFrom#77369, productionAspect#77370, salesPlant#77371, listing#77372, struct(systemId, systemId#77365, internalUUID, internalUUID#77366, plant, plant#77367, product, product#77368, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#77369, productionAspect, productionAspect#77370, salesPlant, salesPlant#77371, listing, listing#77372) AS productPlant#77374]
(465) Project
Arguments: [productPlant#77374]
(466) Join
Arguments: LeftOuter, ((product#77349 <=> productPlant#77374.product.internalRefUUID) AND (plant#77350 <=> productPlant#77374.plant.internalRefUUID))
(467) Project
Arguments: [product#77349, plant#77350, orderDateTime#77351, productPlant#77374]
(468) SubqueryAlias
Arguments: wl
(469) LogicalRelation
Arguments: parquet, [systemId#77388, internalUUID#77389, id#77390, displayId#77391, name#77392, category#77393, companyCode#77394, address#77395, mainDistributionChain#77396, mainPurchasingOrganization#77397, validPurchasingOrganizations#77398, productGroup#77399], false
(470) Repartition
Arguments: 25, true
(471) Project
Arguments: [internalUUID#77389, address#77395.timeZone.code AS timezonecode#77400]
(472) Join
Arguments: LeftOuter, (plant#77350 <=> internalUUID#77389)
(473) Project
Arguments: [product#77349, plant#77350, orderDateTime#77351, productPlant#77374, internalUUID#77389, CASE WHEN isnotnull(timezonecode#77400) THEN timezonecode#77400 ELSE UTC END AS timezonecode#77401]
(474) Project
Arguments: [product#77349, plant#77350, orderDateTime#77351, productPlant#77374, timezonecode#77401]
(475) LogicalRelation
Arguments: parquet, [systemId#77403, internalUUID#77404, id#77405, displayId#77406, name#77407, baseUnitOfMeasure#77408, unitOfMeasures#77409, unitOfMeasureConversions#77410, productionAspect#77411, salesAspect#77412, procurementAspect#77413, productGroup#77414], false
(476) Repartition
Arguments: 25, true
(477) Join
Arguments: LeftOuter, (product#77349 = internalUUID#77404)
(478) Project
Arguments: [product#77349, plant#77350, orderDateTime#77351, productPlant#77374, timezonecode#77401, systemId#77403, internalUUID#77404, id#77405, displayId#77406, name#77407, baseUnitOfMeasure#77408, unitOfMeasures#77409, unitOfMeasureConversions#77410, productionAspect#77411, salesAspect#77412, procurementAspect#77413, productGroup#77414, filter(unitOfMeasureConversions#77410, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#77374.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#77374.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#77408.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#77408.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#77417]
(479) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77417.quantityNumerator), true, [quantityNumerator#77419]
(480) Project
Arguments: [product#77349, plant#77350, orderDateTime#77351, productPlant#77374, timezonecode#77401, systemId#77403, internalUUID#77404, id#77405, displayId#77406, name#77407, baseUnitOfMeasure#77408, unitOfMeasures#77409, unitOfMeasureConversions#77410, productionAspect#77411, salesAspect#77412, procurementAspect#77413, productGroup#77414, filteredUnitOfMeasureConversions#77417, quantityNumerator#77419]
(481) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77417.quantityDenominator), true, [quantityDenominator#77421]
(482) Project
Arguments: [product#77349, plant#77350, orderDateTime#77351, productPlant#77374, timezonecode#77401, systemId#77403, internalUUID#77404, id#77405, displayId#77406, name#77407, baseUnitOfMeasure#77408, unitOfMeasures#77409, unitOfMeasureConversions#77410, productionAspect#77411, salesAspect#77412, procurementAspect#77413, productGroup#77414, filteredUnitOfMeasureConversions#77417, quantityNumerator#77419, quantityDenominator#77421]
(483) Project
Arguments: [product#77349, plant#77350, orderDateTime#77351, productPlant#77374, timezonecode#77401, systemId#77403, internalUUID#77404, id#77405, displayId#77406, name#77407, baseUnitOfMeasure#77408, unitOfMeasures#77409, unitOfMeasureConversions#77410, productionAspect#77411, salesAspect#77412, procurementAspect#77413, productGroup#77414, filteredUnitOfMeasureConversions#77417, quantityNumerator#77419, quantityDenominator#77421, (cast(quantityNumerator#77419 as double) / cast(quantityDenominator#77421 as double)) AS outboundUnit#77422]
(484) Project
Arguments: [product#77349, plant#77350, orderDateTime#77351, productPlant#77374, timezonecode#77401, systemId#77403, internalUUID#77404, id#77405, displayId#77406, name#77407, baseUnitOfMeasure#77408, unitOfMeasures#77409, unitOfMeasureConversions#77410, productionAspect#77411, salesAspect#77412, procurementAspect#77413, productGroup#77414, filteredUnitOfMeasureConversions#77417, quantityNumerator#77419, quantityDenominator#77421, CASE WHEN (isnull(outboundUnit#77422) OR (outboundUnit#77422 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#77422 END AS outboundUnit#77423]
(485) Project
Arguments: [product#77349, plant#77350, orderDateTime#77351, productPlant#77374, timezonecode#77401, outboundUnit#77423]
(486) Project
Arguments: [plant#77350]
(487) Deduplicate
Arguments: [plant#77350]
(488) Join
Arguments: Inner, (plantUuid#77346 = plant#77350)
(489) Project
Arguments: [plantId#77345, plantUuid#77346, storageLocId#77347, storageLocUuid#77348]
(490) Join
Arguments: Inner, (plant#77301.internalRefUUID <=> plantUuid#77346)
(491) Generate
Arguments: explode(filter(stockQuantities#77303, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#77348) AND (lambda x#69270.storageLocation.Id = storageLocId#77347)), lambda x#69270, false))), false, [stockQuantity#77425]
(492) Project
Arguments: [systemId#77298, internalUUID#77299, product#77300, plant#77301, calculationDateTime#77302, stockQuantities#77303, plantId#77345, plantUuid#77346, storageLocId#77347, storageLocUuid#77348, stockQuantity#77425]
(493) Aggregate
Arguments: [plantUuid#77346, internalUUID#77299, plant#77301, product#77300, systemId#77298], [plantUuid#77346, internalUUID#77299, plant#77301, product#77300, systemId#77298, first(calculationDateTime#77302, false) AS calculationDateTime#77426, collect_list(stockQuantity#77425, 0, 0) AS stockQuantities#77427]
(494) Project
Arguments: [systemId#77298, internalUUID#77299, product#77300, plant#77301, calculationDateTime#77426, stockQuantities#77427]
(495) Generate
Arguments: explode(stockQuantities#77427), false, [stockQuantity#77428]
(496) Project
Arguments: [systemId#77298, internalUUID#77299, product#77300, plant#77301, calculationDateTime#77426, stockQuantities#77427, stockQuantity#77428]
(497) Project
Arguments: [plant#77301.id AS plant#77429, plant#77301.internalRefUUID AS plantUuid#77430, product#77300.id AS product#77431, product#77300.internalRefUUID AS productUuid#77432, calculationDateTime#77426, stockQuantity#77428.storagelocation.id AS storageLocId#77433, stockQuantity#77428.storagelocation.internalRefUUID AS storageLocUuid#77434, stockQuantity#77428.quantity.measure AS quantity#77435, stockQuantity#77428.specialStockIndicator.code AS specialStockIndicator#77436, stockQuantity#77428.stockType.code AS stockType#77437]
(498) Filter
Arguments: ((specialStockIndicator#77436 = ) AND (stockType#77437 = 01))
(499) LogicalRelation
Arguments: parquet, [product#77440, plant#77441, orderDateTime#77442, planningStartDateTime#77443], false
(500) RepartitionByExpression
Arguments: [product#77440, plant#77441], 25
(501) Project
Arguments: [product#77440, plant#77441, orderDateTime#77442]
(502) LogicalRelation
Arguments: parquet, [systemId#77444, internalUUID#77445, plant#77446, product#77447, blockedForReplenishmentStartingFrom#77448, productionAspect#77449, salesPlant#77450, listing#77451], false
(503) Repartition
Arguments: 25, true
(504) Project
Arguments: [systemId#77444, internalUUID#77445, plant#77446, product#77447, blockedForReplenishmentStartingFrom#77448, productionAspect#77449, salesPlant#77450, listing#77451, struct(systemId, systemId#77444, internalUUID, internalUUID#77445, plant, plant#77446, product, product#77447, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#77448, productionAspect, productionAspect#77449, salesPlant, salesPlant#77450, listing, listing#77451) AS productPlant#77452]
(505) Project
Arguments: [productPlant#77452]
(506) Join
Arguments: LeftOuter, ((product#77440 <=> productPlant#77452.product.internalRefUUID) AND (plant#77441 <=> productPlant#77452.plant.internalRefUUID))
(507) Project
Arguments: [product#77440, plant#77441, orderDateTime#77442, productPlant#77452]
(508) SubqueryAlias
Arguments: wl
(509) LogicalRelation
Arguments: parquet, [systemId#77453, internalUUID#77454, id#77455, displayId#77456, name#77457, category#77458, companyCode#77459, address#77460, mainDistributionChain#77461, mainPurchasingOrganization#77462, validPurchasingOrganizations#77463, productGroup#77464], false
(510) Repartition
Arguments: 25, true
(511) Project
Arguments: [internalUUID#77454, address#77460.timeZone.code AS timezonecode#77465]
(512) Join
Arguments: LeftOuter, (plant#77441 <=> internalUUID#77454)
(513) Project
Arguments: [product#77440, plant#77441, orderDateTime#77442, productPlant#77452, internalUUID#77454, CASE WHEN isnotnull(timezonecode#77465) THEN timezonecode#77465 ELSE UTC END AS timezonecode#77466]
(514) Project
Arguments: [product#77440, plant#77441, orderDateTime#77442, productPlant#77452, timezonecode#77466]
(515) LogicalRelation
Arguments: parquet, [systemId#77468, internalUUID#77469, id#77470, displayId#77471, name#77472, baseUnitOfMeasure#77473, unitOfMeasures#77474, unitOfMeasureConversions#77475, productionAspect#77476, salesAspect#77477, procurementAspect#77478, productGroup#77479], false
(516) Repartition
Arguments: 25, true
(517) Join
Arguments: LeftOuter, (product#77440 = internalUUID#77469)
(518) Project
Arguments: [product#77440, plant#77441, orderDateTime#77442, productPlant#77452, timezonecode#77466, systemId#77468, internalUUID#77469, id#77470, displayId#77471, name#77472, baseUnitOfMeasure#77473, unitOfMeasures#77474, unitOfMeasureConversions#77475, productionAspect#77476, salesAspect#77477, procurementAspect#77478, productGroup#77479, filter(unitOfMeasureConversions#77475, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#77452.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#77452.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#77473.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#77473.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#77489]
(519) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77489.quantityNumerator), true, [quantityNumerator#77494]
(520) Project
Arguments: [product#77440, plant#77441, orderDateTime#77442, productPlant#77452, timezonecode#77466, systemId#77468, internalUUID#77469, id#77470, displayId#77471, name#77472, baseUnitOfMeasure#77473, unitOfMeasures#77474, unitOfMeasureConversions#77475, productionAspect#77476, salesAspect#77477, procurementAspect#77478, productGroup#77479, filteredUnitOfMeasureConversions#77489, quantityNumerator#77494]
(521) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77489.quantityDenominator), true, [quantityDenominator#77517]
(522) Project
Arguments: [product#77440, plant#77441, orderDateTime#77442, productPlant#77452, timezonecode#77466, systemId#77468, internalUUID#77469, id#77470, displayId#77471, name#77472, baseUnitOfMeasure#77473, unitOfMeasures#77474, unitOfMeasureConversions#77475, productionAspect#77476, salesAspect#77477, procurementAspect#77478, productGroup#77479, filteredUnitOfMeasureConversions#77489, quantityNumerator#77494, quantityDenominator#77517]
(523) Project
Arguments: [product#77440, plant#77441, orderDateTime#77442, productPlant#77452, timezonecode#77466, systemId#77468, internalUUID#77469, id#77470, displayId#77471, name#77472, baseUnitOfMeasure#77473, unitOfMeasures#77474, unitOfMeasureConversions#77475, productionAspect#77476, salesAspect#77477, procurementAspect#77478, productGroup#77479, filteredUnitOfMeasureConversions#77489, quantityNumerator#77494, quantityDenominator#77517, (cast(quantityNumerator#77494 as double) / cast(quantityDenominator#77517 as double)) AS outboundUnit#77518]
(524) Project
Arguments: [product#77440, plant#77441, orderDateTime#77442, productPlant#77452, timezonecode#77466, systemId#77468, internalUUID#77469, id#77470, displayId#77471, name#77472, baseUnitOfMeasure#77473, unitOfMeasures#77474, unitOfMeasureConversions#77475, productionAspect#77476, salesAspect#77477, procurementAspect#77478, productGroup#77479, filteredUnitOfMeasureConversions#77489, quantityNumerator#77494, quantityDenominator#77517, CASE WHEN (isnull(outboundUnit#77518) OR (outboundUnit#77518 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#77518 END AS outboundUnit#77520]
(525) Project
Arguments: [product#77440, plant#77441, orderDateTime#77442, productPlant#77452, timezonecode#77466, outboundUnit#77520]
(526) Join
Arguments: Inner, ((plantUuid#77430 = plant#77441) AND (productUuid#77432 = product#77440))
(527) Filter
Arguments: (calculationDateTime#77426 <= orderDateTime#77442)
(528) Project
Arguments: [plantUuid#77430 AS plant#77533, productUuid#77432 AS product#77534, storageLocId#77433, calculationDateTime#77426, quantity#77435]
(529) LogicalRelation
Arguments: parquet, [systemId#77535, internalUUID#77536, product#77537, plant#77538, calculationDateTime#77539, stockQuantities#77540], false
(530) Repartition
Arguments: 25, true
(531) LogicalRelation
Arguments: parquet, [marketUnit#77541, description#77542, articleHierarchy#77543, defaultCurrency#77544, responsibilities#77545, replenishmentTypes#77546, distributionCenters#77547, assignedArticleHierarchyNodes#77548, minOrderQtySetting#77549, listingCheck#77550, odsSelection#77551, demandProfiles#77552, constraintProfiles#77553, optimizationProfiles#77554, orderGroupSplitProfiles#77555, supplierMinimumProfiles#77556, multipleRestrictionProfiles#77557, preferredUomSource#77558, handlingOfUnfulfilledDemands#77559, negligibleQuantitiesThreshold#77560, eventtype#77561, minOrderQtySettingInternal#77562], false
(532) Repartition
Arguments: 25, true
(533) Filter
Arguments: (marketUnit#77541 <=> Daily_grocery)
(534) Project
Arguments: [marketUnit#77541, description#77542, articleHierarchy#77543, defaultCurrency#77544, responsibilities#77545, replenishmentTypes#77546, distributionCenters#77547, assignedArticleHierarchyNodes#77548, minOrderQtySetting#77549, listingCheck#77550, odsSelection#77551, demandProfiles#77552, constraintProfiles#77553, optimizationProfiles#77554, orderGroupSplitProfiles#77555, supplierMinimumProfiles#77556, multipleRestrictionProfiles#77557, preferredUomSource#77558, handlingOfUnfulfilledDemands#77559, negligibleQuantitiesThreshold#77560, eventtype#77561, minOrderQtySettingInternal#77562]
(535) Project
Arguments: [distributionCenters#77547]
(536) Generate
Arguments: explode(distributionCenters#77547), false, [distributionCenters#77564]
(537) Project
Arguments: [distributionCenters#77564]
(538) Generate
Arguments: explode(distributionCenters#77564.storageLocations), false, [storageLocations#77566]
(539) Project
Arguments: [distributionCenters#77564.id AS plantId#77567, distributionCenters#77564.internalRefUUID AS plantUuid#77568, storageLocations#77566]
(540) Project
Arguments: [plantId#77567, plantUuid#77568, storageLocations#77566.id AS storageLocId#77569, storageLocations#77566.internalRefUUID AS storageLocUuid#77570]
(541) LogicalRelation
Arguments: parquet, [product#77571, plant#77572, orderDateTime#77573, planningStartDateTime#77574], false
(542) RepartitionByExpression
Arguments: [product#77571, plant#77572], 25
(543) Project
Arguments: [product#77571, plant#77572, orderDateTime#77573]
(544) LogicalRelation
Arguments: parquet, [systemId#77576, internalUUID#77577, plant#77578, product#77579, blockedForReplenishmentStartingFrom#77580, productionAspect#77581, salesPlant#77582, listing#77583], false
(545) Repartition
Arguments: 25, true
(546) Project
Arguments: [systemId#77576, internalUUID#77577, plant#77578, product#77579, blockedForReplenishmentStartingFrom#77580, productionAspect#77581, salesPlant#77582, listing#77583, struct(systemId, systemId#77576, internalUUID, internalUUID#77577, plant, plant#77578, product, product#77579, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#77580, productionAspect, productionAspect#77581, salesPlant, salesPlant#77582, listing, listing#77583) AS productPlant#77584]
(547) Project
Arguments: [productPlant#77584]
(548) Join
Arguments: LeftOuter, ((product#77571 <=> productPlant#77584.product.internalRefUUID) AND (plant#77572 <=> productPlant#77584.plant.internalRefUUID))
(549) Project
Arguments: [product#77571, plant#77572, orderDateTime#77573, productPlant#77584]
(550) SubqueryAlias
Arguments: wl
(551) LogicalRelation
Arguments: parquet, [systemId#77586, internalUUID#77587, id#77588, displayId#77589, name#77590, category#77591, companyCode#77592, address#77593, mainDistributionChain#77594, mainPurchasingOrganization#77595, validPurchasingOrganizations#77596, productGroup#77597], false
(552) Repartition
Arguments: 25, true
(553) Project
Arguments: [internalUUID#77587, address#77593.timeZone.code AS timezonecode#77599]
(554) Join
Arguments: LeftOuter, (plant#77572 <=> internalUUID#77587)
(555) Project
Arguments: [product#77571, plant#77572, orderDateTime#77573, productPlant#77584, internalUUID#77587, CASE WHEN isnotnull(timezonecode#77599) THEN timezonecode#77599 ELSE UTC END AS timezonecode#77600]
(556) Project
Arguments: [product#77571, plant#77572, orderDateTime#77573, productPlant#77584, timezonecode#77600]
(557) LogicalRelation
Arguments: parquet, [systemId#77601, internalUUID#77602, id#77603, displayId#77604, name#77605, baseUnitOfMeasure#77606, unitOfMeasures#77607, unitOfMeasureConversions#77608, productionAspect#77609, salesAspect#77610, procurementAspect#77611, productGroup#77612], false
(558) Repartition
Arguments: 25, true
(559) Join
Arguments: LeftOuter, (product#77571 = internalUUID#77602)
(560) Project
Arguments: [product#77571, plant#77572, orderDateTime#77573, productPlant#77584, timezonecode#77600, systemId#77601, internalUUID#77602, id#77603, displayId#77604, name#77605, baseUnitOfMeasure#77606, unitOfMeasures#77607, unitOfMeasureConversions#77608, productionAspect#77609, salesAspect#77610, procurementAspect#77611, productGroup#77612, filter(unitOfMeasureConversions#77608, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#77584.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#77584.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#77606.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#77606.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#77643]
(561) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77643.quantityNumerator), true, [quantityNumerator#77644]
(562) Project
Arguments: [product#77571, plant#77572, orderDateTime#77573, productPlant#77584, timezonecode#77600, systemId#77601, internalUUID#77602, id#77603, displayId#77604, name#77605, baseUnitOfMeasure#77606, unitOfMeasures#77607, unitOfMeasureConversions#77608, productionAspect#77609, salesAspect#77610, procurementAspect#77611, productGroup#77612, filteredUnitOfMeasureConversions#77643, quantityNumerator#77644]
(563) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77643.quantityDenominator), true, [quantityDenominator#77647]
(564) Project
Arguments: [product#77571, plant#77572, orderDateTime#77573, productPlant#77584, timezonecode#77600, systemId#77601, internalUUID#77602, id#77603, displayId#77604, name#77605, baseUnitOfMeasure#77606, unitOfMeasures#77607, unitOfMeasureConversions#77608, productionAspect#77609, salesAspect#77610, procurementAspect#77611, productGroup#77612, filteredUnitOfMeasureConversions#77643, quantityNumerator#77644, quantityDenominator#77647]
(565) Project
Arguments: [product#77571, plant#77572, orderDateTime#77573, productPlant#77584, timezonecode#77600, systemId#77601, internalUUID#77602, id#77603, displayId#77604, name#77605, baseUnitOfMeasure#77606, unitOfMeasures#77607, unitOfMeasureConversions#77608, productionAspect#77609, salesAspect#77610, procurementAspect#77611, productGroup#77612, filteredUnitOfMeasureConversions#77643, quantityNumerator#77644, quantityDenominator#77647, (cast(quantityNumerator#77644 as double) / cast(quantityDenominator#77647 as double)) AS outboundUnit#77656]
(566) Project
Arguments: [product#77571, plant#77572, orderDateTime#77573, productPlant#77584, timezonecode#77600, systemId#77601, internalUUID#77602, id#77603, displayId#77604, name#77605, baseUnitOfMeasure#77606, unitOfMeasures#77607, unitOfMeasureConversions#77608, productionAspect#77609, salesAspect#77610, procurementAspect#77611, productGroup#77612, filteredUnitOfMeasureConversions#77643, quantityNumerator#77644, quantityDenominator#77647, CASE WHEN (isnull(outboundUnit#77656) OR (outboundUnit#77656 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#77656 END AS outboundUnit#77665]
(567) Project
Arguments: [product#77571, plant#77572, orderDateTime#77573, productPlant#77584, timezonecode#77600, outboundUnit#77665]
(568) Project
Arguments: [plant#77572]
(569) Deduplicate
Arguments: [plant#77572]
(570) Join
Arguments: Inner, (plantUuid#77568 = plant#77572)
(571) Project
Arguments: [plantId#77567, plantUuid#77568, storageLocId#77569, storageLocUuid#77570]
(572) Join
Arguments: Inner, (plant#77538.internalRefUUID <=> plantUuid#77568)
(573) Generate
Arguments: explode(filter(stockQuantities#77540, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#77570) AND (lambda x#69270.storageLocation.Id = storageLocId#77569)), lambda x#69270, false))), false, [stockQuantity#77680]
(574) Project
Arguments: [systemId#77535, internalUUID#77536, product#77537, plant#77538, calculationDateTime#77539, stockQuantities#77540, plantId#77567, plantUuid#77568, storageLocId#77569, storageLocUuid#77570, stockQuantity#77680]
(575) Aggregate
Arguments: [plantUuid#77568, internalUUID#77536, plant#77538, product#77537, systemId#77535], [plantUuid#77568, internalUUID#77536, plant#77538, product#77537, systemId#77535, first(calculationDateTime#77539, false) AS calculationDateTime#77694, collect_list(stockQuantity#77680, 0, 0) AS stockQuantities#77695]
(576) Project
Arguments: [systemId#77535, internalUUID#77536, product#77537, plant#77538, calculationDateTime#77694, stockQuantities#77695]
(577) Generate
Arguments: explode(stockQuantities#77695), false, [stockQuantity#77696]
(578) Project
Arguments: [systemId#77535, internalUUID#77536, product#77537, plant#77538, calculationDateTime#77694, stockQuantities#77695, stockQuantity#77696]
(579) Project
Arguments: [plant#77538.id AS plant#77698, plant#77538.internalRefUUID AS plantUuid#77699, product#77537.id AS product#77700, product#77537.internalRefUUID AS productUuid#77701, calculationDateTime#77694, stockQuantity#77696.storagelocation.id AS storageLocId#77702, stockQuantity#77696.storagelocation.internalRefUUID AS storageLocUuid#77703, stockQuantity#77696.quantity.measure AS quantity#77704, stockQuantity#77696.specialStockIndicator.code AS specialStockIndicator#77705, stockQuantity#77696.stockType.code AS stockType#77706]
(580) Filter
Arguments: ((specialStockIndicator#77705 = ) AND (stockType#77706 = 01))
(581) LogicalRelation
Arguments: parquet, [product#77708, plant#77709, orderDateTime#77710, planningStartDateTime#77711], false
(582) RepartitionByExpression
Arguments: [product#77708, plant#77709], 25
(583) Project
Arguments: [product#77708, plant#77709, orderDateTime#77710]
(584) LogicalRelation
Arguments: parquet, [systemId#77712, internalUUID#77713, plant#77714, product#77715, blockedForReplenishmentStartingFrom#77716, productionAspect#77717, salesPlant#77718, listing#77719], false
(585) Repartition
Arguments: 25, true
(586) Project
Arguments: [systemId#77712, internalUUID#77713, plant#77714, product#77715, blockedForReplenishmentStartingFrom#77716, productionAspect#77717, salesPlant#77718, listing#77719, struct(systemId, systemId#77712, internalUUID, internalUUID#77713, plant, plant#77714, product, product#77715, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#77716, productionAspect, productionAspect#77717, salesPlant, salesPlant#77718, listing, listing#77719) AS productPlant#77721]
(587) Project
Arguments: [productPlant#77721]
(588) Join
Arguments: LeftOuter, ((product#77708 <=> productPlant#77721.product.internalRefUUID) AND (plant#77709 <=> productPlant#77721.plant.internalRefUUID))
(589) Project
Arguments: [product#77708, plant#77709, orderDateTime#77710, productPlant#77721]
(590) SubqueryAlias
Arguments: wl
(591) LogicalRelation
Arguments: parquet, [systemId#77723, internalUUID#77724, id#77725, displayId#77726, name#77727, category#77728, companyCode#77729, address#77730, mainDistributionChain#77731, mainPurchasingOrganization#77732, validPurchasingOrganizations#77733, productGroup#77734], false
(592) Repartition
Arguments: 25, true
(593) Project
Arguments: [internalUUID#77724, address#77730.timeZone.code AS timezonecode#77735]
(594) Join
Arguments: LeftOuter, (plant#77709 <=> internalUUID#77724)
(595) Project
Arguments: [product#77708, plant#77709, orderDateTime#77710, productPlant#77721, internalUUID#77724, CASE WHEN isnotnull(timezonecode#77735) THEN timezonecode#77735 ELSE UTC END AS timezonecode#77737]
(596) Project
Arguments: [product#77708, plant#77709, orderDateTime#77710, productPlant#77721, timezonecode#77737]
(597) LogicalRelation
Arguments: parquet, [systemId#77738, internalUUID#77739, id#77740, displayId#77741, name#77742, baseUnitOfMeasure#77743, unitOfMeasures#77744, unitOfMeasureConversions#77745, productionAspect#77746, salesAspect#77747, procurementAspect#77748, productGroup#77749], false
(598) Repartition
Arguments: 25, true
(599) Join
Arguments: LeftOuter, (product#77708 = internalUUID#77739)
(600) Project
Arguments: [product#77708, plant#77709, orderDateTime#77710, productPlant#77721, timezonecode#77737, systemId#77738, internalUUID#77739, id#77740, displayId#77741, name#77742, baseUnitOfMeasure#77743, unitOfMeasures#77744, unitOfMeasureConversions#77745, productionAspect#77746, salesAspect#77747, procurementAspect#77748, productGroup#77749, filter(unitOfMeasureConversions#77745, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#77721.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#77721.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#77743.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#77743.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#77750]
(601) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77750.quantityNumerator), true, [quantityNumerator#77751]
(602) Project
Arguments: [product#77708, plant#77709, orderDateTime#77710, productPlant#77721, timezonecode#77737, systemId#77738, internalUUID#77739, id#77740, displayId#77741, name#77742, baseUnitOfMeasure#77743, unitOfMeasures#77744, unitOfMeasureConversions#77745, productionAspect#77746, salesAspect#77747, procurementAspect#77748, productGroup#77749, filteredUnitOfMeasureConversions#77750, quantityNumerator#77751]
(603) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77750.quantityDenominator), true, [quantityDenominator#77753]
(604) Project
Arguments: [product#77708, plant#77709, orderDateTime#77710, productPlant#77721, timezonecode#77737, systemId#77738, internalUUID#77739, id#77740, displayId#77741, name#77742, baseUnitOfMeasure#77743, unitOfMeasures#77744, unitOfMeasureConversions#77745, productionAspect#77746, salesAspect#77747, procurementAspect#77748, productGroup#77749, filteredUnitOfMeasureConversions#77750, quantityNumerator#77751, quantityDenominator#77753]
(605) Project
Arguments: [product#77708, plant#77709, orderDateTime#77710, productPlant#77721, timezonecode#77737, systemId#77738, internalUUID#77739, id#77740, displayId#77741, name#77742, baseUnitOfMeasure#77743, unitOfMeasures#77744, unitOfMeasureConversions#77745, productionAspect#77746, salesAspect#77747, procurementAspect#77748, productGroup#77749, filteredUnitOfMeasureConversions#77750, quantityNumerator#77751, quantityDenominator#77753, (cast(quantityNumerator#77751 as double) / cast(quantityDenominator#77753 as double)) AS outboundUnit#77756]
(606) Project
Arguments: [product#77708, plant#77709, orderDateTime#77710, productPlant#77721, timezonecode#77737, systemId#77738, internalUUID#77739, id#77740, displayId#77741, name#77742, baseUnitOfMeasure#77743, unitOfMeasures#77744, unitOfMeasureConversions#77745, productionAspect#77746, salesAspect#77747, procurementAspect#77748, productGroup#77749, filteredUnitOfMeasureConversions#77750, quantityNumerator#77751, quantityDenominator#77753, CASE WHEN (isnull(outboundUnit#77756) OR (outboundUnit#77756 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#77756 END AS outboundUnit#77758]
(607) Project
Arguments: [product#77708, plant#77709, orderDateTime#77710, productPlant#77721, timezonecode#77737, outboundUnit#77758]
(608) Join
Arguments: Inner, ((plantUuid#77699 = plant#77709) AND (productUuid#77701 = product#77708))
(609) Filter
Arguments: (calculationDateTime#77694 <= orderDateTime#77710)
(610) Project
Arguments: [plantUuid#77699 AS plant#77772, productUuid#77701 AS product#77773, storageLocId#77702, calculationDateTime#77694, quantity#77704]
(611) Aggregate
Arguments: [plant#77772, product#77773, storageLocId#77702], [plant#77772, product#77773, storageLocId#77702, max(calculationDateTime#77694) AS max_calc_datetime#77782]
(612) Join
Arguments: Inner, ((((plant#77533 <=> plant#77772) AND (product#77534 <=> product#77773)) AND (storageLocId#77433 <=> storageLocId#77702)) AND (calculationDateTime#77426 <=> max_calc_datetime#77782))
(613) Project
Arguments: [plant#77533, product#77534, storageLocId#77433, calculationDateTime#77426, quantity#77435]
(614) Aggregate
Arguments: [product#77534, plant#77533], [product#77534, plant#77533, sum(quantity#77435) AS quantitySum#77796, min(calculationDateTime#77426) AS minCalculationDateTime#77797]
(615) Project
Arguments: [product#77534, plant#77533, quantitySum#77796, minCalculationDateTime#77797, round(quantitySum#77796, 0) AS roundedQuantitySum#77799]
(616) Join
Arguments: LeftOuter, ((plant#77194 = plant#77533) AND (product#77193 = product#77534))
(617) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, outboundUnit#77296, roundedQuantitySum#77799, minCalculationDateTime#77797]
(618) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, outboundUnit#77296, roundedQuantitySum#77799, minCalculationDateTime#77797, CASE WHEN isnotnull(minCalculationDateTime#77797) THEN minCalculationDateTime#77797 ELSE orderDateTime#77195 END AS stockDatetime#77813]
(619) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, outboundUnit#77296, roundedQuantitySum#77799, minCalculationDateTime#77797, stockDatetime#77813, CASE WHEN isnotnull(roundedQuantitySum#77799) THEN array(roundedQuantitySum#77799) ELSE array(0.0) END AS stockBatchQuantities#77814]
(620) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, outboundUnit#77296, roundedQuantitySum#77799, minCalculationDateTime#77797, stockDatetime#77813, stockBatchQuantities#77814, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#77815]
(621) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, outboundUnit#77296, roundedQuantitySum#77799, stockDatetime#77813, stockBatchQuantities#77814, stockBatchShelfLifeEndDatetimes#77815]
(622) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, outboundUnit#77296, stockDatetime#77813, stockBatchQuantities#77814, stockBatchShelfLifeEndDatetimes#77815]
(623) LogicalRelation
Arguments: parquet, [product#77818, plant#77819, orderDateTime#77820, planningStartDateTime#77821], false
(624) RepartitionByExpression
Arguments: [product#77818, plant#77819], 25
(625) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820]
(626) LogicalRelation
Arguments: parquet, [systemId#77823, internalUUID#77824, plant#77825, product#77826, blockedForReplenishmentStartingFrom#77827, productionAspect#77828, salesPlant#77829, listing#77830], false
(627) Repartition
Arguments: 25, true
(628) Project
Arguments: [systemId#77823, internalUUID#77824, plant#77825, product#77826, blockedForReplenishmentStartingFrom#77827, productionAspect#77828, salesPlant#77829, listing#77830, struct(systemId, systemId#77823, internalUUID, internalUUID#77824, plant, plant#77825, product, product#77826, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#77827, productionAspect, productionAspect#77828, salesPlant, salesPlant#77829, listing, listing#77830) AS productPlant#77831]
(629) Project
Arguments: [productPlant#77831]
(630) Join
Arguments: LeftOuter, ((product#77818 <=> productPlant#77831.product.internalRefUUID) AND (plant#77819 <=> productPlant#77831.plant.internalRefUUID))
(631) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831]
(632) SubqueryAlias
Arguments: wl
(633) LogicalRelation
Arguments: parquet, [systemId#77834, internalUUID#77835, id#77836, displayId#77837, name#77838, category#77839, companyCode#77840, address#77841, mainDistributionChain#77842, mainPurchasingOrganization#77843, validPurchasingOrganizations#77844, productGroup#77845], false
(634) Repartition
Arguments: 25, true
(635) Project
Arguments: [internalUUID#77835, address#77841.timeZone.code AS timezonecode#77846]
(636) Join
Arguments: LeftOuter, (plant#77819 <=> internalUUID#77835)
(637) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, internalUUID#77835, CASE WHEN isnotnull(timezonecode#77846) THEN timezonecode#77846 ELSE UTC END AS timezonecode#77847]
(638) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847]
(639) LogicalRelation
Arguments: parquet, [systemId#77850, internalUUID#77851, id#77852, displayId#77853, name#77854, baseUnitOfMeasure#77855, unitOfMeasures#77856, unitOfMeasureConversions#77857, productionAspect#77858, salesAspect#77859, procurementAspect#77860, productGroup#77861], false
(640) Repartition
Arguments: 25, true
(641) Join
Arguments: LeftOuter, (product#77818 = internalUUID#77851)
(642) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, systemId#77850, internalUUID#77851, id#77852, displayId#77853, name#77854, baseUnitOfMeasure#77855, unitOfMeasures#77856, unitOfMeasureConversions#77857, productionAspect#77858, salesAspect#77859, procurementAspect#77860, productGroup#77861, filter(unitOfMeasureConversions#77857, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#77831.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#77831.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#77855.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#77855.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#77863]
(643) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77863.quantityNumerator), true, [quantityNumerator#77866]
(644) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, systemId#77850, internalUUID#77851, id#77852, displayId#77853, name#77854, baseUnitOfMeasure#77855, unitOfMeasures#77856, unitOfMeasureConversions#77857, productionAspect#77858, salesAspect#77859, procurementAspect#77860, productGroup#77861, filteredUnitOfMeasureConversions#77863, quantityNumerator#77866]
(645) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77863.quantityDenominator), true, [quantityDenominator#77868]
(646) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, systemId#77850, internalUUID#77851, id#77852, displayId#77853, name#77854, baseUnitOfMeasure#77855, unitOfMeasures#77856, unitOfMeasureConversions#77857, productionAspect#77858, salesAspect#77859, procurementAspect#77860, productGroup#77861, filteredUnitOfMeasureConversions#77863, quantityNumerator#77866, quantityDenominator#77868]
(647) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, systemId#77850, internalUUID#77851, id#77852, displayId#77853, name#77854, baseUnitOfMeasure#77855, unitOfMeasures#77856, unitOfMeasureConversions#77857, productionAspect#77858, salesAspect#77859, procurementAspect#77860, productGroup#77861, filteredUnitOfMeasureConversions#77863, quantityNumerator#77866, quantityDenominator#77868, (cast(quantityNumerator#77866 as double) / cast(quantityDenominator#77868 as double)) AS outboundUnit#77870]
(648) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, systemId#77850, internalUUID#77851, id#77852, displayId#77853, name#77854, baseUnitOfMeasure#77855, unitOfMeasures#77856, unitOfMeasureConversions#77857, productionAspect#77858, salesAspect#77859, procurementAspect#77860, productGroup#77861, filteredUnitOfMeasureConversions#77863, quantityNumerator#77866, quantityDenominator#77868, CASE WHEN (isnull(outboundUnit#77870) OR (outboundUnit#77870 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#77870 END AS outboundUnit#77873]
(649) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, outboundUnit#77873]
(650) LogicalRelation
Arguments: parquet, [systemId#77878, internalUUID#77879, product#77880, plant#77881, calculationDateTime#77882, stockQuantities#77883], false
(651) Repartition
Arguments: 25, true
(652) LogicalRelation
Arguments: parquet, [marketUnit#77892, description#77893, articleHierarchy#77894, defaultCurrency#77895, responsibilities#77896, replenishmentTypes#77897, distributionCenters#77898, assignedArticleHierarchyNodes#77899, minOrderQtySetting#77900, listingCheck#77901, odsSelection#77902, demandProfiles#77903, constraintProfiles#77904, optimizationProfiles#77905, orderGroupSplitProfiles#77906, supplierMinimumProfiles#77907, multipleRestrictionProfiles#77908, preferredUomSource#77909, handlingOfUnfulfilledDemands#77910, negligibleQuantitiesThreshold#77911, eventtype#77912, minOrderQtySettingInternal#77913], false
(653) Repartition
Arguments: 25, true
(654) Filter
Arguments: (marketUnit#77892 <=> Daily_grocery)
(655) Project
Arguments: [marketUnit#77892, description#77893, articleHierarchy#77894, defaultCurrency#77895, responsibilities#77896, replenishmentTypes#77897, distributionCenters#77898, assignedArticleHierarchyNodes#77899, minOrderQtySetting#77900, listingCheck#77901, odsSelection#77902, demandProfiles#77903, constraintProfiles#77904, optimizationProfiles#77905, orderGroupSplitProfiles#77906, supplierMinimumProfiles#77907, multipleRestrictionProfiles#77908, preferredUomSource#77909, handlingOfUnfulfilledDemands#77910, negligibleQuantitiesThreshold#77911, eventtype#77912, minOrderQtySettingInternal#77913]
(656) Project
Arguments: [distributionCenters#77898]
(657) Generate
Arguments: explode(distributionCenters#77898), false, [distributionCenters#77915]
(658) Project
Arguments: [distributionCenters#77915]
(659) Generate
Arguments: explode(distributionCenters#77915.storageLocations), false, [storageLocations#77928]
(660) Project
Arguments: [distributionCenters#77915.id AS plantId#77930, distributionCenters#77915.internalRefUUID AS plantUuid#77931, storageLocations#77928]
(661) Project
Arguments: [plantId#77930, plantUuid#77931, storageLocations#77928.id AS storageLocId#77932, storageLocations#77928.internalRefUUID AS storageLocUuid#77933]
(662) LogicalRelation
Arguments: parquet, [product#77934, plant#77935, orderDateTime#77936, planningStartDateTime#77937], false
(663) RepartitionByExpression
Arguments: [product#77934, plant#77935], 25
(664) Project
Arguments: [product#77934, plant#77935, orderDateTime#77936]
(665) LogicalRelation
Arguments: parquet, [systemId#77939, internalUUID#77940, plant#77941, product#77942, blockedForReplenishmentStartingFrom#77943, productionAspect#77944, salesPlant#77945, listing#77946], false
(666) Repartition
Arguments: 25, true
(667) Project
Arguments: [systemId#77939, internalUUID#77940, plant#77941, product#77942, blockedForReplenishmentStartingFrom#77943, productionAspect#77944, salesPlant#77945, listing#77946, struct(systemId, systemId#77939, internalUUID, internalUUID#77940, plant, plant#77941, product, product#77942, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#77943, productionAspect, productionAspect#77944, salesPlant, salesPlant#77945, listing, listing#77946) AS productPlant#77959]
(668) Project
Arguments: [productPlant#77959]
(669) Join
Arguments: LeftOuter, ((product#77934 <=> productPlant#77959.product.internalRefUUID) AND (plant#77935 <=> productPlant#77959.plant.internalRefUUID))
(670) Project
Arguments: [product#77934, plant#77935, orderDateTime#77936, productPlant#77959]
(671) SubqueryAlias
Arguments: wl
(672) LogicalRelation
Arguments: parquet, [systemId#77960, internalUUID#77961, id#77962, displayId#77963, name#77964, category#77965, companyCode#77966, address#77967, mainDistributionChain#77968, mainPurchasingOrganization#77969, validPurchasingOrganizations#77970, productGroup#77971], false
(673) Repartition
Arguments: 25, true
(674) Project
Arguments: [internalUUID#77961, address#77967.timeZone.code AS timezonecode#77973]
(675) Join
Arguments: LeftOuter, (plant#77935 <=> internalUUID#77961)
(676) Project
Arguments: [product#77934, plant#77935, orderDateTime#77936, productPlant#77959, internalUUID#77961, CASE WHEN isnotnull(timezonecode#77973) THEN timezonecode#77973 ELSE UTC END AS timezonecode#77976]
(677) Project
Arguments: [product#77934, plant#77935, orderDateTime#77936, productPlant#77959, timezonecode#77976]
(678) LogicalRelation
Arguments: parquet, [systemId#77977, internalUUID#77978, id#77979, displayId#77980, name#77981, baseUnitOfMeasure#77982, unitOfMeasures#77983, unitOfMeasureConversions#77984, productionAspect#77985, salesAspect#77986, procurementAspect#77987, productGroup#77988], false
(679) Repartition
Arguments: 25, true
(680) Join
Arguments: LeftOuter, (product#77934 = internalUUID#77978)
(681) Project
Arguments: [product#77934, plant#77935, orderDateTime#77936, productPlant#77959, timezonecode#77976, systemId#77977, internalUUID#77978, id#77979, displayId#77980, name#77981, baseUnitOfMeasure#77982, unitOfMeasures#77983, unitOfMeasureConversions#77984, productionAspect#77985, salesAspect#77986, procurementAspect#77987, productGroup#77988, filter(unitOfMeasureConversions#77984, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#77959.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#77959.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#77982.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#77982.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#77991]
(682) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77991.quantityNumerator), true, [quantityNumerator#77998]
(683) Project
Arguments: [product#77934, plant#77935, orderDateTime#77936, productPlant#77959, timezonecode#77976, systemId#77977, internalUUID#77978, id#77979, displayId#77980, name#77981, baseUnitOfMeasure#77982, unitOfMeasures#77983, unitOfMeasureConversions#77984, productionAspect#77985, salesAspect#77986, procurementAspect#77987, productGroup#77988, filteredUnitOfMeasureConversions#77991, quantityNumerator#77998]
(684) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77991.quantityDenominator), true, [quantityDenominator#78021]
(685) Project
Arguments: [product#77934, plant#77935, orderDateTime#77936, productPlant#77959, timezonecode#77976, systemId#77977, internalUUID#77978, id#77979, displayId#77980, name#77981, baseUnitOfMeasure#77982, unitOfMeasures#77983, unitOfMeasureConversions#77984, productionAspect#77985, salesAspect#77986, procurementAspect#77987, productGroup#77988, filteredUnitOfMeasureConversions#77991, quantityNumerator#77998, quantityDenominator#78021]
(686) Project
Arguments: [product#77934, plant#77935, orderDateTime#77936, productPlant#77959, timezonecode#77976, systemId#77977, internalUUID#77978, id#77979, displayId#77980, name#77981, baseUnitOfMeasure#77982, unitOfMeasures#77983, unitOfMeasureConversions#77984, productionAspect#77985, salesAspect#77986, procurementAspect#77987, productGroup#77988, filteredUnitOfMeasureConversions#77991, quantityNumerator#77998, quantityDenominator#78021, (cast(quantityNumerator#77998 as double) / cast(quantityDenominator#78021 as double)) AS outboundUnit#78022]
(687) Project
Arguments: [product#77934, plant#77935, orderDateTime#77936, productPlant#77959, timezonecode#77976, systemId#77977, internalUUID#77978, id#77979, displayId#77980, name#77981, baseUnitOfMeasure#77982, unitOfMeasures#77983, unitOfMeasureConversions#77984, productionAspect#77985, salesAspect#77986, procurementAspect#77987, productGroup#77988, filteredUnitOfMeasureConversions#77991, quantityNumerator#77998, quantityDenominator#78021, CASE WHEN (isnull(outboundUnit#78022) OR (outboundUnit#78022 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#78022 END AS outboundUnit#78025]
(688) Project
Arguments: [product#77934, plant#77935, orderDateTime#77936, productPlant#77959, timezonecode#77976, outboundUnit#78025]
(689) Project
Arguments: [plant#77935]
(690) Deduplicate
Arguments: [plant#77935]
(691) Join
Arguments: Inner, (plantUuid#77931 = plant#77935)
(692) Project
Arguments: [plantId#77930, plantUuid#77931, storageLocId#77932, storageLocUuid#77933]
(693) Join
Arguments: Inner, (plant#77881.internalRefUUID <=> plantUuid#77931)
(694) Generate
Arguments: explode(filter(stockQuantities#77883, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#77933) AND (lambda x#69270.storageLocation.Id = storageLocId#77932)), lambda x#69270, false))), false, [stockQuantity#78043]
(695) Project
Arguments: [systemId#77878, internalUUID#77879, product#77880, plant#77881, calculationDateTime#77882, stockQuantities#77883, plantId#77930, plantUuid#77931, storageLocId#77932, storageLocUuid#77933, stockQuantity#78043]
(696) Aggregate
Arguments: [plantUuid#77931, internalUUID#77879, plant#77881, product#77880, systemId#77878], [plantUuid#77931, internalUUID#77879, plant#77881, product#77880, systemId#77878, first(calculationDateTime#77882, false) AS calculationDateTime#78056, collect_list(stockQuantity#78043, 0, 0) AS stockQuantities#78057]
(697) Project
Arguments: [systemId#77878, internalUUID#77879, product#77880, plant#77881, calculationDateTime#78056, stockQuantities#78057]
(698) Generate
Arguments: explode(stockQuantities#78057), false, [stockQuantity#78059]
(699) Project
Arguments: [systemId#77878, internalUUID#77879, product#77880, plant#77881, calculationDateTime#78056, stockQuantities#78057, stockQuantity#78059]
(700) Project
Arguments: [plant#77881.id AS plant#78061, plant#77881.internalRefUUID AS plantUuid#78062, product#77880.id AS product#78063, product#77880.internalRefUUID AS productUuid#78064, calculationDateTime#78056, stockQuantity#78059.storagelocation.id AS storageLocId#78069, stockQuantity#78059.storagelocation.internalRefUUID AS storageLocUuid#78072, stockQuantity#78059.quantity.measure AS quantity#78075, stockQuantity#78059.specialStockIndicator.code AS specialStockIndicator#78077, stockQuantity#78059.stockType.code AS stockType#78079]
(701) Filter
Arguments: ((specialStockIndicator#78077 = ) AND (stockType#78079 = 01))
(702) LogicalRelation
Arguments: parquet, [product#78084, plant#78085, orderDateTime#78086, planningStartDateTime#78087], false
(703) RepartitionByExpression
Arguments: [product#78084, plant#78085], 25
(704) Project
Arguments: [product#78084, plant#78085, orderDateTime#78086]
(705) LogicalRelation
Arguments: parquet, [systemId#78089, internalUUID#78090, plant#78091, product#78092, blockedForReplenishmentStartingFrom#78093, productionAspect#78094, salesPlant#78095, listing#78096], false
(706) Repartition
Arguments: 25, true
(707) Project
Arguments: [systemId#78089, internalUUID#78090, plant#78091, product#78092, blockedForReplenishmentStartingFrom#78093, productionAspect#78094, salesPlant#78095, listing#78096, struct(systemId, systemId#78089, internalUUID, internalUUID#78090, plant, plant#78091, product, product#78092, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#78093, productionAspect, productionAspect#78094, salesPlant, salesPlant#78095, listing, listing#78096) AS productPlant#78097]
(708) Project
Arguments: [productPlant#78097]
(709) Join
Arguments: LeftOuter, ((product#78084 <=> productPlant#78097.product.internalRefUUID) AND (plant#78085 <=> productPlant#78097.plant.internalRefUUID))
(710) Project
Arguments: [product#78084, plant#78085, orderDateTime#78086, productPlant#78097]
(711) SubqueryAlias
Arguments: wl
(712) LogicalRelation
Arguments: parquet, [systemId#78099, internalUUID#78100, id#78101, displayId#78102, name#78103, category#78104, companyCode#78105, address#78106, mainDistributionChain#78107, mainPurchasingOrganization#78108, validPurchasingOrganizations#78109, productGroup#78110], false
(713) Repartition
Arguments: 25, true
(714) Project
Arguments: [internalUUID#78100, address#78106.timeZone.code AS timezonecode#78111]
(715) Join
Arguments: LeftOuter, (plant#78085 <=> internalUUID#78100)
(716) Project
Arguments: [product#78084, plant#78085, orderDateTime#78086, productPlant#78097, internalUUID#78100, CASE WHEN isnotnull(timezonecode#78111) THEN timezonecode#78111 ELSE UTC END AS timezonecode#78113]
(717) Project
Arguments: [product#78084, plant#78085, orderDateTime#78086, productPlant#78097, timezonecode#78113]
(718) LogicalRelation
Arguments: parquet, [systemId#78114, internalUUID#78115, id#78116, displayId#78117, name#78118, baseUnitOfMeasure#78119, unitOfMeasures#78120, unitOfMeasureConversions#78121, productionAspect#78122, salesAspect#78123, procurementAspect#78124, productGroup#78125], false
(719) Repartition
Arguments: 25, true
(720) Join
Arguments: LeftOuter, (product#78084 = internalUUID#78115)
(721) Project
Arguments: [product#78084, plant#78085, orderDateTime#78086, productPlant#78097, timezonecode#78113, systemId#78114, internalUUID#78115, id#78116, displayId#78117, name#78118, baseUnitOfMeasure#78119, unitOfMeasures#78120, unitOfMeasureConversions#78121, productionAspect#78122, salesAspect#78123, procurementAspect#78124, productGroup#78125, filter(unitOfMeasureConversions#78121, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#78097.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#78097.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#78119.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#78119.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#78127]
(722) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78127.quantityNumerator), true, [quantityNumerator#78128]
(723) Project
Arguments: [product#78084, plant#78085, orderDateTime#78086, productPlant#78097, timezonecode#78113, systemId#78114, internalUUID#78115, id#78116, displayId#78117, name#78118, baseUnitOfMeasure#78119, unitOfMeasures#78120, unitOfMeasureConversions#78121, productionAspect#78122, salesAspect#78123, procurementAspect#78124, productGroup#78125, filteredUnitOfMeasureConversions#78127, quantityNumerator#78128]
(724) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78127.quantityDenominator), true, [quantityDenominator#78131]
(725) Project
Arguments: [product#78084, plant#78085, orderDateTime#78086, productPlant#78097, timezonecode#78113, systemId#78114, internalUUID#78115, id#78116, displayId#78117, name#78118, baseUnitOfMeasure#78119, unitOfMeasures#78120, unitOfMeasureConversions#78121, productionAspect#78122, salesAspect#78123, procurementAspect#78124, productGroup#78125, filteredUnitOfMeasureConversions#78127, quantityNumerator#78128, quantityDenominator#78131]
(726) Project
Arguments: [product#78084, plant#78085, orderDateTime#78086, productPlant#78097, timezonecode#78113, systemId#78114, internalUUID#78115, id#78116, displayId#78117, name#78118, baseUnitOfMeasure#78119, unitOfMeasures#78120, unitOfMeasureConversions#78121, productionAspect#78122, salesAspect#78123, procurementAspect#78124, productGroup#78125, filteredUnitOfMeasureConversions#78127, quantityNumerator#78128, quantityDenominator#78131, (cast(quantityNumerator#78128 as double) / cast(quantityDenominator#78131 as double)) AS outboundUnit#78133]
(727) Project
Arguments: [product#78084, plant#78085, orderDateTime#78086, productPlant#78097, timezonecode#78113, systemId#78114, internalUUID#78115, id#78116, displayId#78117, name#78118, baseUnitOfMeasure#78119, unitOfMeasures#78120, unitOfMeasureConversions#78121, productionAspect#78122, salesAspect#78123, procurementAspect#78124, productGroup#78125, filteredUnitOfMeasureConversions#78127, quantityNumerator#78128, quantityDenominator#78131, CASE WHEN (isnull(outboundUnit#78133) OR (outboundUnit#78133 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#78133 END AS outboundUnit#78143]
(728) Project
Arguments: [product#78084, plant#78085, orderDateTime#78086, productPlant#78097, timezonecode#78113, outboundUnit#78143]
(729) Join
Arguments: Inner, ((plantUuid#78062 = plant#78085) AND (productUuid#78064 = product#78084))
(730) Filter
Arguments: (calculationDateTime#78056 <= orderDateTime#78086)
(731) Project
Arguments: [plantUuid#78062 AS plant#78157, productUuid#78064 AS product#78158, storageLocId#78069, calculationDateTime#78056, quantity#78075]
(732) LogicalRelation
Arguments: parquet, [systemId#78159, internalUUID#78160, product#78161, plant#78162, calculationDateTime#78163, stockQuantities#78164], false
(733) Repartition
Arguments: 25, true
(734) LogicalRelation
Arguments: parquet, [marketUnit#78165, description#78166, articleHierarchy#78167, defaultCurrency#78168, responsibilities#78169, replenishmentTypes#78170, distributionCenters#78171, assignedArticleHierarchyNodes#78172, minOrderQtySetting#78173, listingCheck#78174, odsSelection#78175, demandProfiles#78176, constraintProfiles#78177, optimizationProfiles#78178, orderGroupSplitProfiles#78179, supplierMinimumProfiles#78180, multipleRestrictionProfiles#78181, preferredUomSource#78182, handlingOfUnfulfilledDemands#78183, negligibleQuantitiesThreshold#78184, eventtype#78185, minOrderQtySettingInternal#78186], false
(735) Repartition
Arguments: 25, true
(736) Filter
Arguments: (marketUnit#78165 <=> Daily_grocery)
(737) Project
Arguments: [marketUnit#78165, description#78166, articleHierarchy#78167, defaultCurrency#78168, responsibilities#78169, replenishmentTypes#78170, distributionCenters#78171, assignedArticleHierarchyNodes#78172, minOrderQtySetting#78173, listingCheck#78174, odsSelection#78175, demandProfiles#78176, constraintProfiles#78177, optimizationProfiles#78178, orderGroupSplitProfiles#78179, supplierMinimumProfiles#78180, multipleRestrictionProfiles#78181, preferredUomSource#78182, handlingOfUnfulfilledDemands#78183, negligibleQuantitiesThreshold#78184, eventtype#78185, minOrderQtySettingInternal#78186]
(738) Project
Arguments: [distributionCenters#78171]
(739) Generate
Arguments: explode(distributionCenters#78171), false, [distributionCenters#78200]
(740) Project
Arguments: [distributionCenters#78200]
(741) Generate
Arguments: explode(distributionCenters#78200.storageLocations), false, [storageLocations#78201]
(742) Project
Arguments: [distributionCenters#78200.id AS plantId#78202, distributionCenters#78200.internalRefUUID AS plantUuid#78203, storageLocations#78201]
(743) Project
Arguments: [plantId#78202, plantUuid#78203, storageLocations#78201.id AS storageLocId#78205, storageLocations#78201.internalRefUUID AS storageLocUuid#78206]
(744) LogicalRelation
Arguments: parquet, [product#78207, plant#78208, orderDateTime#78209, planningStartDateTime#78210], false
(745) RepartitionByExpression
Arguments: [product#78207, plant#78208], 25
(746) Project
Arguments: [product#78207, plant#78208, orderDateTime#78209]
(747) LogicalRelation
Arguments: parquet, [systemId#78223, internalUUID#78224, plant#78225, product#78226, blockedForReplenishmentStartingFrom#78227, productionAspect#78228, salesPlant#78229, listing#78230], false
(748) Repartition
Arguments: 25, true
(749) Project
Arguments: [systemId#78223, internalUUID#78224, plant#78225, product#78226, blockedForReplenishmentStartingFrom#78227, productionAspect#78228, salesPlant#78229, listing#78230, struct(systemId, systemId#78223, internalUUID, internalUUID#78224, plant, plant#78225, product, product#78226, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#78227, productionAspect, productionAspect#78228, salesPlant, salesPlant#78229, listing, listing#78230) AS productPlant#78231]
(750) Project
Arguments: [productPlant#78231]
(751) Join
Arguments: LeftOuter, ((product#78207 <=> productPlant#78231.product.internalRefUUID) AND (plant#78208 <=> productPlant#78231.plant.internalRefUUID))
(752) Project
Arguments: [product#78207, plant#78208, orderDateTime#78209, productPlant#78231]
(753) SubqueryAlias
Arguments: wl
(754) LogicalRelation
Arguments: parquet, [systemId#78233, internalUUID#78234, id#78235, displayId#78236, name#78237, category#78238, companyCode#78239, address#78240, mainDistributionChain#78241, mainPurchasingOrganization#78242, validPurchasingOrganizations#78243, productGroup#78244], false
(755) Repartition
Arguments: 25, true
(756) Project
Arguments: [internalUUID#78234, address#78240.timeZone.code AS timezonecode#78246]
(757) Join
Arguments: LeftOuter, (plant#78208 <=> internalUUID#78234)
(758) Project
Arguments: [product#78207, plant#78208, orderDateTime#78209, productPlant#78231, internalUUID#78234, CASE WHEN isnotnull(timezonecode#78246) THEN timezonecode#78246 ELSE UTC END AS timezonecode#78248]
(759) Project
Arguments: [product#78207, plant#78208, orderDateTime#78209, productPlant#78231, timezonecode#78248]
(760) LogicalRelation
Arguments: parquet, [systemId#78249, internalUUID#78250, id#78251, displayId#78252, name#78253, baseUnitOfMeasure#78254, unitOfMeasures#78255, unitOfMeasureConversions#78256, productionAspect#78257, salesAspect#78258, procurementAspect#78259, productGroup#78260], false
(761) Repartition
Arguments: 25, true
(762) Join
Arguments: LeftOuter, (product#78207 = internalUUID#78250)
(763) Project
Arguments: [product#78207, plant#78208, orderDateTime#78209, productPlant#78231, timezonecode#78248, systemId#78249, internalUUID#78250, id#78251, displayId#78252, name#78253, baseUnitOfMeasure#78254, unitOfMeasures#78255, unitOfMeasureConversions#78256, productionAspect#78257, salesAspect#78258, procurementAspect#78259, productGroup#78260, filter(unitOfMeasureConversions#78256, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#78231.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#78231.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#78254.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#78254.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#78263]
(764) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78263.quantityNumerator), true, [quantityNumerator#78264]
(765) Project
Arguments: [product#78207, plant#78208, orderDateTime#78209, productPlant#78231, timezonecode#78248, systemId#78249, internalUUID#78250, id#78251, displayId#78252, name#78253, baseUnitOfMeasure#78254, unitOfMeasures#78255, unitOfMeasureConversions#78256, productionAspect#78257, salesAspect#78258, procurementAspect#78259, productGroup#78260, filteredUnitOfMeasureConversions#78263, quantityNumerator#78264]
(766) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78263.quantityDenominator), true, [quantityDenominator#78265]
(767) Project
Arguments: [product#78207, plant#78208, orderDateTime#78209, productPlant#78231, timezonecode#78248, systemId#78249, internalUUID#78250, id#78251, displayId#78252, name#78253, baseUnitOfMeasure#78254, unitOfMeasures#78255, unitOfMeasureConversions#78256, productionAspect#78257, salesAspect#78258, procurementAspect#78259, productGroup#78260, filteredUnitOfMeasureConversions#78263, quantityNumerator#78264, quantityDenominator#78265]
(768) Project
Arguments: [product#78207, plant#78208, orderDateTime#78209, productPlant#78231, timezonecode#78248, systemId#78249, internalUUID#78250, id#78251, displayId#78252, name#78253, baseUnitOfMeasure#78254, unitOfMeasures#78255, unitOfMeasureConversions#78256, productionAspect#78257, salesAspect#78258, procurementAspect#78259, productGroup#78260, filteredUnitOfMeasureConversions#78263, quantityNumerator#78264, quantityDenominator#78265, (cast(quantityNumerator#78264 as double) / cast(quantityDenominator#78265 as double)) AS outboundUnit#78296]
(769) Project
Arguments: [product#78207, plant#78208, orderDateTime#78209, productPlant#78231, timezonecode#78248, systemId#78249, internalUUID#78250, id#78251, displayId#78252, name#78253, baseUnitOfMeasure#78254, unitOfMeasures#78255, unitOfMeasureConversions#78256, productionAspect#78257, salesAspect#78258, procurementAspect#78259, productGroup#78260, filteredUnitOfMeasureConversions#78263, quantityNumerator#78264, quantityDenominator#78265, CASE WHEN (isnull(outboundUnit#78296) OR (outboundUnit#78296 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#78296 END AS outboundUnit#78297]
(770) Project
Arguments: [product#78207, plant#78208, orderDateTime#78209, productPlant#78231, timezonecode#78248, outboundUnit#78297]
(771) Project
Arguments: [plant#78208]
(772) Deduplicate
Arguments: [plant#78208]
(773) Join
Arguments: Inner, (plantUuid#78203 = plant#78208)
(774) Project
Arguments: [plantId#78202, plantUuid#78203, storageLocId#78205, storageLocUuid#78206]
(775) Join
Arguments: Inner, (plant#78162.internalRefUUID <=> plantUuid#78203)
(776) Generate
Arguments: explode(filter(stockQuantities#78164, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#78206) AND (lambda x#69270.storageLocation.Id = storageLocId#78205)), lambda x#69270, false))), false, [stockQuantity#78308]
(777) Project
Arguments: [systemId#78159, internalUUID#78160, product#78161, plant#78162, calculationDateTime#78163, stockQuantities#78164, plantId#78202, plantUuid#78203, storageLocId#78205, storageLocUuid#78206, stockQuantity#78308]
(778) Aggregate
Arguments: [plantUuid#78203, internalUUID#78160, plant#78162, product#78161, systemId#78159], [plantUuid#78203, internalUUID#78160, plant#78162, product#78161, systemId#78159, first(calculationDateTime#78163, false) AS calculationDateTime#78317, collect_list(stockQuantity#78308, 0, 0) AS stockQuantities#78318]
(779) Project
Arguments: [systemId#78159, internalUUID#78160, product#78161, plant#78162, calculationDateTime#78317, stockQuantities#78318]
(780) Generate
Arguments: explode(stockQuantities#78318), false, [stockQuantity#78320]
(781) Project
Arguments: [systemId#78159, internalUUID#78160, product#78161, plant#78162, calculationDateTime#78317, stockQuantities#78318, stockQuantity#78320]
(782) Project
Arguments: [plant#78162.id AS plant#78333, plant#78162.internalRefUUID AS plantUuid#78334, product#78161.id AS product#78335, product#78161.internalRefUUID AS productUuid#78336, calculationDateTime#78317, stockQuantity#78320.storagelocation.id AS storageLocId#78337, stockQuantity#78320.storagelocation.internalRefUUID AS storageLocUuid#78338, stockQuantity#78320.quantity.measure AS quantity#78339, stockQuantity#78320.specialStockIndicator.code AS specialStockIndicator#78340, stockQuantity#78320.stockType.code AS stockType#78341]
(783) Filter
Arguments: ((specialStockIndicator#78340 = ) AND (stockType#78341 = 01))
(784) LogicalRelation
Arguments: parquet, [product#78342, plant#78343, orderDateTime#78344, planningStartDateTime#78345], false
(785) RepartitionByExpression
Arguments: [product#78342, plant#78343], 25
(786) Project
Arguments: [product#78342, plant#78343, orderDateTime#78344]
(787) LogicalRelation
Arguments: parquet, [systemId#78347, internalUUID#78348, plant#78349, product#78350, blockedForReplenishmentStartingFrom#78351, productionAspect#78352, salesPlant#78353, listing#78354], false
(788) Repartition
Arguments: 25, true
(789) Project
Arguments: [systemId#78347, internalUUID#78348, plant#78349, product#78350, blockedForReplenishmentStartingFrom#78351, productionAspect#78352, salesPlant#78353, listing#78354, struct(systemId, systemId#78347, internalUUID, internalUUID#78348, plant, plant#78349, product, product#78350, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#78351, productionAspect, productionAspect#78352, salesPlant, salesPlant#78353, listing, listing#78354) AS productPlant#78356]
(790) Project
Arguments: [productPlant#78356]
(791) Join
Arguments: LeftOuter, ((product#78342 <=> productPlant#78356.product.internalRefUUID) AND (plant#78343 <=> productPlant#78356.plant.internalRefUUID))
(792) Project
Arguments: [product#78342, plant#78343, orderDateTime#78344, productPlant#78356]
(793) SubqueryAlias
Arguments: wl
(794) LogicalRelation
Arguments: parquet, [systemId#78369, internalUUID#78370, id#78371, displayId#78372, name#78373, category#78374, companyCode#78375, address#78376, mainDistributionChain#78377, mainPurchasingOrganization#78378, validPurchasingOrganizations#78379, productGroup#78380], false
(795) Repartition
Arguments: 25, true
(796) Project
Arguments: [internalUUID#78370, address#78376.timeZone.code AS timezonecode#78381]
(797) Join
Arguments: LeftOuter, (plant#78343 <=> internalUUID#78370)
(798) Project
Arguments: [product#78342, plant#78343, orderDateTime#78344, productPlant#78356, internalUUID#78370, CASE WHEN isnotnull(timezonecode#78381) THEN timezonecode#78381 ELSE UTC END AS timezonecode#78383]
(799) Project
Arguments: [product#78342, plant#78343, orderDateTime#78344, productPlant#78356, timezonecode#78383]
(800) LogicalRelation
Arguments: parquet, [systemId#78385, internalUUID#78386, id#78387, displayId#78388, name#78389, baseUnitOfMeasure#78390, unitOfMeasures#78391, unitOfMeasureConversions#78392, productionAspect#78393, salesAspect#78394, procurementAspect#78395, productGroup#78396], false
(801) Repartition
Arguments: 25, true
(802) Join
Arguments: LeftOuter, (product#78342 = internalUUID#78386)
(803) Project
Arguments: [product#78342, plant#78343, orderDateTime#78344, productPlant#78356, timezonecode#78383, systemId#78385, internalUUID#78386, id#78387, displayId#78388, name#78389, baseUnitOfMeasure#78390, unitOfMeasures#78391, unitOfMeasureConversions#78392, productionAspect#78393, salesAspect#78394, procurementAspect#78395, productGroup#78396, filter(unitOfMeasureConversions#78392, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#78356.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#78356.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#78390.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#78390.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#78399]
(804) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78399.quantityNumerator), true, [quantityNumerator#78400]
(805) Project
Arguments: [product#78342, plant#78343, orderDateTime#78344, productPlant#78356, timezonecode#78383, systemId#78385, internalUUID#78386, id#78387, displayId#78388, name#78389, baseUnitOfMeasure#78390, unitOfMeasures#78391, unitOfMeasureConversions#78392, productionAspect#78393, salesAspect#78394, procurementAspect#78395, productGroup#78396, filteredUnitOfMeasureConversions#78399, quantityNumerator#78400]
(806) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78399.quantityDenominator), true, [quantityDenominator#78402]
(807) Project
Arguments: [product#78342, plant#78343, orderDateTime#78344, productPlant#78356, timezonecode#78383, systemId#78385, internalUUID#78386, id#78387, displayId#78388, name#78389, baseUnitOfMeasure#78390, unitOfMeasures#78391, unitOfMeasureConversions#78392, productionAspect#78393, salesAspect#78394, procurementAspect#78395, productGroup#78396, filteredUnitOfMeasureConversions#78399, quantityNumerator#78400, quantityDenominator#78402]
(808) Project
Arguments: [product#78342, plant#78343, orderDateTime#78344, productPlant#78356, timezonecode#78383, systemId#78385, internalUUID#78386, id#78387, displayId#78388, name#78389, baseUnitOfMeasure#78390, unitOfMeasures#78391, unitOfMeasureConversions#78392, productionAspect#78393, salesAspect#78394, procurementAspect#78395, productGroup#78396, filteredUnitOfMeasureConversions#78399, quantityNumerator#78400, quantityDenominator#78402, (cast(quantityNumerator#78400 as double) / cast(quantityDenominator#78402 as double)) AS outboundUnit#78403]
(809) Project
Arguments: [product#78342, plant#78343, orderDateTime#78344, productPlant#78356, timezonecode#78383, systemId#78385, internalUUID#78386, id#78387, displayId#78388, name#78389, baseUnitOfMeasure#78390, unitOfMeasures#78391, unitOfMeasureConversions#78392, productionAspect#78393, salesAspect#78394, procurementAspect#78395, productGroup#78396, filteredUnitOfMeasureConversions#78399, quantityNumerator#78400, quantityDenominator#78402, CASE WHEN (isnull(outboundUnit#78403) OR (outboundUnit#78403 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#78403 END AS outboundUnit#78404]
(810) Project
Arguments: [product#78342, plant#78343, orderDateTime#78344, productPlant#78356, timezonecode#78383, outboundUnit#78404]
(811) Join
Arguments: Inner, ((plantUuid#78334 = plant#78343) AND (productUuid#78336 = product#78342))
(812) Filter
Arguments: (calculationDateTime#78317 <= orderDateTime#78344)
(813) Project
Arguments: [plantUuid#78334 AS plant#78408, productUuid#78336 AS product#78409, storageLocId#78337, calculationDateTime#78317, quantity#78339]
(814) Aggregate
Arguments: [plant#78408, product#78409, storageLocId#78337], [plant#78408, product#78409, storageLocId#78337, max(calculationDateTime#78317) AS max_calc_datetime#78411]
(815) Join
Arguments: Inner, ((((plant#78157 <=> plant#78408) AND (product#78158 <=> product#78409)) AND (storageLocId#78069 <=> storageLocId#78337)) AND (calculationDateTime#78056 <=> max_calc_datetime#78411))
(816) Project
Arguments: [plant#78157, product#78158, storageLocId#78069, calculationDateTime#78056, quantity#78075]
(817) Aggregate
Arguments: [product#78158, plant#78157], [product#78158, plant#78157, sum(quantity#78075) AS quantitySum#78425, min(calculationDateTime#78056) AS minCalculationDateTime#78426]
(818) Project
Arguments: [product#78158, plant#78157, quantitySum#78425, minCalculationDateTime#78426, round(quantitySum#78425, 0) AS roundedQuantitySum#78435]
(819) Join
Arguments: LeftOuter, ((plant#77819 = plant#78157) AND (product#77818 = product#78158))
(820) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, outboundUnit#77873, roundedQuantitySum#78435, minCalculationDateTime#78426]
(821) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, outboundUnit#77873, roundedQuantitySum#78435, minCalculationDateTime#78426, CASE WHEN isnotnull(minCalculationDateTime#78426) THEN minCalculationDateTime#78426 ELSE orderDateTime#77820 END AS stockDatetime#78449]
(822) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, outboundUnit#77873, roundedQuantitySum#78435, minCalculationDateTime#78426, stockDatetime#78449, CASE WHEN isnotnull(roundedQuantitySum#78435) THEN array(roundedQuantitySum#78435) ELSE array(0.0) END AS stockBatchQuantities#78451]
(823) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, outboundUnit#77873, roundedQuantitySum#78435, minCalculationDateTime#78426, stockDatetime#78449, stockBatchQuantities#78451, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#78452]
(824) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, outboundUnit#77873, roundedQuantitySum#78435, stockDatetime#78449, stockBatchQuantities#78451, stockBatchShelfLifeEndDatetimes#78452]
(825) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, outboundUnit#77873, stockDatetime#78449, stockBatchQuantities#78451, stockBatchShelfLifeEndDatetimes#78452]
(826) LogicalRelation
Arguments: parquet, [product#78466, plant#78467, demandChannel#78468, demandStream#78469, considerVariance#78470, demandTimeBuckets#78471, demandPointInTimeStart#78472, demandPointInTimeEnd#78473, demandPointInTime#78474], false
(827) Join
Arguments: LeftOuter, ((product#77818 = product#78466) AND (plant#77819 = plant#78467))
(828) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, outboundUnit#77873, stockDatetime#78449, stockBatchQuantities#78451, stockBatchShelfLifeEndDatetimes#78452, demandChannel#78468, demandStream#78469, considerVariance#78470, demandTimeBuckets#78471, demandPointInTimeStart#78472, demandPointInTimeEnd#78473, demandPointInTime#78474, product#78466, plant#78467]
(829) Project
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, outboundUnit#77873, stockDatetime#78449, stockBatchQuantities#78451, stockBatchShelfLifeEndDatetimes#78452, demandChannel#78468, demandStream#78469, considerVariance#78470, demandTimeBuckets#78471, demandPointInTimeStart#78472, demandPointInTimeEnd#78473, demandPointInTime#78474, CASE WHEN isnotnull(product#78466) THEN struct(demandChannel, demandChannel#78468, demandStream, demandStream#78469, considerVariance, considerVariance#78470, demandTimeBuckets, demandTimeBuckets#78471, demandPointInTimeStart, demandPointInTimeStart#78472, demandPointInTimeEnd, demandPointInTimeEnd#78473, demandPointInTime, demandPointInTime#78474) 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#78477]
(830) Aggregate
Arguments: [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, outboundUnit#77873, stockDatetime#78449, stockBatchQuantities#78451, stockBatchShelfLifeEndDatetimes#78452], [product#77818, plant#77819, orderDateTime#77820, productPlant#77831, timezonecode#77847, outboundUnit#77873, stockDatetime#78449, stockBatchQuantities#78451, stockBatchShelfLifeEndDatetimes#78452, collect_list(rawDemands#78477, 0, 0) AS rawDemands#78479]
(831) DeserializeToObject
Arguments: createexternalrow(invoke(product#77818.toString()), invoke(plant#77819.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#77820)), if (isnull(productPlant#77831)) null else createexternalrow(invoke(productPlant#77831.systemId.toString()), invoke(productPlant#77831.internalUUID.toString()), if (isnull(productPlant#77831.plant)) null else createexternalrow(invoke(productPlant#77831.plant.internalRefUUID.toString()), invoke(productPlant#77831.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#77831.product)) null else createexternalrow(invoke(productPlant#77831.product.internalRefUUID.toString()), invoke(productPlant#77831.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#77831.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#77831.productionAspect)) null else createexternalrow(if (isnull(productPlant#77831.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#77831.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#77831.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#77831.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#77831.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#77831.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#77831.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#77831.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#77831.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#77831.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#77831.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#77831.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#77831.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#77831.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#77831.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#77831.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#77831.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#77831.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#77831.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#77831.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#77831.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#77831.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(minimumSafetyStock,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(minimumSafetyStock,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#77831.salesPlant)) null else createexternalrow(if (isnull(productPlant#77831.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#77831.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#77831.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, 10028), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#77831.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(minimumSafetyStock,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#77847.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#77873)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#78449)), mapobjects(lambdavariable(MapObject, DoubleType, true, 10029), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 10029) as double))), stockBatchQuantities#78451, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 10030), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 10030) as timestamp)))), stockBatchShelfLifeEndDatetimes#78452, 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, 10031), 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, 10031))) 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, 10031).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, 10031).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, 10031).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032).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, 10031).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, 10031).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, 10031).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033).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, 10031).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#78479, 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(minimumSafetyStock,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#70342: org.apache.spark.sql.Row
(832) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@22b451ac, 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(minimumSafetyStock,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#70347: 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#78487, 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#78488, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10019), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10019), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10020), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10020), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10021), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10021), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10022), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10022), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10023), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10023), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#78489, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10025), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10025), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10026), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10026), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10027), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10027), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#78490]
(834) Join
Arguments: LeftOuter, ((plant#78488 <=> plant#77194) AND (product#78487 <=> product#77193))
(835) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, outboundUnit#77296, stockDatetime#77813, stockBatchQuantities#77814, stockBatchShelfLifeEndDatetimes#77815, plant#78488, dayBucketDemands#78489, pointInTimeDemands#78490]
(836) Project
Arguments: [product#77193, plant#77194, orderDateTime#77195, productPlant#77218, timezonecode#77245, outboundUnit#77296, stockDatetime#77813, stockBatchQuantities#77814, stockBatchShelfLifeEndDatetimes#77815, dayBucketDemands#78489, pointInTimeDemands#78490]
(837) LogicalRelation
Arguments: parquet, [marketUnit#70831, description#70832, articleHierarchy#70833, defaultCurrency#70834, responsibilities#70835, replenishmentTypes#70836, distributionCenters#70837, assignedArticleHierarchyNodes#70838, minOrderQtySetting#70839, listingCheck#70840, odsSelection#70841, demandProfiles#70842, constraintProfiles#70843, optimizationProfiles#70844, orderGroupSplitProfiles#70845, supplierMinimumProfiles#70846, multipleRestrictionProfiles#70847, preferredUomSource#70848, handlingOfUnfulfilledDemands#70849, negligibleQuantitiesThreshold#70850, eventtype#70851, minOrderQtySettingInternal#70852], false
(838) Repartition
Arguments: 25, true
(839) Filter
Arguments: (marketUnit#70831 <=> Daily_grocery)
(840) Project
Arguments: [marketUnit#70831, description#70832, articleHierarchy#70833, defaultCurrency#70834, responsibilities#70835, replenishmentTypes#70836, distributionCenters#70837, assignedArticleHierarchyNodes#70838, minOrderQtySetting#70839, listingCheck#70840, odsSelection#70841, demandProfiles#70842, constraintProfiles#70843, optimizationProfiles#70844, orderGroupSplitProfiles#70845, supplierMinimumProfiles#70846, multipleRestrictionProfiles#70847, preferredUomSource#70848, handlingOfUnfulfilledDemands#70849, negligibleQuantitiesThreshold#70850, eventtype#70851, minOrderQtySettingInternal#70852]
(841) Project
Arguments: [distributionCenters#70837]
(842) Generate
Arguments: explode(distributionCenters#70837), false, [distributionCenters#70853]
(843) Project
Arguments: [distributionCenters#70853]
(844) Generate
Arguments: explode(distributionCenters#70853.storageLocations), false, [storageLocations#70856]
(845) Project
Arguments: [distributionCenters#70853.id AS plantId#70859, distributionCenters#70853.internalRefUUID AS plantUuid#70860, storageLocations#70856]
(846) Project
Arguments: [plantId#70859, plantUuid#70860, storageLocations#70856.id AS storageLocId#70863, storageLocations#70856.internalRefUUID AS storageLocUuid#70864]
(847) LogicalRelation
Arguments: parquet, [product#70869, plant#70870, orderDateTime#70871, planningStartDateTime#70872], false
(848) RepartitionByExpression
Arguments: [product#70869, plant#70870], 25
(849) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871]
(850) LogicalRelation
Arguments: parquet, [systemId#70873, internalUUID#70874, plant#70875, product#70876, blockedForReplenishmentStartingFrom#70877, productionAspect#70878, salesPlant#70879, listing#70880], false
(851) Repartition
Arguments: 25, true
(852) Project
Arguments: [systemId#70873, internalUUID#70874, plant#70875, product#70876, blockedForReplenishmentStartingFrom#70877, productionAspect#70878, salesPlant#70879, listing#70880, struct(systemId, systemId#70873, internalUUID, internalUUID#70874, plant, plant#70875, product, product#70876, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70877, productionAspect, productionAspect#70878, salesPlant, salesPlant#70879, listing, listing#70880) AS productPlant#70889]
(853) Project
Arguments: [productPlant#70889]
(854) Join
Arguments: LeftOuter, ((product#70869 <=> productPlant#70889.product.internalRefUUID) AND (plant#70870 <=> productPlant#70889.plant.internalRefUUID))
(855) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889]
(856) SubqueryAlias
Arguments: wl
(857) LogicalRelation
Arguments: parquet, [systemId#70904, internalUUID#70905, id#70906, displayId#70907, name#70908, category#70909, companyCode#70910, address#70911, mainDistributionChain#70912, mainPurchasingOrganization#70913, validPurchasingOrganizations#70914, productGroup#70915], false
(858) Repartition
Arguments: 25, true
(859) Project
Arguments: [internalUUID#70905, address#70911.timeZone.code AS timezonecode#70916]
(860) Join
Arguments: LeftOuter, (plant#70870 <=> internalUUID#70905)
(861) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, internalUUID#70905, CASE WHEN isnotnull(timezonecode#70916) THEN timezonecode#70916 ELSE UTC END AS timezonecode#70930]
(862) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930]
(863) LogicalRelation
Arguments: parquet, [systemId#70931, internalUUID#70932, id#70933, displayId#70934, name#70935, baseUnitOfMeasure#70936, unitOfMeasures#70937, unitOfMeasureConversions#70938, productionAspect#70939, salesAspect#70940, procurementAspect#70941, productGroup#70942], false
(864) Repartition
Arguments: 25, true
(865) Join
Arguments: LeftOuter, (product#70869 = internalUUID#70932)
(866) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930, systemId#70931, internalUUID#70932, id#70933, displayId#70934, name#70935, baseUnitOfMeasure#70936, unitOfMeasures#70937, unitOfMeasureConversions#70938, productionAspect#70939, salesAspect#70940, procurementAspect#70941, productGroup#70942, filter(unitOfMeasureConversions#70938, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#70889.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#70889.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#70936.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70936.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#70945]
(867) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70945.quantityNumerator), true, [quantityNumerator#70947]
(868) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930, systemId#70931, internalUUID#70932, id#70933, displayId#70934, name#70935, baseUnitOfMeasure#70936, unitOfMeasures#70937, unitOfMeasureConversions#70938, productionAspect#70939, salesAspect#70940, procurementAspect#70941, productGroup#70942, filteredUnitOfMeasureConversions#70945, quantityNumerator#70947]
(869) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70945.quantityDenominator), true, [quantityDenominator#70948]
(870) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930, systemId#70931, internalUUID#70932, id#70933, displayId#70934, name#70935, baseUnitOfMeasure#70936, unitOfMeasures#70937, unitOfMeasureConversions#70938, productionAspect#70939, salesAspect#70940, procurementAspect#70941, productGroup#70942, filteredUnitOfMeasureConversions#70945, quantityNumerator#70947, quantityDenominator#70948]
(871) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930, systemId#70931, internalUUID#70932, id#70933, displayId#70934, name#70935, baseUnitOfMeasure#70936, unitOfMeasures#70937, unitOfMeasureConversions#70938, productionAspect#70939, salesAspect#70940, procurementAspect#70941, productGroup#70942, filteredUnitOfMeasureConversions#70945, quantityNumerator#70947, quantityDenominator#70948, (cast(quantityNumerator#70947 as double) / cast(quantityDenominator#70948 as double)) AS outboundUnit#70950]
(872) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930, systemId#70931, internalUUID#70932, id#70933, displayId#70934, name#70935, baseUnitOfMeasure#70936, unitOfMeasures#70937, unitOfMeasureConversions#70938, productionAspect#70939, salesAspect#70940, procurementAspect#70941, productGroup#70942, filteredUnitOfMeasureConversions#70945, quantityNumerator#70947, quantityDenominator#70948, CASE WHEN (isnull(outboundUnit#70950) OR (outboundUnit#70950 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70950 END AS outboundUnit#70952]
(873) Project
Arguments: [product#70869, plant#70870, orderDateTime#70871, productPlant#70889, timezonecode#70930, outboundUnit#70952]
(874) Project
Arguments: [plant#70870]
(875) Deduplicate
Arguments: [plant#70870]
(876) Join
Arguments: Inner, (plantUuid#70860 = plant#70870)
(877) Project
Arguments: [plantId#70859, plantUuid#70860, storageLocId#70863, storageLocUuid#70864]
(878) Project
Arguments: [plantId#70859, plantUuid#70860 AS plant#70808, storageLocId#70863, storageLocUuid#70864]
(879) Join
Arguments: Inner, (plant#77194 = plant#70808)
(880) Project
Arguments: [plant#77194, product#77193, orderDateTime#77195, productPlant#77218, timezonecode#77245, outboundUnit#77296, stockDatetime#77813, stockBatchQuantities#77814, stockBatchShelfLifeEndDatetimes#77815, dayBucketDemands#78489, pointInTimeDemands#78490, plantId#70859, storageLocId#70863, storageLocUuid#70864, plant#70808]
(881) LogicalRelation
Arguments: parquet, [systemId#70738, internalUUID#70739, id#70740, displayId#70741, supplier#70742, type#70743, status#70744, isMarkedForDeletion#70745, items#70746], false
(882) Repartition
Arguments: 25, true
(883) Generate
Arguments: explode(items#70746), false, [item#70754]
(884) Project
Arguments: [id#70740, internalUUID#70739, isMarkedForDeletion#70745, supplier#70742.internalRefUUID AS supplierUuid#70749, item#70754]
(885) Filter
Arguments: (((NOT isMarkedForDeletion#70745 AND NOT item#70754.deletionIndicator) AND NOT item#70754.completeIndicator) AND NOT item#70754.returnIndicator)
(886) Project
Arguments: [id#70740, internalUUID#70739, supplierUuid#70749, item#70754.plant.internalRefUUID AS plant#70763, item#70754.product.internalRefUUID AS product#70764, item#70754.plant.id AS externalPlantId#70765, item#70754.product.id AS externalProductId#70766, item#70754.storageLocation.internalRefUUID AS storageLocUuid#70767, item#70754.quantityUnit.code AS quantityUom#70768, item#70754.quantityUnit.internalRefUUID AS quantityUomUuid#70769, item#70754.quantityNumerator AS quantityNumerator#70771, item#70754.quantityDenominator AS quantityDenominator#70772, item#70754.scheduleLines AS scheduleLines#70774, item#70754.confirmations AS confirmations#70776]
(887) Join
Arguments: Inner, (((product#77193 = product#70764) AND (plant#77194 = plant#70763)) AND (storageLocUuid#70864 = storageLocUuid#70767))
(888) Project
Arguments: [product#77193, plant#77194, storageLocUuid#70864, orderDateTime#77195, productPlant#77218, timezonecode#77245, outboundUnit#77296, stockDatetime#77813, stockBatchQuantities#77814, stockBatchShelfLifeEndDatetimes#77815, dayBucketDemands#78489, pointInTimeDemands#78490, plantId#70859, storageLocId#70863, id#70740, internalUUID#70739, supplierUuid#70749, externalPlantId#70765, externalProductId#70766, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, ... 4 more fields]
(889) Project
Arguments: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#77813, timezonecode#77245]
(890) Project
Arguments: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#77813, timezonecode#77245, filter(confirmations#70776, lambdafunction((((lambda x_1#70965.deletionIndicator = false) AND (lambda x_1#70965.isRelevantForConfirmation = true)) AND isnotnull(lambda x_1#70965.confirmedDeliveryAt)), lambda x_1#70965, false)) AS validConfirmations#70964]
(891) Project
Arguments: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#77813, timezonecode#77245, validConfirmations#70964, array_size(validConfirmations#70964) AS _w0#75047]
(892) Window
Arguments: [sum(_w0#75047) windowspecdefinition(internalUUID#70739, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#75048L], [internalUUID#70739]
(893) Project
Arguments: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#77813, timezonecode#77245, validConfirmations#70964, _w0#75047, _we0#75048L, filter(transform(CASE WHEN (_we0#75048L > cast(0 as bigint)) THEN transform(validConfirmations#70964, lambdafunction(struct(openQty, greatest((lambda x_12#75038.confirmedQuantity - coalesce(lambda x_12#75038.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_12#75038.confirmedDeliveryAt), lambda x_12#75038, false)) ELSE transform(scheduleLines#70774, lambdafunction(struct(openQty, greatest((lambda x_11#75040.quantity - coalesce(lambda x_11#75040.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_11#75040.deliveryAt), lambda x_11#75040, false)) END, lambdafunction(struct(documentId, id#70740, documentUuid, internalUUID#70739, openQty, lambda x_13#75042.openQty, openQtyInBaseUnit, ((lambda x_13#75042.openQty * quantityNumerator#70771) / quantityDenominator#70772), qtyUom, quantityUom#70768, qtyUomUuid, quantityUomUuid#70769, availabilityDatetime, lambda x_13#75042.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_13#75042, false)), lambdafunction(NOT (lambda x_14#75044.openQty = 0.0), lambda x_14#75044, false)) AS openGoodsMovements#75024]
(894) Project
Arguments: [id#70740, internalUUID#70739, supplierUuid#70749, plant#70763, product#70764, externalPlantId#70765, externalProductId#70766, storageLocUuid#70767, quantityUom#70768, quantityUomUuid#70769, quantityNumerator#70771, quantityDenominator#70772, scheduleLines#70774, confirmations#70776, stockDatetime#77813, timezonecode#77245, validConfirmations#70964, openGoodsMovements#75024]
(895) Aggregate
Arguments: [product#70764, plant#70763], [product#70764, plant#70763, flatten(collect_list(openGoodsMovements#75024, 0, 0)) AS openGoodsMovements#75051]
(896) Filter
Arguments: (array_size(openGoodsMovements#75051) > 0)
(897) LogicalRelation
Arguments: parquet, [product#75696, plant#75697, orderDateTime#75698, planningStartDateTime#75699], false
(898) RepartitionByExpression
Arguments: [product#75696, plant#75697], 25
(899) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698]
(900) LogicalRelation
Arguments: parquet, [systemId#75700, internalUUID#75701, plant#75702, product#75703, blockedForReplenishmentStartingFrom#75704, productionAspect#75705, salesPlant#75706, listing#75707], false
(901) Repartition
Arguments: 25, true
(902) Project
Arguments: [systemId#75700, internalUUID#75701, plant#75702, product#75703, blockedForReplenishmentStartingFrom#75704, productionAspect#75705, salesPlant#75706, listing#75707, struct(systemId, systemId#75700, internalUUID, internalUUID#75701, plant, plant#75702, product, product#75703, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#75704, productionAspect, productionAspect#75705, salesPlant, salesPlant#75706, listing, listing#75707) AS productPlant#75708]
(903) Project
Arguments: [productPlant#75708]
(904) Join
Arguments: LeftOuter, ((product#75696 <=> productPlant#75708.product.internalRefUUID) AND (plant#75697 <=> productPlant#75708.plant.internalRefUUID))
(905) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708]
(906) SubqueryAlias
Arguments: wl
(907) LogicalRelation
Arguments: parquet, [systemId#75709, internalUUID#75710, id#75711, displayId#75712, name#75713, category#75714, companyCode#75715, address#75716, mainDistributionChain#75717, mainPurchasingOrganization#75718, validPurchasingOrganizations#75719, productGroup#75720], false
(908) Repartition
Arguments: 25, true
(909) Project
Arguments: [internalUUID#75710, address#75716.timeZone.code AS timezonecode#75721]
(910) Join
Arguments: LeftOuter, (plant#75697 <=> internalUUID#75710)
(911) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, internalUUID#75710, CASE WHEN isnotnull(timezonecode#75721) THEN timezonecode#75721 ELSE UTC END AS timezonecode#75722]
(912) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722]
(913) LogicalRelation
Arguments: parquet, [systemId#75723, internalUUID#75724, id#75725, displayId#75726, name#75727, baseUnitOfMeasure#75728, unitOfMeasures#75729, unitOfMeasureConversions#75730, productionAspect#75731, salesAspect#75732, procurementAspect#75733, productGroup#75734], false
(914) Repartition
Arguments: 25, true
(915) Join
Arguments: LeftOuter, (product#75696 = internalUUID#75724)
(916) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, systemId#75723, internalUUID#75724, id#75725, displayId#75726, name#75727, baseUnitOfMeasure#75728, unitOfMeasures#75729, unitOfMeasureConversions#75730, productionAspect#75731, salesAspect#75732, procurementAspect#75733, productGroup#75734, filter(unitOfMeasureConversions#75730, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#75708.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#75708.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#75728.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#75728.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#75739]
(917) Generate
Arguments: explode(filteredUnitOfMeasureConversions#75739.quantityNumerator), true, [quantityNumerator#75740]
(918) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, systemId#75723, internalUUID#75724, id#75725, displayId#75726, name#75727, baseUnitOfMeasure#75728, unitOfMeasures#75729, unitOfMeasureConversions#75730, productionAspect#75731, salesAspect#75732, procurementAspect#75733, productGroup#75734, filteredUnitOfMeasureConversions#75739, quantityNumerator#75740]
(919) Generate
Arguments: explode(filteredUnitOfMeasureConversions#75739.quantityDenominator), true, [quantityDenominator#75749]
(920) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, systemId#75723, internalUUID#75724, id#75725, displayId#75726, name#75727, baseUnitOfMeasure#75728, unitOfMeasures#75729, unitOfMeasureConversions#75730, productionAspect#75731, salesAspect#75732, procurementAspect#75733, productGroup#75734, filteredUnitOfMeasureConversions#75739, quantityNumerator#75740, quantityDenominator#75749]
(921) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, systemId#75723, internalUUID#75724, id#75725, displayId#75726, name#75727, baseUnitOfMeasure#75728, unitOfMeasures#75729, unitOfMeasureConversions#75730, productionAspect#75731, salesAspect#75732, procurementAspect#75733, productGroup#75734, filteredUnitOfMeasureConversions#75739, quantityNumerator#75740, quantityDenominator#75749, (cast(quantityNumerator#75740 as double) / cast(quantityDenominator#75749 as double)) AS outboundUnit#75751]
(922) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, systemId#75723, internalUUID#75724, id#75725, displayId#75726, name#75727, baseUnitOfMeasure#75728, unitOfMeasures#75729, unitOfMeasureConversions#75730, productionAspect#75731, salesAspect#75732, procurementAspect#75733, productGroup#75734, filteredUnitOfMeasureConversions#75739, quantityNumerator#75740, quantityDenominator#75749, CASE WHEN (isnull(outboundUnit#75751) OR (outboundUnit#75751 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#75751 END AS outboundUnit#75765]
(923) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, outboundUnit#75765]
(924) LogicalRelation
Arguments: parquet, [systemId#75766, internalUUID#75767, product#75768, plant#75769, calculationDateTime#75770, stockQuantities#75771], false
(925) Repartition
Arguments: 25, true
(926) LogicalRelation
Arguments: parquet, [marketUnit#75773, description#75774, articleHierarchy#75775, defaultCurrency#75776, responsibilities#75777, replenishmentTypes#75778, distributionCenters#75779, assignedArticleHierarchyNodes#75780, minOrderQtySetting#75781, listingCheck#75782, odsSelection#75783, demandProfiles#75784, constraintProfiles#75785, optimizationProfiles#75786, orderGroupSplitProfiles#75787, supplierMinimumProfiles#75788, multipleRestrictionProfiles#75789, preferredUomSource#75790, handlingOfUnfulfilledDemands#75791, negligibleQuantitiesThreshold#75792, eventtype#75793, minOrderQtySettingInternal#75794], false
(927) Repartition
Arguments: 25, true
(928) Filter
Arguments: (marketUnit#75773 <=> Daily_grocery)
(929) Project
Arguments: [marketUnit#75773, description#75774, articleHierarchy#75775, defaultCurrency#75776, responsibilities#75777, replenishmentTypes#75778, distributionCenters#75779, assignedArticleHierarchyNodes#75780, minOrderQtySetting#75781, listingCheck#75782, odsSelection#75783, demandProfiles#75784, constraintProfiles#75785, optimizationProfiles#75786, orderGroupSplitProfiles#75787, supplierMinimumProfiles#75788, multipleRestrictionProfiles#75789, preferredUomSource#75790, handlingOfUnfulfilledDemands#75791, negligibleQuantitiesThreshold#75792, eventtype#75793, minOrderQtySettingInternal#75794]
(930) Project
Arguments: [distributionCenters#75779]
(931) Generate
Arguments: explode(distributionCenters#75779), false, [distributionCenters#75807]
(932) Project
Arguments: [distributionCenters#75807]
(933) Generate
Arguments: explode(distributionCenters#75807.storageLocations), false, [storageLocations#75808]
(934) Project
Arguments: [distributionCenters#75807.id AS plantId#75809, distributionCenters#75807.internalRefUUID AS plantUuid#75810, storageLocations#75808]
(935) Project
Arguments: [plantId#75809, plantUuid#75810, storageLocations#75808.id AS storageLocId#75812, storageLocations#75808.internalRefUUID AS storageLocUuid#75813]
(936) LogicalRelation
Arguments: parquet, [product#75814, plant#75815, orderDateTime#75816, planningStartDateTime#75817], false
(937) RepartitionByExpression
Arguments: [product#75814, plant#75815], 25
(938) Project
Arguments: [product#75814, plant#75815, orderDateTime#75816]
(939) LogicalRelation
Arguments: parquet, [systemId#75819, internalUUID#75820, plant#75821, product#75822, blockedForReplenishmentStartingFrom#75823, productionAspect#75824, salesPlant#75825, listing#75826], false
(940) Repartition
Arguments: 25, true
(941) Project
Arguments: [systemId#75819, internalUUID#75820, plant#75821, product#75822, blockedForReplenishmentStartingFrom#75823, productionAspect#75824, salesPlant#75825, listing#75826, struct(systemId, systemId#75819, internalUUID, internalUUID#75820, plant, plant#75821, product, product#75822, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#75823, productionAspect, productionAspect#75824, salesPlant, salesPlant#75825, listing, listing#75826) AS productPlant#75828]
(942) Project
Arguments: [productPlant#75828]
(943) Join
Arguments: LeftOuter, ((product#75814 <=> productPlant#75828.product.internalRefUUID) AND (plant#75815 <=> productPlant#75828.plant.internalRefUUID))
(944) Project
Arguments: [product#75814, plant#75815, orderDateTime#75816, productPlant#75828]
(945) SubqueryAlias
Arguments: wl
(946) LogicalRelation
Arguments: parquet, [systemId#75830, internalUUID#75831, id#75832, displayId#75833, name#75834, category#75835, companyCode#75836, address#75837, mainDistributionChain#75838, mainPurchasingOrganization#75839, validPurchasingOrganizations#75840, productGroup#75841], false
(947) Repartition
Arguments: 25, true
(948) Project
Arguments: [internalUUID#75831, address#75837.timeZone.code AS timezonecode#75842]
(949) Join
Arguments: LeftOuter, (plant#75815 <=> internalUUID#75831)
(950) Project
Arguments: [product#75814, plant#75815, orderDateTime#75816, productPlant#75828, internalUUID#75831, CASE WHEN isnotnull(timezonecode#75842) THEN timezonecode#75842 ELSE UTC END AS timezonecode#75872]
(951) Project
Arguments: [product#75814, plant#75815, orderDateTime#75816, productPlant#75828, timezonecode#75872]
(952) LogicalRelation
Arguments: parquet, [systemId#75873, internalUUID#75874, id#75875, displayId#75876, name#75877, baseUnitOfMeasure#75878, unitOfMeasures#75879, unitOfMeasureConversions#75880, productionAspect#75881, salesAspect#75882, procurementAspect#75883, productGroup#75884], false
(953) Repartition
Arguments: 25, true
(954) Join
Arguments: LeftOuter, (product#75814 = internalUUID#75874)
(955) Project
Arguments: [product#75814, plant#75815, orderDateTime#75816, productPlant#75828, timezonecode#75872, systemId#75873, internalUUID#75874, id#75875, displayId#75876, name#75877, baseUnitOfMeasure#75878, unitOfMeasures#75879, unitOfMeasureConversions#75880, productionAspect#75881, salesAspect#75882, procurementAspect#75883, productGroup#75884, filter(unitOfMeasureConversions#75880, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#75828.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#75828.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#75878.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#75878.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#75895]
(956) Generate
Arguments: explode(filteredUnitOfMeasureConversions#75895.quantityNumerator), true, [quantityNumerator#75904]
(957) Project
Arguments: [product#75814, plant#75815, orderDateTime#75816, productPlant#75828, timezonecode#75872, systemId#75873, internalUUID#75874, id#75875, displayId#75876, name#75877, baseUnitOfMeasure#75878, unitOfMeasures#75879, unitOfMeasureConversions#75880, productionAspect#75881, salesAspect#75882, procurementAspect#75883, productGroup#75884, filteredUnitOfMeasureConversions#75895, quantityNumerator#75904]
(958) Generate
Arguments: explode(filteredUnitOfMeasureConversions#75895.quantityDenominator), true, [quantityDenominator#75906]
(959) Project
Arguments: [product#75814, plant#75815, orderDateTime#75816, productPlant#75828, timezonecode#75872, systemId#75873, internalUUID#75874, id#75875, displayId#75876, name#75877, baseUnitOfMeasure#75878, unitOfMeasures#75879, unitOfMeasureConversions#75880, productionAspect#75881, salesAspect#75882, procurementAspect#75883, productGroup#75884, filteredUnitOfMeasureConversions#75895, quantityNumerator#75904, quantityDenominator#75906]
(960) Project
Arguments: [product#75814, plant#75815, orderDateTime#75816, productPlant#75828, timezonecode#75872, systemId#75873, internalUUID#75874, id#75875, displayId#75876, name#75877, baseUnitOfMeasure#75878, unitOfMeasures#75879, unitOfMeasureConversions#75880, productionAspect#75881, salesAspect#75882, procurementAspect#75883, productGroup#75884, filteredUnitOfMeasureConversions#75895, quantityNumerator#75904, quantityDenominator#75906, (cast(quantityNumerator#75904 as double) / cast(quantityDenominator#75906 as double)) AS outboundUnit#75919]
(961) Project
Arguments: [product#75814, plant#75815, orderDateTime#75816, productPlant#75828, timezonecode#75872, systemId#75873, internalUUID#75874, id#75875, displayId#75876, name#75877, baseUnitOfMeasure#75878, unitOfMeasures#75879, unitOfMeasureConversions#75880, productionAspect#75881, salesAspect#75882, procurementAspect#75883, productGroup#75884, filteredUnitOfMeasureConversions#75895, quantityNumerator#75904, quantityDenominator#75906, CASE WHEN (isnull(outboundUnit#75919) OR (outboundUnit#75919 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#75919 END AS outboundUnit#75921]
(962) Project
Arguments: [product#75814, plant#75815, orderDateTime#75816, productPlant#75828, timezonecode#75872, outboundUnit#75921]
(963) Project
Arguments: [plant#75815]
(964) Deduplicate
Arguments: [plant#75815]
(965) Join
Arguments: Inner, (plantUuid#75810 = plant#75815)
(966) Project
Arguments: [plantId#75809, plantUuid#75810, storageLocId#75812, storageLocUuid#75813]
(967) Join
Arguments: Inner, (plant#75769.internalRefUUID <=> plantUuid#75810)
(968) Generate
Arguments: explode(filter(stockQuantities#75771, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#75813) AND (lambda x#69270.storageLocation.Id = storageLocId#75812)), lambda x#69270, false))), false, [stockQuantity#75936]
(969) Project
Arguments: [systemId#75766, internalUUID#75767, product#75768, plant#75769, calculationDateTime#75770, stockQuantities#75771, plantId#75809, plantUuid#75810, storageLocId#75812, storageLocUuid#75813, stockQuantity#75936]
(970) Aggregate
Arguments: [plantUuid#75810, internalUUID#75767, plant#75769, product#75768, systemId#75766], [plantUuid#75810, internalUUID#75767, plant#75769, product#75768, systemId#75766, first(calculationDateTime#75770, false) AS calculationDateTime#75939, collect_list(stockQuantity#75936, 0, 0) AS stockQuantities#75940]
(971) Project
Arguments: [systemId#75766, internalUUID#75767, product#75768, plant#75769, calculationDateTime#75939, stockQuantities#75940]
(972) Generate
Arguments: explode(stockQuantities#75940), false, [stockQuantity#75942]
(973) Project
Arguments: [systemId#75766, internalUUID#75767, product#75768, plant#75769, calculationDateTime#75939, stockQuantities#75940, stockQuantity#75942]
(974) Project
Arguments: [plant#75769.id AS plant#75944, plant#75769.internalRefUUID AS plantUuid#75945, product#75768.id AS product#75946, product#75768.internalRefUUID AS productUuid#75947, calculationDateTime#75939, stockQuantity#75942.storagelocation.id AS storageLocId#75948, stockQuantity#75942.storagelocation.internalRefUUID AS storageLocUuid#75949, stockQuantity#75942.quantity.measure AS quantity#75950, stockQuantity#75942.specialStockIndicator.code AS specialStockIndicator#75951, stockQuantity#75942.stockType.code AS stockType#75952]
(975) Filter
Arguments: ((specialStockIndicator#75951 = ) AND (stockType#75952 = 01))
(976) LogicalRelation
Arguments: parquet, [product#75953, plant#75954, orderDateTime#75955, planningStartDateTime#75956], false
(977) RepartitionByExpression
Arguments: [product#75953, plant#75954], 25
(978) Project
Arguments: [product#75953, plant#75954, orderDateTime#75955]
(979) LogicalRelation
Arguments: parquet, [systemId#75957, internalUUID#75958, plant#75959, product#75960, blockedForReplenishmentStartingFrom#75961, productionAspect#75962, salesPlant#75963, listing#75964], false
(980) Repartition
Arguments: 25, true
(981) Project
Arguments: [systemId#75957, internalUUID#75958, plant#75959, product#75960, blockedForReplenishmentStartingFrom#75961, productionAspect#75962, salesPlant#75963, listing#75964, struct(systemId, systemId#75957, internalUUID, internalUUID#75958, plant, plant#75959, product, product#75960, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#75961, productionAspect, productionAspect#75962, salesPlant, salesPlant#75963, listing, listing#75964) AS productPlant#75965]
(982) Project
Arguments: [productPlant#75965]
(983) Join
Arguments: LeftOuter, ((product#75953 <=> productPlant#75965.product.internalRefUUID) AND (plant#75954 <=> productPlant#75965.plant.internalRefUUID))
(984) Project
Arguments: [product#75953, plant#75954, orderDateTime#75955, productPlant#75965]
(985) SubqueryAlias
Arguments: wl
(986) LogicalRelation
Arguments: parquet, [systemId#75967, internalUUID#75968, id#75969, displayId#75970, name#75971, category#75972, companyCode#75973, address#75974, mainDistributionChain#75975, mainPurchasingOrganization#75976, validPurchasingOrganizations#75977, productGroup#75978], false
(987) Repartition
Arguments: 25, true
(988) Project
Arguments: [internalUUID#75968, address#75974.timeZone.code AS timezonecode#75981]
(989) Join
Arguments: LeftOuter, (plant#75954 <=> internalUUID#75968)
(990) Project
Arguments: [product#75953, plant#75954, orderDateTime#75955, productPlant#75965, internalUUID#75968, CASE WHEN isnotnull(timezonecode#75981) THEN timezonecode#75981 ELSE UTC END AS timezonecode#75983]
(991) Project
Arguments: [product#75953, plant#75954, orderDateTime#75955, productPlant#75965, timezonecode#75983]
(992) LogicalRelation
Arguments: parquet, [systemId#75984, internalUUID#75985, id#75986, displayId#75987, name#75988, baseUnitOfMeasure#75989, unitOfMeasures#75990, unitOfMeasureConversions#75991, productionAspect#75992, salesAspect#75993, procurementAspect#75994, productGroup#75995], false
(993) Repartition
Arguments: 25, true
(994) Join
Arguments: LeftOuter, (product#75953 = internalUUID#75985)
(995) Project
Arguments: [product#75953, plant#75954, orderDateTime#75955, productPlant#75965, timezonecode#75983, systemId#75984, internalUUID#75985, id#75986, displayId#75987, name#75988, baseUnitOfMeasure#75989, unitOfMeasures#75990, unitOfMeasureConversions#75991, productionAspect#75992, salesAspect#75993, procurementAspect#75994, productGroup#75995, filter(unitOfMeasureConversions#75991, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#75965.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#75965.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#75989.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#75989.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76018]
(996) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76018.quantityNumerator), true, [quantityNumerator#76019]
(997) Project
Arguments: [product#75953, plant#75954, orderDateTime#75955, productPlant#75965, timezonecode#75983, systemId#75984, internalUUID#75985, id#75986, displayId#75987, name#75988, baseUnitOfMeasure#75989, unitOfMeasures#75990, unitOfMeasureConversions#75991, productionAspect#75992, salesAspect#75993, procurementAspect#75994, productGroup#75995, filteredUnitOfMeasureConversions#76018, quantityNumerator#76019]
(998) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76018.quantityDenominator), true, [quantityDenominator#76032]
(999) Project
Arguments: [product#75953, plant#75954, orderDateTime#75955, productPlant#75965, timezonecode#75983, systemId#75984, internalUUID#75985, id#75986, displayId#75987, name#75988, baseUnitOfMeasure#75989, unitOfMeasures#75990, unitOfMeasureConversions#75991, productionAspect#75992, salesAspect#75993, procurementAspect#75994, productGroup#75995, filteredUnitOfMeasureConversions#76018, quantityNumerator#76019, quantityDenominator#76032]
(1000) Project
Arguments: [product#75953, plant#75954, orderDateTime#75955, productPlant#75965, timezonecode#75983, systemId#75984, internalUUID#75985, id#75986, displayId#75987, name#75988, baseUnitOfMeasure#75989, unitOfMeasures#75990, unitOfMeasureConversions#75991, productionAspect#75992, salesAspect#75993, procurementAspect#75994, productGroup#75995, filteredUnitOfMeasureConversions#76018, quantityNumerator#76019, quantityDenominator#76032, (cast(quantityNumerator#76019 as double) / cast(quantityDenominator#76032 as double)) AS outboundUnit#76034]
(1001) Project
Arguments: [product#75953, plant#75954, orderDateTime#75955, productPlant#75965, timezonecode#75983, systemId#75984, internalUUID#75985, id#75986, displayId#75987, name#75988, baseUnitOfMeasure#75989, unitOfMeasures#75990, unitOfMeasureConversions#75991, productionAspect#75992, salesAspect#75993, procurementAspect#75994, productGroup#75995, filteredUnitOfMeasureConversions#76018, quantityNumerator#76019, quantityDenominator#76032, CASE WHEN (isnull(outboundUnit#76034) OR (outboundUnit#76034 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76034 END AS outboundUnit#76048]
(1002) Project
Arguments: [product#75953, plant#75954, orderDateTime#75955, productPlant#75965, timezonecode#75983, outboundUnit#76048]
(1003) Join
Arguments: Inner, ((plantUuid#75945 = plant#75954) AND (productUuid#75947 = product#75953))
(1004) Filter
Arguments: (calculationDateTime#75939 <= orderDateTime#75955)
(1005) Project
Arguments: [plantUuid#75945 AS plant#76050, productUuid#75947 AS product#76051, storageLocId#75948, calculationDateTime#75939, quantity#75950]
(1006) LogicalRelation
Arguments: parquet, [systemId#76053, internalUUID#76054, product#76055, plant#76056, calculationDateTime#76057, stockQuantities#76058], false
(1007) Repartition
Arguments: 25, true
(1008) LogicalRelation
Arguments: parquet, [marketUnit#76059, description#76060, articleHierarchy#76061, defaultCurrency#76062, responsibilities#76063, replenishmentTypes#76064, distributionCenters#76065, assignedArticleHierarchyNodes#76066, minOrderQtySetting#76067, listingCheck#76068, odsSelection#76069, demandProfiles#76070, constraintProfiles#76071, optimizationProfiles#76072, orderGroupSplitProfiles#76073, supplierMinimumProfiles#76074, multipleRestrictionProfiles#76075, preferredUomSource#76076, handlingOfUnfulfilledDemands#76077, negligibleQuantitiesThreshold#76078, eventtype#76079, minOrderQtySettingInternal#76080], false
(1009) Repartition
Arguments: 25, true
(1010) Filter
Arguments: (marketUnit#76059 <=> Daily_grocery)
(1011) Project
Arguments: [marketUnit#76059, description#76060, articleHierarchy#76061, defaultCurrency#76062, responsibilities#76063, replenishmentTypes#76064, distributionCenters#76065, assignedArticleHierarchyNodes#76066, minOrderQtySetting#76067, listingCheck#76068, odsSelection#76069, demandProfiles#76070, constraintProfiles#76071, optimizationProfiles#76072, orderGroupSplitProfiles#76073, supplierMinimumProfiles#76074, multipleRestrictionProfiles#76075, preferredUomSource#76076, handlingOfUnfulfilledDemands#76077, negligibleQuantitiesThreshold#76078, eventtype#76079, minOrderQtySettingInternal#76080]
(1012) Project
Arguments: [distributionCenters#76065]
(1013) Generate
Arguments: explode(distributionCenters#76065), false, [distributionCenters#76082]
(1014) Project
Arguments: [distributionCenters#76082]
(1015) Generate
Arguments: explode(distributionCenters#76082.storageLocations), false, [storageLocations#76084]
(1016) Project
Arguments: [distributionCenters#76082.id AS plantId#76085, distributionCenters#76082.internalRefUUID AS plantUuid#76086, storageLocations#76084]
(1017) Project
Arguments: [plantId#76085, plantUuid#76086, storageLocations#76084.id AS storageLocId#76087, storageLocations#76084.internalRefUUID AS storageLocUuid#76088]
(1018) LogicalRelation
Arguments: parquet, [product#76089, plant#76090, orderDateTime#76091, planningStartDateTime#76092], false
(1019) RepartitionByExpression
Arguments: [product#76089, plant#76090], 25
(1020) Project
Arguments: [product#76089, plant#76090, orderDateTime#76091]
(1021) LogicalRelation
Arguments: parquet, [systemId#76094, internalUUID#76095, plant#76096, product#76097, blockedForReplenishmentStartingFrom#76098, productionAspect#76099, salesPlant#76100, listing#76101], false
(1022) Repartition
Arguments: 25, true
(1023) Project
Arguments: [systemId#76094, internalUUID#76095, plant#76096, product#76097, blockedForReplenishmentStartingFrom#76098, productionAspect#76099, salesPlant#76100, listing#76101, struct(systemId, systemId#76094, internalUUID, internalUUID#76095, plant, plant#76096, product, product#76097, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76098, productionAspect, productionAspect#76099, salesPlant, salesPlant#76100, listing, listing#76101) AS productPlant#76102]
(1024) Project
Arguments: [productPlant#76102]
(1025) Join
Arguments: LeftOuter, ((product#76089 <=> productPlant#76102.product.internalRefUUID) AND (plant#76090 <=> productPlant#76102.plant.internalRefUUID))
(1026) Project
Arguments: [product#76089, plant#76090, orderDateTime#76091, productPlant#76102]
(1027) SubqueryAlias
Arguments: wl
(1028) LogicalRelation
Arguments: parquet, [systemId#76133, internalUUID#76134, id#76135, displayId#76136, name#76137, category#76138, companyCode#76139, address#76140, mainDistributionChain#76141, mainPurchasingOrganization#76142, validPurchasingOrganizations#76143, productGroup#76144], false
(1029) Repartition
Arguments: 25, true
(1030) Project
Arguments: [internalUUID#76134, address#76140.timeZone.code AS timezonecode#76145]
(1031) Join
Arguments: LeftOuter, (plant#76090 <=> internalUUID#76134)
(1032) Project
Arguments: [product#76089, plant#76090, orderDateTime#76091, productPlant#76102, internalUUID#76134, CASE WHEN isnotnull(timezonecode#76145) THEN timezonecode#76145 ELSE UTC END AS timezonecode#76148]
(1033) Project
Arguments: [product#76089, plant#76090, orderDateTime#76091, productPlant#76102, timezonecode#76148]
(1034) LogicalRelation
Arguments: parquet, [systemId#76151, internalUUID#76152, id#76153, displayId#76154, name#76155, baseUnitOfMeasure#76156, unitOfMeasures#76157, unitOfMeasureConversions#76158, productionAspect#76159, salesAspect#76160, procurementAspect#76161, productGroup#76162], false
(1035) Repartition
Arguments: 25, true
(1036) Join
Arguments: LeftOuter, (product#76089 = internalUUID#76152)
(1037) Project
Arguments: [product#76089, plant#76090, orderDateTime#76091, productPlant#76102, timezonecode#76148, systemId#76151, internalUUID#76152, id#76153, displayId#76154, name#76155, baseUnitOfMeasure#76156, unitOfMeasures#76157, unitOfMeasureConversions#76158, productionAspect#76159, salesAspect#76160, procurementAspect#76161, productGroup#76162, filter(unitOfMeasureConversions#76158, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#76102.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#76102.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76156.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76156.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76178]
(1038) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76178.quantityNumerator), true, [quantityNumerator#76179]
(1039) Project
Arguments: [product#76089, plant#76090, orderDateTime#76091, productPlant#76102, timezonecode#76148, systemId#76151, internalUUID#76152, id#76153, displayId#76154, name#76155, baseUnitOfMeasure#76156, unitOfMeasures#76157, unitOfMeasureConversions#76158, productionAspect#76159, salesAspect#76160, procurementAspect#76161, productGroup#76162, filteredUnitOfMeasureConversions#76178, quantityNumerator#76179]
(1040) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76178.quantityDenominator), true, [quantityDenominator#76193]
(1041) Project
Arguments: [product#76089, plant#76090, orderDateTime#76091, productPlant#76102, timezonecode#76148, systemId#76151, internalUUID#76152, id#76153, displayId#76154, name#76155, baseUnitOfMeasure#76156, unitOfMeasures#76157, unitOfMeasureConversions#76158, productionAspect#76159, salesAspect#76160, procurementAspect#76161, productGroup#76162, filteredUnitOfMeasureConversions#76178, quantityNumerator#76179, quantityDenominator#76193]
(1042) Project
Arguments: [product#76089, plant#76090, orderDateTime#76091, productPlant#76102, timezonecode#76148, systemId#76151, internalUUID#76152, id#76153, displayId#76154, name#76155, baseUnitOfMeasure#76156, unitOfMeasures#76157, unitOfMeasureConversions#76158, productionAspect#76159, salesAspect#76160, procurementAspect#76161, productGroup#76162, filteredUnitOfMeasureConversions#76178, quantityNumerator#76179, quantityDenominator#76193, (cast(quantityNumerator#76179 as double) / cast(quantityDenominator#76193 as double)) AS outboundUnit#76207]
(1043) Project
Arguments: [product#76089, plant#76090, orderDateTime#76091, productPlant#76102, timezonecode#76148, systemId#76151, internalUUID#76152, id#76153, displayId#76154, name#76155, baseUnitOfMeasure#76156, unitOfMeasures#76157, unitOfMeasureConversions#76158, productionAspect#76159, salesAspect#76160, procurementAspect#76161, productGroup#76162, filteredUnitOfMeasureConversions#76178, quantityNumerator#76179, quantityDenominator#76193, CASE WHEN (isnull(outboundUnit#76207) OR (outboundUnit#76207 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76207 END AS outboundUnit#76208]
(1044) Project
Arguments: [product#76089, plant#76090, orderDateTime#76091, productPlant#76102, timezonecode#76148, outboundUnit#76208]
(1045) Project
Arguments: [plant#76090]
(1046) Deduplicate
Arguments: [plant#76090]
(1047) Join
Arguments: Inner, (plantUuid#76086 = plant#76090)
(1048) Project
Arguments: [plantId#76085, plantUuid#76086, storageLocId#76087, storageLocUuid#76088]
(1049) Join
Arguments: Inner, (plant#76056.internalRefUUID <=> plantUuid#76086)
(1050) Generate
Arguments: explode(filter(stockQuantities#76058, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#76088) AND (lambda x#69270.storageLocation.Id = storageLocId#76087)), lambda x#69270, false))), false, [stockQuantity#76212]
(1051) Project
Arguments: [systemId#76053, internalUUID#76054, product#76055, plant#76056, calculationDateTime#76057, stockQuantities#76058, plantId#76085, plantUuid#76086, storageLocId#76087, storageLocUuid#76088, stockQuantity#76212]
(1052) Aggregate
Arguments: [plantUuid#76086, internalUUID#76054, plant#76056, product#76055, systemId#76053], [plantUuid#76086, internalUUID#76054, plant#76056, product#76055, systemId#76053, first(calculationDateTime#76057, false) AS calculationDateTime#76215, collect_list(stockQuantity#76212, 0, 0) AS stockQuantities#76216]
(1053) Project
Arguments: [systemId#76053, internalUUID#76054, product#76055, plant#76056, calculationDateTime#76215, stockQuantities#76216]
(1054) Generate
Arguments: explode(stockQuantities#76216), false, [stockQuantity#76217]
(1055) Project
Arguments: [systemId#76053, internalUUID#76054, product#76055, plant#76056, calculationDateTime#76215, stockQuantities#76216, stockQuantity#76217]
(1056) Project
Arguments: [plant#76056.id AS plant#76219, plant#76056.internalRefUUID AS plantUuid#76220, product#76055.id AS product#76221, product#76055.internalRefUUID AS productUuid#76222, calculationDateTime#76215, stockQuantity#76217.storagelocation.id AS storageLocId#76223, stockQuantity#76217.storagelocation.internalRefUUID AS storageLocUuid#76224, stockQuantity#76217.quantity.measure AS quantity#76225, stockQuantity#76217.specialStockIndicator.code AS specialStockIndicator#76226, stockQuantity#76217.stockType.code AS stockType#76227]
(1057) Filter
Arguments: ((specialStockIndicator#76226 = ) AND (stockType#76227 = 01))
(1058) LogicalRelation
Arguments: parquet, [product#76230, plant#76231, orderDateTime#76232, planningStartDateTime#76233], false
(1059) RepartitionByExpression
Arguments: [product#76230, plant#76231], 25
(1060) Project
Arguments: [product#76230, plant#76231, orderDateTime#76232]
(1061) LogicalRelation
Arguments: parquet, [systemId#76234, internalUUID#76235, plant#76236, product#76237, blockedForReplenishmentStartingFrom#76238, productionAspect#76239, salesPlant#76240, listing#76241], false
(1062) Repartition
Arguments: 25, true
(1063) Project
Arguments: [systemId#76234, internalUUID#76235, plant#76236, product#76237, blockedForReplenishmentStartingFrom#76238, productionAspect#76239, salesPlant#76240, listing#76241, struct(systemId, systemId#76234, internalUUID, internalUUID#76235, plant, plant#76236, product, product#76237, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76238, productionAspect, productionAspect#76239, salesPlant, salesPlant#76240, listing, listing#76241) AS productPlant#76243]
(1064) Project
Arguments: [productPlant#76243]
(1065) Join
Arguments: LeftOuter, ((product#76230 <=> productPlant#76243.product.internalRefUUID) AND (plant#76231 <=> productPlant#76243.plant.internalRefUUID))
(1066) Project
Arguments: [product#76230, plant#76231, orderDateTime#76232, productPlant#76243]
(1067) SubqueryAlias
Arguments: wl
(1068) LogicalRelation
Arguments: parquet, [systemId#76265, internalUUID#76266, id#76267, displayId#76268, name#76269, category#76270, companyCode#76271, address#76272, mainDistributionChain#76273, mainPurchasingOrganization#76274, validPurchasingOrganizations#76275, productGroup#76276], false
(1069) Repartition
Arguments: 25, true
(1070) Project
Arguments: [internalUUID#76266, address#76272.timeZone.code AS timezonecode#76277]
(1071) Join
Arguments: LeftOuter, (plant#76231 <=> internalUUID#76266)
(1072) Project
Arguments: [product#76230, plant#76231, orderDateTime#76232, productPlant#76243, internalUUID#76266, CASE WHEN isnotnull(timezonecode#76277) THEN timezonecode#76277 ELSE UTC END AS timezonecode#76279]
(1073) Project
Arguments: [product#76230, plant#76231, orderDateTime#76232, productPlant#76243, timezonecode#76279]
(1074) LogicalRelation
Arguments: parquet, [systemId#76280, internalUUID#76281, id#76282, displayId#76283, name#76284, baseUnitOfMeasure#76285, unitOfMeasures#76286, unitOfMeasureConversions#76287, productionAspect#76288, salesAspect#76289, procurementAspect#76290, productGroup#76291], false
(1075) Repartition
Arguments: 25, true
(1076) Join
Arguments: LeftOuter, (product#76230 = internalUUID#76281)
(1077) Project
Arguments: [product#76230, plant#76231, orderDateTime#76232, productPlant#76243, timezonecode#76279, systemId#76280, internalUUID#76281, id#76282, displayId#76283, name#76284, baseUnitOfMeasure#76285, unitOfMeasures#76286, unitOfMeasureConversions#76287, productionAspect#76288, salesAspect#76289, procurementAspect#76290, productGroup#76291, filter(unitOfMeasureConversions#76287, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#76243.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#76243.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76285.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76285.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76306]
(1078) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76306.quantityNumerator), true, [quantityNumerator#76319]
(1079) Project
Arguments: [product#76230, plant#76231, orderDateTime#76232, productPlant#76243, timezonecode#76279, systemId#76280, internalUUID#76281, id#76282, displayId#76283, name#76284, baseUnitOfMeasure#76285, unitOfMeasures#76286, unitOfMeasureConversions#76287, productionAspect#76288, salesAspect#76289, procurementAspect#76290, productGroup#76291, filteredUnitOfMeasureConversions#76306, quantityNumerator#76319]
(1080) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76306.quantityDenominator), true, [quantityDenominator#76320]
(1081) Project
Arguments: [product#76230, plant#76231, orderDateTime#76232, productPlant#76243, timezonecode#76279, systemId#76280, internalUUID#76281, id#76282, displayId#76283, name#76284, baseUnitOfMeasure#76285, unitOfMeasures#76286, unitOfMeasureConversions#76287, productionAspect#76288, salesAspect#76289, procurementAspect#76290, productGroup#76291, filteredUnitOfMeasureConversions#76306, quantityNumerator#76319, quantityDenominator#76320]
(1082) Project
Arguments: [product#76230, plant#76231, orderDateTime#76232, productPlant#76243, timezonecode#76279, systemId#76280, internalUUID#76281, id#76282, displayId#76283, name#76284, baseUnitOfMeasure#76285, unitOfMeasures#76286, unitOfMeasureConversions#76287, productionAspect#76288, salesAspect#76289, procurementAspect#76290, productGroup#76291, filteredUnitOfMeasureConversions#76306, quantityNumerator#76319, quantityDenominator#76320, (cast(quantityNumerator#76319 as double) / cast(quantityDenominator#76320 as double)) AS outboundUnit#76321]
(1083) Project
Arguments: [product#76230, plant#76231, orderDateTime#76232, productPlant#76243, timezonecode#76279, systemId#76280, internalUUID#76281, id#76282, displayId#76283, name#76284, baseUnitOfMeasure#76285, unitOfMeasures#76286, unitOfMeasureConversions#76287, productionAspect#76288, salesAspect#76289, procurementAspect#76290, productGroup#76291, filteredUnitOfMeasureConversions#76306, quantityNumerator#76319, quantityDenominator#76320, CASE WHEN (isnull(outboundUnit#76321) OR (outboundUnit#76321 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76321 END AS outboundUnit#76324]
(1084) Project
Arguments: [product#76230, plant#76231, orderDateTime#76232, productPlant#76243, timezonecode#76279, outboundUnit#76324]
(1085) Join
Arguments: Inner, ((plantUuid#76220 = plant#76231) AND (productUuid#76222 = product#76230))
(1086) Filter
Arguments: (calculationDateTime#76215 <= orderDateTime#76232)
(1087) Project
Arguments: [plantUuid#76220 AS plant#76326, productUuid#76222 AS product#76327, storageLocId#76223, calculationDateTime#76215, quantity#76225]
(1088) Aggregate
Arguments: [plant#76326, product#76327, storageLocId#76223], [plant#76326, product#76327, storageLocId#76223, max(calculationDateTime#76215) AS max_calc_datetime#76328]
(1089) Join
Arguments: Inner, ((((plant#76050 <=> plant#76326) AND (product#76051 <=> product#76327)) AND (storageLocId#75948 <=> storageLocId#76223)) AND (calculationDateTime#75939 <=> max_calc_datetime#76328))
(1090) Project
Arguments: [plant#76050, product#76051, storageLocId#75948, calculationDateTime#75939, quantity#75950]
(1091) Aggregate
Arguments: [product#76051, plant#76050], [product#76051, plant#76050, sum(quantity#75950) AS quantitySum#76329, min(calculationDateTime#75939) AS minCalculationDateTime#76330]
(1092) Project
Arguments: [product#76051, plant#76050, quantitySum#76329, minCalculationDateTime#76330, round(quantitySum#76329, 0) AS roundedQuantitySum#76332]
(1093) Join
Arguments: LeftOuter, ((plant#75697 = plant#76050) AND (product#75696 = product#76051))
(1094) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, outboundUnit#75765, roundedQuantitySum#76332, minCalculationDateTime#76330]
(1095) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, outboundUnit#75765, roundedQuantitySum#76332, minCalculationDateTime#76330, CASE WHEN isnotnull(minCalculationDateTime#76330) THEN minCalculationDateTime#76330 ELSE orderDateTime#75698 END AS stockDatetime#76334]
(1096) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, outboundUnit#75765, roundedQuantitySum#76332, minCalculationDateTime#76330, stockDatetime#76334, CASE WHEN isnotnull(roundedQuantitySum#76332) THEN array(roundedQuantitySum#76332) ELSE array(0.0) END AS stockBatchQuantities#76335]
(1097) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, outboundUnit#75765, roundedQuantitySum#76332, minCalculationDateTime#76330, stockDatetime#76334, stockBatchQuantities#76335, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#76338]
(1098) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, outboundUnit#75765, roundedQuantitySum#76332, stockDatetime#76334, stockBatchQuantities#76335, stockBatchShelfLifeEndDatetimes#76338]
(1099) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, outboundUnit#75765, stockDatetime#76334, stockBatchQuantities#76335, stockBatchShelfLifeEndDatetimes#76338]
(1100) LogicalRelation
Arguments: parquet, [product#76340, plant#76341, orderDateTime#76342, planningStartDateTime#76343], false
(1101) RepartitionByExpression
Arguments: [product#76340, plant#76341], 25
(1102) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342]
(1103) LogicalRelation
Arguments: parquet, [systemId#76344, internalUUID#76345, plant#76346, product#76347, blockedForReplenishmentStartingFrom#76348, productionAspect#76349, salesPlant#76350, listing#76351], false
(1104) Repartition
Arguments: 25, true
(1105) Project
Arguments: [systemId#76344, internalUUID#76345, plant#76346, product#76347, blockedForReplenishmentStartingFrom#76348, productionAspect#76349, salesPlant#76350, listing#76351, struct(systemId, systemId#76344, internalUUID, internalUUID#76345, plant, plant#76346, product, product#76347, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76348, productionAspect, productionAspect#76349, salesPlant, salesPlant#76350, listing, listing#76351) AS productPlant#76354]
(1106) Project
Arguments: [productPlant#76354]
(1107) Join
Arguments: LeftOuter, ((product#76340 <=> productPlant#76354.product.internalRefUUID) AND (plant#76341 <=> productPlant#76354.plant.internalRefUUID))
(1108) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354]
(1109) SubqueryAlias
Arguments: wl
(1110) LogicalRelation
Arguments: parquet, [systemId#76356, internalUUID#76357, id#76358, displayId#76359, name#76360, category#76361, companyCode#76362, address#76363, mainDistributionChain#76364, mainPurchasingOrganization#76365, validPurchasingOrganizations#76366, productGroup#76367], false
(1111) Repartition
Arguments: 25, true
(1112) Project
Arguments: [internalUUID#76357, address#76363.timeZone.code AS timezonecode#76368]
(1113) Join
Arguments: LeftOuter, (plant#76341 <=> internalUUID#76357)
(1114) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, internalUUID#76357, CASE WHEN isnotnull(timezonecode#76368) THEN timezonecode#76368 ELSE UTC END AS timezonecode#76371]
(1115) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371]
(1116) LogicalRelation
Arguments: parquet, [systemId#76373, internalUUID#76374, id#76375, displayId#76376, name#76377, baseUnitOfMeasure#76378, unitOfMeasures#76379, unitOfMeasureConversions#76380, productionAspect#76381, salesAspect#76382, procurementAspect#76383, productGroup#76384], false
(1117) Repartition
Arguments: 25, true
(1118) Join
Arguments: LeftOuter, (product#76340 = internalUUID#76374)
(1119) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, systemId#76373, internalUUID#76374, id#76375, displayId#76376, name#76377, baseUnitOfMeasure#76378, unitOfMeasures#76379, unitOfMeasureConversions#76380, productionAspect#76381, salesAspect#76382, procurementAspect#76383, productGroup#76384, filter(unitOfMeasureConversions#76380, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#76354.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#76354.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76378.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76378.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76411]
(1120) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76411.quantityNumerator), true, [quantityNumerator#76412]
(1121) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, systemId#76373, internalUUID#76374, id#76375, displayId#76376, name#76377, baseUnitOfMeasure#76378, unitOfMeasures#76379, unitOfMeasureConversions#76380, productionAspect#76381, salesAspect#76382, procurementAspect#76383, productGroup#76384, filteredUnitOfMeasureConversions#76411, quantityNumerator#76412]
(1122) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76411.quantityDenominator), true, [quantityDenominator#76426]
(1123) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, systemId#76373, internalUUID#76374, id#76375, displayId#76376, name#76377, baseUnitOfMeasure#76378, unitOfMeasures#76379, unitOfMeasureConversions#76380, productionAspect#76381, salesAspect#76382, procurementAspect#76383, productGroup#76384, filteredUnitOfMeasureConversions#76411, quantityNumerator#76412, quantityDenominator#76426]
(1124) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, systemId#76373, internalUUID#76374, id#76375, displayId#76376, name#76377, baseUnitOfMeasure#76378, unitOfMeasures#76379, unitOfMeasureConversions#76380, productionAspect#76381, salesAspect#76382, procurementAspect#76383, productGroup#76384, filteredUnitOfMeasureConversions#76411, quantityNumerator#76412, quantityDenominator#76426, (cast(quantityNumerator#76412 as double) / cast(quantityDenominator#76426 as double)) AS outboundUnit#76427]
(1125) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, systemId#76373, internalUUID#76374, id#76375, displayId#76376, name#76377, baseUnitOfMeasure#76378, unitOfMeasures#76379, unitOfMeasureConversions#76380, productionAspect#76381, salesAspect#76382, procurementAspect#76383, productGroup#76384, filteredUnitOfMeasureConversions#76411, quantityNumerator#76412, quantityDenominator#76426, CASE WHEN (isnull(outboundUnit#76427) OR (outboundUnit#76427 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76427 END AS outboundUnit#76430]
(1126) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430]
(1127) LogicalRelation
Arguments: parquet, [systemId#76432, internalUUID#76433, product#76434, plant#76435, calculationDateTime#76436, stockQuantities#76437], false
(1128) Repartition
Arguments: 25, true
(1129) LogicalRelation
Arguments: parquet, [marketUnit#76438, description#76439, articleHierarchy#76440, defaultCurrency#76441, responsibilities#76442, replenishmentTypes#76443, distributionCenters#76444, assignedArticleHierarchyNodes#76445, minOrderQtySetting#76446, listingCheck#76447, odsSelection#76448, demandProfiles#76449, constraintProfiles#76450, optimizationProfiles#76451, orderGroupSplitProfiles#76452, supplierMinimumProfiles#76453, multipleRestrictionProfiles#76454, preferredUomSource#76455, handlingOfUnfulfilledDemands#76456, negligibleQuantitiesThreshold#76457, eventtype#76458, minOrderQtySettingInternal#76459], false
(1130) Repartition
Arguments: 25, true
(1131) Filter
Arguments: (marketUnit#76438 <=> Daily_grocery)
(1132) Project
Arguments: [marketUnit#76438, description#76439, articleHierarchy#76440, defaultCurrency#76441, responsibilities#76442, replenishmentTypes#76443, distributionCenters#76444, assignedArticleHierarchyNodes#76445, minOrderQtySetting#76446, listingCheck#76447, odsSelection#76448, demandProfiles#76449, constraintProfiles#76450, optimizationProfiles#76451, orderGroupSplitProfiles#76452, supplierMinimumProfiles#76453, multipleRestrictionProfiles#76454, preferredUomSource#76455, handlingOfUnfulfilledDemands#76456, negligibleQuantitiesThreshold#76457, eventtype#76458, minOrderQtySettingInternal#76459]
(1133) Project
Arguments: [distributionCenters#76444]
(1134) Generate
Arguments: explode(distributionCenters#76444), false, [distributionCenters#76461]
(1135) Project
Arguments: [distributionCenters#76461]
(1136) Generate
Arguments: explode(distributionCenters#76461.storageLocations), false, [storageLocations#76462]
(1137) Project
Arguments: [distributionCenters#76461.id AS plantId#76464, distributionCenters#76461.internalRefUUID AS plantUuid#76465, storageLocations#76462]
(1138) Project
Arguments: [plantId#76464, plantUuid#76465, storageLocations#76462.id AS storageLocId#76466, storageLocations#76462.internalRefUUID AS storageLocUuid#76467]
(1139) LogicalRelation
Arguments: parquet, [product#76468, plant#76469, orderDateTime#76470, planningStartDateTime#76471], false
(1140) RepartitionByExpression
Arguments: [product#76468, plant#76469], 25
(1141) Project
Arguments: [product#76468, plant#76469, orderDateTime#76470]
(1142) LogicalRelation
Arguments: parquet, [systemId#76500, internalUUID#76501, plant#76502, product#76503, blockedForReplenishmentStartingFrom#76504, productionAspect#76505, salesPlant#76506, listing#76507], false
(1143) Repartition
Arguments: 25, true
(1144) Project
Arguments: [systemId#76500, internalUUID#76501, plant#76502, product#76503, blockedForReplenishmentStartingFrom#76504, productionAspect#76505, salesPlant#76506, listing#76507, struct(systemId, systemId#76500, internalUUID, internalUUID#76501, plant, plant#76502, product, product#76503, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76504, productionAspect, productionAspect#76505, salesPlant, salesPlant#76506, listing, listing#76507) AS productPlant#76508]
(1145) Project
Arguments: [productPlant#76508]
(1146) Join
Arguments: LeftOuter, ((product#76468 <=> productPlant#76508.product.internalRefUUID) AND (plant#76469 <=> productPlant#76508.plant.internalRefUUID))
(1147) Project
Arguments: [product#76468, plant#76469, orderDateTime#76470, productPlant#76508]
(1148) SubqueryAlias
Arguments: wl
(1149) LogicalRelation
Arguments: parquet, [systemId#76510, internalUUID#76511, id#76512, displayId#76513, name#76514, category#76516, companyCode#76517, address#76518, mainDistributionChain#76519, mainPurchasingOrganization#76520, validPurchasingOrganizations#76521, productGroup#76522], false
(1150) Repartition
Arguments: 25, true
(1151) Project
Arguments: [internalUUID#76511, address#76518.timeZone.code AS timezonecode#76527]
(1152) Join
Arguments: LeftOuter, (plant#76469 <=> internalUUID#76511)
(1153) Project
Arguments: [product#76468, plant#76469, orderDateTime#76470, productPlant#76508, internalUUID#76511, CASE WHEN isnotnull(timezonecode#76527) THEN timezonecode#76527 ELSE UTC END AS timezonecode#76540]
(1154) Project
Arguments: [product#76468, plant#76469, orderDateTime#76470, productPlant#76508, timezonecode#76540]
(1155) LogicalRelation
Arguments: parquet, [systemId#76542, internalUUID#76543, id#76544, displayId#76545, name#76546, baseUnitOfMeasure#76547, unitOfMeasures#76548, unitOfMeasureConversions#76549, productionAspect#76550, salesAspect#76551, procurementAspect#76552, productGroup#76553], false
(1156) Repartition
Arguments: 25, true
(1157) Join
Arguments: LeftOuter, (product#76468 = internalUUID#76543)
(1158) Project
Arguments: [product#76468, plant#76469, orderDateTime#76470, productPlant#76508, timezonecode#76540, systemId#76542, internalUUID#76543, id#76544, displayId#76545, name#76546, baseUnitOfMeasure#76547, unitOfMeasures#76548, unitOfMeasureConversions#76549, productionAspect#76550, salesAspect#76551, procurementAspect#76552, productGroup#76553, filter(unitOfMeasureConversions#76549, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#76508.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#76508.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76547.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76547.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76580]
(1159) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76580.quantityNumerator), true, [quantityNumerator#76582]
(1160) Project
Arguments: [product#76468, plant#76469, orderDateTime#76470, productPlant#76508, timezonecode#76540, systemId#76542, internalUUID#76543, id#76544, displayId#76545, name#76546, baseUnitOfMeasure#76547, unitOfMeasures#76548, unitOfMeasureConversions#76549, productionAspect#76550, salesAspect#76551, procurementAspect#76552, productGroup#76553, filteredUnitOfMeasureConversions#76580, quantityNumerator#76582]
(1161) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76580.quantityDenominator), true, [quantityDenominator#76584]
(1162) Project
Arguments: [product#76468, plant#76469, orderDateTime#76470, productPlant#76508, timezonecode#76540, systemId#76542, internalUUID#76543, id#76544, displayId#76545, name#76546, baseUnitOfMeasure#76547, unitOfMeasures#76548, unitOfMeasureConversions#76549, productionAspect#76550, salesAspect#76551, procurementAspect#76552, productGroup#76553, filteredUnitOfMeasureConversions#76580, quantityNumerator#76582, quantityDenominator#76584]
(1163) Project
Arguments: [product#76468, plant#76469, orderDateTime#76470, productPlant#76508, timezonecode#76540, systemId#76542, internalUUID#76543, id#76544, displayId#76545, name#76546, baseUnitOfMeasure#76547, unitOfMeasures#76548, unitOfMeasureConversions#76549, productionAspect#76550, salesAspect#76551, procurementAspect#76552, productGroup#76553, filteredUnitOfMeasureConversions#76580, quantityNumerator#76582, quantityDenominator#76584, (cast(quantityNumerator#76582 as double) / cast(quantityDenominator#76584 as double)) AS outboundUnit#76586]
(1164) Project
Arguments: [product#76468, plant#76469, orderDateTime#76470, productPlant#76508, timezonecode#76540, systemId#76542, internalUUID#76543, id#76544, displayId#76545, name#76546, baseUnitOfMeasure#76547, unitOfMeasures#76548, unitOfMeasureConversions#76549, productionAspect#76550, salesAspect#76551, procurementAspect#76552, productGroup#76553, filteredUnitOfMeasureConversions#76580, quantityNumerator#76582, quantityDenominator#76584, CASE WHEN (isnull(outboundUnit#76586) OR (outboundUnit#76586 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76586 END AS outboundUnit#76589]
(1165) Project
Arguments: [product#76468, plant#76469, orderDateTime#76470, productPlant#76508, timezonecode#76540, outboundUnit#76589]
(1166) Project
Arguments: [plant#76469]
(1167) Deduplicate
Arguments: [plant#76469]
(1168) Join
Arguments: Inner, (plantUuid#76465 = plant#76469)
(1169) Project
Arguments: [plantId#76464, plantUuid#76465, storageLocId#76466, storageLocUuid#76467]
(1170) Join
Arguments: Inner, (plant#76435.internalRefUUID <=> plantUuid#76465)
(1171) Generate
Arguments: explode(filter(stockQuantities#76437, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#76467) AND (lambda x#69270.storageLocation.Id = storageLocId#76466)), lambda x#69270, false))), false, [stockQuantity#76591]
(1172) Project
Arguments: [systemId#76432, internalUUID#76433, product#76434, plant#76435, calculationDateTime#76436, stockQuantities#76437, plantId#76464, plantUuid#76465, storageLocId#76466, storageLocUuid#76467, stockQuantity#76591]
(1173) Aggregate
Arguments: [plantUuid#76465, internalUUID#76433, plant#76435, product#76434, systemId#76432], [plantUuid#76465, internalUUID#76433, plant#76435, product#76434, systemId#76432, first(calculationDateTime#76436, false) AS calculationDateTime#76595, collect_list(stockQuantity#76591, 0, 0) AS stockQuantities#76596]
(1174) Project
Arguments: [systemId#76432, internalUUID#76433, product#76434, plant#76435, calculationDateTime#76595, stockQuantities#76596]
(1175) Generate
Arguments: explode(stockQuantities#76596), false, [stockQuantity#76597]
(1176) Project
Arguments: [systemId#76432, internalUUID#76433, product#76434, plant#76435, calculationDateTime#76595, stockQuantities#76596, stockQuantity#76597]
(1177) Project
Arguments: [plant#76435.id AS plant#76598, plant#76435.internalRefUUID AS plantUuid#76599, product#76434.id AS product#76600, product#76434.internalRefUUID AS productUuid#76601, calculationDateTime#76595, stockQuantity#76597.storagelocation.id AS storageLocId#76602, stockQuantity#76597.storagelocation.internalRefUUID AS storageLocUuid#76603, stockQuantity#76597.quantity.measure AS quantity#76604, stockQuantity#76597.specialStockIndicator.code AS specialStockIndicator#76605, stockQuantity#76597.stockType.code AS stockType#76606]
(1178) Filter
Arguments: ((specialStockIndicator#76605 = ) AND (stockType#76606 = 01))
(1179) LogicalRelation
Arguments: parquet, [product#76607, plant#76608, orderDateTime#76609, planningStartDateTime#76610], false
(1180) RepartitionByExpression
Arguments: [product#76607, plant#76608], 25
(1181) Project
Arguments: [product#76607, plant#76608, orderDateTime#76609]
(1182) LogicalRelation
Arguments: parquet, [systemId#76611, internalUUID#76612, plant#76613, product#76614, blockedForReplenishmentStartingFrom#76615, productionAspect#76616, salesPlant#76617, listing#76618], false
(1183) Repartition
Arguments: 25, true
(1184) Project
Arguments: [systemId#76611, internalUUID#76612, plant#76613, product#76614, blockedForReplenishmentStartingFrom#76615, productionAspect#76616, salesPlant#76617, listing#76618, struct(systemId, systemId#76611, internalUUID, internalUUID#76612, plant, plant#76613, product, product#76614, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76615, productionAspect, productionAspect#76616, salesPlant, salesPlant#76617, listing, listing#76618) AS productPlant#76628]
(1185) Project
Arguments: [productPlant#76628]
(1186) Join
Arguments: LeftOuter, ((product#76607 <=> productPlant#76628.product.internalRefUUID) AND (plant#76608 <=> productPlant#76628.plant.internalRefUUID))
(1187) Project
Arguments: [product#76607, plant#76608, orderDateTime#76609, productPlant#76628]
(1188) SubqueryAlias
Arguments: wl
(1189) LogicalRelation
Arguments: parquet, [systemId#76641, internalUUID#76642, id#76643, displayId#76644, name#76645, category#76646, companyCode#76647, address#76648, mainDistributionChain#76649, mainPurchasingOrganization#76650, validPurchasingOrganizations#76651, productGroup#76652], false
(1190) Repartition
Arguments: 25, true
(1191) Project
Arguments: [internalUUID#76642, address#76648.timeZone.code AS timezonecode#76653]
(1192) Join
Arguments: LeftOuter, (plant#76608 <=> internalUUID#76642)
(1193) Project
Arguments: [product#76607, plant#76608, orderDateTime#76609, productPlant#76628, internalUUID#76642, CASE WHEN isnotnull(timezonecode#76653) THEN timezonecode#76653 ELSE UTC END AS timezonecode#76655]
(1194) Project
Arguments: [product#76607, plant#76608, orderDateTime#76609, productPlant#76628, timezonecode#76655]
(1195) LogicalRelation
Arguments: parquet, [systemId#76668, internalUUID#76669, id#76670, displayId#76671, name#76672, baseUnitOfMeasure#76673, unitOfMeasures#76674, unitOfMeasureConversions#76675, productionAspect#76676, salesAspect#76677, procurementAspect#76678, productGroup#76679], false
(1196) Repartition
Arguments: 25, true
(1197) Join
Arguments: LeftOuter, (product#76607 = internalUUID#76669)
(1198) Project
Arguments: [product#76607, plant#76608, orderDateTime#76609, productPlant#76628, timezonecode#76655, systemId#76668, internalUUID#76669, id#76670, displayId#76671, name#76672, baseUnitOfMeasure#76673, unitOfMeasures#76674, unitOfMeasureConversions#76675, productionAspect#76676, salesAspect#76677, procurementAspect#76678, productGroup#76679, filter(unitOfMeasureConversions#76675, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#76628.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#76628.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76673.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76673.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76694]
(1199) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76694.quantityNumerator), true, [quantityNumerator#76695]
(1200) Project
Arguments: [product#76607, plant#76608, orderDateTime#76609, productPlant#76628, timezonecode#76655, systemId#76668, internalUUID#76669, id#76670, displayId#76671, name#76672, baseUnitOfMeasure#76673, unitOfMeasures#76674, unitOfMeasureConversions#76675, productionAspect#76676, salesAspect#76677, procurementAspect#76678, productGroup#76679, filteredUnitOfMeasureConversions#76694, quantityNumerator#76695]
(1201) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76694.quantityDenominator), true, [quantityDenominator#76696]
(1202) Project
Arguments: [product#76607, plant#76608, orderDateTime#76609, productPlant#76628, timezonecode#76655, systemId#76668, internalUUID#76669, id#76670, displayId#76671, name#76672, baseUnitOfMeasure#76673, unitOfMeasures#76674, unitOfMeasureConversions#76675, productionAspect#76676, salesAspect#76677, procurementAspect#76678, productGroup#76679, filteredUnitOfMeasureConversions#76694, quantityNumerator#76695, quantityDenominator#76696]
(1203) Project
Arguments: [product#76607, plant#76608, orderDateTime#76609, productPlant#76628, timezonecode#76655, systemId#76668, internalUUID#76669, id#76670, displayId#76671, name#76672, baseUnitOfMeasure#76673, unitOfMeasures#76674, unitOfMeasureConversions#76675, productionAspect#76676, salesAspect#76677, procurementAspect#76678, productGroup#76679, filteredUnitOfMeasureConversions#76694, quantityNumerator#76695, quantityDenominator#76696, (cast(quantityNumerator#76695 as double) / cast(quantityDenominator#76696 as double)) AS outboundUnit#76699]
(1204) Project
Arguments: [product#76607, plant#76608, orderDateTime#76609, productPlant#76628, timezonecode#76655, systemId#76668, internalUUID#76669, id#76670, displayId#76671, name#76672, baseUnitOfMeasure#76673, unitOfMeasures#76674, unitOfMeasureConversions#76675, productionAspect#76676, salesAspect#76677, procurementAspect#76678, productGroup#76679, filteredUnitOfMeasureConversions#76694, quantityNumerator#76695, quantityDenominator#76696, CASE WHEN (isnull(outboundUnit#76699) OR (outboundUnit#76699 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76699 END AS outboundUnit#76751]
(1205) Project
Arguments: [product#76607, plant#76608, orderDateTime#76609, productPlant#76628, timezonecode#76655, outboundUnit#76751]
(1206) Join
Arguments: Inner, ((plantUuid#76599 = plant#76608) AND (productUuid#76601 = product#76607))
(1207) Filter
Arguments: (calculationDateTime#76595 <= orderDateTime#76609)
(1208) Project
Arguments: [plantUuid#76599 AS plant#76765, productUuid#76601 AS product#76766, storageLocId#76602, calculationDateTime#76595, quantity#76604]
(1209) LogicalRelation
Arguments: parquet, [systemId#76768, internalUUID#76769, product#76770, plant#76771, calculationDateTime#76772, stockQuantities#76773], false
(1210) Repartition
Arguments: 25, true
(1211) LogicalRelation
Arguments: parquet, [marketUnit#76774, description#76775, articleHierarchy#76776, defaultCurrency#76777, responsibilities#76778, replenishmentTypes#76779, distributionCenters#76780, assignedArticleHierarchyNodes#76781, minOrderQtySetting#76782, listingCheck#76783, odsSelection#76784, demandProfiles#76785, constraintProfiles#76786, optimizationProfiles#76787, orderGroupSplitProfiles#76788, supplierMinimumProfiles#76789, multipleRestrictionProfiles#76790, preferredUomSource#76791, handlingOfUnfulfilledDemands#76792, negligibleQuantitiesThreshold#76793, eventtype#76794, minOrderQtySettingInternal#76795], false
(1212) Repartition
Arguments: 25, true
(1213) Filter
Arguments: (marketUnit#76774 <=> Daily_grocery)
(1214) Project
Arguments: [marketUnit#76774, description#76775, articleHierarchy#76776, defaultCurrency#76777, responsibilities#76778, replenishmentTypes#76779, distributionCenters#76780, assignedArticleHierarchyNodes#76781, minOrderQtySetting#76782, listingCheck#76783, odsSelection#76784, demandProfiles#76785, constraintProfiles#76786, optimizationProfiles#76787, orderGroupSplitProfiles#76788, supplierMinimumProfiles#76789, multipleRestrictionProfiles#76790, preferredUomSource#76791, handlingOfUnfulfilledDemands#76792, negligibleQuantitiesThreshold#76793, eventtype#76794, minOrderQtySettingInternal#76795]
(1215) Project
Arguments: [distributionCenters#76780]
(1216) Generate
Arguments: explode(distributionCenters#76780), false, [distributionCenters#76809]
(1217) Project
Arguments: [distributionCenters#76809]
(1218) Generate
Arguments: explode(distributionCenters#76809.storageLocations), false, [storageLocations#76810]
(1219) Project
Arguments: [distributionCenters#76809.id AS plantId#76811, distributionCenters#76809.internalRefUUID AS plantUuid#76812, storageLocations#76810]
(1220) Project
Arguments: [plantId#76811, plantUuid#76812, storageLocations#76810.id AS storageLocId#76813, storageLocations#76810.internalRefUUID AS storageLocUuid#76814]
(1221) LogicalRelation
Arguments: parquet, [product#76815, plant#76816, orderDateTime#76817, planningStartDateTime#76818], false
(1222) RepartitionByExpression
Arguments: [product#76815, plant#76816], 25
(1223) Project
Arguments: [product#76815, plant#76816, orderDateTime#76817]
(1224) LogicalRelation
Arguments: parquet, [systemId#76820, internalUUID#76821, plant#76822, product#76823, blockedForReplenishmentStartingFrom#76824, productionAspect#76825, salesPlant#76826, listing#76827], false
(1225) Repartition
Arguments: 25, true
(1226) Project
Arguments: [systemId#76820, internalUUID#76821, plant#76822, product#76823, blockedForReplenishmentStartingFrom#76824, productionAspect#76825, salesPlant#76826, listing#76827, struct(systemId, systemId#76820, internalUUID, internalUUID#76821, plant, plant#76822, product, product#76823, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76824, productionAspect, productionAspect#76825, salesPlant, salesPlant#76826, listing, listing#76827) AS productPlant#76829]
(1227) Project
Arguments: [productPlant#76829]
(1228) Join
Arguments: LeftOuter, ((product#76815 <=> productPlant#76829.product.internalRefUUID) AND (plant#76816 <=> productPlant#76829.plant.internalRefUUID))
(1229) Project
Arguments: [product#76815, plant#76816, orderDateTime#76817, productPlant#76829]
(1230) SubqueryAlias
Arguments: wl
(1231) LogicalRelation
Arguments: parquet, [systemId#76831, internalUUID#76832, id#76833, displayId#76834, name#76835, category#76836, companyCode#76837, address#76838, mainDistributionChain#76839, mainPurchasingOrganization#76840, validPurchasingOrganizations#76841, productGroup#76842], false
(1232) Repartition
Arguments: 25, true
(1233) Project
Arguments: [internalUUID#76832, address#76838.timeZone.code AS timezonecode#76843]
(1234) Join
Arguments: LeftOuter, (plant#76816 <=> internalUUID#76832)
(1235) Project
Arguments: [product#76815, plant#76816, orderDateTime#76817, productPlant#76829, internalUUID#76832, CASE WHEN isnotnull(timezonecode#76843) THEN timezonecode#76843 ELSE UTC END AS timezonecode#76844]
(1236) Project
Arguments: [product#76815, plant#76816, orderDateTime#76817, productPlant#76829, timezonecode#76844]
(1237) LogicalRelation
Arguments: parquet, [systemId#76845, internalUUID#76846, id#76847, displayId#76848, name#76849, baseUnitOfMeasure#76850, unitOfMeasures#76851, unitOfMeasureConversions#76852, productionAspect#76853, salesAspect#76854, procurementAspect#76855, productGroup#76856], false
(1238) Repartition
Arguments: 25, true
(1239) Join
Arguments: LeftOuter, (product#76815 = internalUUID#76846)
(1240) Project
Arguments: [product#76815, plant#76816, orderDateTime#76817, productPlant#76829, timezonecode#76844, systemId#76845, internalUUID#76846, id#76847, displayId#76848, name#76849, baseUnitOfMeasure#76850, unitOfMeasures#76851, unitOfMeasureConversions#76852, productionAspect#76853, salesAspect#76854, procurementAspect#76855, productGroup#76856, filter(unitOfMeasureConversions#76852, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#76829.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#76829.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76850.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76850.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76859]
(1241) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76859.quantityNumerator), true, [quantityNumerator#76860]
(1242) Project
Arguments: [product#76815, plant#76816, orderDateTime#76817, productPlant#76829, timezonecode#76844, systemId#76845, internalUUID#76846, id#76847, displayId#76848, name#76849, baseUnitOfMeasure#76850, unitOfMeasures#76851, unitOfMeasureConversions#76852, productionAspect#76853, salesAspect#76854, procurementAspect#76855, productGroup#76856, filteredUnitOfMeasureConversions#76859, quantityNumerator#76860]
(1243) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76859.quantityDenominator), true, [quantityDenominator#76861]
(1244) Project
Arguments: [product#76815, plant#76816, orderDateTime#76817, productPlant#76829, timezonecode#76844, systemId#76845, internalUUID#76846, id#76847, displayId#76848, name#76849, baseUnitOfMeasure#76850, unitOfMeasures#76851, unitOfMeasureConversions#76852, productionAspect#76853, salesAspect#76854, procurementAspect#76855, productGroup#76856, filteredUnitOfMeasureConversions#76859, quantityNumerator#76860, quantityDenominator#76861]
(1245) Project
Arguments: [product#76815, plant#76816, orderDateTime#76817, productPlant#76829, timezonecode#76844, systemId#76845, internalUUID#76846, id#76847, displayId#76848, name#76849, baseUnitOfMeasure#76850, unitOfMeasures#76851, unitOfMeasureConversions#76852, productionAspect#76853, salesAspect#76854, procurementAspect#76855, productGroup#76856, filteredUnitOfMeasureConversions#76859, quantityNumerator#76860, quantityDenominator#76861, (cast(quantityNumerator#76860 as double) / cast(quantityDenominator#76861 as double)) AS outboundUnit#76863]
(1246) Project
Arguments: [product#76815, plant#76816, orderDateTime#76817, productPlant#76829, timezonecode#76844, systemId#76845, internalUUID#76846, id#76847, displayId#76848, name#76849, baseUnitOfMeasure#76850, unitOfMeasures#76851, unitOfMeasureConversions#76852, productionAspect#76853, salesAspect#76854, procurementAspect#76855, productGroup#76856, filteredUnitOfMeasureConversions#76859, quantityNumerator#76860, quantityDenominator#76861, CASE WHEN (isnull(outboundUnit#76863) OR (outboundUnit#76863 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76863 END AS outboundUnit#76864]
(1247) Project
Arguments: [product#76815, plant#76816, orderDateTime#76817, productPlant#76829, timezonecode#76844, outboundUnit#76864]
(1248) Project
Arguments: [plant#76816]
(1249) Deduplicate
Arguments: [plant#76816]
(1250) Join
Arguments: Inner, (plantUuid#76812 = plant#76816)
(1251) Project
Arguments: [plantId#76811, plantUuid#76812, storageLocId#76813, storageLocUuid#76814]
(1252) Join
Arguments: Inner, (plant#76771.internalRefUUID <=> plantUuid#76812)
(1253) Generate
Arguments: explode(filter(stockQuantities#76773, lambdafunction(((lambda x#69270.storageLocation.internalRefUuid = storageLocUuid#76814) AND (lambda x#69270.storageLocation.Id = storageLocId#76813)), lambda x#69270, false))), false, [stockQuantity#76881]
(1254) Project
Arguments: [systemId#76768, internalUUID#76769, product#76770, plant#76771, calculationDateTime#76772, stockQuantities#76773, plantId#76811, plantUuid#76812, storageLocId#76813, storageLocUuid#76814, stockQuantity#76881]
(1255) Aggregate
Arguments: [plantUuid#76812, internalUUID#76769, plant#76771, product#76770, systemId#76768], [plantUuid#76812, internalUUID#76769, plant#76771, product#76770, systemId#76768, first(calculationDateTime#76772, false) AS calculationDateTime#76890, collect_list(stockQuantity#76881, 0, 0) AS stockQuantities#76891]
(1256) Project
Arguments: [systemId#76768, internalUUID#76769, product#76770, plant#76771, calculationDateTime#76890, stockQuantities#76891]
(1257) Generate
Arguments: explode(stockQuantities#76891), false, [stockQuantity#76893]
(1258) Project
Arguments: [systemId#76768, internalUUID#76769, product#76770, plant#76771, calculationDateTime#76890, stockQuantities#76891, stockQuantity#76893]
(1259) Project
Arguments: [plant#76771.id AS plant#76906, plant#76771.internalRefUUID AS plantUuid#76907, product#76770.id AS product#76908, product#76770.internalRefUUID AS productUuid#76909, calculationDateTime#76890, stockQuantity#76893.storagelocation.id AS storageLocId#76910, stockQuantity#76893.storagelocation.internalRefUUID AS storageLocUuid#76911, stockQuantity#76893.quantity.measure AS quantity#76912, stockQuantity#76893.specialStockIndicator.code AS specialStockIndicator#76913, stockQuantity#76893.stockType.code AS stockType#76914]
(1260) Filter
Arguments: ((specialStockIndicator#76913 = ) AND (stockType#76914 = 01))
(1261) LogicalRelation
Arguments: parquet, [product#76916, plant#76917, orderDateTime#76918, planningStartDateTime#76919], false
(1262) RepartitionByExpression
Arguments: [product#76916, plant#76917], 25
(1263) Project
Arguments: [product#76916, plant#76917, orderDateTime#76918]
(1264) LogicalRelation
Arguments: parquet, [systemId#76920, internalUUID#76921, plant#76922, product#76923, blockedForReplenishmentStartingFrom#76924, productionAspect#76925, salesPlant#76926, listing#76927], false
(1265) Repartition
Arguments: 25, true
(1266) Project
Arguments: [systemId#76920, internalUUID#76921, plant#76922, product#76923, blockedForReplenishmentStartingFrom#76924, productionAspect#76925, salesPlant#76926, listing#76927, struct(systemId, systemId#76920, internalUUID, internalUUID#76921, plant, plant#76922, product, product#76923, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76924, productionAspect, productionAspect#76925, salesPlant, salesPlant#76926, listing, listing#76927) AS productPlant#76929]
(1267) Project
Arguments: [productPlant#76929]
(1268) Join
Arguments: LeftOuter, ((product#76916 <=> productPlant#76929.product.internalRefUUID) AND (plant#76917 <=> productPlant#76929.plant.internalRefUUID))
(1269) Project
Arguments: [product#76916, plant#76917, orderDateTime#76918, productPlant#76929]
(1270) SubqueryAlias
Arguments: wl
(1271) LogicalRelation
Arguments: parquet, [systemId#76942, internalUUID#76943, id#76944, displayId#76945, name#76946, category#76947, companyCode#76948, address#76949, mainDistributionChain#76950, mainPurchasingOrganization#76951, validPurchasingOrganizations#76952, productGroup#76953], false
(1272) Repartition
Arguments: 25, true
(1273) Project
Arguments: [internalUUID#76943, address#76949.timeZone.code AS timezonecode#76954]
(1274) Join
Arguments: LeftOuter, (plant#76917 <=> internalUUID#76943)
(1275) Project
Arguments: [product#76916, plant#76917, orderDateTime#76918, productPlant#76929, internalUUID#76943, CASE WHEN isnotnull(timezonecode#76954) THEN timezonecode#76954 ELSE UTC END AS timezonecode#76957]
(1276) Project
Arguments: [product#76916, plant#76917, orderDateTime#76918, productPlant#76929, timezonecode#76957]
(1277) LogicalRelation
Arguments: parquet, [systemId#76958, internalUUID#76959, id#76960, displayId#76961, name#76962, baseUnitOfMeasure#76963, unitOfMeasures#76964, unitOfMeasureConversions#76965, productionAspect#76966, salesAspect#76967, procurementAspect#76968, productGroup#76969], false
(1278) Repartition
Arguments: 25, true
(1279) Join
Arguments: LeftOuter, (product#76916 = internalUUID#76959)
(1280) Project
Arguments: [product#76916, plant#76917, orderDateTime#76918, productPlant#76929, timezonecode#76957, systemId#76958, internalUUID#76959, id#76960, displayId#76961, name#76962, baseUnitOfMeasure#76963, unitOfMeasures#76964, unitOfMeasureConversions#76965, productionAspect#76966, salesAspect#76967, procurementAspect#76968, productGroup#76969, filter(unitOfMeasureConversions#76965, lambdafunction((((lambda u#69110.measurementUnit1.code = productPlant#76929.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69110.measurementUnit1.internalRefUUID = productPlant#76929.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69110.measurementUnit2.code = baseUnitOfMeasure#76963.code) AND (lambda u#69110.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76963.internalRefUUID))), lambda u#69110, false)) AS filteredUnitOfMeasureConversions#76972]
(1281) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76972.quantityNumerator), true, [quantityNumerator#76974]
(1282) Project
Arguments: [product#76916, plant#76917, orderDateTime#76918, productPlant#76929, timezonecode#76957, systemId#76958, internalUUID#76959, id#76960, displayId#76961, name#76962, baseUnitOfMeasure#76963, unitOfMeasures#76964, unitOfMeasureConversions#76965, productionAspect#76966, salesAspect#76967, procurementAspect#76968, productGroup#76969, filteredUnitOfMeasureConversions#76972, quantityNumerator#76974]
(1283) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76972.quantityDenominator), true, [quantityDenominator#76975]
(1284) Project
Arguments: [product#76916, plant#76917, orderDateTime#76918, productPlant#76929, timezonecode#76957, systemId#76958, internalUUID#76959, id#76960, displayId#76961, name#76962, baseUnitOfMeasure#76963, unitOfMeasures#76964, unitOfMeasureConversions#76965, productionAspect#76966, salesAspect#76967, procurementAspect#76968, productGroup#76969, filteredUnitOfMeasureConversions#76972, quantityNumerator#76974, quantityDenominator#76975]
(1285) Project
Arguments: [product#76916, plant#76917, orderDateTime#76918, productPlant#76929, timezonecode#76957, systemId#76958, internalUUID#76959, id#76960, displayId#76961, name#76962, baseUnitOfMeasure#76963, unitOfMeasures#76964, unitOfMeasureConversions#76965, productionAspect#76966, salesAspect#76967, procurementAspect#76968, productGroup#76969, filteredUnitOfMeasureConversions#76972, quantityNumerator#76974, quantityDenominator#76975, (cast(quantityNumerator#76974 as double) / cast(quantityDenominator#76975 as double)) AS outboundUnit#76978]
(1286) Project
Arguments: [product#76916, plant#76917, orderDateTime#76918, productPlant#76929, timezonecode#76957, systemId#76958, internalUUID#76959, id#76960, displayId#76961, name#76962, baseUnitOfMeasure#76963, unitOfMeasures#76964, unitOfMeasureConversions#76965, productionAspect#76966, salesAspect#76967, procurementAspect#76968, productGroup#76969, filteredUnitOfMeasureConversions#76972, quantityNumerator#76974, quantityDenominator#76975, CASE WHEN (isnull(outboundUnit#76978) OR (outboundUnit#76978 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76978 END AS outboundUnit#76980]
(1287) Project
Arguments: [product#76916, plant#76917, orderDateTime#76918, productPlant#76929, timezonecode#76957, outboundUnit#76980]
(1288) Join
Arguments: Inner, ((plantUuid#76907 = plant#76917) AND (productUuid#76909 = product#76916))
(1289) Filter
Arguments: (calculationDateTime#76890 <= orderDateTime#76918)
(1290) Project
Arguments: [plantUuid#76907 AS plant#76984, productUuid#76909 AS product#76985, storageLocId#76910, calculationDateTime#76890, quantity#76912]
(1291) Aggregate
Arguments: [plant#76984, product#76985, storageLocId#76910], [plant#76984, product#76985, storageLocId#76910, max(calculationDateTime#76890) AS max_calc_datetime#76986]
(1292) Join
Arguments: Inner, ((((plant#76765 <=> plant#76984) AND (product#76766 <=> product#76985)) AND (storageLocId#76602 <=> storageLocId#76910)) AND (calculationDateTime#76595 <=> max_calc_datetime#76986))
(1293) Project
Arguments: [plant#76765, product#76766, storageLocId#76602, calculationDateTime#76595, quantity#76604]
(1294) Aggregate
Arguments: [product#76766, plant#76765], [product#76766, plant#76765, sum(quantity#76604) AS quantitySum#76990, min(calculationDateTime#76595) AS minCalculationDateTime#76991]
(1295) Project
Arguments: [product#76766, plant#76765, quantitySum#76990, minCalculationDateTime#76991, round(quantitySum#76990, 0) AS roundedQuantitySum#77001]
(1296) Join
Arguments: LeftOuter, ((plant#76341 = plant#76765) AND (product#76340 = product#76766))
(1297) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, roundedQuantitySum#77001, minCalculationDateTime#76991]
(1298) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, roundedQuantitySum#77001, minCalculationDateTime#76991, CASE WHEN isnotnull(minCalculationDateTime#76991) THEN minCalculationDateTime#76991 ELSE orderDateTime#76342 END AS stockDatetime#77002]
(1299) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, roundedQuantitySum#77001, minCalculationDateTime#76991, stockDatetime#77002, CASE WHEN isnotnull(roundedQuantitySum#77001) THEN array(roundedQuantitySum#77001) ELSE array(0.0) END AS stockBatchQuantities#77003]
(1300) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, roundedQuantitySum#77001, minCalculationDateTime#76991, stockDatetime#77002, stockBatchQuantities#77003, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#77005]
(1301) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, roundedQuantitySum#77001, stockDatetime#77002, stockBatchQuantities#77003, stockBatchShelfLifeEndDatetimes#77005]
(1302) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, stockDatetime#77002, stockBatchQuantities#77003, stockBatchShelfLifeEndDatetimes#77005]
(1303) LogicalRelation
Arguments: parquet, [product#77006, plant#77007, demandChannel#77008, demandStream#77009, considerVariance#77010, demandTimeBuckets#77011, demandPointInTimeStart#77012, demandPointInTimeEnd#77013, demandPointInTime#77014], false
(1304) Join
Arguments: LeftOuter, ((product#76340 = product#77006) AND (plant#76341 = plant#77007))
(1305) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, stockDatetime#77002, stockBatchQuantities#77003, stockBatchShelfLifeEndDatetimes#77005, demandChannel#77008, demandStream#77009, considerVariance#77010, demandTimeBuckets#77011, demandPointInTimeStart#77012, demandPointInTimeEnd#77013, demandPointInTime#77014, product#77006, plant#77007]
(1306) Project
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, stockDatetime#77002, stockBatchQuantities#77003, stockBatchShelfLifeEndDatetimes#77005, demandChannel#77008, demandStream#77009, considerVariance#77010, demandTimeBuckets#77011, demandPointInTimeStart#77012, demandPointInTimeEnd#77013, demandPointInTime#77014, CASE WHEN isnotnull(product#77006) THEN struct(demandChannel, demandChannel#77008, demandStream, demandStream#77009, considerVariance, considerVariance#77010, demandTimeBuckets, demandTimeBuckets#77011, demandPointInTimeStart, demandPointInTimeStart#77012, demandPointInTimeEnd, demandPointInTimeEnd#77013, demandPointInTime, demandPointInTime#77014) 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#77016]
(1307) Aggregate
Arguments: [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, stockDatetime#77002, stockBatchQuantities#77003, stockBatchShelfLifeEndDatetimes#77005], [product#76340, plant#76341, orderDateTime#76342, productPlant#76354, timezonecode#76371, outboundUnit#76430, stockDatetime#77002, stockBatchQuantities#77003, stockBatchShelfLifeEndDatetimes#77005, collect_list(rawDemands#77016, 0, 0) AS rawDemands#77017]
(1308) DeserializeToObject
Arguments: createexternalrow(invoke(product#76340.toString()), invoke(plant#76341.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#76342)), if (isnull(productPlant#76354)) null else createexternalrow(invoke(productPlant#76354.systemId.toString()), invoke(productPlant#76354.internalUUID.toString()), if (isnull(productPlant#76354.plant)) null else createexternalrow(invoke(productPlant#76354.plant.internalRefUUID.toString()), invoke(productPlant#76354.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#76354.product)) null else createexternalrow(invoke(productPlant#76354.product.internalRefUUID.toString()), invoke(productPlant#76354.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#76354.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#76354.productionAspect)) null else createexternalrow(if (isnull(productPlant#76354.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#76354.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#76354.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#76354.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#76354.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#76354.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#76354.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#76354.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#76354.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#76354.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#76354.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#76354.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#76354.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#76354.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#76354.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#76354.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#76354.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#76354.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#76354.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#76354.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#76354.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#76354.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(minimumSafetyStock,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(minimumSafetyStock,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#76354.salesPlant)) null else createexternalrow(if (isnull(productPlant#76354.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#76354.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#76354.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, 10028), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 10028).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#76354.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(minimumSafetyStock,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#76371.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#76430)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#77002)), mapobjects(lambdavariable(MapObject, DoubleType, true, 10029), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 10029) as double))), stockBatchQuantities#77003, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 10030), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 10030) as timestamp)))), stockBatchShelfLifeEndDatetimes#77005, 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, 10031), 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, 10031))) 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, 10031).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, 10031).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, 10031).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10032).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, 10031).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, 10031).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, 10031).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 10033).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, 10031).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#77017, 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(minimumSafetyStock,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#70342: org.apache.spark.sql.Row
(1309) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@22b451ac, 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(minimumSafetyStock,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#70347: org.apache.spark.sql.Row
(1310) 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#77033, 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#77034, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10019), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10019), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10020), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10020), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10021), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10021), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10022), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10022), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 10023), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10023), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10018), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#77035, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10025), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10025), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10026), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10026), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10027), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10027), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 10024), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#77036]
(1311) Join
Arguments: LeftOuter, ((plant#77034 <=> plant#75697) AND (product#77033 <=> product#75696))
(1312) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, outboundUnit#75765, stockDatetime#76334, stockBatchQuantities#76335, stockBatchShelfLifeEndDatetimes#76338, plant#77034, dayBucketDemands#77035, pointInTimeDemands#77036]
(1313) Project
Arguments: [product#75696, plant#75697, orderDateTime#75698, productPlant#75708, timezonecode#75722, outboundUnit#75765, stockDatetime#76334, stockBatchQuantities#76335, stockBatchShelfLifeEndDatetimes#76338, dayBucketDemands#77035, pointInTimeDemands#77036]
(1314) LogicalRelation
Arguments: parquet, [systemId#77048, internalUUID#77049, id#77050, displayId#77051, supplier#77052, type#77053, status#77054, isMarkedForDeletion#77055, items#77056], false
(1315) Repartition
Arguments: 25, true
(1316) Generate
Arguments: explode(items#77056), false, [item#77057]
(1317) Project
Arguments: [id#77050, internalUUID#77049, isMarkedForDeletion#77055, supplier#77052.internalRefUUID AS supplierUuid#77058, item#77057]
(1318) Filter
Arguments: (((NOT isMarkedForDeletion#77055 AND NOT item#77057.deletionIndicator) AND NOT item#77057.completeIndicator) AND NOT item#77057.returnIndicator)
(1319) Project
Arguments: [id#77050, internalUUID#77049, supplierUuid#77058, item#77057.plant.internalRefUUID AS plant#77059, item#77057.product.internalRefUUID AS product#77060, item#77057.plant.id AS externalPlantId#77061, item#77057.product.id AS externalProductId#77062, item#77057.storageLocation.internalRefUUID AS storageLocUuid#77063, item#77057.quantityUnit.code AS quantityUom#77064, item#77057.quantityUnit.internalRefUUID AS quantityUomUuid#77065, item#77057.quantityNumerator AS quantityNumerator#77066, item#77057.quantityDenominator AS quantityDenominator#77067, item#77057.scheduleLines AS scheduleLines#77068, item#77057.confirmations AS confirmations#77069]
(1320) Join
Arguments: Inner, ((product#75696 <=> product#77060) AND (plant#75697 <=> supplierUuid#77058))
(1321) Project
Arguments: [id#77050, internalUUID#77049, supplierUuid#77058, plant#77059, product#77060, externalPlantId#77061, externalProductId#77062, storageLocUuid#77063, quantityUom#77064, quantityUomUuid#77065, quantityNumerator#77066, quantityDenominator#77067, scheduleLines#77068, confirmations#77069, stockDatetime#76334, plant#75697]
(1322) Project
Arguments: [id#77050, internalUUID#77049, supplierUuid#77058, product#77060, externalPlantId#77061, externalProductId#77062, storageLocUuid#77063, quantityUom#77064, quantityUomUuid#77065, quantityNumerator#77066, quantityDenominator#77067, scheduleLines#77068, confirmations#77069, stockDatetime#76334, plant#75697]
(1323) Project
Arguments: [id#77050, internalUUID#77049, supplierUuid#77058, product#77060, externalPlantId#77061, externalProductId#77062, storageLocUuid#77063, quantityUom#77064, quantityUomUuid#77065, quantityNumerator#77066, quantityDenominator#77067, scheduleLines#77068, confirmations#77069, stockDatetime#76334, plant#75697, filter(transform(filter(transform(scheduleLines#77068, lambdafunction(struct(openQty, (greatest((lambda x_19#75653.quantity - coalesce(lambda x_19#75653.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_19#75653.productAvailabilityDateTime, lambda x_19#75653.deliveryAt)), lambda x_19#75653, false)), lambdafunction((lambda x_21#75654.availabilityDatetime < stockDatetime#76334), lambda x_21#75654, false)), lambdafunction(struct(documentId, id#77050, documentUuid, internalUUID#77049, openQty, lambda x_24#75656.openQty, openQtyInBaseUnit, ((lambda x_24#75656.openQty * quantityNumerator#77066) / quantityDenominator#77067), qtyUom, quantityUom#77064, qtyUomUuid, quantityUomUuid#77065, availabilityDatetime, lambda x_24#75656.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_24#75656, false)), lambdafunction(NOT (lambda x_26#75658.openQty = 0.0), lambda x_26#75658, false)) AS openGoodsMovements#75650]
(1324) Aggregate
Arguments: [product#77060, plant#75697], [product#77060, plant#75697, flatten(collect_list(openGoodsMovements#75650, 0, 0)) AS openGoodsMovements#75660]
(1325) Filter
Arguments: (array_size(openGoodsMovements#75660) > 0)
(1326) Union
Arguments: false, false
(1327) Aggregate
Arguments: [product#70764, plant#70763], [product#70764, plant#70763, flatten(collect_list(openGoodsMovements#75051, 0, 0)) AS openGoodsMovements#77174]
(1328) Join
Arguments: LeftOuter, ((product#69015 = product#70764) AND (plant#69016 = plant#70763))
(1329) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovements#77174]
(1330) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, coalesce(openGoodsMovements#77174.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#78611, coalesce(openGoodsMovements#77174.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#78612, coalesce(openGoodsMovements#77174.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#78613]
(1331) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, 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#78808]
(1332) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, configuration#78808, array(ListingPeriod) AS timeDependentSettingsName#79092]
(1333) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, configuration#78808, timeDependentSettingsName#79092, array(1900-01-01 00:00:00) AS timeDependentSettingsStartDatetime#79093]
(1334) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, configuration#78808, timeDependentSettingsName#79092, timeDependentSettingsStartDatetime#79093, array(2199-01-01 00:00:00) AS timeDependentSettingsEndDatetime#79094]
(1335) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, configuration#78808, timeDependentSettingsName#79092, timeDependentSettingsStartDatetime#79093, timeDependentSettingsEndDatetime#79094, array(1.0) AS timeDependentSettingsValue#79095]
(1336) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, configuration#78808, concat(coalesce(timeDependentSettingsName#79092, cast(array() as array<string>)), CASE WHEN isnotnull(productPlant#69043.productionAspect.productPlanningPlants.minimumSafetyStock) THEN array(MinStock) ELSE cast(array() as array<string>) END) AS timeDependentSettingsName#79096, timeDependentSettingsStartDatetime#79093, timeDependentSettingsEndDatetime#79094, timeDependentSettingsValue#79095]
(1337) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, configuration#78808, timeDependentSettingsName#79096, concat(coalesce(timeDependentSettingsStartDatetime#79093, cast(array() as array<timestamp>)), CASE WHEN isnotnull(productPlant#69043.productionAspect.productPlanningPlants.minimumSafetyStock) THEN array(1900-01-01 00:00:00) ELSE cast(array() as array<timestamp>) END) AS timeDependentSettingsStartDatetime#79098, timeDependentSettingsEndDatetime#79094, timeDependentSettingsValue#79095]
(1338) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, configuration#78808, timeDependentSettingsName#79096, timeDependentSettingsStartDatetime#79098, concat(coalesce(timeDependentSettingsEndDatetime#79094, cast(array() as array<timestamp>)), CASE WHEN isnotnull(productPlant#69043.productionAspect.productPlanningPlants.minimumSafetyStock) THEN array(2199-01-01 00:00:00) ELSE cast(array() as array<timestamp>) END) AS timeDependentSettingsEndDatetime#79100, timeDependentSettingsValue#79095]
(1339) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, productPlant#69043, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, configuration#78808, timeDependentSettingsName#79096, timeDependentSettingsStartDatetime#79098, timeDependentSettingsEndDatetime#79100, concat(coalesce(timeDependentSettingsValue#79095, cast(array() as array<double>)), CASE WHEN isnotnull(productPlant#69043.productionAspect.productPlanningPlants.minimumSafetyStock) THEN array(cast(productPlant#69043.productionAspect.productPlanningPlants.minimumSafetyStock as double)) ELSE cast(array() as array<double>) END) AS timeDependentSettingsValue#79102]
(1340) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, timezonecode#69080, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, configuration#78808, timeDependentSettingsName#79096, timeDependentSettingsStartDatetime#79098, timeDependentSettingsEndDatetime#79100, timeDependentSettingsValue#79102]
(1341) Project
Arguments: [product#69015, plant#69016, orderDateTime#69017, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, configuration#78808, timeDependentSettingsName#79096, timeDependentSettingsStartDatetime#79098, timeDependentSettingsEndDatetime#79100, timeDependentSettingsValue#79102]
(1342) Project
Arguments: [product#69015, plant#69016, outboundUnit#69133, stockDatetime#69867, stockBatchQuantities#69870, stockBatchShelfLifeEndDatetimes#69872, dayBucketDemands#70354, pointInTimeDemands#70355, openGoodsMovementQuantities#78611, openGoodsMovementAvailabilityDatetimes#78612, openGoodsMovementShelfLifeEndDatetimes#78613, configuration#78808, timeDependentSettingsName#79096, timeDependentSettingsStartDatetime#79098, timeDependentSettingsEndDatetime#79100, timeDependentSettingsValue#79102]