== 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@6cfd7fd2, [path=hdlfs://2e93940d-4be8-4f12-830d-f0b8d392c03a.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-order-quantity-kpi-service/internal/data-snapshot/10000002106/0_1_10000002106], Overwrite
(3) LogicalRelation
Arguments: parquet, [product#69019, plant#69020, orderDateTime#69021, planningStartDateTime#69022], false
(4) RepartitionByExpression
Arguments: [product#69019, plant#69020], 25
(5) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021]
(6) LogicalRelation
Arguments: parquet, [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040], false
(7) Repartition
Arguments: 25, true
(8) Project
Arguments: [systemId#69025, internalUUID#69027, plant#69029, product#69031, blockedForReplenishmentStartingFrom#69034, productionAspect#69036, salesPlant#69038, listing#69040, struct(systemId, systemId#69025, internalUUID, internalUUID#69027, plant, plant#69029, product, product#69031, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69034, productionAspect, productionAspect#69036, salesPlant, salesPlant#69038, listing, listing#69040) AS productPlant#69044]
(9) Project
Arguments: [productPlant#69044]
(10) Join
Arguments: LeftOuter, ((product#69019 <=> productPlant#69044.product.internalRefUUID) AND (plant#69020 <=> productPlant#69044.plant.internalRefUUID))
(11) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044]
(12) SubqueryAlias
Arguments: wl
(13) LogicalRelation
Arguments: parquet, [systemId#69061, internalUUID#69062, id#69063, displayId#69064, name#69065, category#69066, companyCode#69067, address#69068, mainDistributionChain#69069, mainPurchasingOrganization#69070, validPurchasingOrganizations#69071, productGroup#69072], false
(14) Repartition
Arguments: 25, true
(15) Project
Arguments: [internalUUID#69062, address#69068.timeZone.code AS timezonecode#69074]
(16) Join
Arguments: LeftOuter, (plant#69020 <=> internalUUID#69062)
(17) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, internalUUID#69062, CASE WHEN isnotnull(timezonecode#69074) THEN timezonecode#69074 ELSE UTC END AS timezonecode#69079]
(18) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079]
(19) LogicalRelation
Arguments: parquet, [systemId#69093, internalUUID#69094, id#69095, displayId#69096, name#69097, baseUnitOfMeasure#69098, unitOfMeasures#69099, unitOfMeasureConversions#69100, productionAspect#69101, salesAspect#69102, procurementAspect#69103, productGroup#69104], false
(20) Repartition
Arguments: 25, true
(21) Join
Arguments: LeftOuter, (product#69019 = internalUUID#69094)
(22) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, systemId#69093, internalUUID#69094, id#69095, displayId#69096, name#69097, baseUnitOfMeasure#69098, unitOfMeasures#69099, unitOfMeasureConversions#69100, productionAspect#69101, salesAspect#69102, procurementAspect#69103, productGroup#69104, filter(unitOfMeasureConversions#69100, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69044.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69044.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69098.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69098.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69107]
(23) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69107.quantityNumerator), true, [quantityNumerator#69124]
(24) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, systemId#69093, internalUUID#69094, id#69095, displayId#69096, name#69097, baseUnitOfMeasure#69098, unitOfMeasures#69099, unitOfMeasureConversions#69100, productionAspect#69101, salesAspect#69102, procurementAspect#69103, productGroup#69104, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124]
(25) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69107.quantityDenominator), true, [quantityDenominator#69129]
(26) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, systemId#69093, internalUUID#69094, id#69095, displayId#69096, name#69097, baseUnitOfMeasure#69098, unitOfMeasures#69099, unitOfMeasureConversions#69100, productionAspect#69101, salesAspect#69102, procurementAspect#69103, productGroup#69104, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124, quantityDenominator#69129]
(27) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, systemId#69093, internalUUID#69094, id#69095, displayId#69096, name#69097, baseUnitOfMeasure#69098, unitOfMeasures#69099, unitOfMeasureConversions#69100, productionAspect#69101, salesAspect#69102, procurementAspect#69103, productGroup#69104, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124, quantityDenominator#69129, (cast(quantityNumerator#69124 as double) / cast(quantityDenominator#69129 as double)) AS outboundUnit#69131]
(28) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, systemId#69093, internalUUID#69094, id#69095, displayId#69096, name#69097, baseUnitOfMeasure#69098, unitOfMeasures#69099, unitOfMeasureConversions#69100, productionAspect#69101, salesAspect#69102, procurementAspect#69103, productGroup#69104, filteredUnitOfMeasureConversions#69107, quantityNumerator#69124, quantityDenominator#69129, CASE WHEN (isnull(outboundUnit#69131) OR (outboundUnit#69131 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69131 END AS outboundUnit#69134]
(29) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134]
(30) LogicalRelation
Arguments: parquet, [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262], false
(31) Repartition
Arguments: 25, true
(32) LogicalRelation
Arguments: parquet, [marketUnit#69135, description#69136, articleHierarchy#69137, defaultCurrency#69138, responsibilities#69139, replenishmentTypes#69140, distributionCenters#69141, assignedArticleHierarchyNodes#69142, minOrderQtySetting#69143, listingCheck#69144, odsSelection#69145, demandProfiles#69146, constraintProfiles#69148, optimizationProfiles#69149, orderGroupSplitProfiles#69150, supplierMinimumProfiles#69152, multipleRestrictionProfiles#69154, preferredUomSource#69156, handlingOfUnfulfilledDemands#69158, negligibleQuantitiesThreshold#69160, eventtype#69162, minOrderQtySettingInternal#69164], false
(33) Repartition
Arguments: 25, true
(34) Filter
Arguments: (marketUnit#69135 <=> Daily_grocery)
(35) Project
Arguments: [marketUnit#69135, description#69136, articleHierarchy#69137, defaultCurrency#69138, responsibilities#69139, replenishmentTypes#69140, distributionCenters#69141, assignedArticleHierarchyNodes#69142, minOrderQtySetting#69143, listingCheck#69144, odsSelection#69145, demandProfiles#69146, constraintProfiles#69148, optimizationProfiles#69149, orderGroupSplitProfiles#69150, supplierMinimumProfiles#69152, multipleRestrictionProfiles#69154, preferredUomSource#69156, handlingOfUnfulfilledDemands#69158, negligibleQuantitiesThreshold#69160, eventtype#69162, minOrderQtySettingInternal#69164]
(36) Project
Arguments: [distributionCenters#69141]
(37) Generate
Arguments: explode(distributionCenters#69141), false, [distributionCenters#69183]
(38) Project
Arguments: [distributionCenters#69183]
(39) Generate
Arguments: explode(distributionCenters#69183.storageLocations), false, [storageLocations#69197]
(40) Project
Arguments: [distributionCenters#69183.id AS plantId#69185, distributionCenters#69183.internalRefUUID AS plantUuid#69186, storageLocations#69197]
(41) Project
Arguments: [plantId#69185, plantUuid#69186, storageLocations#69197.id AS storageLocId#69199, storageLocations#69197.internalRefUUID AS storageLocUuid#69200]
(42) LogicalRelation
Arguments: parquet, [product#69771, plant#69772, orderDateTime#69773, planningStartDateTime#69774], false
(43) RepartitionByExpression
Arguments: [product#69771, plant#69772], 25
(44) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773]
(45) LogicalRelation
Arguments: parquet, [systemId#69775, internalUUID#69776, plant#69777, product#69778, blockedForReplenishmentStartingFrom#69779, productionAspect#69780, salesPlant#69781, listing#69782], false
(46) Repartition
Arguments: 25, true
(47) Project
Arguments: [systemId#69775, internalUUID#69776, plant#69777, product#69778, blockedForReplenishmentStartingFrom#69779, productionAspect#69780, salesPlant#69781, listing#69782, struct(systemId, systemId#69775, internalUUID, internalUUID#69776, plant, plant#69777, product, product#69778, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69779, productionAspect, productionAspect#69780, salesPlant, salesPlant#69781, listing, listing#69782) AS productPlant#69795]
(48) Project
Arguments: [productPlant#69795]
(49) Join
Arguments: LeftOuter, ((product#69771 <=> productPlant#69795.product.internalRefUUID) AND (plant#69772 <=> productPlant#69795.plant.internalRefUUID))
(50) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795]
(51) SubqueryAlias
Arguments: wl
(52) LogicalRelation
Arguments: parquet, [systemId#69797, internalUUID#69798, id#69799, displayId#69800, name#69801, category#69802, companyCode#69803, address#69804, mainDistributionChain#69805, mainPurchasingOrganization#69806, validPurchasingOrganizations#69807, productGroup#69808], false
(53) Repartition
Arguments: 25, true
(54) Project
Arguments: [internalUUID#69798, address#69804.timeZone.code AS timezonecode#69821]
(55) Join
Arguments: LeftOuter, (plant#69772 <=> internalUUID#69798)
(56) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, internalUUID#69798, CASE WHEN isnotnull(timezonecode#69821) THEN timezonecode#69821 ELSE UTC END AS timezonecode#69823]
(57) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823]
(58) LogicalRelation
Arguments: parquet, [systemId#69825, internalUUID#69826, id#69827, displayId#69828, name#69829, baseUnitOfMeasure#69830, unitOfMeasures#69831, unitOfMeasureConversions#69832, productionAspect#69833, salesAspect#69834, procurementAspect#69835, productGroup#69836], false
(59) Repartition
Arguments: 25, true
(60) Join
Arguments: LeftOuter, (product#69771 = internalUUID#69826)
(61) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823, systemId#69825, internalUUID#69826, id#69827, displayId#69828, name#69829, baseUnitOfMeasure#69830, unitOfMeasures#69831, unitOfMeasureConversions#69832, productionAspect#69833, salesAspect#69834, procurementAspect#69835, productGroup#69836, filter(unitOfMeasureConversions#69832, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69795.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69795.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69830.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69830.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69849]
(62) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69849.quantityNumerator), true, [quantityNumerator#69851]
(63) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823, systemId#69825, internalUUID#69826, id#69827, displayId#69828, name#69829, baseUnitOfMeasure#69830, unitOfMeasures#69831, unitOfMeasureConversions#69832, productionAspect#69833, salesAspect#69834, procurementAspect#69835, productGroup#69836, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851]
(64) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69849.quantityDenominator), true, [quantityDenominator#69854]
(65) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823, systemId#69825, internalUUID#69826, id#69827, displayId#69828, name#69829, baseUnitOfMeasure#69830, unitOfMeasures#69831, unitOfMeasureConversions#69832, productionAspect#69833, salesAspect#69834, procurementAspect#69835, productGroup#69836, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851, quantityDenominator#69854]
(66) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823, systemId#69825, internalUUID#69826, id#69827, displayId#69828, name#69829, baseUnitOfMeasure#69830, unitOfMeasures#69831, unitOfMeasureConversions#69832, productionAspect#69833, salesAspect#69834, procurementAspect#69835, productGroup#69836, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851, quantityDenominator#69854, (cast(quantityNumerator#69851 as double) / cast(quantityDenominator#69854 as double)) AS outboundUnit#69856]
(67) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823, systemId#69825, internalUUID#69826, id#69827, displayId#69828, name#69829, baseUnitOfMeasure#69830, unitOfMeasures#69831, unitOfMeasureConversions#69832, productionAspect#69833, salesAspect#69834, procurementAspect#69835, productGroup#69836, filteredUnitOfMeasureConversions#69849, quantityNumerator#69851, quantityDenominator#69854, CASE WHEN (isnull(outboundUnit#69856) OR (outboundUnit#69856 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69856 END AS outboundUnit#69858]
(68) Project
Arguments: [product#69771, plant#69772, orderDateTime#69773, productPlant#69795, timezonecode#69823, outboundUnit#69858]
(69) Project
Arguments: [plant#69772]
(70) Deduplicate
Arguments: [plant#69772]
(71) Join
Arguments: Inner, (plantUuid#69186 = plant#69772)
(72) Project
Arguments: [plantId#69185, plantUuid#69186, storageLocId#69199, storageLocUuid#69200]
(73) Join
Arguments: Inner, (plant#69260.internalRefUUID <=> plantUuid#69186)
(74) Generate
Arguments: explode(filter(stockQuantities#69262, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69200) AND (lambda x#69269.storageLocation.Id = storageLocId#69199)), lambda x#69269, false))), false, [stockQuantity#69272]
(75) Project
Arguments: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69261, stockQuantities#69262, plantId#69185, plantUuid#69186, storageLocId#69199, storageLocUuid#69200, stockQuantity#69272]
(76) Aggregate
Arguments: [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257], [plantUuid#69186, internalUUID#69258, plant#69260, product#69259, systemId#69257, first(calculationDateTime#69261, false) AS calculationDateTime#69273, collect_list(stockQuantity#69272, 0, 0) AS stockQuantities#69274]
(77) Project
Arguments: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274]
(78) Generate
Arguments: explode(stockQuantities#69274), false, [stockQuantity#69289]
(79) Project
Arguments: [systemId#69257, internalUUID#69258, product#69259, plant#69260, calculationDateTime#69273, stockQuantities#69274, stockQuantity#69289]
(80) Project
Arguments: [plant#69260.id AS plant#69290, plant#69260.internalRefUUID AS plantUuid#69291, product#69259.id AS product#69292, product#69259.internalRefUUID AS productUuid#69293, calculationDateTime#69273, stockQuantity#69289.storagelocation.id AS storageLocId#69294, stockQuantity#69289.storagelocation.internalRefUUID AS storageLocUuid#69295, stockQuantity#69289.quantity.measure AS quantity#69296, stockQuantity#69289.specialStockIndicator.code AS specialStockIndicator#69297, stockQuantity#69289.stockType.code AS stockType#69298]
(81) Filter
Arguments: ((specialStockIndicator#69297 = ) AND (stockType#69298 = 01))
(82) LogicalRelation
Arguments: parquet, [product#69323, plant#69324, orderDateTime#69325, planningStartDateTime#69326], false
(83) RepartitionByExpression
Arguments: [product#69323, plant#69324], 25
(84) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325]
(85) LogicalRelation
Arguments: parquet, [systemId#69327, internalUUID#69328, plant#69329, product#69330, blockedForReplenishmentStartingFrom#69331, productionAspect#69332, salesPlant#69333, listing#69334], false
(86) Repartition
Arguments: 25, true
(87) Project
Arguments: [systemId#69327, internalUUID#69328, plant#69329, product#69330, blockedForReplenishmentStartingFrom#69331, productionAspect#69332, salesPlant#69333, listing#69334, struct(systemId, systemId#69327, internalUUID, internalUUID#69328, plant, plant#69329, product, product#69330, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69331, productionAspect, productionAspect#69332, salesPlant, salesPlant#69333, listing, listing#69334) AS productPlant#69336]
(88) Project
Arguments: [productPlant#69336]
(89) Join
Arguments: LeftOuter, ((product#69323 <=> productPlant#69336.product.internalRefUUID) AND (plant#69324 <=> productPlant#69336.plant.internalRefUUID))
(90) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336]
(91) SubqueryAlias
Arguments: wl
(92) LogicalRelation
Arguments: parquet, [systemId#69337, internalUUID#69338, id#69339, displayId#69340, name#69341, category#69342, companyCode#69343, address#69344, mainDistributionChain#69345, mainPurchasingOrganization#69346, validPurchasingOrganizations#69347, productGroup#69348], false
(93) Repartition
Arguments: 25, true
(94) Project
Arguments: [internalUUID#69338, address#69344.timeZone.code AS timezonecode#69349]
(95) Join
Arguments: LeftOuter, (plant#69324 <=> internalUUID#69338)
(96) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, internalUUID#69338, CASE WHEN isnotnull(timezonecode#69349) THEN timezonecode#69349 ELSE UTC END AS timezonecode#69350]
(97) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350]
(98) LogicalRelation
Arguments: parquet, [systemId#69351, internalUUID#69352, id#69353, displayId#69354, name#69355, baseUnitOfMeasure#69356, unitOfMeasures#69357, unitOfMeasureConversions#69358, productionAspect#69359, salesAspect#69360, procurementAspect#69361, productGroup#69362], false
(99) Repartition
Arguments: 25, true
(100) Join
Arguments: LeftOuter, (product#69323 = internalUUID#69352)
(101) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350, systemId#69351, internalUUID#69352, id#69353, displayId#69354, name#69355, baseUnitOfMeasure#69356, unitOfMeasures#69357, unitOfMeasureConversions#69358, productionAspect#69359, salesAspect#69360, procurementAspect#69361, productGroup#69362, filter(unitOfMeasureConversions#69358, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69336.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69336.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69356.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69356.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69363]
(102) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69363.quantityNumerator), true, [quantityNumerator#69364]
(103) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350, systemId#69351, internalUUID#69352, id#69353, displayId#69354, name#69355, baseUnitOfMeasure#69356, unitOfMeasures#69357, unitOfMeasureConversions#69358, productionAspect#69359, salesAspect#69360, procurementAspect#69361, productGroup#69362, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364]
(104) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69363.quantityDenominator), true, [quantityDenominator#69365]
(105) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350, systemId#69351, internalUUID#69352, id#69353, displayId#69354, name#69355, baseUnitOfMeasure#69356, unitOfMeasures#69357, unitOfMeasureConversions#69358, productionAspect#69359, salesAspect#69360, procurementAspect#69361, productGroup#69362, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364, quantityDenominator#69365]
(106) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350, systemId#69351, internalUUID#69352, id#69353, displayId#69354, name#69355, baseUnitOfMeasure#69356, unitOfMeasures#69357, unitOfMeasureConversions#69358, productionAspect#69359, salesAspect#69360, procurementAspect#69361, productGroup#69362, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364, quantityDenominator#69365, (cast(quantityNumerator#69364 as double) / cast(quantityDenominator#69365 as double)) AS outboundUnit#69366]
(107) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350, systemId#69351, internalUUID#69352, id#69353, displayId#69354, name#69355, baseUnitOfMeasure#69356, unitOfMeasures#69357, unitOfMeasureConversions#69358, productionAspect#69359, salesAspect#69360, procurementAspect#69361, productGroup#69362, filteredUnitOfMeasureConversions#69363, quantityNumerator#69364, quantityDenominator#69365, CASE WHEN (isnull(outboundUnit#69366) OR (outboundUnit#69366 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69366 END AS outboundUnit#69368]
(108) Project
Arguments: [product#69323, plant#69324, orderDateTime#69325, productPlant#69336, timezonecode#69350, outboundUnit#69368]
(109) Join
Arguments: Inner, ((plantUuid#69291 = plant#69324) AND (productUuid#69293 = product#69323))
(110) Filter
Arguments: (calculationDateTime#69273 <= orderDateTime#69325)
(111) Project
Arguments: [plantUuid#69291 AS plant#69435, productUuid#69293 AS product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296]
(112) LogicalRelation
Arguments: parquet, [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462], false
(113) Repartition
Arguments: 25, true
(114) LogicalRelation
Arguments: parquet, [marketUnit#69463, description#69464, articleHierarchy#69465, defaultCurrency#69466, responsibilities#69467, replenishmentTypes#69468, distributionCenters#69469, assignedArticleHierarchyNodes#69470, minOrderQtySetting#69471, listingCheck#69472, odsSelection#69473, demandProfiles#69474, constraintProfiles#69475, optimizationProfiles#69476, orderGroupSplitProfiles#69477, supplierMinimumProfiles#69478, multipleRestrictionProfiles#69479, preferredUomSource#69480, handlingOfUnfulfilledDemands#69481, negligibleQuantitiesThreshold#69482, eventtype#69483, minOrderQtySettingInternal#69484], false
(115) Repartition
Arguments: 25, true
(116) Filter
Arguments: (marketUnit#69463 <=> Daily_grocery)
(117) Project
Arguments: [marketUnit#69463, description#69464, articleHierarchy#69465, defaultCurrency#69466, responsibilities#69467, replenishmentTypes#69468, distributionCenters#69469, assignedArticleHierarchyNodes#69470, minOrderQtySetting#69471, listingCheck#69472, odsSelection#69473, demandProfiles#69474, constraintProfiles#69475, optimizationProfiles#69476, orderGroupSplitProfiles#69477, supplierMinimumProfiles#69478, multipleRestrictionProfiles#69479, preferredUomSource#69480, handlingOfUnfulfilledDemands#69481, negligibleQuantitiesThreshold#69482, eventtype#69483, minOrderQtySettingInternal#69484]
(118) Project
Arguments: [distributionCenters#69469]
(119) Generate
Arguments: explode(distributionCenters#69469), false, [distributionCenters#69485]
(120) Project
Arguments: [distributionCenters#69485]
(121) Generate
Arguments: explode(distributionCenters#69485.storageLocations), false, [storageLocations#69486]
(122) Project
Arguments: [distributionCenters#69485.id AS plantId#69487, distributionCenters#69485.internalRefUUID AS plantUuid#69488, storageLocations#69486]
(123) Project
Arguments: [plantId#69487, plantUuid#69488, storageLocations#69486.id AS storageLocId#69489, storageLocations#69486.internalRefUUID AS storageLocUuid#69490]
(124) LogicalRelation
Arguments: parquet, [product#69491, plant#69492, orderDateTime#69493, planningStartDateTime#69494], false
(125) RepartitionByExpression
Arguments: [product#69491, plant#69492], 25
(126) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493]
(127) LogicalRelation
Arguments: parquet, [systemId#69495, internalUUID#69496, plant#69497, product#69498, blockedForReplenishmentStartingFrom#69499, productionAspect#69500, salesPlant#69501, listing#69502], false
(128) Repartition
Arguments: 25, true
(129) Project
Arguments: [systemId#69495, internalUUID#69496, plant#69497, product#69498, blockedForReplenishmentStartingFrom#69499, productionAspect#69500, salesPlant#69501, listing#69502, struct(systemId, systemId#69495, internalUUID, internalUUID#69496, plant, plant#69497, product, product#69498, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69499, productionAspect, productionAspect#69500, salesPlant, salesPlant#69501, listing, listing#69502) AS productPlant#69503]
(130) Project
Arguments: [productPlant#69503]
(131) Join
Arguments: LeftOuter, ((product#69491 <=> productPlant#69503.product.internalRefUUID) AND (plant#69492 <=> productPlant#69503.plant.internalRefUUID))
(132) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503]
(133) SubqueryAlias
Arguments: wl
(134) LogicalRelation
Arguments: parquet, [systemId#69504, internalUUID#69505, id#69506, displayId#69507, name#69508, category#69509, companyCode#69510, address#69511, mainDistributionChain#69512, mainPurchasingOrganization#69513, validPurchasingOrganizations#69514, productGroup#69515], false
(135) Repartition
Arguments: 25, true
(136) Project
Arguments: [internalUUID#69505, address#69511.timeZone.code AS timezonecode#69516]
(137) Join
Arguments: LeftOuter, (plant#69492 <=> internalUUID#69505)
(138) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, internalUUID#69505, CASE WHEN isnotnull(timezonecode#69516) THEN timezonecode#69516 ELSE UTC END AS timezonecode#69517]
(139) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517]
(140) LogicalRelation
Arguments: parquet, [systemId#69518, internalUUID#69519, id#69520, displayId#69521, name#69522, baseUnitOfMeasure#69523, unitOfMeasures#69524, unitOfMeasureConversions#69525, productionAspect#69526, salesAspect#69527, procurementAspect#69528, productGroup#69529], false
(141) Repartition
Arguments: 25, true
(142) Join
Arguments: LeftOuter, (product#69491 = internalUUID#69519)
(143) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517, systemId#69518, internalUUID#69519, id#69520, displayId#69521, name#69522, baseUnitOfMeasure#69523, unitOfMeasures#69524, unitOfMeasureConversions#69525, productionAspect#69526, salesAspect#69527, procurementAspect#69528, productGroup#69529, filter(unitOfMeasureConversions#69525, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69503.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69503.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69523.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69523.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69530]
(144) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69530.quantityNumerator), true, [quantityNumerator#69531]
(145) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517, systemId#69518, internalUUID#69519, id#69520, displayId#69521, name#69522, baseUnitOfMeasure#69523, unitOfMeasures#69524, unitOfMeasureConversions#69525, productionAspect#69526, salesAspect#69527, procurementAspect#69528, productGroup#69529, filteredUnitOfMeasureConversions#69530, quantityNumerator#69531]
(146) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69530.quantityDenominator), true, [quantityDenominator#69532]
(147) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517, systemId#69518, internalUUID#69519, id#69520, displayId#69521, name#69522, baseUnitOfMeasure#69523, unitOfMeasures#69524, unitOfMeasureConversions#69525, productionAspect#69526, salesAspect#69527, procurementAspect#69528, productGroup#69529, filteredUnitOfMeasureConversions#69530, quantityNumerator#69531, quantityDenominator#69532]
(148) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517, systemId#69518, internalUUID#69519, id#69520, displayId#69521, name#69522, baseUnitOfMeasure#69523, unitOfMeasures#69524, unitOfMeasureConversions#69525, productionAspect#69526, salesAspect#69527, procurementAspect#69528, productGroup#69529, filteredUnitOfMeasureConversions#69530, quantityNumerator#69531, quantityDenominator#69532, (cast(quantityNumerator#69531 as double) / cast(quantityDenominator#69532 as double)) AS outboundUnit#69533]
(149) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517, systemId#69518, internalUUID#69519, id#69520, displayId#69521, name#69522, baseUnitOfMeasure#69523, unitOfMeasures#69524, unitOfMeasureConversions#69525, productionAspect#69526, salesAspect#69527, procurementAspect#69528, productGroup#69529, filteredUnitOfMeasureConversions#69530, quantityNumerator#69531, quantityDenominator#69532, CASE WHEN (isnull(outboundUnit#69533) OR (outboundUnit#69533 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69533 END AS outboundUnit#69534]
(150) Project
Arguments: [product#69491, plant#69492, orderDateTime#69493, productPlant#69503, timezonecode#69517, outboundUnit#69534]
(151) Project
Arguments: [plant#69492]
(152) Deduplicate
Arguments: [plant#69492]
(153) Join
Arguments: Inner, (plantUuid#69488 = plant#69492)
(154) Project
Arguments: [plantId#69487, plantUuid#69488, storageLocId#69489, storageLocUuid#69490]
(155) Join
Arguments: Inner, (plant#69460.internalRefUUID <=> plantUuid#69488)
(156) Generate
Arguments: explode(filter(stockQuantities#69462, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#69490) AND (lambda x#69269.storageLocation.Id = storageLocId#69489)), lambda x#69269, false))), false, [stockQuantity#69535]
(157) Project
Arguments: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69461, stockQuantities#69462, plantId#69487, plantUuid#69488, storageLocId#69489, storageLocUuid#69490, stockQuantity#69535]
(158) Aggregate
Arguments: [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457], [plantUuid#69488, internalUUID#69458, plant#69460, product#69459, systemId#69457, first(calculationDateTime#69461, false) AS calculationDateTime#69536, collect_list(stockQuantity#69535, 0, 0) AS stockQuantities#69537]
(159) Project
Arguments: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69536, stockQuantities#69537]
(160) Generate
Arguments: explode(stockQuantities#69537), false, [stockQuantity#69538]
(161) Project
Arguments: [systemId#69457, internalUUID#69458, product#69459, plant#69460, calculationDateTime#69536, stockQuantities#69537, stockQuantity#69538]
(162) Project
Arguments: [plant#69460.id AS plant#69539, plant#69460.internalRefUUID AS plantUuid#69540, product#69459.id AS product#69541, product#69459.internalRefUUID AS productUuid#69542, calculationDateTime#69536, stockQuantity#69538.storagelocation.id AS storageLocId#69543, stockQuantity#69538.storagelocation.internalRefUUID AS storageLocUuid#69544, stockQuantity#69538.quantity.measure AS quantity#69545, stockQuantity#69538.specialStockIndicator.code AS specialStockIndicator#69546, stockQuantity#69538.stockType.code AS stockType#69547]
(163) Filter
Arguments: ((specialStockIndicator#69546 = ) AND (stockType#69547 = 01))
(164) LogicalRelation
Arguments: parquet, [product#69548, plant#69549, orderDateTime#69550, planningStartDateTime#69551], false
(165) RepartitionByExpression
Arguments: [product#69548, plant#69549], 25
(166) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550]
(167) LogicalRelation
Arguments: parquet, [systemId#69552, internalUUID#69553, plant#69554, product#69555, blockedForReplenishmentStartingFrom#69556, productionAspect#69557, salesPlant#69558, listing#69559], false
(168) Repartition
Arguments: 25, true
(169) Project
Arguments: [systemId#69552, internalUUID#69553, plant#69554, product#69555, blockedForReplenishmentStartingFrom#69556, productionAspect#69557, salesPlant#69558, listing#69559, struct(systemId, systemId#69552, internalUUID, internalUUID#69553, plant, plant#69554, product, product#69555, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69556, productionAspect, productionAspect#69557, salesPlant, salesPlant#69558, listing, listing#69559) AS productPlant#69560]
(170) Project
Arguments: [productPlant#69560]
(171) Join
Arguments: LeftOuter, ((product#69548 <=> productPlant#69560.product.internalRefUUID) AND (plant#69549 <=> productPlant#69560.plant.internalRefUUID))
(172) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560]
(173) SubqueryAlias
Arguments: wl
(174) LogicalRelation
Arguments: parquet, [systemId#69561, internalUUID#69562, id#69563, displayId#69564, name#69565, category#69566, companyCode#69567, address#69568, mainDistributionChain#69569, mainPurchasingOrganization#69570, validPurchasingOrganizations#69571, productGroup#69572], false
(175) Repartition
Arguments: 25, true
(176) Project
Arguments: [internalUUID#69562, address#69568.timeZone.code AS timezonecode#69573]
(177) Join
Arguments: LeftOuter, (plant#69549 <=> internalUUID#69562)
(178) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, internalUUID#69562, CASE WHEN isnotnull(timezonecode#69573) THEN timezonecode#69573 ELSE UTC END AS timezonecode#69574]
(179) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574]
(180) LogicalRelation
Arguments: parquet, [systemId#69575, internalUUID#69576, id#69577, displayId#69578, name#69579, baseUnitOfMeasure#69580, unitOfMeasures#69581, unitOfMeasureConversions#69582, productionAspect#69583, salesAspect#69584, procurementAspect#69585, productGroup#69586], false
(181) Repartition
Arguments: 25, true
(182) Join
Arguments: LeftOuter, (product#69548 = internalUUID#69576)
(183) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574, systemId#69575, internalUUID#69576, id#69577, displayId#69578, name#69579, baseUnitOfMeasure#69580, unitOfMeasures#69581, unitOfMeasureConversions#69582, productionAspect#69583, salesAspect#69584, procurementAspect#69585, productGroup#69586, filter(unitOfMeasureConversions#69582, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69560.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69560.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#69580.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#69580.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#69587]
(184) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69587.quantityNumerator), true, [quantityNumerator#69588]
(185) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574, systemId#69575, internalUUID#69576, id#69577, displayId#69578, name#69579, baseUnitOfMeasure#69580, unitOfMeasures#69581, unitOfMeasureConversions#69582, productionAspect#69583, salesAspect#69584, procurementAspect#69585, productGroup#69586, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588]
(186) Generate
Arguments: explode(filteredUnitOfMeasureConversions#69587.quantityDenominator), true, [quantityDenominator#69589]
(187) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574, systemId#69575, internalUUID#69576, id#69577, displayId#69578, name#69579, baseUnitOfMeasure#69580, unitOfMeasures#69581, unitOfMeasureConversions#69582, productionAspect#69583, salesAspect#69584, procurementAspect#69585, productGroup#69586, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588, quantityDenominator#69589]
(188) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574, systemId#69575, internalUUID#69576, id#69577, displayId#69578, name#69579, baseUnitOfMeasure#69580, unitOfMeasures#69581, unitOfMeasureConversions#69582, productionAspect#69583, salesAspect#69584, procurementAspect#69585, productGroup#69586, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588, quantityDenominator#69589, (cast(quantityNumerator#69588 as double) / cast(quantityDenominator#69589 as double)) AS outboundUnit#69590]
(189) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574, systemId#69575, internalUUID#69576, id#69577, displayId#69578, name#69579, baseUnitOfMeasure#69580, unitOfMeasures#69581, unitOfMeasureConversions#69582, productionAspect#69583, salesAspect#69584, procurementAspect#69585, productGroup#69586, filteredUnitOfMeasureConversions#69587, quantityNumerator#69588, quantityDenominator#69589, CASE WHEN (isnull(outboundUnit#69590) OR (outboundUnit#69590 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#69590 END AS outboundUnit#69591]
(190) Project
Arguments: [product#69548, plant#69549, orderDateTime#69550, productPlant#69560, timezonecode#69574, outboundUnit#69591]
(191) Join
Arguments: Inner, ((plantUuid#69540 = plant#69549) AND (productUuid#69542 = product#69548))
(192) Filter
Arguments: (calculationDateTime#69536 <= orderDateTime#69550)
(193) Project
Arguments: [plantUuid#69540 AS plant#69620, productUuid#69542 AS product#69621, storageLocId#69543, calculationDateTime#69536, quantity#69545]
(194) Aggregate
Arguments: [plant#69620, product#69621, storageLocId#69543], [plant#69620, product#69621, storageLocId#69543, max(calculationDateTime#69536) AS max_calc_datetime#69441]
(195) Join
Arguments: Inner, ((((plant#69435 <=> plant#69620) AND (product#69436 <=> product#69621)) AND (storageLocId#69294 <=> storageLocId#69543)) AND (calculationDateTime#69273 <=> max_calc_datetime#69441))
(196) Project
Arguments: [plant#69435, product#69436, storageLocId#69294, calculationDateTime#69273, quantity#69296]
(197) Aggregate
Arguments: [product#69436, plant#69435], [product#69436, plant#69435, sum(quantity#69296) AS quantitySum#69751, min(calculationDateTime#69273) AS minCalculationDateTime#69752]
(198) Project
Arguments: [product#69436, plant#69435, quantitySum#69751, minCalculationDateTime#69752, round(quantitySum#69751, 0) AS roundedQuantitySum#69769]
(199) Join
Arguments: LeftOuter, ((plant#69020 = plant#69435) AND (product#69019 = product#69436))
(200) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, roundedQuantitySum#69769, minCalculationDateTime#69752]
(201) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, roundedQuantitySum#69769, minCalculationDateTime#69752, CASE WHEN isnotnull(minCalculationDateTime#69752) THEN minCalculationDateTime#69752 ELSE orderDateTime#69021 END AS stockDatetime#69868]
(202) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, roundedQuantitySum#69769, minCalculationDateTime#69752, stockDatetime#69868, CASE WHEN isnotnull(roundedQuantitySum#69769) THEN array(roundedQuantitySum#69769) ELSE array(0.0) END AS stockBatchQuantities#69869]
(203) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, roundedQuantitySum#69769, minCalculationDateTime#69752, stockDatetime#69868, stockBatchQuantities#69869, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#69871]
(204) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, roundedQuantitySum#69769, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871]
(205) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871]
(206) LogicalRelation
Arguments: parquet, [product#69978, plant#69979, orderDateTime#69980, planningStartDateTime#69981], false
(207) RepartitionByExpression
Arguments: [product#69978, plant#69979], 25
(208) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980]
(209) LogicalRelation
Arguments: parquet, [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989], false
(210) Repartition
Arguments: 25, true
(211) Project
Arguments: [systemId#69982, internalUUID#69983, plant#69984, product#69985, blockedForReplenishmentStartingFrom#69986, productionAspect#69987, salesPlant#69988, listing#69989, struct(systemId, systemId#69982, internalUUID, internalUUID#69983, plant, plant#69984, product, product#69985, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#69986, productionAspect, productionAspect#69987, salesPlant, salesPlant#69988, listing, listing#69989) AS productPlant#69990]
(212) Project
Arguments: [productPlant#69990]
(213) Join
Arguments: LeftOuter, ((product#69978 <=> productPlant#69990.product.internalRefUUID) AND (plant#69979 <=> productPlant#69990.plant.internalRefUUID))
(214) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990]
(215) SubqueryAlias
Arguments: wl
(216) LogicalRelation
Arguments: parquet, [systemId#69991, internalUUID#69992, id#69993, displayId#69994, name#69995, category#69996, companyCode#69997, address#69998, mainDistributionChain#69999, mainPurchasingOrganization#70000, validPurchasingOrganizations#70001, productGroup#70002], false
(217) Repartition
Arguments: 25, true
(218) Project
Arguments: [internalUUID#69992, address#69998.timeZone.code AS timezonecode#70003]
(219) Join
Arguments: LeftOuter, (plant#69979 <=> internalUUID#69992)
(220) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, internalUUID#69992, CASE WHEN isnotnull(timezonecode#70003) THEN timezonecode#70003 ELSE UTC END AS timezonecode#70005]
(221) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005]
(222) LogicalRelation
Arguments: parquet, [systemId#70006, internalUUID#70007, id#70008, displayId#70009, name#70010, baseUnitOfMeasure#70011, unitOfMeasures#70012, unitOfMeasureConversions#70013, productionAspect#70014, salesAspect#70015, procurementAspect#70016, productGroup#70017], false
(223) Repartition
Arguments: 25, true
(224) Join
Arguments: LeftOuter, (product#69978 = internalUUID#70007)
(225) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, systemId#70006, internalUUID#70007, id#70008, displayId#70009, name#70010, baseUnitOfMeasure#70011, unitOfMeasures#70012, unitOfMeasureConversions#70013, productionAspect#70014, salesAspect#70015, procurementAspect#70016, productGroup#70017, filter(unitOfMeasureConversions#70013, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70011.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70011.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70018]
(226) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70018.quantityNumerator), true, [quantityNumerator#70019]
(227) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, systemId#70006, internalUUID#70007, id#70008, displayId#70009, name#70010, baseUnitOfMeasure#70011, unitOfMeasures#70012, unitOfMeasureConversions#70013, productionAspect#70014, salesAspect#70015, procurementAspect#70016, productGroup#70017, filteredUnitOfMeasureConversions#70018, quantityNumerator#70019]
(228) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70018.quantityDenominator), true, [quantityDenominator#70020]
(229) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, systemId#70006, internalUUID#70007, id#70008, displayId#70009, name#70010, baseUnitOfMeasure#70011, unitOfMeasures#70012, unitOfMeasureConversions#70013, productionAspect#70014, salesAspect#70015, procurementAspect#70016, productGroup#70017, filteredUnitOfMeasureConversions#70018, quantityNumerator#70019, quantityDenominator#70020]
(230) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, systemId#70006, internalUUID#70007, id#70008, displayId#70009, name#70010, baseUnitOfMeasure#70011, unitOfMeasures#70012, unitOfMeasureConversions#70013, productionAspect#70014, salesAspect#70015, procurementAspect#70016, productGroup#70017, filteredUnitOfMeasureConversions#70018, quantityNumerator#70019, quantityDenominator#70020, (cast(quantityNumerator#70019 as double) / cast(quantityDenominator#70020 as double)) AS outboundUnit#70021]
(231) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, systemId#70006, internalUUID#70007, id#70008, displayId#70009, name#70010, baseUnitOfMeasure#70011, unitOfMeasures#70012, unitOfMeasureConversions#70013, productionAspect#70014, salesAspect#70015, procurementAspect#70016, productGroup#70017, filteredUnitOfMeasureConversions#70018, quantityNumerator#70019, quantityDenominator#70020, CASE WHEN (isnull(outboundUnit#70021) OR (outboundUnit#70021 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70021 END AS outboundUnit#70022]
(232) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022]
(233) LogicalRelation
Arguments: parquet, [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028], false
(234) Repartition
Arguments: 25, true
(235) LogicalRelation
Arguments: parquet, [marketUnit#70029, description#70030, articleHierarchy#70031, defaultCurrency#70032, responsibilities#70033, replenishmentTypes#70034, distributionCenters#70035, assignedArticleHierarchyNodes#70036, minOrderQtySetting#70037, listingCheck#70038, odsSelection#70039, demandProfiles#70040, constraintProfiles#70041, optimizationProfiles#70042, orderGroupSplitProfiles#70043, supplierMinimumProfiles#70044, multipleRestrictionProfiles#70045, preferredUomSource#70046, handlingOfUnfulfilledDemands#70047, negligibleQuantitiesThreshold#70048, eventtype#70049, minOrderQtySettingInternal#70050], false
(236) Repartition
Arguments: 25, true
(237) Filter
Arguments: (marketUnit#70029 <=> Daily_grocery)
(238) Project
Arguments: [marketUnit#70029, description#70030, articleHierarchy#70031, defaultCurrency#70032, responsibilities#70033, replenishmentTypes#70034, distributionCenters#70035, assignedArticleHierarchyNodes#70036, minOrderQtySetting#70037, listingCheck#70038, odsSelection#70039, demandProfiles#70040, constraintProfiles#70041, optimizationProfiles#70042, orderGroupSplitProfiles#70043, supplierMinimumProfiles#70044, multipleRestrictionProfiles#70045, preferredUomSource#70046, handlingOfUnfulfilledDemands#70047, negligibleQuantitiesThreshold#70048, eventtype#70049, minOrderQtySettingInternal#70050]
(239) Project
Arguments: [distributionCenters#70035]
(240) Generate
Arguments: explode(distributionCenters#70035), false, [distributionCenters#70051]
(241) Project
Arguments: [distributionCenters#70051]
(242) Generate
Arguments: explode(distributionCenters#70051.storageLocations), false, [storageLocations#70069]
(243) Project
Arguments: [distributionCenters#70051.id AS plantId#70070, distributionCenters#70051.internalRefUUID AS plantUuid#70071, storageLocations#70069]
(244) Project
Arguments: [plantId#70070, plantUuid#70071, storageLocations#70069.id AS storageLocId#70072, storageLocations#70069.internalRefUUID AS storageLocUuid#70073]
(245) LogicalRelation
Arguments: parquet, [product#70074, plant#70075, orderDateTime#70076, planningStartDateTime#70077], false
(246) RepartitionByExpression
Arguments: [product#70074, plant#70075], 25
(247) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076]
(248) LogicalRelation
Arguments: parquet, [systemId#70078, internalUUID#70079, plant#70080, product#70081, blockedForReplenishmentStartingFrom#70082, productionAspect#70083, salesPlant#70084, listing#70085], false
(249) Repartition
Arguments: 25, true
(250) Project
Arguments: [systemId#70078, internalUUID#70079, plant#70080, product#70081, blockedForReplenishmentStartingFrom#70082, productionAspect#70083, salesPlant#70084, listing#70085, struct(systemId, systemId#70078, internalUUID, internalUUID#70079, plant, plant#70080, product, product#70081, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70082, productionAspect, productionAspect#70083, salesPlant, salesPlant#70084, listing, listing#70085) AS productPlant#70086]
(251) Project
Arguments: [productPlant#70086]
(252) Join
Arguments: LeftOuter, ((product#70074 <=> productPlant#70086.product.internalRefUUID) AND (plant#70075 <=> productPlant#70086.plant.internalRefUUID))
(253) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086]
(254) SubqueryAlias
Arguments: wl
(255) LogicalRelation
Arguments: parquet, [systemId#70087, internalUUID#70088, id#70089, displayId#70090, name#70091, category#70092, companyCode#70093, address#70094, mainDistributionChain#70095, mainPurchasingOrganization#70096, validPurchasingOrganizations#70097, productGroup#70098], false
(256) Repartition
Arguments: 25, true
(257) Project
Arguments: [internalUUID#70088, address#70094.timeZone.code AS timezonecode#70099]
(258) Join
Arguments: LeftOuter, (plant#70075 <=> internalUUID#70088)
(259) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, internalUUID#70088, CASE WHEN isnotnull(timezonecode#70099) THEN timezonecode#70099 ELSE UTC END AS timezonecode#70100]
(260) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100]
(261) LogicalRelation
Arguments: parquet, [systemId#70101, internalUUID#70102, id#70103, displayId#70104, name#70105, baseUnitOfMeasure#70106, unitOfMeasures#70107, unitOfMeasureConversions#70108, productionAspect#70109, salesAspect#70110, procurementAspect#70111, productGroup#70112], false
(262) Repartition
Arguments: 25, true
(263) Join
Arguments: LeftOuter, (product#70074 = internalUUID#70102)
(264) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100, systemId#70101, internalUUID#70102, id#70103, displayId#70104, name#70105, baseUnitOfMeasure#70106, unitOfMeasures#70107, unitOfMeasureConversions#70108, productionAspect#70109, salesAspect#70110, procurementAspect#70111, productGroup#70112, filter(unitOfMeasureConversions#70108, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#70086.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#70086.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70106.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70106.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70113]
(265) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70113.quantityNumerator), true, [quantityNumerator#70114]
(266) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100, systemId#70101, internalUUID#70102, id#70103, displayId#70104, name#70105, baseUnitOfMeasure#70106, unitOfMeasures#70107, unitOfMeasureConversions#70108, productionAspect#70109, salesAspect#70110, procurementAspect#70111, productGroup#70112, filteredUnitOfMeasureConversions#70113, quantityNumerator#70114]
(267) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70113.quantityDenominator), true, [quantityDenominator#70115]
(268) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100, systemId#70101, internalUUID#70102, id#70103, displayId#70104, name#70105, baseUnitOfMeasure#70106, unitOfMeasures#70107, unitOfMeasureConversions#70108, productionAspect#70109, salesAspect#70110, procurementAspect#70111, productGroup#70112, filteredUnitOfMeasureConversions#70113, quantityNumerator#70114, quantityDenominator#70115]
(269) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100, systemId#70101, internalUUID#70102, id#70103, displayId#70104, name#70105, baseUnitOfMeasure#70106, unitOfMeasures#70107, unitOfMeasureConversions#70108, productionAspect#70109, salesAspect#70110, procurementAspect#70111, productGroup#70112, filteredUnitOfMeasureConversions#70113, quantityNumerator#70114, quantityDenominator#70115, (cast(quantityNumerator#70114 as double) / cast(quantityDenominator#70115 as double)) AS outboundUnit#70116]
(270) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100, systemId#70101, internalUUID#70102, id#70103, displayId#70104, name#70105, baseUnitOfMeasure#70106, unitOfMeasures#70107, unitOfMeasureConversions#70108, productionAspect#70109, salesAspect#70110, procurementAspect#70111, productGroup#70112, filteredUnitOfMeasureConversions#70113, quantityNumerator#70114, quantityDenominator#70115, CASE WHEN (isnull(outboundUnit#70116) OR (outboundUnit#70116 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70116 END AS outboundUnit#70117]
(271) Project
Arguments: [product#70074, plant#70075, orderDateTime#70076, productPlant#70086, timezonecode#70100, outboundUnit#70117]
(272) Project
Arguments: [plant#70075]
(273) Deduplicate
Arguments: [plant#70075]
(274) Join
Arguments: Inner, (plantUuid#70071 = plant#70075)
(275) Project
Arguments: [plantId#70070, plantUuid#70071, storageLocId#70072, storageLocUuid#70073]
(276) Join
Arguments: Inner, (plant#70026.internalRefUUID <=> plantUuid#70071)
(277) Generate
Arguments: explode(filter(stockQuantities#70028, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#70073) AND (lambda x#69269.storageLocation.Id = storageLocId#70072)), lambda x#69269, false))), false, [stockQuantity#70118]
(278) Project
Arguments: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70027, stockQuantities#70028, plantId#70070, plantUuid#70071, storageLocId#70072, storageLocUuid#70073, stockQuantity#70118]
(279) Aggregate
Arguments: [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023], [plantUuid#70071, internalUUID#70024, plant#70026, product#70025, systemId#70023, first(calculationDateTime#70027, false) AS calculationDateTime#70119, collect_list(stockQuantity#70118, 0, 0) AS stockQuantities#70120]
(280) Project
Arguments: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120]
(281) Generate
Arguments: explode(stockQuantities#70120), false, [stockQuantity#70121]
(282) Project
Arguments: [systemId#70023, internalUUID#70024, product#70025, plant#70026, calculationDateTime#70119, stockQuantities#70120, stockQuantity#70121]
(283) Project
Arguments: [plant#70026.id AS plant#70122, plant#70026.internalRefUUID AS plantUuid#70123, product#70025.id AS product#70124, product#70025.internalRefUUID AS productUuid#70125, calculationDateTime#70119, stockQuantity#70121.storagelocation.id AS storageLocId#70126, stockQuantity#70121.storagelocation.internalRefUUID AS storageLocUuid#70127, stockQuantity#70121.quantity.measure AS quantity#70128, stockQuantity#70121.specialStockIndicator.code AS specialStockIndicator#70129, stockQuantity#70121.stockType.code AS stockType#70130]
(284) Filter
Arguments: ((specialStockIndicator#70129 = ) AND (stockType#70130 = 01))
(285) LogicalRelation
Arguments: parquet, [product#70131, plant#70132, orderDateTime#70133, planningStartDateTime#70134], false
(286) RepartitionByExpression
Arguments: [product#70131, plant#70132], 25
(287) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133]
(288) LogicalRelation
Arguments: parquet, [systemId#70135, internalUUID#70136, plant#70137, product#70138, blockedForReplenishmentStartingFrom#70139, productionAspect#70140, salesPlant#70141, listing#70142], false
(289) Repartition
Arguments: 25, true
(290) Project
Arguments: [systemId#70135, internalUUID#70136, plant#70137, product#70138, blockedForReplenishmentStartingFrom#70139, productionAspect#70140, salesPlant#70141, listing#70142, struct(systemId, systemId#70135, internalUUID, internalUUID#70136, plant, plant#70137, product, product#70138, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70139, productionAspect, productionAspect#70140, salesPlant, salesPlant#70141, listing, listing#70142) AS productPlant#70143]
(291) Project
Arguments: [productPlant#70143]
(292) Join
Arguments: LeftOuter, ((product#70131 <=> productPlant#70143.product.internalRefUUID) AND (plant#70132 <=> productPlant#70143.plant.internalRefUUID))
(293) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143]
(294) SubqueryAlias
Arguments: wl
(295) LogicalRelation
Arguments: parquet, [systemId#70144, internalUUID#70145, id#70146, displayId#70147, name#70148, category#70149, companyCode#70150, address#70151, mainDistributionChain#70152, mainPurchasingOrganization#70153, validPurchasingOrganizations#70154, productGroup#70155], false
(296) Repartition
Arguments: 25, true
(297) Project
Arguments: [internalUUID#70145, address#70151.timeZone.code AS timezonecode#70156]
(298) Join
Arguments: LeftOuter, (plant#70132 <=> internalUUID#70145)
(299) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, internalUUID#70145, CASE WHEN isnotnull(timezonecode#70156) THEN timezonecode#70156 ELSE UTC END AS timezonecode#70157]
(300) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157]
(301) LogicalRelation
Arguments: parquet, [systemId#70158, internalUUID#70159, id#70160, displayId#70161, name#70162, baseUnitOfMeasure#70163, unitOfMeasures#70164, unitOfMeasureConversions#70165, productionAspect#70166, salesAspect#70167, procurementAspect#70168, productGroup#70169], false
(302) Repartition
Arguments: 25, true
(303) Join
Arguments: LeftOuter, (product#70131 = internalUUID#70159)
(304) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157, systemId#70158, internalUUID#70159, id#70160, displayId#70161, name#70162, baseUnitOfMeasure#70163, unitOfMeasures#70164, unitOfMeasureConversions#70165, productionAspect#70166, salesAspect#70167, procurementAspect#70168, productGroup#70169, filter(unitOfMeasureConversions#70165, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#70143.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#70143.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70163.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70163.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70171]
(305) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70171.quantityNumerator), true, [quantityNumerator#70172]
(306) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157, systemId#70158, internalUUID#70159, id#70160, displayId#70161, name#70162, baseUnitOfMeasure#70163, unitOfMeasures#70164, unitOfMeasureConversions#70165, productionAspect#70166, salesAspect#70167, procurementAspect#70168, productGroup#70169, filteredUnitOfMeasureConversions#70171, quantityNumerator#70172]
(307) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70171.quantityDenominator), true, [quantityDenominator#70173]
(308) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157, systemId#70158, internalUUID#70159, id#70160, displayId#70161, name#70162, baseUnitOfMeasure#70163, unitOfMeasures#70164, unitOfMeasureConversions#70165, productionAspect#70166, salesAspect#70167, procurementAspect#70168, productGroup#70169, filteredUnitOfMeasureConversions#70171, quantityNumerator#70172, quantityDenominator#70173]
(309) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157, systemId#70158, internalUUID#70159, id#70160, displayId#70161, name#70162, baseUnitOfMeasure#70163, unitOfMeasures#70164, unitOfMeasureConversions#70165, productionAspect#70166, salesAspect#70167, procurementAspect#70168, productGroup#70169, filteredUnitOfMeasureConversions#70171, quantityNumerator#70172, quantityDenominator#70173, (cast(quantityNumerator#70172 as double) / cast(quantityDenominator#70173 as double)) AS outboundUnit#70174]
(310) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157, systemId#70158, internalUUID#70159, id#70160, displayId#70161, name#70162, baseUnitOfMeasure#70163, unitOfMeasures#70164, unitOfMeasureConversions#70165, productionAspect#70166, salesAspect#70167, procurementAspect#70168, productGroup#70169, filteredUnitOfMeasureConversions#70171, quantityNumerator#70172, quantityDenominator#70173, CASE WHEN (isnull(outboundUnit#70174) OR (outboundUnit#70174 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70174 END AS outboundUnit#70175]
(311) Project
Arguments: [product#70131, plant#70132, orderDateTime#70133, productPlant#70143, timezonecode#70157, outboundUnit#70175]
(312) Join
Arguments: Inner, ((plantUuid#70123 = plant#70132) AND (productUuid#70125 = product#70131))
(313) Filter
Arguments: (calculationDateTime#70119 <= orderDateTime#70133)
(314) Project
Arguments: [plantUuid#70123 AS plant#70176, productUuid#70125 AS product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
(315) LogicalRelation
Arguments: parquet, [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183], false
(316) Repartition
Arguments: 25, true
(317) LogicalRelation
Arguments: parquet, [marketUnit#70184, description#70185, articleHierarchy#70186, defaultCurrency#70187, responsibilities#70188, replenishmentTypes#70189, distributionCenters#70190, assignedArticleHierarchyNodes#70191, minOrderQtySetting#70192, listingCheck#70193, odsSelection#70194, demandProfiles#70195, constraintProfiles#70196, optimizationProfiles#70197, orderGroupSplitProfiles#70198, supplierMinimumProfiles#70199, multipleRestrictionProfiles#70200, preferredUomSource#70201, handlingOfUnfulfilledDemands#70202, negligibleQuantitiesThreshold#70203, eventtype#70204, minOrderQtySettingInternal#70205], false
(318) Repartition
Arguments: 25, true
(319) Filter
Arguments: (marketUnit#70184 <=> Daily_grocery)
(320) Project
Arguments: [marketUnit#70184, description#70185, articleHierarchy#70186, defaultCurrency#70187, responsibilities#70188, replenishmentTypes#70189, distributionCenters#70190, assignedArticleHierarchyNodes#70191, minOrderQtySetting#70192, listingCheck#70193, odsSelection#70194, demandProfiles#70195, constraintProfiles#70196, optimizationProfiles#70197, orderGroupSplitProfiles#70198, supplierMinimumProfiles#70199, multipleRestrictionProfiles#70200, preferredUomSource#70201, handlingOfUnfulfilledDemands#70202, negligibleQuantitiesThreshold#70203, eventtype#70204, minOrderQtySettingInternal#70205]
(321) Project
Arguments: [distributionCenters#70190]
(322) Generate
Arguments: explode(distributionCenters#70190), false, [distributionCenters#70206]
(323) Project
Arguments: [distributionCenters#70206]
(324) Generate
Arguments: explode(distributionCenters#70206.storageLocations), false, [storageLocations#70207]
(325) Project
Arguments: [distributionCenters#70206.id AS plantId#70208, distributionCenters#70206.internalRefUUID AS plantUuid#70209, storageLocations#70207]
(326) Project
Arguments: [plantId#70208, plantUuid#70209, storageLocations#70207.id AS storageLocId#70210, storageLocations#70207.internalRefUUID AS storageLocUuid#70211]
(327) LogicalRelation
Arguments: parquet, [product#70212, plant#70213, orderDateTime#70214, planningStartDateTime#70215], false
(328) RepartitionByExpression
Arguments: [product#70212, plant#70213], 25
(329) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214]
(330) LogicalRelation
Arguments: parquet, [systemId#70216, internalUUID#70217, plant#70218, product#70219, blockedForReplenishmentStartingFrom#70220, productionAspect#70221, salesPlant#70222, listing#70223], false
(331) Repartition
Arguments: 25, true
(332) Project
Arguments: [systemId#70216, internalUUID#70217, plant#70218, product#70219, blockedForReplenishmentStartingFrom#70220, productionAspect#70221, salesPlant#70222, listing#70223, struct(systemId, systemId#70216, internalUUID, internalUUID#70217, plant, plant#70218, product, product#70219, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70220, productionAspect, productionAspect#70221, salesPlant, salesPlant#70222, listing, listing#70223) AS productPlant#70224]
(333) Project
Arguments: [productPlant#70224]
(334) Join
Arguments: LeftOuter, ((product#70212 <=> productPlant#70224.product.internalRefUUID) AND (plant#70213 <=> productPlant#70224.plant.internalRefUUID))
(335) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224]
(336) SubqueryAlias
Arguments: wl
(337) LogicalRelation
Arguments: parquet, [systemId#70225, internalUUID#70226, id#70227, displayId#70228, name#70229, category#70230, companyCode#70231, address#70232, mainDistributionChain#70233, mainPurchasingOrganization#70234, validPurchasingOrganizations#70235, productGroup#70236], false
(338) Repartition
Arguments: 25, true
(339) Project
Arguments: [internalUUID#70226, address#70232.timeZone.code AS timezonecode#70237]
(340) Join
Arguments: LeftOuter, (plant#70213 <=> internalUUID#70226)
(341) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, internalUUID#70226, CASE WHEN isnotnull(timezonecode#70237) THEN timezonecode#70237 ELSE UTC END AS timezonecode#70238]
(342) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238]
(343) LogicalRelation
Arguments: parquet, [systemId#70239, internalUUID#70240, id#70241, displayId#70242, name#70243, baseUnitOfMeasure#70244, unitOfMeasures#70245, unitOfMeasureConversions#70246, productionAspect#70247, salesAspect#70248, procurementAspect#70249, productGroup#70250], false
(344) Repartition
Arguments: 25, true
(345) Join
Arguments: LeftOuter, (product#70212 = internalUUID#70240)
(346) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238, systemId#70239, internalUUID#70240, id#70241, displayId#70242, name#70243, baseUnitOfMeasure#70244, unitOfMeasures#70245, unitOfMeasureConversions#70246, productionAspect#70247, salesAspect#70248, procurementAspect#70249, productGroup#70250, filter(unitOfMeasureConversions#70246, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#70224.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#70224.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70244.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70244.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70251]
(347) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70251.quantityNumerator), true, [quantityNumerator#70252]
(348) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238, systemId#70239, internalUUID#70240, id#70241, displayId#70242, name#70243, baseUnitOfMeasure#70244, unitOfMeasures#70245, unitOfMeasureConversions#70246, productionAspect#70247, salesAspect#70248, procurementAspect#70249, productGroup#70250, filteredUnitOfMeasureConversions#70251, quantityNumerator#70252]
(349) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70251.quantityDenominator), true, [quantityDenominator#70253]
(350) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238, systemId#70239, internalUUID#70240, id#70241, displayId#70242, name#70243, baseUnitOfMeasure#70244, unitOfMeasures#70245, unitOfMeasureConversions#70246, productionAspect#70247, salesAspect#70248, procurementAspect#70249, productGroup#70250, filteredUnitOfMeasureConversions#70251, quantityNumerator#70252, quantityDenominator#70253]
(351) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238, systemId#70239, internalUUID#70240, id#70241, displayId#70242, name#70243, baseUnitOfMeasure#70244, unitOfMeasures#70245, unitOfMeasureConversions#70246, productionAspect#70247, salesAspect#70248, procurementAspect#70249, productGroup#70250, filteredUnitOfMeasureConversions#70251, quantityNumerator#70252, quantityDenominator#70253, (cast(quantityNumerator#70252 as double) / cast(quantityDenominator#70253 as double)) AS outboundUnit#70254]
(352) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238, systemId#70239, internalUUID#70240, id#70241, displayId#70242, name#70243, baseUnitOfMeasure#70244, unitOfMeasures#70245, unitOfMeasureConversions#70246, productionAspect#70247, salesAspect#70248, procurementAspect#70249, productGroup#70250, filteredUnitOfMeasureConversions#70251, quantityNumerator#70252, quantityDenominator#70253, CASE WHEN (isnull(outboundUnit#70254) OR (outboundUnit#70254 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70254 END AS outboundUnit#70255]
(353) Project
Arguments: [product#70212, plant#70213, orderDateTime#70214, productPlant#70224, timezonecode#70238, outboundUnit#70255]
(354) Project
Arguments: [plant#70213]
(355) Deduplicate
Arguments: [plant#70213]
(356) Join
Arguments: Inner, (plantUuid#70209 = plant#70213)
(357) Project
Arguments: [plantId#70208, plantUuid#70209, storageLocId#70210, storageLocUuid#70211]
(358) Join
Arguments: Inner, (plant#70181.internalRefUUID <=> plantUuid#70209)
(359) Generate
Arguments: explode(filter(stockQuantities#70183, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#70211) AND (lambda x#69269.storageLocation.Id = storageLocId#70210)), lambda x#69269, false))), false, [stockQuantity#70256]
(360) Project
Arguments: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70182, stockQuantities#70183, plantId#70208, plantUuid#70209, storageLocId#70210, storageLocUuid#70211, stockQuantity#70256]
(361) Aggregate
Arguments: [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178], [plantUuid#70209, internalUUID#70179, plant#70181, product#70180, systemId#70178, first(calculationDateTime#70182, false) AS calculationDateTime#70257, collect_list(stockQuantity#70256, 0, 0) AS stockQuantities#70258]
(362) Project
Arguments: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70257, stockQuantities#70258]
(363) Generate
Arguments: explode(stockQuantities#70258), false, [stockQuantity#70259]
(364) Project
Arguments: [systemId#70178, internalUUID#70179, product#70180, plant#70181, calculationDateTime#70257, stockQuantities#70258, stockQuantity#70259]
(365) Project
Arguments: [plant#70181.id AS plant#70260, plant#70181.internalRefUUID AS plantUuid#70261, product#70180.id AS product#70262, product#70180.internalRefUUID AS productUuid#70263, calculationDateTime#70257, stockQuantity#70259.storagelocation.id AS storageLocId#70264, stockQuantity#70259.storagelocation.internalRefUUID AS storageLocUuid#70265, stockQuantity#70259.quantity.measure AS quantity#70266, stockQuantity#70259.specialStockIndicator.code AS specialStockIndicator#70267, stockQuantity#70259.stockType.code AS stockType#70268]
(366) Filter
Arguments: ((specialStockIndicator#70267 = ) AND (stockType#70268 = 01))
(367) LogicalRelation
Arguments: parquet, [product#70269, plant#70270, orderDateTime#70271, planningStartDateTime#70272], false
(368) RepartitionByExpression
Arguments: [product#70269, plant#70270], 25
(369) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271]
(370) LogicalRelation
Arguments: parquet, [systemId#70273, internalUUID#70274, plant#70275, product#70276, blockedForReplenishmentStartingFrom#70277, productionAspect#70278, salesPlant#70279, listing#70280], false
(371) Repartition
Arguments: 25, true
(372) Project
Arguments: [systemId#70273, internalUUID#70274, plant#70275, product#70276, blockedForReplenishmentStartingFrom#70277, productionAspect#70278, salesPlant#70279, listing#70280, struct(systemId, systemId#70273, internalUUID, internalUUID#70274, plant, plant#70275, product, product#70276, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70277, productionAspect, productionAspect#70278, salesPlant, salesPlant#70279, listing, listing#70280) AS productPlant#70281]
(373) Project
Arguments: [productPlant#70281]
(374) Join
Arguments: LeftOuter, ((product#70269 <=> productPlant#70281.product.internalRefUUID) AND (plant#70270 <=> productPlant#70281.plant.internalRefUUID))
(375) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281]
(376) SubqueryAlias
Arguments: wl
(377) LogicalRelation
Arguments: parquet, [systemId#70282, internalUUID#70283, id#70284, displayId#70285, name#70286, category#70287, companyCode#70288, address#70289, mainDistributionChain#70290, mainPurchasingOrganization#70291, validPurchasingOrganizations#70292, productGroup#70293], false
(378) Repartition
Arguments: 25, true
(379) Project
Arguments: [internalUUID#70283, address#70289.timeZone.code AS timezonecode#70294]
(380) Join
Arguments: LeftOuter, (plant#70270 <=> internalUUID#70283)
(381) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, internalUUID#70283, CASE WHEN isnotnull(timezonecode#70294) THEN timezonecode#70294 ELSE UTC END AS timezonecode#70295]
(382) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295]
(383) LogicalRelation
Arguments: parquet, [systemId#70296, internalUUID#70297, id#70298, displayId#70299, name#70300, baseUnitOfMeasure#70301, unitOfMeasures#70302, unitOfMeasureConversions#70303, productionAspect#70304, salesAspect#70305, procurementAspect#70306, productGroup#70307], false
(384) Repartition
Arguments: 25, true
(385) Join
Arguments: LeftOuter, (product#70269 = internalUUID#70297)
(386) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295, systemId#70296, internalUUID#70297, id#70298, displayId#70299, name#70300, baseUnitOfMeasure#70301, unitOfMeasures#70302, unitOfMeasureConversions#70303, productionAspect#70304, salesAspect#70305, procurementAspect#70306, productGroup#70307, filter(unitOfMeasureConversions#70303, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#70281.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#70281.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70301.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70301.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70308]
(387) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70308.quantityNumerator), true, [quantityNumerator#70309]
(388) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295, systemId#70296, internalUUID#70297, id#70298, displayId#70299, name#70300, baseUnitOfMeasure#70301, unitOfMeasures#70302, unitOfMeasureConversions#70303, productionAspect#70304, salesAspect#70305, procurementAspect#70306, productGroup#70307, filteredUnitOfMeasureConversions#70308, quantityNumerator#70309]
(389) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70308.quantityDenominator), true, [quantityDenominator#70310]
(390) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295, systemId#70296, internalUUID#70297, id#70298, displayId#70299, name#70300, baseUnitOfMeasure#70301, unitOfMeasures#70302, unitOfMeasureConversions#70303, productionAspect#70304, salesAspect#70305, procurementAspect#70306, productGroup#70307, filteredUnitOfMeasureConversions#70308, quantityNumerator#70309, quantityDenominator#70310]
(391) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295, systemId#70296, internalUUID#70297, id#70298, displayId#70299, name#70300, baseUnitOfMeasure#70301, unitOfMeasures#70302, unitOfMeasureConversions#70303, productionAspect#70304, salesAspect#70305, procurementAspect#70306, productGroup#70307, filteredUnitOfMeasureConversions#70308, quantityNumerator#70309, quantityDenominator#70310, (cast(quantityNumerator#70309 as double) / cast(quantityDenominator#70310 as double)) AS outboundUnit#70311]
(392) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295, systemId#70296, internalUUID#70297, id#70298, displayId#70299, name#70300, baseUnitOfMeasure#70301, unitOfMeasures#70302, unitOfMeasureConversions#70303, productionAspect#70304, salesAspect#70305, procurementAspect#70306, productGroup#70307, filteredUnitOfMeasureConversions#70308, quantityNumerator#70309, quantityDenominator#70310, CASE WHEN (isnull(outboundUnit#70311) OR (outboundUnit#70311 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70311 END AS outboundUnit#70312]
(393) Project
Arguments: [product#70269, plant#70270, orderDateTime#70271, productPlant#70281, timezonecode#70295, outboundUnit#70312]
(394) Join
Arguments: Inner, ((plantUuid#70261 = plant#70270) AND (productUuid#70263 = product#70269))
(395) Filter
Arguments: (calculationDateTime#70257 <= orderDateTime#70271)
(396) Project
Arguments: [plantUuid#70261 AS plant#70323, productUuid#70263 AS product#70324, storageLocId#70264, calculationDateTime#70257, quantity#70266]
(397) Aggregate
Arguments: [plant#70323, product#70324, storageLocId#70264], [plant#70323, product#70324, storageLocId#70264, max(calculationDateTime#70257) AS max_calc_datetime#70325]
(398) Join
Arguments: Inner, ((((plant#70176 <=> plant#70323) AND (product#70177 <=> product#70324)) AND (storageLocId#70126 <=> storageLocId#70264)) AND (calculationDateTime#70119 <=> max_calc_datetime#70325))
(399) Project
Arguments: [plant#70176, product#70177, storageLocId#70126, calculationDateTime#70119, quantity#70128]
(400) Aggregate
Arguments: [product#70177, plant#70176], [product#70177, plant#70176, sum(quantity#70128) AS quantitySum#70326, min(calculationDateTime#70119) AS minCalculationDateTime#70327]
(401) Project
Arguments: [product#70177, plant#70176, quantitySum#70326, minCalculationDateTime#70327, round(quantitySum#70326, 0) AS roundedQuantitySum#70328]
(402) Join
Arguments: LeftOuter, ((plant#69979 = plant#70176) AND (product#69978 = product#70177))
(403) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, roundedQuantitySum#70328, minCalculationDateTime#70327]
(404) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, roundedQuantitySum#70328, minCalculationDateTime#70327, CASE WHEN isnotnull(minCalculationDateTime#70327) THEN minCalculationDateTime#70327 ELSE orderDateTime#69980 END AS stockDatetime#70329]
(405) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, roundedQuantitySum#70328, minCalculationDateTime#70327, stockDatetime#70329, CASE WHEN isnotnull(roundedQuantitySum#70328) THEN array(roundedQuantitySum#70328) ELSE array(0.0) END AS stockBatchQuantities#70330]
(406) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, roundedQuantitySum#70328, minCalculationDateTime#70327, stockDatetime#70329, stockBatchQuantities#70330, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#70331]
(407) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, roundedQuantitySum#70328, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331]
(408) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331]
(409) LogicalRelation
Arguments: parquet, [product#69873, plant#69874, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881], false
(410) Join
Arguments: LeftOuter, ((product#69978 = product#69873) AND (plant#69979 = plant#69874))
(411) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881, product#69873, plant#69874]
(412) Project
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331, demandChannel#69875, demandStream#69876, considerVariance#69877, demandTimeBuckets#69878, demandPointInTimeStart#69879, demandPointInTimeEnd#69880, demandPointInTime#69881, CASE WHEN isnotnull(product#69873) THEN struct(demandChannel, demandChannel#69875, demandStream, demandStream#69876, considerVariance, considerVariance#69877, demandTimeBuckets, demandTimeBuckets#69878, demandPointInTimeStart, demandPointInTimeStart#69879, demandPointInTimeEnd, demandPointInTimeEnd#69880, demandPointInTime, demandPointInTime#69881) 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#69908]
(413) Aggregate
Arguments: [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331], [product#69978, plant#69979, orderDateTime#69980, productPlant#69990, timezonecode#70005, outboundUnit#70022, stockDatetime#70329, stockBatchQuantities#70330, stockBatchShelfLifeEndDatetimes#70331, collect_list(rawDemands#69908, 0, 0) AS rawDemands#69921]
(414) DeserializeToObject
Arguments: createexternalrow(invoke(product#69978.toString()), invoke(plant#69979.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#69980)), if (isnull(productPlant#69990)) null else createexternalrow(invoke(productPlant#69990.systemId.toString()), invoke(productPlant#69990.internalUUID.toString()), if (isnull(productPlant#69990.plant)) null else createexternalrow(invoke(productPlant#69990.plant.internalRefUUID.toString()), invoke(productPlant#69990.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#69990.product)) null else createexternalrow(invoke(productPlant#69990.product.internalRefUUID.toString()), invoke(productPlant#69990.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#69990.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#69990.productionAspect)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#69990.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#69990.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#69990.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#69990.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#69990.salesPlant)) null else createexternalrow(if (isnull(productPlant#69990.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#69990.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#69990.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, 9983), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#69990.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#70005.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#70022)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#70329)), mapobjects(lambdavariable(MapObject, DoubleType, true, 9984), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 9984) as double))), stockBatchQuantities#70330, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 9985), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 9985) as timestamp)))), stockBatchShelfLifeEndDatetimes#70331, 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, 9986), 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, 9986))) 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, 9986).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, 9986).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, 9986).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987).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, 9986).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, 9986).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, 9986).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988).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, 9986).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#69921, 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#69963: org.apache.spark.sql.Row
(415) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@783ec352, 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#69968: 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#69973, 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#69974, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9974), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9974), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9975), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9975), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9976), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9976), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9977), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9977), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9978), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9978), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#69975, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9980), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9980), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9981), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9981), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9982), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9982), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#69976]
(417) Join
Arguments: LeftOuter, ((plant#69974 <=> plant#69020) AND (product#69973 <=> product#69019))
(418) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, plant#69974, dayBucketDemands#69975, pointInTimeDemands#69976]
(419) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976]
(420) LogicalRelation
Arguments: parquet, [product#77180, plant#77181, orderDateTime#77182, planningStartDateTime#77183], false
(421) RepartitionByExpression
Arguments: [product#77180, plant#77181], 25
(422) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182]
(423) LogicalRelation
Arguments: parquet, [systemId#77184, internalUUID#77185, plant#77186, product#77187, blockedForReplenishmentStartingFrom#77188, productionAspect#77189, salesPlant#77190, listing#77191], false
(424) Repartition
Arguments: 25, true
(425) Project
Arguments: [systemId#77184, internalUUID#77185, plant#77186, product#77187, blockedForReplenishmentStartingFrom#77188, productionAspect#77189, salesPlant#77190, listing#77191, struct(systemId, systemId#77184, internalUUID, internalUUID#77185, plant, plant#77186, product, product#77187, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#77188, productionAspect, productionAspect#77189, salesPlant, salesPlant#77190, listing, listing#77191) AS productPlant#77192]
(426) Project
Arguments: [productPlant#77192]
(427) Join
Arguments: LeftOuter, ((product#77180 <=> productPlant#77192.product.internalRefUUID) AND (plant#77181 <=> productPlant#77192.plant.internalRefUUID))
(428) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192]
(429) SubqueryAlias
Arguments: wl
(430) LogicalRelation
Arguments: parquet, [systemId#77205, internalUUID#77206, id#77207, displayId#77208, name#77209, category#77210, companyCode#77211, address#77212, mainDistributionChain#77213, mainPurchasingOrganization#77214, validPurchasingOrganizations#77215, productGroup#77216], false
(431) Repartition
Arguments: 25, true
(432) Project
Arguments: [internalUUID#77206, address#77212.timeZone.code AS timezonecode#77217]
(433) Join
Arguments: LeftOuter, (plant#77181 <=> internalUUID#77206)
(434) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, internalUUID#77206, CASE WHEN isnotnull(timezonecode#77217) THEN timezonecode#77217 ELSE UTC END AS timezonecode#77219]
(435) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219]
(436) LogicalRelation
Arguments: parquet, [systemId#77220, internalUUID#77221, id#77222, displayId#77223, name#77224, baseUnitOfMeasure#77225, unitOfMeasures#77226, unitOfMeasureConversions#77227, productionAspect#77228, salesAspect#77229, procurementAspect#77230, productGroup#77231], false
(437) Repartition
Arguments: 25, true
(438) Join
Arguments: LeftOuter, (product#77180 = internalUUID#77221)
(439) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, systemId#77220, internalUUID#77221, id#77222, displayId#77223, name#77224, baseUnitOfMeasure#77225, unitOfMeasures#77226, unitOfMeasureConversions#77227, productionAspect#77228, salesAspect#77229, procurementAspect#77230, productGroup#77231, filter(unitOfMeasureConversions#77227, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#77192.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#77192.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#77225.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#77225.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#77246]
(440) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77246.quantityNumerator), true, [quantityNumerator#77259]
(441) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, systemId#77220, internalUUID#77221, id#77222, displayId#77223, name#77224, baseUnitOfMeasure#77225, unitOfMeasures#77226, unitOfMeasureConversions#77227, productionAspect#77228, salesAspect#77229, procurementAspect#77230, productGroup#77231, filteredUnitOfMeasureConversions#77246, quantityNumerator#77259]
(442) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77246.quantityDenominator), true, [quantityDenominator#77260]
(443) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, systemId#77220, internalUUID#77221, id#77222, displayId#77223, name#77224, baseUnitOfMeasure#77225, unitOfMeasures#77226, unitOfMeasureConversions#77227, productionAspect#77228, salesAspect#77229, procurementAspect#77230, productGroup#77231, filteredUnitOfMeasureConversions#77246, quantityNumerator#77259, quantityDenominator#77260]
(444) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, systemId#77220, internalUUID#77221, id#77222, displayId#77223, name#77224, baseUnitOfMeasure#77225, unitOfMeasures#77226, unitOfMeasureConversions#77227, productionAspect#77228, salesAspect#77229, procurementAspect#77230, productGroup#77231, filteredUnitOfMeasureConversions#77246, quantityNumerator#77259, quantityDenominator#77260, (cast(quantityNumerator#77259 as double) / cast(quantityDenominator#77260 as double)) AS outboundUnit#77263]
(445) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, systemId#77220, internalUUID#77221, id#77222, displayId#77223, name#77224, baseUnitOfMeasure#77225, unitOfMeasures#77226, unitOfMeasureConversions#77227, productionAspect#77228, salesAspect#77229, procurementAspect#77230, productGroup#77231, filteredUnitOfMeasureConversions#77246, quantityNumerator#77259, quantityDenominator#77260, CASE WHEN (isnull(outboundUnit#77263) OR (outboundUnit#77263 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#77263 END AS outboundUnit#77265]
(446) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, outboundUnit#77265]
(447) LogicalRelation
Arguments: parquet, [systemId#77266, internalUUID#77267, product#77268, plant#77269, calculationDateTime#77270, stockQuantities#77271], false
(448) Repartition
Arguments: 25, true
(449) LogicalRelation
Arguments: parquet, [marketUnit#77272, description#77273, articleHierarchy#77274, defaultCurrency#77275, responsibilities#77276, replenishmentTypes#77277, distributionCenters#77278, assignedArticleHierarchyNodes#77279, minOrderQtySetting#77280, listingCheck#77281, odsSelection#77282, demandProfiles#77283, constraintProfiles#77284, optimizationProfiles#77285, orderGroupSplitProfiles#77286, supplierMinimumProfiles#77287, multipleRestrictionProfiles#77288, preferredUomSource#77289, handlingOfUnfulfilledDemands#77290, negligibleQuantitiesThreshold#77291, eventtype#77292, minOrderQtySettingInternal#77293], false
(450) Repartition
Arguments: 25, true
(451) Filter
Arguments: (marketUnit#77272 <=> Daily_grocery)
(452) Project
Arguments: [marketUnit#77272, description#77273, articleHierarchy#77274, defaultCurrency#77275, responsibilities#77276, replenishmentTypes#77277, distributionCenters#77278, assignedArticleHierarchyNodes#77279, minOrderQtySetting#77280, listingCheck#77281, odsSelection#77282, demandProfiles#77283, constraintProfiles#77284, optimizationProfiles#77285, orderGroupSplitProfiles#77286, supplierMinimumProfiles#77287, multipleRestrictionProfiles#77288, preferredUomSource#77289, handlingOfUnfulfilledDemands#77290, negligibleQuantitiesThreshold#77291, eventtype#77292, minOrderQtySettingInternal#77293]
(453) Project
Arguments: [distributionCenters#77278]
(454) Generate
Arguments: explode(distributionCenters#77278), false, [distributionCenters#77295]
(455) Project
Arguments: [distributionCenters#77295]
(456) Generate
Arguments: explode(distributionCenters#77295.storageLocations), false, [storageLocations#77297]
(457) Project
Arguments: [distributionCenters#77295.id AS plantId#77324, distributionCenters#77295.internalRefUUID AS plantUuid#77326, storageLocations#77297]
(458) Project
Arguments: [plantId#77324, plantUuid#77326, storageLocations#77297.id AS storageLocId#77328, storageLocations#77297.internalRefUUID AS storageLocUuid#77329]
(459) LogicalRelation
Arguments: parquet, [product#77330, plant#77331, orderDateTime#77332, planningStartDateTime#77333], false
(460) RepartitionByExpression
Arguments: [product#77330, plant#77331], 25
(461) Project
Arguments: [product#77330, plant#77331, orderDateTime#77332]
(462) LogicalRelation
Arguments: parquet, [systemId#77334, internalUUID#77335, plant#77336, product#77337, blockedForReplenishmentStartingFrom#77338, productionAspect#77339, salesPlant#77340, listing#77341], false
(463) Repartition
Arguments: 25, true
(464) Project
Arguments: [systemId#77334, internalUUID#77335, plant#77336, product#77337, blockedForReplenishmentStartingFrom#77338, productionAspect#77339, salesPlant#77340, listing#77341, struct(systemId, systemId#77334, internalUUID, internalUUID#77335, plant, plant#77336, product, product#77337, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#77338, productionAspect, productionAspect#77339, salesPlant, salesPlant#77340, listing, listing#77341) AS productPlant#77343]
(465) Project
Arguments: [productPlant#77343]
(466) Join
Arguments: LeftOuter, ((product#77330 <=> productPlant#77343.product.internalRefUUID) AND (plant#77331 <=> productPlant#77343.plant.internalRefUUID))
(467) Project
Arguments: [product#77330, plant#77331, orderDateTime#77332, productPlant#77343]
(468) SubqueryAlias
Arguments: wl
(469) LogicalRelation
Arguments: parquet, [systemId#77353, internalUUID#77354, id#77355, displayId#77356, name#77357, category#77358, companyCode#77359, address#77360, mainDistributionChain#77361, mainPurchasingOrganization#77362, validPurchasingOrganizations#77363, productGroup#77364], false
(470) Repartition
Arguments: 25, true
(471) Project
Arguments: [internalUUID#77354, address#77360.timeZone.code AS timezonecode#77373]
(472) Join
Arguments: LeftOuter, (plant#77331 <=> internalUUID#77354)
(473) Project
Arguments: [product#77330, plant#77331, orderDateTime#77332, productPlant#77343, internalUUID#77354, CASE WHEN isnotnull(timezonecode#77373) THEN timezonecode#77373 ELSE UTC END AS timezonecode#77375]
(474) Project
Arguments: [product#77330, plant#77331, orderDateTime#77332, productPlant#77343, timezonecode#77375]
(475) LogicalRelation
Arguments: parquet, [systemId#77376, internalUUID#77377, id#77378, displayId#77379, name#77380, baseUnitOfMeasure#77381, unitOfMeasures#77382, unitOfMeasureConversions#77383, productionAspect#77384, salesAspect#77385, procurementAspect#77386, productGroup#77387], false
(476) Repartition
Arguments: 25, true
(477) Join
Arguments: LeftOuter, (product#77330 = internalUUID#77377)
(478) Project
Arguments: [product#77330, plant#77331, orderDateTime#77332, productPlant#77343, timezonecode#77375, systemId#77376, internalUUID#77377, id#77378, displayId#77379, name#77380, baseUnitOfMeasure#77381, unitOfMeasures#77382, unitOfMeasureConversions#77383, productionAspect#77384, salesAspect#77385, procurementAspect#77386, productGroup#77387, filter(unitOfMeasureConversions#77383, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#77343.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#77343.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#77381.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#77381.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#77402]
(479) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77402.quantityNumerator), true, [quantityNumerator#77415]
(480) Project
Arguments: [product#77330, plant#77331, orderDateTime#77332, productPlant#77343, timezonecode#77375, systemId#77376, internalUUID#77377, id#77378, displayId#77379, name#77380, baseUnitOfMeasure#77381, unitOfMeasures#77382, unitOfMeasureConversions#77383, productionAspect#77384, salesAspect#77385, procurementAspect#77386, productGroup#77387, filteredUnitOfMeasureConversions#77402, quantityNumerator#77415]
(481) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77402.quantityDenominator), true, [quantityDenominator#77416]
(482) Project
Arguments: [product#77330, plant#77331, orderDateTime#77332, productPlant#77343, timezonecode#77375, systemId#77376, internalUUID#77377, id#77378, displayId#77379, name#77380, baseUnitOfMeasure#77381, unitOfMeasures#77382, unitOfMeasureConversions#77383, productionAspect#77384, salesAspect#77385, procurementAspect#77386, productGroup#77387, filteredUnitOfMeasureConversions#77402, quantityNumerator#77415, quantityDenominator#77416]
(483) Project
Arguments: [product#77330, plant#77331, orderDateTime#77332, productPlant#77343, timezonecode#77375, systemId#77376, internalUUID#77377, id#77378, displayId#77379, name#77380, baseUnitOfMeasure#77381, unitOfMeasures#77382, unitOfMeasureConversions#77383, productionAspect#77384, salesAspect#77385, procurementAspect#77386, productGroup#77387, filteredUnitOfMeasureConversions#77402, quantityNumerator#77415, quantityDenominator#77416, (cast(quantityNumerator#77415 as double) / cast(quantityDenominator#77416 as double)) AS outboundUnit#77418]
(484) Project
Arguments: [product#77330, plant#77331, orderDateTime#77332, productPlant#77343, timezonecode#77375, systemId#77376, internalUUID#77377, id#77378, displayId#77379, name#77380, baseUnitOfMeasure#77381, unitOfMeasures#77382, unitOfMeasureConversions#77383, productionAspect#77384, salesAspect#77385, procurementAspect#77386, productGroup#77387, filteredUnitOfMeasureConversions#77402, quantityNumerator#77415, quantityDenominator#77416, CASE WHEN (isnull(outboundUnit#77418) OR (outboundUnit#77418 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#77418 END AS outboundUnit#77420]
(485) Project
Arguments: [product#77330, plant#77331, orderDateTime#77332, productPlant#77343, timezonecode#77375, outboundUnit#77420]
(486) Project
Arguments: [plant#77331]
(487) Deduplicate
Arguments: [plant#77331]
(488) Join
Arguments: Inner, (plantUuid#77326 = plant#77331)
(489) Project
Arguments: [plantId#77324, plantUuid#77326, storageLocId#77328, storageLocUuid#77329]
(490) Join
Arguments: Inner, (plant#77269.internalRefUUID <=> plantUuid#77326)
(491) Generate
Arguments: explode(filter(stockQuantities#77271, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#77329) AND (lambda x#69269.storageLocation.Id = storageLocId#77328)), lambda x#69269, false))), false, [stockQuantity#77424]
(492) Project
Arguments: [systemId#77266, internalUUID#77267, product#77268, plant#77269, calculationDateTime#77270, stockQuantities#77271, plantId#77324, plantUuid#77326, storageLocId#77328, storageLocUuid#77329, stockQuantity#77424]
(493) Aggregate
Arguments: [plantUuid#77326, internalUUID#77267, plant#77269, product#77268, systemId#77266], [plantUuid#77326, internalUUID#77267, plant#77269, product#77268, systemId#77266, first(calculationDateTime#77270, false) AS calculationDateTime#77438, collect_list(stockQuantity#77424, 0, 0) AS stockQuantities#77439]
(494) Project
Arguments: [systemId#77266, internalUUID#77267, product#77268, plant#77269, calculationDateTime#77438, stockQuantities#77439]
(495) Generate
Arguments: explode(stockQuantities#77439), false, [stockQuantity#77467]
(496) Project
Arguments: [systemId#77266, internalUUID#77267, product#77268, plant#77269, calculationDateTime#77438, stockQuantities#77439, stockQuantity#77467]
(497) Project
Arguments: [plant#77269.id AS plant#77480, plant#77269.internalRefUUID AS plantUuid#77481, product#77268.id AS product#77482, product#77268.internalRefUUID AS productUuid#77483, calculationDateTime#77438, stockQuantity#77467.storagelocation.id AS storageLocId#77484, stockQuantity#77467.storagelocation.internalRefUUID AS storageLocUuid#77485, stockQuantity#77467.quantity.measure AS quantity#77486, stockQuantity#77467.specialStockIndicator.code AS specialStockIndicator#77487, stockQuantity#77467.stockType.code AS stockType#77488]
(498) Filter
Arguments: ((specialStockIndicator#77487 = ) AND (stockType#77488 = 01))
(499) LogicalRelation
Arguments: parquet, [product#77490, plant#77491, orderDateTime#77492, planningStartDateTime#77493], false
(500) RepartitionByExpression
Arguments: [product#77490, plant#77491], 25
(501) Project
Arguments: [product#77490, plant#77491, orderDateTime#77492]
(502) LogicalRelation
Arguments: parquet, [systemId#77495, internalUUID#77496, plant#77497, product#77498, blockedForReplenishmentStartingFrom#77499, productionAspect#77500, salesPlant#77501, listing#77502], false
(503) Repartition
Arguments: 25, true
(504) Project
Arguments: [systemId#77495, internalUUID#77496, plant#77497, product#77498, blockedForReplenishmentStartingFrom#77499, productionAspect#77500, salesPlant#77501, listing#77502, struct(systemId, systemId#77495, internalUUID, internalUUID#77496, plant, plant#77497, product, product#77498, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#77499, productionAspect, productionAspect#77500, salesPlant, salesPlant#77501, listing, listing#77502) AS productPlant#77503]
(505) Project
Arguments: [productPlant#77503]
(506) Join
Arguments: LeftOuter, ((product#77490 <=> productPlant#77503.product.internalRefUUID) AND (plant#77491 <=> productPlant#77503.plant.internalRefUUID))
(507) Project
Arguments: [product#77490, plant#77491, orderDateTime#77492, productPlant#77503]
(508) SubqueryAlias
Arguments: wl
(509) LogicalRelation
Arguments: parquet, [systemId#77504, internalUUID#77505, id#77506, displayId#77507, name#77508, category#77509, companyCode#77510, address#77511, mainDistributionChain#77512, mainPurchasingOrganization#77513, validPurchasingOrganizations#77514, productGroup#77515], false
(510) Repartition
Arguments: 25, true
(511) Project
Arguments: [internalUUID#77505, address#77511.timeZone.code AS timezonecode#77516]
(512) Join
Arguments: LeftOuter, (plant#77491 <=> internalUUID#77505)
(513) Project
Arguments: [product#77490, plant#77491, orderDateTime#77492, productPlant#77503, internalUUID#77505, CASE WHEN isnotnull(timezonecode#77516) THEN timezonecode#77516 ELSE UTC END AS timezonecode#77519]
(514) Project
Arguments: [product#77490, plant#77491, orderDateTime#77492, productPlant#77503, timezonecode#77519]
(515) LogicalRelation
Arguments: parquet, [systemId#77521, internalUUID#77522, id#77523, displayId#77524, name#77525, baseUnitOfMeasure#77526, unitOfMeasures#77527, unitOfMeasureConversions#77528, productionAspect#77529, salesAspect#77530, procurementAspect#77531, productGroup#77532], false
(516) Repartition
Arguments: 25, true
(517) Join
Arguments: LeftOuter, (product#77490 = internalUUID#77522)
(518) Project
Arguments: [product#77490, plant#77491, orderDateTime#77492, productPlant#77503, timezonecode#77519, systemId#77521, internalUUID#77522, id#77523, displayId#77524, name#77525, baseUnitOfMeasure#77526, unitOfMeasures#77527, unitOfMeasureConversions#77528, productionAspect#77529, salesAspect#77530, procurementAspect#77531, productGroup#77532, filter(unitOfMeasureConversions#77528, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#77503.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#77503.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#77526.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#77526.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#77563]
(519) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77563.quantityNumerator), true, [quantityNumerator#77565]
(520) Project
Arguments: [product#77490, plant#77491, orderDateTime#77492, productPlant#77503, timezonecode#77519, systemId#77521, internalUUID#77522, id#77523, displayId#77524, name#77525, baseUnitOfMeasure#77526, unitOfMeasures#77527, unitOfMeasureConversions#77528, productionAspect#77529, salesAspect#77530, procurementAspect#77531, productGroup#77532, filteredUnitOfMeasureConversions#77563, quantityNumerator#77565]
(521) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77563.quantityDenominator), true, [quantityDenominator#77575]
(522) Project
Arguments: [product#77490, plant#77491, orderDateTime#77492, productPlant#77503, timezonecode#77519, systemId#77521, internalUUID#77522, id#77523, displayId#77524, name#77525, baseUnitOfMeasure#77526, unitOfMeasures#77527, unitOfMeasureConversions#77528, productionAspect#77529, salesAspect#77530, procurementAspect#77531, productGroup#77532, filteredUnitOfMeasureConversions#77563, quantityNumerator#77565, quantityDenominator#77575]
(523) Project
Arguments: [product#77490, plant#77491, orderDateTime#77492, productPlant#77503, timezonecode#77519, systemId#77521, internalUUID#77522, id#77523, displayId#77524, name#77525, baseUnitOfMeasure#77526, unitOfMeasures#77527, unitOfMeasureConversions#77528, productionAspect#77529, salesAspect#77530, procurementAspect#77531, productGroup#77532, filteredUnitOfMeasureConversions#77563, quantityNumerator#77565, quantityDenominator#77575, (cast(quantityNumerator#77565 as double) / cast(quantityDenominator#77575 as double)) AS outboundUnit#77585]
(524) Project
Arguments: [product#77490, plant#77491, orderDateTime#77492, productPlant#77503, timezonecode#77519, systemId#77521, internalUUID#77522, id#77523, displayId#77524, name#77525, baseUnitOfMeasure#77526, unitOfMeasures#77527, unitOfMeasureConversions#77528, productionAspect#77529, salesAspect#77530, procurementAspect#77531, productGroup#77532, filteredUnitOfMeasureConversions#77563, quantityNumerator#77565, quantityDenominator#77575, CASE WHEN (isnull(outboundUnit#77585) OR (outboundUnit#77585 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#77585 END AS outboundUnit#77598]
(525) Project
Arguments: [product#77490, plant#77491, orderDateTime#77492, productPlant#77503, timezonecode#77519, outboundUnit#77598]
(526) Join
Arguments: Inner, ((plantUuid#77481 = plant#77491) AND (productUuid#77483 = product#77490))
(527) Filter
Arguments: (calculationDateTime#77438 <= orderDateTime#77492)
(528) Project
Arguments: [plantUuid#77481 AS plant#77613, productUuid#77483 AS product#77614, storageLocId#77484, calculationDateTime#77438, quantity#77486]
(529) LogicalRelation
Arguments: parquet, [systemId#77615, internalUUID#77616, product#77617, plant#77618, calculationDateTime#77619, stockQuantities#77620], false
(530) Repartition
Arguments: 25, true
(531) LogicalRelation
Arguments: parquet, [marketUnit#77621, description#77622, articleHierarchy#77623, defaultCurrency#77624, responsibilities#77625, replenishmentTypes#77626, distributionCenters#77627, assignedArticleHierarchyNodes#77628, minOrderQtySetting#77629, listingCheck#77630, odsSelection#77631, demandProfiles#77632, constraintProfiles#77633, optimizationProfiles#77634, orderGroupSplitProfiles#77635, supplierMinimumProfiles#77636, multipleRestrictionProfiles#77637, preferredUomSource#77638, handlingOfUnfulfilledDemands#77639, negligibleQuantitiesThreshold#77640, eventtype#77641, minOrderQtySettingInternal#77642], false
(532) Repartition
Arguments: 25, true
(533) Filter
Arguments: (marketUnit#77621 <=> Daily_grocery)
(534) Project
Arguments: [marketUnit#77621, description#77622, articleHierarchy#77623, defaultCurrency#77624, responsibilities#77625, replenishmentTypes#77626, distributionCenters#77627, assignedArticleHierarchyNodes#77628, minOrderQtySetting#77629, listingCheck#77630, odsSelection#77631, demandProfiles#77632, constraintProfiles#77633, optimizationProfiles#77634, orderGroupSplitProfiles#77635, supplierMinimumProfiles#77636, multipleRestrictionProfiles#77637, preferredUomSource#77638, handlingOfUnfulfilledDemands#77639, negligibleQuantitiesThreshold#77640, eventtype#77641, minOrderQtySettingInternal#77642]
(535) Project
Arguments: [distributionCenters#77627]
(536) Generate
Arguments: explode(distributionCenters#77627), false, [distributionCenters#77645]
(537) Project
Arguments: [distributionCenters#77645]
(538) Generate
Arguments: explode(distributionCenters#77645.storageLocations), false, [storageLocations#77646]
(539) Project
Arguments: [distributionCenters#77645.id AS plantId#77648, distributionCenters#77645.internalRefUUID AS plantUuid#77649, storageLocations#77646]
(540) Project
Arguments: [plantId#77648, plantUuid#77649, storageLocations#77646.id AS storageLocId#77650, storageLocations#77646.internalRefUUID AS storageLocUuid#77651]
(541) LogicalRelation
Arguments: parquet, [product#77652, plant#77653, orderDateTime#77654, planningStartDateTime#77655], false
(542) RepartitionByExpression
Arguments: [product#77652, plant#77653], 25
(543) Project
Arguments: [product#77652, plant#77653, orderDateTime#77654]
(544) LogicalRelation
Arguments: parquet, [systemId#77657, internalUUID#77658, plant#77659, product#77660, blockedForReplenishmentStartingFrom#77661, productionAspect#77662, salesPlant#77663, listing#77664], false
(545) Repartition
Arguments: 25, true
(546) Project
Arguments: [systemId#77657, internalUUID#77658, plant#77659, product#77660, blockedForReplenishmentStartingFrom#77661, productionAspect#77662, salesPlant#77663, listing#77664, struct(systemId, systemId#77657, internalUUID, internalUUID#77658, plant, plant#77659, product, product#77660, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#77661, productionAspect, productionAspect#77662, salesPlant, salesPlant#77663, listing, listing#77664) AS productPlant#77666]
(547) Project
Arguments: [productPlant#77666]
(548) Join
Arguments: LeftOuter, ((product#77652 <=> productPlant#77666.product.internalRefUUID) AND (plant#77653 <=> productPlant#77666.plant.internalRefUUID))
(549) Project
Arguments: [product#77652, plant#77653, orderDateTime#77654, productPlant#77666]
(550) SubqueryAlias
Arguments: wl
(551) LogicalRelation
Arguments: parquet, [systemId#77667, internalUUID#77668, id#77669, displayId#77670, name#77671, category#77672, companyCode#77673, address#77674, mainDistributionChain#77675, mainPurchasingOrganization#77676, validPurchasingOrganizations#77677, productGroup#77678], false
(552) Repartition
Arguments: 25, true
(553) Project
Arguments: [internalUUID#77668, address#77674.timeZone.code AS timezonecode#77679]
(554) Join
Arguments: LeftOuter, (plant#77653 <=> internalUUID#77668)
(555) Project
Arguments: [product#77652, plant#77653, orderDateTime#77654, productPlant#77666, internalUUID#77668, CASE WHEN isnotnull(timezonecode#77679) THEN timezonecode#77679 ELSE UTC END AS timezonecode#77681]
(556) Project
Arguments: [product#77652, plant#77653, orderDateTime#77654, productPlant#77666, timezonecode#77681]
(557) LogicalRelation
Arguments: parquet, [systemId#77682, internalUUID#77683, id#77684, displayId#77685, name#77686, baseUnitOfMeasure#77687, unitOfMeasures#77688, unitOfMeasureConversions#77689, productionAspect#77690, salesAspect#77691, procurementAspect#77692, productGroup#77693], false
(558) Repartition
Arguments: 25, true
(559) Join
Arguments: LeftOuter, (product#77652 = internalUUID#77683)
(560) Project
Arguments: [product#77652, plant#77653, orderDateTime#77654, productPlant#77666, timezonecode#77681, systemId#77682, internalUUID#77683, id#77684, displayId#77685, name#77686, baseUnitOfMeasure#77687, unitOfMeasures#77688, unitOfMeasureConversions#77689, productionAspect#77690, salesAspect#77691, procurementAspect#77692, productGroup#77693, filter(unitOfMeasureConversions#77689, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#77666.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#77666.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#77687.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#77687.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#77697]
(561) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77697.quantityNumerator), true, [quantityNumerator#77707]
(562) Project
Arguments: [product#77652, plant#77653, orderDateTime#77654, productPlant#77666, timezonecode#77681, systemId#77682, internalUUID#77683, id#77684, displayId#77685, name#77686, baseUnitOfMeasure#77687, unitOfMeasures#77688, unitOfMeasureConversions#77689, productionAspect#77690, salesAspect#77691, procurementAspect#77692, productGroup#77693, filteredUnitOfMeasureConversions#77697, quantityNumerator#77707]
(563) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77697.quantityDenominator), true, [quantityDenominator#77720]
(564) Project
Arguments: [product#77652, plant#77653, orderDateTime#77654, productPlant#77666, timezonecode#77681, systemId#77682, internalUUID#77683, id#77684, displayId#77685, name#77686, baseUnitOfMeasure#77687, unitOfMeasures#77688, unitOfMeasureConversions#77689, productionAspect#77690, salesAspect#77691, procurementAspect#77692, productGroup#77693, filteredUnitOfMeasureConversions#77697, quantityNumerator#77707, quantityDenominator#77720]
(565) Project
Arguments: [product#77652, plant#77653, orderDateTime#77654, productPlant#77666, timezonecode#77681, systemId#77682, internalUUID#77683, id#77684, displayId#77685, name#77686, baseUnitOfMeasure#77687, unitOfMeasures#77688, unitOfMeasureConversions#77689, productionAspect#77690, salesAspect#77691, procurementAspect#77692, productGroup#77693, filteredUnitOfMeasureConversions#77697, quantityNumerator#77707, quantityDenominator#77720, (cast(quantityNumerator#77707 as double) / cast(quantityDenominator#77720 as double)) AS outboundUnit#77722]
(566) Project
Arguments: [product#77652, plant#77653, orderDateTime#77654, productPlant#77666, timezonecode#77681, systemId#77682, internalUUID#77683, id#77684, displayId#77685, name#77686, baseUnitOfMeasure#77687, unitOfMeasures#77688, unitOfMeasureConversions#77689, productionAspect#77690, salesAspect#77691, procurementAspect#77692, productGroup#77693, filteredUnitOfMeasureConversions#77697, quantityNumerator#77707, quantityDenominator#77720, CASE WHEN (isnull(outboundUnit#77722) OR (outboundUnit#77722 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#77722 END AS outboundUnit#77736]
(567) Project
Arguments: [product#77652, plant#77653, orderDateTime#77654, productPlant#77666, timezonecode#77681, outboundUnit#77736]
(568) Project
Arguments: [plant#77653]
(569) Deduplicate
Arguments: [plant#77653]
(570) Join
Arguments: Inner, (plantUuid#77649 = plant#77653)
(571) Project
Arguments: [plantId#77648, plantUuid#77649, storageLocId#77650, storageLocUuid#77651]
(572) Join
Arguments: Inner, (plant#77618.internalRefUUID <=> plantUuid#77649)
(573) Generate
Arguments: explode(filter(stockQuantities#77620, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#77651) AND (lambda x#69269.storageLocation.Id = storageLocId#77650)), lambda x#69269, false))), false, [stockQuantity#77752]
(574) Project
Arguments: [systemId#77615, internalUUID#77616, product#77617, plant#77618, calculationDateTime#77619, stockQuantities#77620, plantId#77648, plantUuid#77649, storageLocId#77650, storageLocUuid#77651, stockQuantity#77752]
(575) Aggregate
Arguments: [plantUuid#77649, internalUUID#77616, plant#77618, product#77617, systemId#77615], [plantUuid#77649, internalUUID#77616, plant#77618, product#77617, systemId#77615, first(calculationDateTime#77619, false) AS calculationDateTime#77754, collect_list(stockQuantity#77752, 0, 0) AS stockQuantities#77755]
(576) Project
Arguments: [systemId#77615, internalUUID#77616, product#77617, plant#77618, calculationDateTime#77754, stockQuantities#77755]
(577) Generate
Arguments: explode(stockQuantities#77755), false, [stockQuantity#77757]
(578) Project
Arguments: [systemId#77615, internalUUID#77616, product#77617, plant#77618, calculationDateTime#77754, stockQuantities#77755, stockQuantity#77757]
(579) Project
Arguments: [plant#77618.id AS plant#77759, plant#77618.internalRefUUID AS plantUuid#77760, product#77617.id AS product#77761, product#77617.internalRefUUID AS productUuid#77762, calculationDateTime#77754, stockQuantity#77757.storagelocation.id AS storageLocId#77763, stockQuantity#77757.storagelocation.internalRefUUID AS storageLocUuid#77764, stockQuantity#77757.quantity.measure AS quantity#77765, stockQuantity#77757.specialStockIndicator.code AS specialStockIndicator#77766, stockQuantity#77757.stockType.code AS stockType#77767]
(580) Filter
Arguments: ((specialStockIndicator#77766 = ) AND (stockType#77767 = 01))
(581) LogicalRelation
Arguments: parquet, [product#77768, plant#77769, orderDateTime#77770, planningStartDateTime#77771], false
(582) RepartitionByExpression
Arguments: [product#77768, plant#77769], 25
(583) Project
Arguments: [product#77768, plant#77769, orderDateTime#77770]
(584) LogicalRelation
Arguments: parquet, [systemId#77774, internalUUID#77775, plant#77776, product#77777, blockedForReplenishmentStartingFrom#77778, productionAspect#77779, salesPlant#77780, listing#77781], false
(585) Repartition
Arguments: 25, true
(586) Project
Arguments: [systemId#77774, internalUUID#77775, plant#77776, product#77777, blockedForReplenishmentStartingFrom#77778, productionAspect#77779, salesPlant#77780, listing#77781, struct(systemId, systemId#77774, internalUUID, internalUUID#77775, plant, plant#77776, product, product#77777, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#77778, productionAspect, productionAspect#77779, salesPlant, salesPlant#77780, listing, listing#77781) AS productPlant#77783]
(587) Project
Arguments: [productPlant#77783]
(588) Join
Arguments: LeftOuter, ((product#77768 <=> productPlant#77783.product.internalRefUUID) AND (plant#77769 <=> productPlant#77783.plant.internalRefUUID))
(589) Project
Arguments: [product#77768, plant#77769, orderDateTime#77770, productPlant#77783]
(590) SubqueryAlias
Arguments: wl
(591) LogicalRelation
Arguments: parquet, [systemId#77784, internalUUID#77785, id#77786, displayId#77787, name#77788, category#77789, companyCode#77790, address#77791, mainDistributionChain#77792, mainPurchasingOrganization#77793, validPurchasingOrganizations#77794, productGroup#77795], false
(592) Repartition
Arguments: 25, true
(593) Project
Arguments: [internalUUID#77785, address#77791.timeZone.code AS timezonecode#77798]
(594) Join
Arguments: LeftOuter, (plant#77769 <=> internalUUID#77785)
(595) Project
Arguments: [product#77768, plant#77769, orderDateTime#77770, productPlant#77783, internalUUID#77785, CASE WHEN isnotnull(timezonecode#77798) THEN timezonecode#77798 ELSE UTC END AS timezonecode#77800]
(596) Project
Arguments: [product#77768, plant#77769, orderDateTime#77770, productPlant#77783, timezonecode#77800]
(597) LogicalRelation
Arguments: parquet, [systemId#77801, internalUUID#77802, id#77803, displayId#77804, name#77805, baseUnitOfMeasure#77806, unitOfMeasures#77807, unitOfMeasureConversions#77808, productionAspect#77809, salesAspect#77810, procurementAspect#77811, productGroup#77812], false
(598) Repartition
Arguments: 25, true
(599) Join
Arguments: LeftOuter, (product#77768 = internalUUID#77802)
(600) Project
Arguments: [product#77768, plant#77769, orderDateTime#77770, productPlant#77783, timezonecode#77800, systemId#77801, internalUUID#77802, id#77803, displayId#77804, name#77805, baseUnitOfMeasure#77806, unitOfMeasures#77807, unitOfMeasureConversions#77808, productionAspect#77809, salesAspect#77810, procurementAspect#77811, productGroup#77812, filter(unitOfMeasureConversions#77808, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#77783.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#77783.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#77806.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#77806.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#77816]
(601) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77816.quantityNumerator), true, [quantityNumerator#77817]
(602) Project
Arguments: [product#77768, plant#77769, orderDateTime#77770, productPlant#77783, timezonecode#77800, systemId#77801, internalUUID#77802, id#77803, displayId#77804, name#77805, baseUnitOfMeasure#77806, unitOfMeasures#77807, unitOfMeasureConversions#77808, productionAspect#77809, salesAspect#77810, procurementAspect#77811, productGroup#77812, filteredUnitOfMeasureConversions#77816, quantityNumerator#77817]
(603) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77816.quantityDenominator), true, [quantityDenominator#77822]
(604) Project
Arguments: [product#77768, plant#77769, orderDateTime#77770, productPlant#77783, timezonecode#77800, systemId#77801, internalUUID#77802, id#77803, displayId#77804, name#77805, baseUnitOfMeasure#77806, unitOfMeasures#77807, unitOfMeasureConversions#77808, productionAspect#77809, salesAspect#77810, procurementAspect#77811, productGroup#77812, filteredUnitOfMeasureConversions#77816, quantityNumerator#77817, quantityDenominator#77822]
(605) Project
Arguments: [product#77768, plant#77769, orderDateTime#77770, productPlant#77783, timezonecode#77800, systemId#77801, internalUUID#77802, id#77803, displayId#77804, name#77805, baseUnitOfMeasure#77806, unitOfMeasures#77807, unitOfMeasureConversions#77808, productionAspect#77809, salesAspect#77810, procurementAspect#77811, productGroup#77812, filteredUnitOfMeasureConversions#77816, quantityNumerator#77817, quantityDenominator#77822, (cast(quantityNumerator#77817 as double) / cast(quantityDenominator#77822 as double)) AS outboundUnit#77832]
(606) Project
Arguments: [product#77768, plant#77769, orderDateTime#77770, productPlant#77783, timezonecode#77800, systemId#77801, internalUUID#77802, id#77803, displayId#77804, name#77805, baseUnitOfMeasure#77806, unitOfMeasures#77807, unitOfMeasureConversions#77808, productionAspect#77809, salesAspect#77810, procurementAspect#77811, productGroup#77812, filteredUnitOfMeasureConversions#77816, quantityNumerator#77817, quantityDenominator#77822, CASE WHEN (isnull(outboundUnit#77832) OR (outboundUnit#77832 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#77832 END AS outboundUnit#77833]
(607) Project
Arguments: [product#77768, plant#77769, orderDateTime#77770, productPlant#77783, timezonecode#77800, outboundUnit#77833]
(608) Join
Arguments: Inner, ((plantUuid#77760 = plant#77769) AND (productUuid#77762 = product#77768))
(609) Filter
Arguments: (calculationDateTime#77754 <= orderDateTime#77770)
(610) Project
Arguments: [plantUuid#77760 AS plant#77848, productUuid#77762 AS product#77849, storageLocId#77763, calculationDateTime#77754, quantity#77765]
(611) Aggregate
Arguments: [plant#77848, product#77849, storageLocId#77763], [plant#77848, product#77849, storageLocId#77763, max(calculationDateTime#77754) AS max_calc_datetime#77862]
(612) Join
Arguments: Inner, ((((plant#77613 <=> plant#77848) AND (product#77614 <=> product#77849)) AND (storageLocId#77484 <=> storageLocId#77763)) AND (calculationDateTime#77438 <=> max_calc_datetime#77862))
(613) Project
Arguments: [plant#77613, product#77614, storageLocId#77484, calculationDateTime#77438, quantity#77486]
(614) Aggregate
Arguments: [product#77614, plant#77613], [product#77614, plant#77613, sum(quantity#77486) AS quantitySum#77864, min(calculationDateTime#77438) AS minCalculationDateTime#77865]
(615) Project
Arguments: [product#77614, plant#77613, quantitySum#77864, minCalculationDateTime#77865, round(quantitySum#77864, 0) AS roundedQuantitySum#77867]
(616) Join
Arguments: LeftOuter, ((plant#77181 = plant#77613) AND (product#77180 = product#77614))
(617) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, outboundUnit#77265, roundedQuantitySum#77867, minCalculationDateTime#77865]
(618) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, outboundUnit#77265, roundedQuantitySum#77867, minCalculationDateTime#77865, CASE WHEN isnotnull(minCalculationDateTime#77865) THEN minCalculationDateTime#77865 ELSE orderDateTime#77182 END AS stockDatetime#77869]
(619) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, outboundUnit#77265, roundedQuantitySum#77867, minCalculationDateTime#77865, stockDatetime#77869, CASE WHEN isnotnull(roundedQuantitySum#77867) THEN array(roundedQuantitySum#77867) ELSE array(0.0) END AS stockBatchQuantities#77871]
(620) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, outboundUnit#77265, roundedQuantitySum#77867, minCalculationDateTime#77865, stockDatetime#77869, stockBatchQuantities#77871, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#77872]
(621) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, outboundUnit#77265, roundedQuantitySum#77867, stockDatetime#77869, stockBatchQuantities#77871, stockBatchShelfLifeEndDatetimes#77872]
(622) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, outboundUnit#77265, stockDatetime#77869, stockBatchQuantities#77871, stockBatchShelfLifeEndDatetimes#77872]
(623) LogicalRelation
Arguments: parquet, [product#77874, plant#77875, orderDateTime#77876, planningStartDateTime#77877], false
(624) RepartitionByExpression
Arguments: [product#77874, plant#77875], 25
(625) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876]
(626) LogicalRelation
Arguments: parquet, [systemId#77884, internalUUID#77885, plant#77886, product#77887, blockedForReplenishmentStartingFrom#77888, productionAspect#77889, salesPlant#77890, listing#77891], false
(627) Repartition
Arguments: 25, true
(628) Project
Arguments: [systemId#77884, internalUUID#77885, plant#77886, product#77887, blockedForReplenishmentStartingFrom#77888, productionAspect#77889, salesPlant#77890, listing#77891, struct(systemId, systemId#77884, internalUUID, internalUUID#77885, plant, plant#77886, product, product#77887, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#77888, productionAspect, productionAspect#77889, salesPlant, salesPlant#77890, listing, listing#77891) AS productPlant#77914]
(629) Project
Arguments: [productPlant#77914]
(630) Join
Arguments: LeftOuter, ((product#77874 <=> productPlant#77914.product.internalRefUUID) AND (plant#77875 <=> productPlant#77914.plant.internalRefUUID))
(631) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914]
(632) SubqueryAlias
Arguments: wl
(633) LogicalRelation
Arguments: parquet, [systemId#77916, internalUUID#77917, id#77918, displayId#77919, name#77920, category#77921, companyCode#77922, address#77923, mainDistributionChain#77924, mainPurchasingOrganization#77925, validPurchasingOrganizations#77926, productGroup#77927], false
(634) Repartition
Arguments: 25, true
(635) Project
Arguments: [internalUUID#77917, address#77923.timeZone.code AS timezonecode#77929]
(636) Join
Arguments: LeftOuter, (plant#77875 <=> internalUUID#77917)
(637) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, internalUUID#77917, CASE WHEN isnotnull(timezonecode#77929) THEN timezonecode#77929 ELSE UTC END AS timezonecode#77938]
(638) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938]
(639) LogicalRelation
Arguments: parquet, [systemId#77947, internalUUID#77948, id#77949, displayId#77950, name#77951, baseUnitOfMeasure#77952, unitOfMeasures#77953, unitOfMeasureConversions#77954, productionAspect#77955, salesAspect#77956, procurementAspect#77957, productGroup#77958], false
(640) Repartition
Arguments: 25, true
(641) Join
Arguments: LeftOuter, (product#77874 = internalUUID#77948)
(642) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, systemId#77947, internalUUID#77948, id#77949, displayId#77950, name#77951, baseUnitOfMeasure#77952, unitOfMeasures#77953, unitOfMeasureConversions#77954, productionAspect#77955, salesAspect#77956, procurementAspect#77957, productGroup#77958, filter(unitOfMeasureConversions#77954, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#77914.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#77914.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#77952.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#77952.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#77972]
(643) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77972.quantityNumerator), true, [quantityNumerator#77974]
(644) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, systemId#77947, internalUUID#77948, id#77949, displayId#77950, name#77951, baseUnitOfMeasure#77952, unitOfMeasures#77953, unitOfMeasureConversions#77954, productionAspect#77955, salesAspect#77956, procurementAspect#77957, productGroup#77958, filteredUnitOfMeasureConversions#77972, quantityNumerator#77974]
(645) Generate
Arguments: explode(filteredUnitOfMeasureConversions#77972.quantityDenominator), true, [quantityDenominator#77975]
(646) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, systemId#77947, internalUUID#77948, id#77949, displayId#77950, name#77951, baseUnitOfMeasure#77952, unitOfMeasures#77953, unitOfMeasureConversions#77954, productionAspect#77955, salesAspect#77956, procurementAspect#77957, productGroup#77958, filteredUnitOfMeasureConversions#77972, quantityNumerator#77974, quantityDenominator#77975]
(647) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, systemId#77947, internalUUID#77948, id#77949, displayId#77950, name#77951, baseUnitOfMeasure#77952, unitOfMeasures#77953, unitOfMeasureConversions#77954, productionAspect#77955, salesAspect#77956, procurementAspect#77957, productGroup#77958, filteredUnitOfMeasureConversions#77972, quantityNumerator#77974, quantityDenominator#77975, (cast(quantityNumerator#77974 as double) / cast(quantityDenominator#77975 as double)) AS outboundUnit#77989]
(648) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, systemId#77947, internalUUID#77948, id#77949, displayId#77950, name#77951, baseUnitOfMeasure#77952, unitOfMeasures#77953, unitOfMeasureConversions#77954, productionAspect#77955, salesAspect#77956, procurementAspect#77957, productGroup#77958, filteredUnitOfMeasureConversions#77972, quantityNumerator#77974, quantityDenominator#77975, CASE WHEN (isnull(outboundUnit#77989) OR (outboundUnit#77989 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#77989 END AS outboundUnit#77990]
(649) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, outboundUnit#77990]
(650) LogicalRelation
Arguments: parquet, [systemId#77992, internalUUID#77993, product#77994, plant#77995, calculationDateTime#77996, stockQuantities#77997], false
(651) Repartition
Arguments: 25, true
(652) LogicalRelation
Arguments: parquet, [marketUnit#77999, description#78000, articleHierarchy#78001, defaultCurrency#78002, responsibilities#78003, replenishmentTypes#78004, distributionCenters#78005, assignedArticleHierarchyNodes#78006, minOrderQtySetting#78007, listingCheck#78008, odsSelection#78009, demandProfiles#78010, constraintProfiles#78011, optimizationProfiles#78012, orderGroupSplitProfiles#78013, supplierMinimumProfiles#78014, multipleRestrictionProfiles#78015, preferredUomSource#78016, handlingOfUnfulfilledDemands#78017, negligibleQuantitiesThreshold#78018, eventtype#78019, minOrderQtySettingInternal#78020], false
(653) Repartition
Arguments: 25, true
(654) Filter
Arguments: (marketUnit#77999 <=> Daily_grocery)
(655) Project
Arguments: [marketUnit#77999, description#78000, articleHierarchy#78001, defaultCurrency#78002, responsibilities#78003, replenishmentTypes#78004, distributionCenters#78005, assignedArticleHierarchyNodes#78006, minOrderQtySetting#78007, listingCheck#78008, odsSelection#78009, demandProfiles#78010, constraintProfiles#78011, optimizationProfiles#78012, orderGroupSplitProfiles#78013, supplierMinimumProfiles#78014, multipleRestrictionProfiles#78015, preferredUomSource#78016, handlingOfUnfulfilledDemands#78017, negligibleQuantitiesThreshold#78018, eventtype#78019, minOrderQtySettingInternal#78020]
(656) Project
Arguments: [distributionCenters#78005]
(657) Generate
Arguments: explode(distributionCenters#78005), false, [distributionCenters#78023]
(658) Project
Arguments: [distributionCenters#78023]
(659) Generate
Arguments: explode(distributionCenters#78023.storageLocations), false, [storageLocations#78024]
(660) Project
Arguments: [distributionCenters#78023.id AS plantId#78026, distributionCenters#78023.internalRefUUID AS plantUuid#78027, storageLocations#78024]
(661) Project
Arguments: [plantId#78026, plantUuid#78027, storageLocations#78024.id AS storageLocId#78028, storageLocations#78024.internalRefUUID AS storageLocUuid#78029]
(662) LogicalRelation
Arguments: parquet, [product#78030, plant#78031, orderDateTime#78032, planningStartDateTime#78033], false
(663) RepartitionByExpression
Arguments: [product#78030, plant#78031], 25
(664) Project
Arguments: [product#78030, plant#78031, orderDateTime#78032]
(665) LogicalRelation
Arguments: parquet, [systemId#78034, internalUUID#78035, plant#78036, product#78037, blockedForReplenishmentStartingFrom#78038, productionAspect#78039, salesPlant#78040, listing#78041], false
(666) Repartition
Arguments: 25, true
(667) Project
Arguments: [systemId#78034, internalUUID#78035, plant#78036, product#78037, blockedForReplenishmentStartingFrom#78038, productionAspect#78039, salesPlant#78040, listing#78041, struct(systemId, systemId#78034, internalUUID, internalUUID#78035, plant, plant#78036, product, product#78037, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#78038, productionAspect, productionAspect#78039, salesPlant, salesPlant#78040, listing, listing#78041) AS productPlant#78042]
(668) Project
Arguments: [productPlant#78042]
(669) Join
Arguments: LeftOuter, ((product#78030 <=> productPlant#78042.product.internalRefUUID) AND (plant#78031 <=> productPlant#78042.plant.internalRefUUID))
(670) Project
Arguments: [product#78030, plant#78031, orderDateTime#78032, productPlant#78042]
(671) SubqueryAlias
Arguments: wl
(672) LogicalRelation
Arguments: parquet, [systemId#78044, internalUUID#78045, id#78046, displayId#78047, name#78048, category#78049, companyCode#78050, address#78051, mainDistributionChain#78052, mainPurchasingOrganization#78053, validPurchasingOrganizations#78054, productGroup#78055], false
(673) Repartition
Arguments: 25, true
(674) Project
Arguments: [internalUUID#78045, address#78051.timeZone.code AS timezonecode#78058]
(675) Join
Arguments: LeftOuter, (plant#78031 <=> internalUUID#78045)
(676) Project
Arguments: [product#78030, plant#78031, orderDateTime#78032, productPlant#78042, internalUUID#78045, CASE WHEN isnotnull(timezonecode#78058) THEN timezonecode#78058 ELSE UTC END AS timezonecode#78060]
(677) Project
Arguments: [product#78030, plant#78031, orderDateTime#78032, productPlant#78042, timezonecode#78060]
(678) LogicalRelation
Arguments: parquet, [systemId#78065, internalUUID#78066, id#78067, displayId#78068, name#78070, baseUnitOfMeasure#78071, unitOfMeasures#78073, unitOfMeasureConversions#78074, productionAspect#78076, salesAspect#78078, procurementAspect#78080, productGroup#78081], false
(679) Repartition
Arguments: 25, true
(680) Join
Arguments: LeftOuter, (product#78030 = internalUUID#78066)
(681) Project
Arguments: [product#78030, plant#78031, orderDateTime#78032, productPlant#78042, timezonecode#78060, systemId#78065, internalUUID#78066, id#78067, displayId#78068, name#78070, baseUnitOfMeasure#78071, unitOfMeasures#78073, unitOfMeasureConversions#78074, productionAspect#78076, salesAspect#78078, procurementAspect#78080, productGroup#78081, filter(unitOfMeasureConversions#78074, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#78042.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#78042.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#78071.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#78071.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#78082]
(682) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78082.quantityNumerator), true, [quantityNumerator#78083]
(683) Project
Arguments: [product#78030, plant#78031, orderDateTime#78032, productPlant#78042, timezonecode#78060, systemId#78065, internalUUID#78066, id#78067, displayId#78068, name#78070, baseUnitOfMeasure#78071, unitOfMeasures#78073, unitOfMeasureConversions#78074, productionAspect#78076, salesAspect#78078, procurementAspect#78080, productGroup#78081, filteredUnitOfMeasureConversions#78082, quantityNumerator#78083]
(684) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78082.quantityDenominator), true, [quantityDenominator#78088]
(685) Project
Arguments: [product#78030, plant#78031, orderDateTime#78032, productPlant#78042, timezonecode#78060, systemId#78065, internalUUID#78066, id#78067, displayId#78068, name#78070, baseUnitOfMeasure#78071, unitOfMeasures#78073, unitOfMeasureConversions#78074, productionAspect#78076, salesAspect#78078, procurementAspect#78080, productGroup#78081, filteredUnitOfMeasureConversions#78082, quantityNumerator#78083, quantityDenominator#78088]
(686) Project
Arguments: [product#78030, plant#78031, orderDateTime#78032, productPlant#78042, timezonecode#78060, systemId#78065, internalUUID#78066, id#78067, displayId#78068, name#78070, baseUnitOfMeasure#78071, unitOfMeasures#78073, unitOfMeasureConversions#78074, productionAspect#78076, salesAspect#78078, procurementAspect#78080, productGroup#78081, filteredUnitOfMeasureConversions#78082, quantityNumerator#78083, quantityDenominator#78088, (cast(quantityNumerator#78083 as double) / cast(quantityDenominator#78088 as double)) AS outboundUnit#78098]
(687) Project
Arguments: [product#78030, plant#78031, orderDateTime#78032, productPlant#78042, timezonecode#78060, systemId#78065, internalUUID#78066, id#78067, displayId#78068, name#78070, baseUnitOfMeasure#78071, unitOfMeasures#78073, unitOfMeasureConversions#78074, productionAspect#78076, salesAspect#78078, procurementAspect#78080, productGroup#78081, filteredUnitOfMeasureConversions#78082, quantityNumerator#78083, quantityDenominator#78088, CASE WHEN (isnull(outboundUnit#78098) OR (outboundUnit#78098 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#78098 END AS outboundUnit#78112]
(688) Project
Arguments: [product#78030, plant#78031, orderDateTime#78032, productPlant#78042, timezonecode#78060, outboundUnit#78112]
(689) Project
Arguments: [plant#78031]
(690) Deduplicate
Arguments: [plant#78031]
(691) Join
Arguments: Inner, (plantUuid#78027 = plant#78031)
(692) Project
Arguments: [plantId#78026, plantUuid#78027, storageLocId#78028, storageLocUuid#78029]
(693) Join
Arguments: Inner, (plant#77995.internalRefUUID <=> plantUuid#78027)
(694) Generate
Arguments: explode(filter(stockQuantities#77997, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#78029) AND (lambda x#69269.storageLocation.Id = storageLocId#78028)), lambda x#69269, false))), false, [stockQuantity#78126]
(695) Project
Arguments: [systemId#77992, internalUUID#77993, product#77994, plant#77995, calculationDateTime#77996, stockQuantities#77997, plantId#78026, plantUuid#78027, storageLocId#78028, storageLocUuid#78029, stockQuantity#78126]
(696) Aggregate
Arguments: [plantUuid#78027, internalUUID#77993, plant#77995, product#77994, systemId#77992], [plantUuid#78027, internalUUID#77993, plant#77995, product#77994, systemId#77992, first(calculationDateTime#77996, false) AS calculationDateTime#78129, collect_list(stockQuantity#78126, 0, 0) AS stockQuantities#78130]
(697) Project
Arguments: [systemId#77992, internalUUID#77993, product#77994, plant#77995, calculationDateTime#78129, stockQuantities#78130]
(698) Generate
Arguments: explode(stockQuantities#78130), false, [stockQuantity#78132]
(699) Project
Arguments: [systemId#77992, internalUUID#77993, product#77994, plant#77995, calculationDateTime#78129, stockQuantities#78130, stockQuantity#78132]
(700) Project
Arguments: [plant#77995.id AS plant#78134, plant#77995.internalRefUUID AS plantUuid#78135, product#77994.id AS product#78136, product#77994.internalRefUUID AS productUuid#78137, calculationDateTime#78129, stockQuantity#78132.storagelocation.id AS storageLocId#78138, stockQuantity#78132.storagelocation.internalRefUUID AS storageLocUuid#78139, stockQuantity#78132.quantity.measure AS quantity#78140, stockQuantity#78132.specialStockIndicator.code AS specialStockIndicator#78141, stockQuantity#78132.stockType.code AS stockType#78142]
(701) Filter
Arguments: ((specialStockIndicator#78141 = ) AND (stockType#78142 = 01))
(702) LogicalRelation
Arguments: parquet, [product#78144, plant#78145, orderDateTime#78146, planningStartDateTime#78147], false
(703) RepartitionByExpression
Arguments: [product#78144, plant#78145], 25
(704) Project
Arguments: [product#78144, plant#78145, orderDateTime#78146]
(705) LogicalRelation
Arguments: parquet, [systemId#78148, internalUUID#78149, plant#78150, product#78151, blockedForReplenishmentStartingFrom#78152, productionAspect#78153, salesPlant#78154, listing#78155], false
(706) Repartition
Arguments: 25, true
(707) Project
Arguments: [systemId#78148, internalUUID#78149, plant#78150, product#78151, blockedForReplenishmentStartingFrom#78152, productionAspect#78153, salesPlant#78154, listing#78155, struct(systemId, systemId#78148, internalUUID, internalUUID#78149, plant, plant#78150, product, product#78151, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#78152, productionAspect, productionAspect#78153, salesPlant, salesPlant#78154, listing, listing#78155) AS productPlant#78156]
(708) Project
Arguments: [productPlant#78156]
(709) Join
Arguments: LeftOuter, ((product#78144 <=> productPlant#78156.product.internalRefUUID) AND (plant#78145 <=> productPlant#78156.plant.internalRefUUID))
(710) Project
Arguments: [product#78144, plant#78145, orderDateTime#78146, productPlant#78156]
(711) SubqueryAlias
Arguments: wl
(712) LogicalRelation
Arguments: parquet, [systemId#78187, internalUUID#78188, id#78189, displayId#78190, name#78191, category#78192, companyCode#78193, address#78194, mainDistributionChain#78195, mainPurchasingOrganization#78196, validPurchasingOrganizations#78197, productGroup#78198], false
(713) Repartition
Arguments: 25, true
(714) Project
Arguments: [internalUUID#78188, address#78194.timeZone.code AS timezonecode#78199]
(715) Join
Arguments: LeftOuter, (plant#78145 <=> internalUUID#78188)
(716) Project
Arguments: [product#78144, plant#78145, orderDateTime#78146, productPlant#78156, internalUUID#78188, CASE WHEN isnotnull(timezonecode#78199) THEN timezonecode#78199 ELSE UTC END AS timezonecode#78204]
(717) Project
Arguments: [product#78144, plant#78145, orderDateTime#78146, productPlant#78156, timezonecode#78204]
(718) LogicalRelation
Arguments: parquet, [systemId#78211, internalUUID#78212, id#78213, displayId#78214, name#78215, baseUnitOfMeasure#78216, unitOfMeasures#78217, unitOfMeasureConversions#78218, productionAspect#78219, salesAspect#78220, procurementAspect#78221, productGroup#78222], false
(719) Repartition
Arguments: 25, true
(720) Join
Arguments: LeftOuter, (product#78144 = internalUUID#78212)
(721) Project
Arguments: [product#78144, plant#78145, orderDateTime#78146, productPlant#78156, timezonecode#78204, systemId#78211, internalUUID#78212, id#78213, displayId#78214, name#78215, baseUnitOfMeasure#78216, unitOfMeasures#78217, unitOfMeasureConversions#78218, productionAspect#78219, salesAspect#78220, procurementAspect#78221, productGroup#78222, filter(unitOfMeasureConversions#78218, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#78156.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#78156.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#78216.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#78216.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#78232]
(722) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78232.quantityNumerator), true, [quantityNumerator#78245]
(723) Project
Arguments: [product#78144, plant#78145, orderDateTime#78146, productPlant#78156, timezonecode#78204, systemId#78211, internalUUID#78212, id#78213, displayId#78214, name#78215, baseUnitOfMeasure#78216, unitOfMeasures#78217, unitOfMeasureConversions#78218, productionAspect#78219, salesAspect#78220, procurementAspect#78221, productGroup#78222, filteredUnitOfMeasureConversions#78232, quantityNumerator#78245]
(724) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78232.quantityDenominator), true, [quantityDenominator#78247]
(725) Project
Arguments: [product#78144, plant#78145, orderDateTime#78146, productPlant#78156, timezonecode#78204, systemId#78211, internalUUID#78212, id#78213, displayId#78214, name#78215, baseUnitOfMeasure#78216, unitOfMeasures#78217, unitOfMeasureConversions#78218, productionAspect#78219, salesAspect#78220, procurementAspect#78221, productGroup#78222, filteredUnitOfMeasureConversions#78232, quantityNumerator#78245, quantityDenominator#78247]
(726) Project
Arguments: [product#78144, plant#78145, orderDateTime#78146, productPlant#78156, timezonecode#78204, systemId#78211, internalUUID#78212, id#78213, displayId#78214, name#78215, baseUnitOfMeasure#78216, unitOfMeasures#78217, unitOfMeasureConversions#78218, productionAspect#78219, salesAspect#78220, procurementAspect#78221, productGroup#78222, filteredUnitOfMeasureConversions#78232, quantityNumerator#78245, quantityDenominator#78247, (cast(quantityNumerator#78245 as double) / cast(quantityDenominator#78247 as double)) AS outboundUnit#78261]
(727) Project
Arguments: [product#78144, plant#78145, orderDateTime#78146, productPlant#78156, timezonecode#78204, systemId#78211, internalUUID#78212, id#78213, displayId#78214, name#78215, baseUnitOfMeasure#78216, unitOfMeasures#78217, unitOfMeasureConversions#78218, productionAspect#78219, salesAspect#78220, procurementAspect#78221, productGroup#78222, filteredUnitOfMeasureConversions#78232, quantityNumerator#78245, quantityDenominator#78247, CASE WHEN (isnull(outboundUnit#78261) OR (outboundUnit#78261 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#78261 END AS outboundUnit#78262]
(728) Project
Arguments: [product#78144, plant#78145, orderDateTime#78146, productPlant#78156, timezonecode#78204, outboundUnit#78262]
(729) Join
Arguments: Inner, ((plantUuid#78135 = plant#78145) AND (productUuid#78137 = product#78144))
(730) Filter
Arguments: (calculationDateTime#78129 <= orderDateTime#78146)
(731) Project
Arguments: [plantUuid#78135 AS plant#78266, productUuid#78137 AS product#78267, storageLocId#78138, calculationDateTime#78129, quantity#78140]
(732) LogicalRelation
Arguments: parquet, [systemId#78268, internalUUID#78269, product#78270, plant#78271, calculationDateTime#78272, stockQuantities#78273], false
(733) Repartition
Arguments: 25, true
(734) LogicalRelation
Arguments: parquet, [marketUnit#78274, description#78275, articleHierarchy#78276, defaultCurrency#78277, responsibilities#78278, replenishmentTypes#78279, distributionCenters#78280, assignedArticleHierarchyNodes#78281, minOrderQtySetting#78282, listingCheck#78283, odsSelection#78284, demandProfiles#78285, constraintProfiles#78286, optimizationProfiles#78287, orderGroupSplitProfiles#78288, supplierMinimumProfiles#78289, multipleRestrictionProfiles#78290, preferredUomSource#78291, handlingOfUnfulfilledDemands#78292, negligibleQuantitiesThreshold#78293, eventtype#78294, minOrderQtySettingInternal#78295], false
(735) Repartition
Arguments: 25, true
(736) Filter
Arguments: (marketUnit#78274 <=> Daily_grocery)
(737) Project
Arguments: [marketUnit#78274, description#78275, articleHierarchy#78276, defaultCurrency#78277, responsibilities#78278, replenishmentTypes#78279, distributionCenters#78280, assignedArticleHierarchyNodes#78281, minOrderQtySetting#78282, listingCheck#78283, odsSelection#78284, demandProfiles#78285, constraintProfiles#78286, optimizationProfiles#78287, orderGroupSplitProfiles#78288, supplierMinimumProfiles#78289, multipleRestrictionProfiles#78290, preferredUomSource#78291, handlingOfUnfulfilledDemands#78292, negligibleQuantitiesThreshold#78293, eventtype#78294, minOrderQtySettingInternal#78295]
(738) Project
Arguments: [distributionCenters#78280]
(739) Generate
Arguments: explode(distributionCenters#78280), false, [distributionCenters#78298]
(740) Project
Arguments: [distributionCenters#78298]
(741) Generate
Arguments: explode(distributionCenters#78298.storageLocations), false, [storageLocations#78299]
(742) Project
Arguments: [distributionCenters#78298.id AS plantId#78300, distributionCenters#78298.internalRefUUID AS plantUuid#78301, storageLocations#78299]
(743) Project
Arguments: [plantId#78300, plantUuid#78301, storageLocations#78299.id AS storageLocId#78302, storageLocations#78299.internalRefUUID AS storageLocUuid#78303]
(744) LogicalRelation
Arguments: parquet, [product#78304, plant#78305, orderDateTime#78306, planningStartDateTime#78307], false
(745) RepartitionByExpression
Arguments: [product#78304, plant#78305], 25
(746) Project
Arguments: [product#78304, plant#78305, orderDateTime#78306]
(747) LogicalRelation
Arguments: parquet, [systemId#78309, internalUUID#78310, plant#78311, product#78312, blockedForReplenishmentStartingFrom#78313, productionAspect#78314, salesPlant#78315, listing#78316], false
(748) Repartition
Arguments: 25, true
(749) Project
Arguments: [systemId#78309, internalUUID#78310, plant#78311, product#78312, blockedForReplenishmentStartingFrom#78313, productionAspect#78314, salesPlant#78315, listing#78316, struct(systemId, systemId#78309, internalUUID, internalUUID#78310, plant, plant#78311, product, product#78312, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#78313, productionAspect, productionAspect#78314, salesPlant, salesPlant#78315, listing, listing#78316) AS productPlant#78319]
(750) Project
Arguments: [productPlant#78319]
(751) Join
Arguments: LeftOuter, ((product#78304 <=> productPlant#78319.product.internalRefUUID) AND (plant#78305 <=> productPlant#78319.plant.internalRefUUID))
(752) Project
Arguments: [product#78304, plant#78305, orderDateTime#78306, productPlant#78319]
(753) SubqueryAlias
Arguments: wl
(754) LogicalRelation
Arguments: parquet, [systemId#78321, internalUUID#78322, id#78323, displayId#78324, name#78325, category#78326, companyCode#78327, address#78328, mainDistributionChain#78329, mainPurchasingOrganization#78330, validPurchasingOrganizations#78331, productGroup#78332], false
(755) Repartition
Arguments: 25, true
(756) Project
Arguments: [internalUUID#78322, address#78328.timeZone.code AS timezonecode#78346]
(757) Join
Arguments: LeftOuter, (plant#78305 <=> internalUUID#78322)
(758) Project
Arguments: [product#78304, plant#78305, orderDateTime#78306, productPlant#78319, internalUUID#78322, CASE WHEN isnotnull(timezonecode#78346) THEN timezonecode#78346 ELSE UTC END AS timezonecode#78355]
(759) Project
Arguments: [product#78304, plant#78305, orderDateTime#78306, productPlant#78319, timezonecode#78355]
(760) LogicalRelation
Arguments: parquet, [systemId#78357, internalUUID#78358, id#78359, displayId#78360, name#78361, baseUnitOfMeasure#78362, unitOfMeasures#78363, unitOfMeasureConversions#78364, productionAspect#78365, salesAspect#78366, procurementAspect#78367, productGroup#78368], false
(761) Repartition
Arguments: 25, true
(762) Join
Arguments: LeftOuter, (product#78304 = internalUUID#78358)
(763) Project
Arguments: [product#78304, plant#78305, orderDateTime#78306, productPlant#78319, timezonecode#78355, systemId#78357, internalUUID#78358, id#78359, displayId#78360, name#78361, baseUnitOfMeasure#78362, unitOfMeasures#78363, unitOfMeasureConversions#78364, productionAspect#78365, salesAspect#78366, procurementAspect#78367, productGroup#78368, filter(unitOfMeasureConversions#78364, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#78319.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#78319.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#78362.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#78362.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#78382]
(764) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78382.quantityNumerator), true, [quantityNumerator#78384]
(765) Project
Arguments: [product#78304, plant#78305, orderDateTime#78306, productPlant#78319, timezonecode#78355, systemId#78357, internalUUID#78358, id#78359, displayId#78360, name#78361, baseUnitOfMeasure#78362, unitOfMeasures#78363, unitOfMeasureConversions#78364, productionAspect#78365, salesAspect#78366, procurementAspect#78367, productGroup#78368, filteredUnitOfMeasureConversions#78382, quantityNumerator#78384]
(766) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78382.quantityDenominator), true, [quantityDenominator#78397]
(767) Project
Arguments: [product#78304, plant#78305, orderDateTime#78306, productPlant#78319, timezonecode#78355, systemId#78357, internalUUID#78358, id#78359, displayId#78360, name#78361, baseUnitOfMeasure#78362, unitOfMeasures#78363, unitOfMeasureConversions#78364, productionAspect#78365, salesAspect#78366, procurementAspect#78367, productGroup#78368, filteredUnitOfMeasureConversions#78382, quantityNumerator#78384, quantityDenominator#78397]
(768) Project
Arguments: [product#78304, plant#78305, orderDateTime#78306, productPlant#78319, timezonecode#78355, systemId#78357, internalUUID#78358, id#78359, displayId#78360, name#78361, baseUnitOfMeasure#78362, unitOfMeasures#78363, unitOfMeasureConversions#78364, productionAspect#78365, salesAspect#78366, procurementAspect#78367, productGroup#78368, filteredUnitOfMeasureConversions#78382, quantityNumerator#78384, quantityDenominator#78397, (cast(quantityNumerator#78384 as double) / cast(quantityDenominator#78397 as double)) AS outboundUnit#78398]
(769) Project
Arguments: [product#78304, plant#78305, orderDateTime#78306, productPlant#78319, timezonecode#78355, systemId#78357, internalUUID#78358, id#78359, displayId#78360, name#78361, baseUnitOfMeasure#78362, unitOfMeasures#78363, unitOfMeasureConversions#78364, productionAspect#78365, salesAspect#78366, procurementAspect#78367, productGroup#78368, filteredUnitOfMeasureConversions#78382, quantityNumerator#78384, quantityDenominator#78397, CASE WHEN (isnull(outboundUnit#78398) OR (outboundUnit#78398 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#78398 END AS outboundUnit#78401]
(770) Project
Arguments: [product#78304, plant#78305, orderDateTime#78306, productPlant#78319, timezonecode#78355, outboundUnit#78401]
(771) Project
Arguments: [plant#78305]
(772) Deduplicate
Arguments: [plant#78305]
(773) Join
Arguments: Inner, (plantUuid#78301 = plant#78305)
(774) Project
Arguments: [plantId#78300, plantUuid#78301, storageLocId#78302, storageLocUuid#78303]
(775) Join
Arguments: Inner, (plant#78271.internalRefUUID <=> plantUuid#78301)
(776) Generate
Arguments: explode(filter(stockQuantities#78273, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#78303) AND (lambda x#69269.storageLocation.Id = storageLocId#78302)), lambda x#69269, false))), false, [stockQuantity#78405]
(777) Project
Arguments: [systemId#78268, internalUUID#78269, product#78270, plant#78271, calculationDateTime#78272, stockQuantities#78273, plantId#78300, plantUuid#78301, storageLocId#78302, storageLocUuid#78303, stockQuantity#78405]
(778) Aggregate
Arguments: [plantUuid#78301, internalUUID#78269, plant#78271, product#78270, systemId#78268], [plantUuid#78301, internalUUID#78269, plant#78271, product#78270, systemId#78268, first(calculationDateTime#78272, false) AS calculationDateTime#78406, collect_list(stockQuantity#78405, 0, 0) AS stockQuantities#78407]
(779) Project
Arguments: [systemId#78268, internalUUID#78269, product#78270, plant#78271, calculationDateTime#78406, stockQuantities#78407]
(780) Generate
Arguments: explode(stockQuantities#78407), false, [stockQuantity#78410]
(781) Project
Arguments: [systemId#78268, internalUUID#78269, product#78270, plant#78271, calculationDateTime#78406, stockQuantities#78407, stockQuantity#78410]
(782) Project
Arguments: [plant#78271.id AS plant#78412, plant#78271.internalRefUUID AS plantUuid#78413, product#78270.id AS product#78414, product#78270.internalRefUUID AS productUuid#78415, calculationDateTime#78406, stockQuantity#78410.storagelocation.id AS storageLocId#78416, stockQuantity#78410.storagelocation.internalRefUUID AS storageLocUuid#78417, stockQuantity#78410.quantity.measure AS quantity#78418, stockQuantity#78410.specialStockIndicator.code AS specialStockIndicator#78419, stockQuantity#78410.stockType.code AS stockType#78420]
(783) Filter
Arguments: ((specialStockIndicator#78419 = ) AND (stockType#78420 = 01))
(784) LogicalRelation
Arguments: parquet, [product#78421, plant#78422, orderDateTime#78423, planningStartDateTime#78424], false
(785) RepartitionByExpression
Arguments: [product#78421, plant#78422], 25
(786) Project
Arguments: [product#78421, plant#78422, orderDateTime#78423]
(787) LogicalRelation
Arguments: parquet, [systemId#78427, internalUUID#78428, plant#78429, product#78430, blockedForReplenishmentStartingFrom#78431, productionAspect#78432, salesPlant#78433, listing#78434], false
(788) Repartition
Arguments: 25, true
(789) Project
Arguments: [systemId#78427, internalUUID#78428, plant#78429, product#78430, blockedForReplenishmentStartingFrom#78431, productionAspect#78432, salesPlant#78433, listing#78434, struct(systemId, systemId#78427, internalUUID, internalUUID#78428, plant, plant#78429, product, product#78430, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#78431, productionAspect, productionAspect#78432, salesPlant, salesPlant#78433, listing, listing#78434) AS productPlant#78436]
(790) Project
Arguments: [productPlant#78436]
(791) Join
Arguments: LeftOuter, ((product#78421 <=> productPlant#78436.product.internalRefUUID) AND (plant#78422 <=> productPlant#78436.plant.internalRefUUID))
(792) Project
Arguments: [product#78421, plant#78422, orderDateTime#78423, productPlant#78436]
(793) SubqueryAlias
Arguments: wl
(794) LogicalRelation
Arguments: parquet, [systemId#78437, internalUUID#78438, id#78439, displayId#78440, name#78441, category#78442, companyCode#78443, address#78444, mainDistributionChain#78445, mainPurchasingOrganization#78446, validPurchasingOrganizations#78447, productGroup#78448], false
(795) Repartition
Arguments: 25, true
(796) Project
Arguments: [internalUUID#78438, address#78444.timeZone.code AS timezonecode#78450]
(797) Join
Arguments: LeftOuter, (plant#78422 <=> internalUUID#78438)
(798) Project
Arguments: [product#78421, plant#78422, orderDateTime#78423, productPlant#78436, internalUUID#78438, CASE WHEN isnotnull(timezonecode#78450) THEN timezonecode#78450 ELSE UTC END AS timezonecode#78453]
(799) Project
Arguments: [product#78421, plant#78422, orderDateTime#78423, productPlant#78436, timezonecode#78453]
(800) LogicalRelation
Arguments: parquet, [systemId#78454, internalUUID#78455, id#78456, displayId#78457, name#78458, baseUnitOfMeasure#78459, unitOfMeasures#78460, unitOfMeasureConversions#78461, productionAspect#78462, salesAspect#78463, procurementAspect#78464, productGroup#78465], false
(801) Repartition
Arguments: 25, true
(802) Join
Arguments: LeftOuter, (product#78421 = internalUUID#78455)
(803) Project
Arguments: [product#78421, plant#78422, orderDateTime#78423, productPlant#78436, timezonecode#78453, systemId#78454, internalUUID#78455, id#78456, displayId#78457, name#78458, baseUnitOfMeasure#78459, unitOfMeasures#78460, unitOfMeasureConversions#78461, productionAspect#78462, salesAspect#78463, procurementAspect#78464, productGroup#78465, filter(unitOfMeasureConversions#78461, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#78436.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#78436.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#78459.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#78459.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#78475]
(804) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78475.quantityNumerator), true, [quantityNumerator#78476]
(805) Project
Arguments: [product#78421, plant#78422, orderDateTime#78423, productPlant#78436, timezonecode#78453, systemId#78454, internalUUID#78455, id#78456, displayId#78457, name#78458, baseUnitOfMeasure#78459, unitOfMeasures#78460, unitOfMeasureConversions#78461, productionAspect#78462, salesAspect#78463, procurementAspect#78464, productGroup#78465, filteredUnitOfMeasureConversions#78475, quantityNumerator#78476]
(806) Generate
Arguments: explode(filteredUnitOfMeasureConversions#78475.quantityDenominator), true, [quantityDenominator#78478]
(807) Project
Arguments: [product#78421, plant#78422, orderDateTime#78423, productPlant#78436, timezonecode#78453, systemId#78454, internalUUID#78455, id#78456, displayId#78457, name#78458, baseUnitOfMeasure#78459, unitOfMeasures#78460, unitOfMeasureConversions#78461, productionAspect#78462, salesAspect#78463, procurementAspect#78464, productGroup#78465, filteredUnitOfMeasureConversions#78475, quantityNumerator#78476, quantityDenominator#78478]
(808) Project
Arguments: [product#78421, plant#78422, orderDateTime#78423, productPlant#78436, timezonecode#78453, systemId#78454, internalUUID#78455, id#78456, displayId#78457, name#78458, baseUnitOfMeasure#78459, unitOfMeasures#78460, unitOfMeasureConversions#78461, productionAspect#78462, salesAspect#78463, procurementAspect#78464, productGroup#78465, filteredUnitOfMeasureConversions#78475, quantityNumerator#78476, quantityDenominator#78478, (cast(quantityNumerator#78476 as double) / cast(quantityDenominator#78478 as double)) AS outboundUnit#78480]
(809) Project
Arguments: [product#78421, plant#78422, orderDateTime#78423, productPlant#78436, timezonecode#78453, systemId#78454, internalUUID#78455, id#78456, displayId#78457, name#78458, baseUnitOfMeasure#78459, unitOfMeasures#78460, unitOfMeasureConversions#78461, productionAspect#78462, salesAspect#78463, procurementAspect#78464, productGroup#78465, filteredUnitOfMeasureConversions#78475, quantityNumerator#78476, quantityDenominator#78478, CASE WHEN (isnull(outboundUnit#78480) OR (outboundUnit#78480 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#78480 END AS outboundUnit#78481]
(810) Project
Arguments: [product#78421, plant#78422, orderDateTime#78423, productPlant#78436, timezonecode#78453, outboundUnit#78481]
(811) Join
Arguments: Inner, ((plantUuid#78413 = plant#78422) AND (productUuid#78415 = product#78421))
(812) Filter
Arguments: (calculationDateTime#78406 <= orderDateTime#78423)
(813) Project
Arguments: [plantUuid#78413 AS plant#78482, productUuid#78415 AS product#78483, storageLocId#78416, calculationDateTime#78406, quantity#78418]
(814) Aggregate
Arguments: [plant#78482, product#78483, storageLocId#78416], [plant#78482, product#78483, storageLocId#78416, max(calculationDateTime#78406) AS max_calc_datetime#78484]
(815) Join
Arguments: Inner, ((((plant#78266 <=> plant#78482) AND (product#78267 <=> product#78483)) AND (storageLocId#78138 <=> storageLocId#78416)) AND (calculationDateTime#78129 <=> max_calc_datetime#78484))
(816) Project
Arguments: [plant#78266, product#78267, storageLocId#78138, calculationDateTime#78129, quantity#78140]
(817) Aggregate
Arguments: [product#78267, plant#78266], [product#78267, plant#78266, sum(quantity#78140) AS quantitySum#78485, min(calculationDateTime#78129) AS minCalculationDateTime#78486]
(818) Project
Arguments: [product#78267, plant#78266, quantitySum#78485, minCalculationDateTime#78486, round(quantitySum#78485, 0) AS roundedQuantitySum#78491]
(819) Join
Arguments: LeftOuter, ((plant#77875 = plant#78266) AND (product#77874 = product#78267))
(820) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, outboundUnit#77990, roundedQuantitySum#78491, minCalculationDateTime#78486]
(821) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, outboundUnit#77990, roundedQuantitySum#78491, minCalculationDateTime#78486, CASE WHEN isnotnull(minCalculationDateTime#78486) THEN minCalculationDateTime#78486 ELSE orderDateTime#77876 END AS stockDatetime#78492]
(822) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, outboundUnit#77990, roundedQuantitySum#78491, minCalculationDateTime#78486, stockDatetime#78492, CASE WHEN isnotnull(roundedQuantitySum#78491) THEN array(roundedQuantitySum#78491) ELSE array(0.0) END AS stockBatchQuantities#78493]
(823) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, outboundUnit#77990, roundedQuantitySum#78491, minCalculationDateTime#78486, stockDatetime#78492, stockBatchQuantities#78493, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#78494]
(824) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, outboundUnit#77990, roundedQuantitySum#78491, stockDatetime#78492, stockBatchQuantities#78493, stockBatchShelfLifeEndDatetimes#78494]
(825) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, outboundUnit#77990, stockDatetime#78492, stockBatchQuantities#78493, stockBatchShelfLifeEndDatetimes#78494]
(826) LogicalRelation
Arguments: parquet, [product#78495, plant#78496, demandChannel#78497, demandStream#78498, considerVariance#78499, demandTimeBuckets#78500, demandPointInTimeStart#78501, demandPointInTimeEnd#78502, demandPointInTime#78503], false
(827) Join
Arguments: LeftOuter, ((product#77874 = product#78495) AND (plant#77875 = plant#78496))
(828) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, outboundUnit#77990, stockDatetime#78492, stockBatchQuantities#78493, stockBatchShelfLifeEndDatetimes#78494, demandChannel#78497, demandStream#78498, considerVariance#78499, demandTimeBuckets#78500, demandPointInTimeStart#78501, demandPointInTimeEnd#78502, demandPointInTime#78503, product#78495, plant#78496]
(829) Project
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, outboundUnit#77990, stockDatetime#78492, stockBatchQuantities#78493, stockBatchShelfLifeEndDatetimes#78494, demandChannel#78497, demandStream#78498, considerVariance#78499, demandTimeBuckets#78500, demandPointInTimeStart#78501, demandPointInTimeEnd#78502, demandPointInTime#78503, CASE WHEN isnotnull(product#78495) THEN struct(demandChannel, demandChannel#78497, demandStream, demandStream#78498, considerVariance, considerVariance#78499, demandTimeBuckets, demandTimeBuckets#78500, demandPointInTimeStart, demandPointInTimeStart#78501, demandPointInTimeEnd, demandPointInTimeEnd#78502, demandPointInTime, demandPointInTime#78503) 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#78504]
(830) Aggregate
Arguments: [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, outboundUnit#77990, stockDatetime#78492, stockBatchQuantities#78493, stockBatchShelfLifeEndDatetimes#78494], [product#77874, plant#77875, orderDateTime#77876, productPlant#77914, timezonecode#77938, outboundUnit#77990, stockDatetime#78492, stockBatchQuantities#78493, stockBatchShelfLifeEndDatetimes#78494, collect_list(rawDemands#78504, 0, 0) AS rawDemands#78505]
(831) DeserializeToObject
Arguments: createexternalrow(invoke(product#77874.toString()), invoke(plant#77875.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#77876)), if (isnull(productPlant#77914)) null else createexternalrow(invoke(productPlant#77914.systemId.toString()), invoke(productPlant#77914.internalUUID.toString()), if (isnull(productPlant#77914.plant)) null else createexternalrow(invoke(productPlant#77914.plant.internalRefUUID.toString()), invoke(productPlant#77914.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#77914.product)) null else createexternalrow(invoke(productPlant#77914.product.internalRefUUID.toString()), invoke(productPlant#77914.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#77914.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#77914.productionAspect)) null else createexternalrow(if (isnull(productPlant#77914.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#77914.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#77914.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#77914.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#77914.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#77914.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#77914.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#77914.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#77914.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#77914.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#77914.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#77914.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#77914.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#77914.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#77914.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#77914.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#77914.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#77914.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#77914.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#77914.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#77914.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#77914.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#77914.salesPlant)) null else createexternalrow(if (isnull(productPlant#77914.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#77914.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#77914.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, 9983), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#77914.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#77938.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#77990)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#78492)), mapobjects(lambdavariable(MapObject, DoubleType, true, 9984), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 9984) as double))), stockBatchQuantities#78493, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 9985), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 9985) as timestamp)))), stockBatchShelfLifeEndDatetimes#78494, 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, 9986), 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, 9986))) 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, 9986).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, 9986).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, 9986).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987).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, 9986).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, 9986).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, 9986).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988).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, 9986).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#78505, 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#69963: org.apache.spark.sql.Row
(832) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@783ec352, 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#69968: 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#78506, 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#78507, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9974), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9974), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9975), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9975), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9976), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9976), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9977), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9977), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9978), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9978), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#78508, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9980), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9980), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9981), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9981), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9982), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9982), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#78509]
(834) Join
Arguments: LeftOuter, ((plant#78507 <=> plant#77181) AND (product#78506 <=> product#77180))
(835) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, outboundUnit#77265, stockDatetime#77869, stockBatchQuantities#77871, stockBatchShelfLifeEndDatetimes#77872, plant#78507, dayBucketDemands#78508, pointInTimeDemands#78509]
(836) Project
Arguments: [product#77180, plant#77181, orderDateTime#77182, productPlant#77192, timezonecode#77219, outboundUnit#77265, stockDatetime#77869, stockBatchQuantities#77871, stockBatchShelfLifeEndDatetimes#77872, dayBucketDemands#78508, pointInTimeDemands#78509]
(837) LogicalRelation
Arguments: parquet, [marketUnit#70809, description#70810, articleHierarchy#70811, defaultCurrency#70812, responsibilities#70813, replenishmentTypes#70814, distributionCenters#70815, assignedArticleHierarchyNodes#70816, minOrderQtySetting#70817, listingCheck#70818, odsSelection#70819, demandProfiles#70820, constraintProfiles#70821, optimizationProfiles#70822, orderGroupSplitProfiles#70823, supplierMinimumProfiles#70824, multipleRestrictionProfiles#70825, preferredUomSource#70826, handlingOfUnfulfilledDemands#70827, negligibleQuantitiesThreshold#70828, eventtype#70829, minOrderQtySettingInternal#70830], false
(838) Repartition
Arguments: 25, true
(839) Filter
Arguments: (marketUnit#70809 <=> Daily_grocery)
(840) Project
Arguments: [marketUnit#70809, description#70810, articleHierarchy#70811, defaultCurrency#70812, responsibilities#70813, replenishmentTypes#70814, distributionCenters#70815, assignedArticleHierarchyNodes#70816, minOrderQtySetting#70817, listingCheck#70818, odsSelection#70819, demandProfiles#70820, constraintProfiles#70821, optimizationProfiles#70822, orderGroupSplitProfiles#70823, supplierMinimumProfiles#70824, multipleRestrictionProfiles#70825, preferredUomSource#70826, handlingOfUnfulfilledDemands#70827, negligibleQuantitiesThreshold#70828, eventtype#70829, minOrderQtySettingInternal#70830]
(841) Project
Arguments: [distributionCenters#70815]
(842) Generate
Arguments: explode(distributionCenters#70815), false, [distributionCenters#70854]
(843) Project
Arguments: [distributionCenters#70854]
(844) Generate
Arguments: explode(distributionCenters#70854.storageLocations), false, [storageLocations#70855]
(845) Project
Arguments: [distributionCenters#70854.id AS plantId#70857, distributionCenters#70854.internalRefUUID AS plantUuid#70858, storageLocations#70855]
(846) Project
Arguments: [plantId#70857, plantUuid#70858, storageLocations#70855.id AS storageLocId#70861, storageLocations#70855.internalRefUUID AS storageLocUuid#70862]
(847) LogicalRelation
Arguments: parquet, [product#70865, plant#70866, orderDateTime#70867, planningStartDateTime#70868], false
(848) RepartitionByExpression
Arguments: [product#70865, plant#70866], 25
(849) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867]
(850) LogicalRelation
Arguments: parquet, [systemId#70881, internalUUID#70882, plant#70883, product#70884, blockedForReplenishmentStartingFrom#70885, productionAspect#70886, salesPlant#70887, listing#70888], false
(851) Repartition
Arguments: 25, true
(852) Project
Arguments: [systemId#70881, internalUUID#70882, plant#70883, product#70884, blockedForReplenishmentStartingFrom#70885, productionAspect#70886, salesPlant#70887, listing#70888, struct(systemId, systemId#70881, internalUUID, internalUUID#70882, plant, plant#70883, product, product#70884, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#70885, productionAspect, productionAspect#70886, salesPlant, salesPlant#70887, listing, listing#70888) AS productPlant#70890]
(853) Project
Arguments: [productPlant#70890]
(854) Join
Arguments: LeftOuter, ((product#70865 <=> productPlant#70890.product.internalRefUUID) AND (plant#70866 <=> productPlant#70890.plant.internalRefUUID))
(855) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890]
(856) SubqueryAlias
Arguments: wl
(857) LogicalRelation
Arguments: parquet, [systemId#70891, internalUUID#70892, id#70893, displayId#70894, name#70895, category#70896, companyCode#70897, address#70898, mainDistributionChain#70899, mainPurchasingOrganization#70900, validPurchasingOrganizations#70901, productGroup#70902], false
(858) Repartition
Arguments: 25, true
(859) Project
Arguments: [internalUUID#70892, address#70898.timeZone.code AS timezonecode#70903]
(860) Join
Arguments: LeftOuter, (plant#70866 <=> internalUUID#70892)
(861) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, internalUUID#70892, CASE WHEN isnotnull(timezonecode#70903) THEN timezonecode#70903 ELSE UTC END AS timezonecode#70917]
(862) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917]
(863) LogicalRelation
Arguments: parquet, [systemId#70918, internalUUID#70919, id#70920, displayId#70921, name#70922, baseUnitOfMeasure#70923, unitOfMeasures#70924, unitOfMeasureConversions#70925, productionAspect#70926, salesAspect#70927, procurementAspect#70928, productGroup#70929], false
(864) Repartition
Arguments: 25, true
(865) Join
Arguments: LeftOuter, (product#70865 = internalUUID#70919)
(866) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917, systemId#70918, internalUUID#70919, id#70920, displayId#70921, name#70922, baseUnitOfMeasure#70923, unitOfMeasures#70924, unitOfMeasureConversions#70925, productionAspect#70926, salesAspect#70927, procurementAspect#70928, productGroup#70929, filter(unitOfMeasureConversions#70925, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#70890.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#70890.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#70923.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#70923.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#70943]
(867) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70943.quantityNumerator), true, [quantityNumerator#70944]
(868) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917, systemId#70918, internalUUID#70919, id#70920, displayId#70921, name#70922, baseUnitOfMeasure#70923, unitOfMeasures#70924, unitOfMeasureConversions#70925, productionAspect#70926, salesAspect#70927, procurementAspect#70928, productGroup#70929, filteredUnitOfMeasureConversions#70943, quantityNumerator#70944]
(869) Generate
Arguments: explode(filteredUnitOfMeasureConversions#70943.quantityDenominator), true, [quantityDenominator#70946]
(870) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917, systemId#70918, internalUUID#70919, id#70920, displayId#70921, name#70922, baseUnitOfMeasure#70923, unitOfMeasures#70924, unitOfMeasureConversions#70925, productionAspect#70926, salesAspect#70927, procurementAspect#70928, productGroup#70929, filteredUnitOfMeasureConversions#70943, quantityNumerator#70944, quantityDenominator#70946]
(871) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917, systemId#70918, internalUUID#70919, id#70920, displayId#70921, name#70922, baseUnitOfMeasure#70923, unitOfMeasures#70924, unitOfMeasureConversions#70925, productionAspect#70926, salesAspect#70927, procurementAspect#70928, productGroup#70929, filteredUnitOfMeasureConversions#70943, quantityNumerator#70944, quantityDenominator#70946, (cast(quantityNumerator#70944 as double) / cast(quantityDenominator#70946 as double)) AS outboundUnit#70949]
(872) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917, systemId#70918, internalUUID#70919, id#70920, displayId#70921, name#70922, baseUnitOfMeasure#70923, unitOfMeasures#70924, unitOfMeasureConversions#70925, productionAspect#70926, salesAspect#70927, procurementAspect#70928, productGroup#70929, filteredUnitOfMeasureConversions#70943, quantityNumerator#70944, quantityDenominator#70946, CASE WHEN (isnull(outboundUnit#70949) OR (outboundUnit#70949 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#70949 END AS outboundUnit#70951]
(873) Project
Arguments: [product#70865, plant#70866, orderDateTime#70867, productPlant#70890, timezonecode#70917, outboundUnit#70951]
(874) Project
Arguments: [plant#70866]
(875) Deduplicate
Arguments: [plant#70866]
(876) Join
Arguments: Inner, (plantUuid#70858 = plant#70866)
(877) Project
Arguments: [plantId#70857, plantUuid#70858, storageLocId#70861, storageLocUuid#70862]
(878) Project
Arguments: [plantId#70857, plantUuid#70858 AS plant#70807, storageLocId#70861, storageLocUuid#70862]
(879) Join
Arguments: Inner, (plant#77181 = plant#70807)
(880) Project
Arguments: [plant#77181, product#77180, orderDateTime#77182, productPlant#77192, timezonecode#77219, outboundUnit#77265, stockDatetime#77869, stockBatchQuantities#77871, stockBatchShelfLifeEndDatetimes#77872, dayBucketDemands#78508, pointInTimeDemands#78509, plantId#70857, storageLocId#70861, storageLocUuid#70862, plant#70807]
(881) LogicalRelation
Arguments: parquet, [systemId#70729, internalUUID#70730, id#70731, displayId#70732, supplier#70733, type#70734, status#70735, isMarkedForDeletion#70736, items#70737], false
(882) Repartition
Arguments: 25, true
(883) Generate
Arguments: explode(items#70737), false, [item#70753]
(884) Project
Arguments: [id#70731, internalUUID#70730, isMarkedForDeletion#70736, supplier#70733.internalRefUUID AS supplierUuid#70747, item#70753]
(885) Filter
Arguments: (((NOT isMarkedForDeletion#70736 AND NOT item#70753.deletionIndicator) AND NOT item#70753.completeIndicator) AND NOT item#70753.returnIndicator)
(886) Project
Arguments: [id#70731, internalUUID#70730, supplierUuid#70747, item#70753.plant.internalRefUUID AS plant#70770, item#70753.product.internalRefUUID AS product#70773, item#70753.plant.id AS externalPlantId#70775, item#70753.product.id AS externalProductId#70777, item#70753.storageLocation.internalRefUUID AS storageLocUuid#70778, item#70753.quantityUnit.code AS quantityUom#70779, item#70753.quantityUnit.internalRefUUID AS quantityUomUuid#70780, item#70753.quantityNumerator AS quantityNumerator#70781, item#70753.quantityDenominator AS quantityDenominator#70782, item#70753.scheduleLines AS scheduleLines#70783, item#70753.confirmations AS confirmations#70784]
(887) Join
Arguments: Inner, (((product#77180 = product#70773) AND (plant#77181 = plant#70770)) AND (storageLocUuid#70862 = storageLocUuid#70778))
(888) Project
Arguments: [product#77180, plant#77181, storageLocUuid#70862, orderDateTime#77182, productPlant#77192, timezonecode#77219, outboundUnit#77265, stockDatetime#77869, stockBatchQuantities#77871, stockBatchShelfLifeEndDatetimes#77872, dayBucketDemands#78508, pointInTimeDemands#78509, plantId#70857, storageLocId#70861, id#70731, internalUUID#70730, supplierUuid#70747, externalPlantId#70775, externalProductId#70777, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, ... 4 more fields]
(889) Project
Arguments: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#77869, timezonecode#77219]
(890) Project
Arguments: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#77869, timezonecode#77219, filter(confirmations#70784, lambdafunction((((lambda x_2#70966.deletionIndicator = false) AND (lambda x_2#70966.isRelevantForConfirmation = true)) AND isnotnull(lambda x_2#70966.confirmedDeliveryAt)), lambda x_2#70966, false)) AS validConfirmations#70963]
(891) Project
Arguments: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#77869, timezonecode#77219, validConfirmations#70963, array_size(validConfirmations#70963) AS _w0#75046]
(892) Window
Arguments: [sum(_w0#75046) windowspecdefinition(internalUUID#70730, specifiedwindowframe(RowFrame, unboundedpreceding$(), unboundedfollowing$())) AS _we0#75049L], [internalUUID#70730]
(893) Project
Arguments: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#77869, timezonecode#77219, validConfirmations#70963, _w0#75046, _we0#75049L, filter(transform(CASE WHEN (_we0#75049L > cast(0 as bigint)) THEN transform(validConfirmations#70963, lambdafunction(struct(openQty, greatest((lambda x_16#75039.confirmedQuantity - coalesce(lambda x_16#75039.mrpRelevantQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_16#75039.confirmedDeliveryAt), lambda x_16#75039, false)) ELSE transform(scheduleLines#70783, lambdafunction(struct(openQty, greatest((lambda x_15#75041.quantity - coalesce(lambda x_15#75041.receivedQuantity, 0.0)), 0.0), availabilityDatetime, lambda x_15#75041.deliveryAt), lambda x_15#75041, false)) END, lambdafunction(struct(documentId, id#70731, documentUuid, internalUUID#70730, openQty, lambda x_17#75043.openQty, openQtyInBaseUnit, ((lambda x_17#75043.openQty * quantityNumerator#70781) / quantityDenominator#70782), qtyUom, quantityUom#70779, qtyUomUuid, quantityUomUuid#70780, availabilityDatetime, lambda x_17#75043.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_17#75043, false)), lambdafunction(NOT (lambda x_18#75045.openQty = 0.0), lambda x_18#75045, false)) AS openGoodsMovements#75035]
(894) Project
Arguments: [id#70731, internalUUID#70730, supplierUuid#70747, plant#70770, product#70773, externalPlantId#70775, externalProductId#70777, storageLocUuid#70778, quantityUom#70779, quantityUomUuid#70780, quantityNumerator#70781, quantityDenominator#70782, scheduleLines#70783, confirmations#70784, stockDatetime#77869, timezonecode#77219, validConfirmations#70963, openGoodsMovements#75035]
(895) Aggregate
Arguments: [product#70773, plant#70770], [product#70773, plant#70770, flatten(collect_list(openGoodsMovements#75035, 0, 0)) AS openGoodsMovements#75050]
(896) Filter
Arguments: (array_size(openGoodsMovements#75050) > 0)
(897) LogicalRelation
Arguments: parquet, [product#75735, plant#75736, orderDateTime#75737, planningStartDateTime#75738], false
(898) RepartitionByExpression
Arguments: [product#75735, plant#75736], 25
(899) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737]
(900) LogicalRelation
Arguments: parquet, [systemId#75741, internalUUID#75742, plant#75743, product#75744, blockedForReplenishmentStartingFrom#75745, productionAspect#75746, salesPlant#75747, listing#75748], false
(901) Repartition
Arguments: 25, true
(902) Project
Arguments: [systemId#75741, internalUUID#75742, plant#75743, product#75744, blockedForReplenishmentStartingFrom#75745, productionAspect#75746, salesPlant#75747, listing#75748, struct(systemId, systemId#75741, internalUUID, internalUUID#75742, plant, plant#75743, product, product#75744, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#75745, productionAspect, productionAspect#75746, salesPlant, salesPlant#75747, listing, listing#75748) AS productPlant#75750]
(903) Project
Arguments: [productPlant#75750]
(904) Join
Arguments: LeftOuter, ((product#75735 <=> productPlant#75750.product.internalRefUUID) AND (plant#75736 <=> productPlant#75750.plant.internalRefUUID))
(905) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750]
(906) SubqueryAlias
Arguments: wl
(907) LogicalRelation
Arguments: parquet, [systemId#75752, internalUUID#75753, id#75754, displayId#75755, name#75756, category#75757, companyCode#75758, address#75759, mainDistributionChain#75760, mainPurchasingOrganization#75761, validPurchasingOrganizations#75762, productGroup#75763], false
(908) Repartition
Arguments: 25, true
(909) Project
Arguments: [internalUUID#75753, address#75759.timeZone.code AS timezonecode#75764]
(910) Join
Arguments: LeftOuter, (plant#75736 <=> internalUUID#75753)
(911) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, internalUUID#75753, CASE WHEN isnotnull(timezonecode#75764) THEN timezonecode#75764 ELSE UTC END AS timezonecode#75772]
(912) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772]
(913) LogicalRelation
Arguments: parquet, [systemId#75795, internalUUID#75796, id#75797, displayId#75798, name#75799, baseUnitOfMeasure#75800, unitOfMeasures#75801, unitOfMeasureConversions#75802, productionAspect#75803, salesAspect#75804, procurementAspect#75805, productGroup#75806], false
(914) Repartition
Arguments: 25, true
(915) Join
Arguments: LeftOuter, (product#75735 = internalUUID#75796)
(916) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, systemId#75795, internalUUID#75796, id#75797, displayId#75798, name#75799, baseUnitOfMeasure#75800, unitOfMeasures#75801, unitOfMeasureConversions#75802, productionAspect#75803, salesAspect#75804, procurementAspect#75805, productGroup#75806, filter(unitOfMeasureConversions#75802, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#75750.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#75750.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#75800.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#75800.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#75811]
(917) Generate
Arguments: explode(filteredUnitOfMeasureConversions#75811.quantityNumerator), true, [quantityNumerator#75818]
(918) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, systemId#75795, internalUUID#75796, id#75797, displayId#75798, name#75799, baseUnitOfMeasure#75800, unitOfMeasures#75801, unitOfMeasureConversions#75802, productionAspect#75803, salesAspect#75804, procurementAspect#75805, productGroup#75806, filteredUnitOfMeasureConversions#75811, quantityNumerator#75818]
(919) Generate
Arguments: explode(filteredUnitOfMeasureConversions#75811.quantityDenominator), true, [quantityDenominator#75827]
(920) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, systemId#75795, internalUUID#75796, id#75797, displayId#75798, name#75799, baseUnitOfMeasure#75800, unitOfMeasures#75801, unitOfMeasureConversions#75802, productionAspect#75803, salesAspect#75804, procurementAspect#75805, productGroup#75806, filteredUnitOfMeasureConversions#75811, quantityNumerator#75818, quantityDenominator#75827]
(921) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, systemId#75795, internalUUID#75796, id#75797, displayId#75798, name#75799, baseUnitOfMeasure#75800, unitOfMeasures#75801, unitOfMeasureConversions#75802, productionAspect#75803, salesAspect#75804, procurementAspect#75805, productGroup#75806, filteredUnitOfMeasureConversions#75811, quantityNumerator#75818, quantityDenominator#75827, (cast(quantityNumerator#75818 as double) / cast(quantityDenominator#75827 as double)) AS outboundUnit#75829]
(922) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, systemId#75795, internalUUID#75796, id#75797, displayId#75798, name#75799, baseUnitOfMeasure#75800, unitOfMeasures#75801, unitOfMeasureConversions#75802, productionAspect#75803, salesAspect#75804, procurementAspect#75805, productGroup#75806, filteredUnitOfMeasureConversions#75811, quantityNumerator#75818, quantityDenominator#75827, CASE WHEN (isnull(outboundUnit#75829) OR (outboundUnit#75829 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#75829 END AS outboundUnit#75843]
(923) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, outboundUnit#75843]
(924) LogicalRelation
Arguments: parquet, [systemId#75844, internalUUID#75845, product#75846, plant#75847, calculationDateTime#75848, stockQuantities#75849], false
(925) Repartition
Arguments: 25, true
(926) LogicalRelation
Arguments: parquet, [marketUnit#75850, description#75851, articleHierarchy#75852, defaultCurrency#75853, responsibilities#75854, replenishmentTypes#75855, distributionCenters#75856, assignedArticleHierarchyNodes#75857, minOrderQtySetting#75858, listingCheck#75859, odsSelection#75860, demandProfiles#75861, constraintProfiles#75862, optimizationProfiles#75863, orderGroupSplitProfiles#75864, supplierMinimumProfiles#75865, multipleRestrictionProfiles#75866, preferredUomSource#75867, handlingOfUnfulfilledDemands#75868, negligibleQuantitiesThreshold#75869, eventtype#75870, minOrderQtySettingInternal#75871], false
(927) Repartition
Arguments: 25, true
(928) Filter
Arguments: (marketUnit#75850 <=> Daily_grocery)
(929) Project
Arguments: [marketUnit#75850, description#75851, articleHierarchy#75852, defaultCurrency#75853, responsibilities#75854, replenishmentTypes#75855, distributionCenters#75856, assignedArticleHierarchyNodes#75857, minOrderQtySetting#75858, listingCheck#75859, odsSelection#75860, demandProfiles#75861, constraintProfiles#75862, optimizationProfiles#75863, orderGroupSplitProfiles#75864, supplierMinimumProfiles#75865, multipleRestrictionProfiles#75866, preferredUomSource#75867, handlingOfUnfulfilledDemands#75868, negligibleQuantitiesThreshold#75869, eventtype#75870, minOrderQtySettingInternal#75871]
(930) Project
Arguments: [distributionCenters#75856]
(931) Generate
Arguments: explode(distributionCenters#75856), false, [distributionCenters#75885]
(932) Project
Arguments: [distributionCenters#75885]
(933) Generate
Arguments: explode(distributionCenters#75885.storageLocations), false, [storageLocations#75886]
(934) Project
Arguments: [distributionCenters#75885.id AS plantId#75887, distributionCenters#75885.internalRefUUID AS plantUuid#75888, storageLocations#75886]
(935) Project
Arguments: [plantId#75887, plantUuid#75888, storageLocations#75886.id AS storageLocId#75889, storageLocations#75886.internalRefUUID AS storageLocUuid#75890]
(936) LogicalRelation
Arguments: parquet, [product#75891, plant#75892, orderDateTime#75893, planningStartDateTime#75894], false
(937) RepartitionByExpression
Arguments: [product#75891, plant#75892], 25
(938) Project
Arguments: [product#75891, plant#75892, orderDateTime#75893]
(939) LogicalRelation
Arguments: parquet, [systemId#75896, internalUUID#75897, plant#75898, product#75899, blockedForReplenishmentStartingFrom#75900, productionAspect#75901, salesPlant#75902, listing#75903], false
(940) Repartition
Arguments: 25, true
(941) Project
Arguments: [systemId#75896, internalUUID#75897, plant#75898, product#75899, blockedForReplenishmentStartingFrom#75900, productionAspect#75901, salesPlant#75902, listing#75903, struct(systemId, systemId#75896, internalUUID, internalUUID#75897, plant, plant#75898, product, product#75899, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#75900, productionAspect, productionAspect#75901, salesPlant, salesPlant#75902, listing, listing#75903) AS productPlant#75905]
(942) Project
Arguments: [productPlant#75905]
(943) Join
Arguments: LeftOuter, ((product#75891 <=> productPlant#75905.product.internalRefUUID) AND (plant#75892 <=> productPlant#75905.plant.internalRefUUID))
(944) Project
Arguments: [product#75891, plant#75892, orderDateTime#75893, productPlant#75905]
(945) SubqueryAlias
Arguments: wl
(946) LogicalRelation
Arguments: parquet, [systemId#75907, internalUUID#75908, id#75909, displayId#75910, name#75911, category#75912, companyCode#75913, address#75914, mainDistributionChain#75915, mainPurchasingOrganization#75916, validPurchasingOrganizations#75917, productGroup#75918], false
(947) Repartition
Arguments: 25, true
(948) Project
Arguments: [internalUUID#75908, address#75914.timeZone.code AS timezonecode#75920]
(949) Join
Arguments: LeftOuter, (plant#75892 <=> internalUUID#75908)
(950) Project
Arguments: [product#75891, plant#75892, orderDateTime#75893, productPlant#75905, internalUUID#75908, CASE WHEN isnotnull(timezonecode#75920) THEN timezonecode#75920 ELSE UTC END AS timezonecode#75922]
(951) Project
Arguments: [product#75891, plant#75892, orderDateTime#75893, productPlant#75905, timezonecode#75922]
(952) LogicalRelation
Arguments: parquet, [systemId#75923, internalUUID#75924, id#75925, displayId#75926, name#75927, baseUnitOfMeasure#75928, unitOfMeasures#75929, unitOfMeasureConversions#75930, productionAspect#75931, salesAspect#75932, procurementAspect#75933, productGroup#75934], false
(953) Repartition
Arguments: 25, true
(954) Join
Arguments: LeftOuter, (product#75891 = internalUUID#75924)
(955) Project
Arguments: [product#75891, plant#75892, orderDateTime#75893, productPlant#75905, timezonecode#75922, systemId#75923, internalUUID#75924, id#75925, displayId#75926, name#75927, baseUnitOfMeasure#75928, unitOfMeasures#75929, unitOfMeasureConversions#75930, productionAspect#75931, salesAspect#75932, procurementAspect#75933, productGroup#75934, filter(unitOfMeasureConversions#75930, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#75905.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#75905.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#75928.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#75928.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#75935]
(956) Generate
Arguments: explode(filteredUnitOfMeasureConversions#75935.quantityNumerator), true, [quantityNumerator#75937]
(957) Project
Arguments: [product#75891, plant#75892, orderDateTime#75893, productPlant#75905, timezonecode#75922, systemId#75923, internalUUID#75924, id#75925, displayId#75926, name#75927, baseUnitOfMeasure#75928, unitOfMeasures#75929, unitOfMeasureConversions#75930, productionAspect#75931, salesAspect#75932, procurementAspect#75933, productGroup#75934, filteredUnitOfMeasureConversions#75935, quantityNumerator#75937]
(958) Generate
Arguments: explode(filteredUnitOfMeasureConversions#75935.quantityDenominator), true, [quantityDenominator#75938]
(959) Project
Arguments: [product#75891, plant#75892, orderDateTime#75893, productPlant#75905, timezonecode#75922, systemId#75923, internalUUID#75924, id#75925, displayId#75926, name#75927, baseUnitOfMeasure#75928, unitOfMeasures#75929, unitOfMeasureConversions#75930, productionAspect#75931, salesAspect#75932, procurementAspect#75933, productGroup#75934, filteredUnitOfMeasureConversions#75935, quantityNumerator#75937, quantityDenominator#75938]
(960) Project
Arguments: [product#75891, plant#75892, orderDateTime#75893, productPlant#75905, timezonecode#75922, systemId#75923, internalUUID#75924, id#75925, displayId#75926, name#75927, baseUnitOfMeasure#75928, unitOfMeasures#75929, unitOfMeasureConversions#75930, productionAspect#75931, salesAspect#75932, procurementAspect#75933, productGroup#75934, filteredUnitOfMeasureConversions#75935, quantityNumerator#75937, quantityDenominator#75938, (cast(quantityNumerator#75937 as double) / cast(quantityDenominator#75938 as double)) AS outboundUnit#75941]
(961) Project
Arguments: [product#75891, plant#75892, orderDateTime#75893, productPlant#75905, timezonecode#75922, systemId#75923, internalUUID#75924, id#75925, displayId#75926, name#75927, baseUnitOfMeasure#75928, unitOfMeasures#75929, unitOfMeasureConversions#75930, productionAspect#75931, salesAspect#75932, procurementAspect#75933, productGroup#75934, filteredUnitOfMeasureConversions#75935, quantityNumerator#75937, quantityDenominator#75938, CASE WHEN (isnull(outboundUnit#75941) OR (outboundUnit#75941 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#75941 END AS outboundUnit#75943]
(962) Project
Arguments: [product#75891, plant#75892, orderDateTime#75893, productPlant#75905, timezonecode#75922, outboundUnit#75943]
(963) Project
Arguments: [plant#75892]
(964) Deduplicate
Arguments: [plant#75892]
(965) Join
Arguments: Inner, (plantUuid#75888 = plant#75892)
(966) Project
Arguments: [plantId#75887, plantUuid#75888, storageLocId#75889, storageLocUuid#75890]
(967) Join
Arguments: Inner, (plant#75847.internalRefUUID <=> plantUuid#75888)
(968) Generate
Arguments: explode(filter(stockQuantities#75849, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#75890) AND (lambda x#69269.storageLocation.Id = storageLocId#75889)), lambda x#69269, false))), false, [stockQuantity#75966]
(969) Project
Arguments: [systemId#75844, internalUUID#75845, product#75846, plant#75847, calculationDateTime#75848, stockQuantities#75849, plantId#75887, plantUuid#75888, storageLocId#75889, storageLocUuid#75890, stockQuantity#75966]
(970) Aggregate
Arguments: [plantUuid#75888, internalUUID#75845, plant#75847, product#75846, systemId#75844], [plantUuid#75888, internalUUID#75845, plant#75847, product#75846, systemId#75844, first(calculationDateTime#75848, false) AS calculationDateTime#75979, collect_list(stockQuantity#75966, 0, 0) AS stockQuantities#75980]
(971) Project
Arguments: [systemId#75844, internalUUID#75845, product#75846, plant#75847, calculationDateTime#75979, stockQuantities#75980]
(972) Generate
Arguments: explode(stockQuantities#75980), false, [stockQuantity#75982]
(973) Project
Arguments: [systemId#75844, internalUUID#75845, product#75846, plant#75847, calculationDateTime#75979, stockQuantities#75980, stockQuantity#75982]
(974) Project
Arguments: [plant#75847.id AS plant#75996, plant#75847.internalRefUUID AS plantUuid#75997, product#75846.id AS product#75998, product#75846.internalRefUUID AS productUuid#75999, calculationDateTime#75979, stockQuantity#75982.storagelocation.id AS storageLocId#76000, stockQuantity#75982.storagelocation.internalRefUUID AS storageLocUuid#76001, stockQuantity#75982.quantity.measure AS quantity#76002, stockQuantity#75982.specialStockIndicator.code AS specialStockIndicator#76003, stockQuantity#75982.stockType.code AS stockType#76004]
(975) Filter
Arguments: ((specialStockIndicator#76003 = ) AND (stockType#76004 = 01))
(976) LogicalRelation
Arguments: parquet, [product#76005, plant#76006, orderDateTime#76007, planningStartDateTime#76008], false
(977) RepartitionByExpression
Arguments: [product#76005, plant#76006], 25
(978) Project
Arguments: [product#76005, plant#76006, orderDateTime#76007]
(979) LogicalRelation
Arguments: parquet, [systemId#76009, internalUUID#76010, plant#76011, product#76012, blockedForReplenishmentStartingFrom#76013, productionAspect#76014, salesPlant#76015, listing#76016], false
(980) Repartition
Arguments: 25, true
(981) Project
Arguments: [systemId#76009, internalUUID#76010, plant#76011, product#76012, blockedForReplenishmentStartingFrom#76013, productionAspect#76014, salesPlant#76015, listing#76016, struct(systemId, systemId#76009, internalUUID, internalUUID#76010, plant, plant#76011, product, product#76012, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76013, productionAspect, productionAspect#76014, salesPlant, salesPlant#76015, listing, listing#76016) AS productPlant#76017]
(982) Project
Arguments: [productPlant#76017]
(983) Join
Arguments: LeftOuter, ((product#76005 <=> productPlant#76017.product.internalRefUUID) AND (plant#76006 <=> productPlant#76017.plant.internalRefUUID))
(984) Project
Arguments: [product#76005, plant#76006, orderDateTime#76007, productPlant#76017]
(985) SubqueryAlias
Arguments: wl
(986) LogicalRelation
Arguments: parquet, [systemId#76020, internalUUID#76021, id#76022, displayId#76023, name#76024, category#76025, companyCode#76026, address#76027, mainDistributionChain#76028, mainPurchasingOrganization#76029, validPurchasingOrganizations#76030, productGroup#76031], false
(987) Repartition
Arguments: 25, true
(988) Project
Arguments: [internalUUID#76021, address#76027.timeZone.code AS timezonecode#76033]
(989) Join
Arguments: LeftOuter, (plant#76006 <=> internalUUID#76021)
(990) Project
Arguments: [product#76005, plant#76006, orderDateTime#76007, productPlant#76017, internalUUID#76021, CASE WHEN isnotnull(timezonecode#76033) THEN timezonecode#76033 ELSE UTC END AS timezonecode#76035]
(991) Project
Arguments: [product#76005, plant#76006, orderDateTime#76007, productPlant#76017, timezonecode#76035]
(992) LogicalRelation
Arguments: parquet, [systemId#76036, internalUUID#76037, id#76038, displayId#76039, name#76040, baseUnitOfMeasure#76041, unitOfMeasures#76042, unitOfMeasureConversions#76043, productionAspect#76044, salesAspect#76045, procurementAspect#76046, productGroup#76047], false
(993) Repartition
Arguments: 25, true
(994) Join
Arguments: LeftOuter, (product#76005 = internalUUID#76037)
(995) Project
Arguments: [product#76005, plant#76006, orderDateTime#76007, productPlant#76017, timezonecode#76035, systemId#76036, internalUUID#76037, id#76038, displayId#76039, name#76040, baseUnitOfMeasure#76041, unitOfMeasures#76042, unitOfMeasureConversions#76043, productionAspect#76044, salesAspect#76045, procurementAspect#76046, productGroup#76047, filter(unitOfMeasureConversions#76043, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#76017.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#76017.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76041.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76041.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76049]
(996) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76049.quantityNumerator), true, [quantityNumerator#76052]
(997) Project
Arguments: [product#76005, plant#76006, orderDateTime#76007, productPlant#76017, timezonecode#76035, systemId#76036, internalUUID#76037, id#76038, displayId#76039, name#76040, baseUnitOfMeasure#76041, unitOfMeasures#76042, unitOfMeasureConversions#76043, productionAspect#76044, salesAspect#76045, procurementAspect#76046, productGroup#76047, filteredUnitOfMeasureConversions#76049, quantityNumerator#76052]
(998) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76049.quantityDenominator), true, [quantityDenominator#76081]
(999) Project
Arguments: [product#76005, plant#76006, orderDateTime#76007, productPlant#76017, timezonecode#76035, systemId#76036, internalUUID#76037, id#76038, displayId#76039, name#76040, baseUnitOfMeasure#76041, unitOfMeasures#76042, unitOfMeasureConversions#76043, productionAspect#76044, salesAspect#76045, procurementAspect#76046, productGroup#76047, filteredUnitOfMeasureConversions#76049, quantityNumerator#76052, quantityDenominator#76081]
(1000) Project
Arguments: [product#76005, plant#76006, orderDateTime#76007, productPlant#76017, timezonecode#76035, systemId#76036, internalUUID#76037, id#76038, displayId#76039, name#76040, baseUnitOfMeasure#76041, unitOfMeasures#76042, unitOfMeasureConversions#76043, productionAspect#76044, salesAspect#76045, procurementAspect#76046, productGroup#76047, filteredUnitOfMeasureConversions#76049, quantityNumerator#76052, quantityDenominator#76081, (cast(quantityNumerator#76052 as double) / cast(quantityDenominator#76081 as double)) AS outboundUnit#76083]
(1001) Project
Arguments: [product#76005, plant#76006, orderDateTime#76007, productPlant#76017, timezonecode#76035, systemId#76036, internalUUID#76037, id#76038, displayId#76039, name#76040, baseUnitOfMeasure#76041, unitOfMeasures#76042, unitOfMeasureConversions#76043, productionAspect#76044, salesAspect#76045, procurementAspect#76046, productGroup#76047, filteredUnitOfMeasureConversions#76049, quantityNumerator#76052, quantityDenominator#76081, CASE WHEN (isnull(outboundUnit#76083) OR (outboundUnit#76083 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76083 END AS outboundUnit#76093]
(1002) Project
Arguments: [product#76005, plant#76006, orderDateTime#76007, productPlant#76017, timezonecode#76035, outboundUnit#76093]
(1003) Join
Arguments: Inner, ((plantUuid#75997 = plant#76006) AND (productUuid#75999 = product#76005))
(1004) Filter
Arguments: (calculationDateTime#75979 <= orderDateTime#76007)
(1005) Project
Arguments: [plantUuid#75997 AS plant#76103, productUuid#75999 AS product#76104, storageLocId#76000, calculationDateTime#75979, quantity#76002]
(1006) LogicalRelation
Arguments: parquet, [systemId#76105, internalUUID#76106, product#76107, plant#76108, calculationDateTime#76109, stockQuantities#76110], false
(1007) Repartition
Arguments: 25, true
(1008) LogicalRelation
Arguments: parquet, [marketUnit#76111, description#76112, articleHierarchy#76113, defaultCurrency#76114, responsibilities#76115, replenishmentTypes#76116, distributionCenters#76117, assignedArticleHierarchyNodes#76118, minOrderQtySetting#76119, listingCheck#76120, odsSelection#76121, demandProfiles#76122, constraintProfiles#76123, optimizationProfiles#76124, orderGroupSplitProfiles#76125, supplierMinimumProfiles#76126, multipleRestrictionProfiles#76127, preferredUomSource#76128, handlingOfUnfulfilledDemands#76129, negligibleQuantitiesThreshold#76130, eventtype#76131, minOrderQtySettingInternal#76132], false
(1009) Repartition
Arguments: 25, true
(1010) Filter
Arguments: (marketUnit#76111 <=> Daily_grocery)
(1011) Project
Arguments: [marketUnit#76111, description#76112, articleHierarchy#76113, defaultCurrency#76114, responsibilities#76115, replenishmentTypes#76116, distributionCenters#76117, assignedArticleHierarchyNodes#76118, minOrderQtySetting#76119, listingCheck#76120, odsSelection#76121, demandProfiles#76122, constraintProfiles#76123, optimizationProfiles#76124, orderGroupSplitProfiles#76125, supplierMinimumProfiles#76126, multipleRestrictionProfiles#76127, preferredUomSource#76128, handlingOfUnfulfilledDemands#76129, negligibleQuantitiesThreshold#76130, eventtype#76131, minOrderQtySettingInternal#76132]
(1012) Project
Arguments: [distributionCenters#76117]
(1013) Generate
Arguments: explode(distributionCenters#76117), false, [distributionCenters#76146]
(1014) Project
Arguments: [distributionCenters#76146]
(1015) Generate
Arguments: explode(distributionCenters#76146.storageLocations), false, [storageLocations#76147]
(1016) Project
Arguments: [distributionCenters#76146.id AS plantId#76149, distributionCenters#76146.internalRefUUID AS plantUuid#76150, storageLocations#76147]
(1017) Project
Arguments: [plantId#76149, plantUuid#76150, storageLocations#76147.id AS storageLocId#76163, storageLocations#76147.internalRefUUID AS storageLocUuid#76164]
(1018) LogicalRelation
Arguments: parquet, [product#76165, plant#76166, orderDateTime#76167, planningStartDateTime#76168], false
(1019) RepartitionByExpression
Arguments: [product#76165, plant#76166], 25
(1020) Project
Arguments: [product#76165, plant#76166, orderDateTime#76167]
(1021) LogicalRelation
Arguments: parquet, [systemId#76169, internalUUID#76170, plant#76171, product#76172, blockedForReplenishmentStartingFrom#76173, productionAspect#76174, salesPlant#76175, listing#76176], false
(1022) Repartition
Arguments: 25, true
(1023) Project
Arguments: [systemId#76169, internalUUID#76170, plant#76171, product#76172, blockedForReplenishmentStartingFrom#76173, productionAspect#76174, salesPlant#76175, listing#76176, struct(systemId, systemId#76169, internalUUID, internalUUID#76170, plant, plant#76171, product, product#76172, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76173, productionAspect, productionAspect#76174, salesPlant, salesPlant#76175, listing, listing#76176) AS productPlant#76177]
(1024) Project
Arguments: [productPlant#76177]
(1025) Join
Arguments: LeftOuter, ((product#76165 <=> productPlant#76177.product.internalRefUUID) AND (plant#76166 <=> productPlant#76177.plant.internalRefUUID))
(1026) Project
Arguments: [product#76165, plant#76166, orderDateTime#76167, productPlant#76177]
(1027) SubqueryAlias
Arguments: wl
(1028) LogicalRelation
Arguments: parquet, [systemId#76180, internalUUID#76181, id#76182, displayId#76183, name#76184, category#76185, companyCode#76186, address#76187, mainDistributionChain#76188, mainPurchasingOrganization#76189, validPurchasingOrganizations#76190, productGroup#76191], false
(1029) Repartition
Arguments: 25, true
(1030) Project
Arguments: [internalUUID#76181, address#76187.timeZone.code AS timezonecode#76192]
(1031) Join
Arguments: LeftOuter, (plant#76166 <=> internalUUID#76181)
(1032) Project
Arguments: [product#76165, plant#76166, orderDateTime#76167, productPlant#76177, internalUUID#76181, CASE WHEN isnotnull(timezonecode#76192) THEN timezonecode#76192 ELSE UTC END AS timezonecode#76194]
(1033) Project
Arguments: [product#76165, plant#76166, orderDateTime#76167, productPlant#76177, timezonecode#76194]
(1034) LogicalRelation
Arguments: parquet, [systemId#76195, internalUUID#76196, id#76197, displayId#76198, name#76199, baseUnitOfMeasure#76200, unitOfMeasures#76201, unitOfMeasureConversions#76202, productionAspect#76203, salesAspect#76204, procurementAspect#76205, productGroup#76206], false
(1035) Repartition
Arguments: 25, true
(1036) Join
Arguments: LeftOuter, (product#76165 = internalUUID#76196)
(1037) Project
Arguments: [product#76165, plant#76166, orderDateTime#76167, productPlant#76177, timezonecode#76194, systemId#76195, internalUUID#76196, id#76197, displayId#76198, name#76199, baseUnitOfMeasure#76200, unitOfMeasures#76201, unitOfMeasureConversions#76202, productionAspect#76203, salesAspect#76204, procurementAspect#76205, productGroup#76206, filter(unitOfMeasureConversions#76202, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#76177.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#76177.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76200.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76200.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76209]
(1038) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76209.quantityNumerator), true, [quantityNumerator#76210]
(1039) Project
Arguments: [product#76165, plant#76166, orderDateTime#76167, productPlant#76177, timezonecode#76194, systemId#76195, internalUUID#76196, id#76197, displayId#76198, name#76199, baseUnitOfMeasure#76200, unitOfMeasures#76201, unitOfMeasureConversions#76202, productionAspect#76203, salesAspect#76204, procurementAspect#76205, productGroup#76206, filteredUnitOfMeasureConversions#76209, quantityNumerator#76210]
(1040) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76209.quantityDenominator), true, [quantityDenominator#76211]
(1041) Project
Arguments: [product#76165, plant#76166, orderDateTime#76167, productPlant#76177, timezonecode#76194, systemId#76195, internalUUID#76196, id#76197, displayId#76198, name#76199, baseUnitOfMeasure#76200, unitOfMeasures#76201, unitOfMeasureConversions#76202, productionAspect#76203, salesAspect#76204, procurementAspect#76205, productGroup#76206, filteredUnitOfMeasureConversions#76209, quantityNumerator#76210, quantityDenominator#76211]
(1042) Project
Arguments: [product#76165, plant#76166, orderDateTime#76167, productPlant#76177, timezonecode#76194, systemId#76195, internalUUID#76196, id#76197, displayId#76198, name#76199, baseUnitOfMeasure#76200, unitOfMeasures#76201, unitOfMeasureConversions#76202, productionAspect#76203, salesAspect#76204, procurementAspect#76205, productGroup#76206, filteredUnitOfMeasureConversions#76209, quantityNumerator#76210, quantityDenominator#76211, (cast(quantityNumerator#76210 as double) / cast(quantityDenominator#76211 as double)) AS outboundUnit#76213]
(1043) Project
Arguments: [product#76165, plant#76166, orderDateTime#76167, productPlant#76177, timezonecode#76194, systemId#76195, internalUUID#76196, id#76197, displayId#76198, name#76199, baseUnitOfMeasure#76200, unitOfMeasures#76201, unitOfMeasureConversions#76202, productionAspect#76203, salesAspect#76204, procurementAspect#76205, productGroup#76206, filteredUnitOfMeasureConversions#76209, quantityNumerator#76210, quantityDenominator#76211, CASE WHEN (isnull(outboundUnit#76213) OR (outboundUnit#76213 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76213 END AS outboundUnit#76214]
(1044) Project
Arguments: [product#76165, plant#76166, orderDateTime#76167, productPlant#76177, timezonecode#76194, outboundUnit#76214]
(1045) Project
Arguments: [plant#76166]
(1046) Deduplicate
Arguments: [plant#76166]
(1047) Join
Arguments: Inner, (plantUuid#76150 = plant#76166)
(1048) Project
Arguments: [plantId#76149, plantUuid#76150, storageLocId#76163, storageLocUuid#76164]
(1049) Join
Arguments: Inner, (plant#76108.internalRefUUID <=> plantUuid#76150)
(1050) Generate
Arguments: explode(filter(stockQuantities#76110, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#76164) AND (lambda x#69269.storageLocation.Id = storageLocId#76163)), lambda x#69269, false))), false, [stockQuantity#76218]
(1051) Project
Arguments: [systemId#76105, internalUUID#76106, product#76107, plant#76108, calculationDateTime#76109, stockQuantities#76110, plantId#76149, plantUuid#76150, storageLocId#76163, storageLocUuid#76164, stockQuantity#76218]
(1052) Aggregate
Arguments: [plantUuid#76150, internalUUID#76106, plant#76108, product#76107, systemId#76105], [plantUuid#76150, internalUUID#76106, plant#76108, product#76107, systemId#76105, first(calculationDateTime#76109, false) AS calculationDateTime#76228, collect_list(stockQuantity#76218, 0, 0) AS stockQuantities#76229]
(1053) Project
Arguments: [systemId#76105, internalUUID#76106, product#76107, plant#76108, calculationDateTime#76228, stockQuantities#76229]
(1054) Generate
Arguments: explode(stockQuantities#76229), false, [stockQuantity#76242]
(1055) Project
Arguments: [systemId#76105, internalUUID#76106, product#76107, plant#76108, calculationDateTime#76228, stockQuantities#76229, stockQuantity#76242]
(1056) Project
Arguments: [plant#76108.id AS plant#76244, plant#76108.internalRefUUID AS plantUuid#76245, product#76107.id AS product#76246, product#76107.internalRefUUID AS productUuid#76247, calculationDateTime#76228, stockQuantity#76242.storagelocation.id AS storageLocId#76248, stockQuantity#76242.storagelocation.internalRefUUID AS storageLocUuid#76249, stockQuantity#76242.quantity.measure AS quantity#76250, stockQuantity#76242.specialStockIndicator.code AS specialStockIndicator#76251, stockQuantity#76242.stockType.code AS stockType#76252]
(1057) Filter
Arguments: ((specialStockIndicator#76251 = ) AND (stockType#76252 = 01))
(1058) LogicalRelation
Arguments: parquet, [product#76253, plant#76254, orderDateTime#76255, planningStartDateTime#76256], false
(1059) RepartitionByExpression
Arguments: [product#76253, plant#76254], 25
(1060) Project
Arguments: [product#76253, plant#76254, orderDateTime#76255]
(1061) LogicalRelation
Arguments: parquet, [systemId#76257, internalUUID#76258, plant#76259, product#76260, blockedForReplenishmentStartingFrom#76261, productionAspect#76262, salesPlant#76263, listing#76264], false
(1062) Repartition
Arguments: 25, true
(1063) Project
Arguments: [systemId#76257, internalUUID#76258, plant#76259, product#76260, blockedForReplenishmentStartingFrom#76261, productionAspect#76262, salesPlant#76263, listing#76264, struct(systemId, systemId#76257, internalUUID, internalUUID#76258, plant, plant#76259, product, product#76260, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76261, productionAspect, productionAspect#76262, salesPlant, salesPlant#76263, listing, listing#76264) AS productPlant#76278]
(1064) Project
Arguments: [productPlant#76278]
(1065) Join
Arguments: LeftOuter, ((product#76253 <=> productPlant#76278.product.internalRefUUID) AND (plant#76254 <=> productPlant#76278.plant.internalRefUUID))
(1066) Project
Arguments: [product#76253, plant#76254, orderDateTime#76255, productPlant#76278]
(1067) SubqueryAlias
Arguments: wl
(1068) LogicalRelation
Arguments: parquet, [systemId#76292, internalUUID#76293, id#76294, displayId#76295, name#76296, category#76297, companyCode#76298, address#76299, mainDistributionChain#76300, mainPurchasingOrganization#76301, validPurchasingOrganizations#76302, productGroup#76303], false
(1069) Repartition
Arguments: 25, true
(1070) Project
Arguments: [internalUUID#76293, address#76299.timeZone.code AS timezonecode#76304]
(1071) Join
Arguments: LeftOuter, (plant#76254 <=> internalUUID#76293)
(1072) Project
Arguments: [product#76253, plant#76254, orderDateTime#76255, productPlant#76278, internalUUID#76293, CASE WHEN isnotnull(timezonecode#76304) THEN timezonecode#76304 ELSE UTC END AS timezonecode#76305]
(1073) Project
Arguments: [product#76253, plant#76254, orderDateTime#76255, productPlant#76278, timezonecode#76305]
(1074) LogicalRelation
Arguments: parquet, [systemId#76307, internalUUID#76308, id#76309, displayId#76310, name#76311, baseUnitOfMeasure#76312, unitOfMeasures#76313, unitOfMeasureConversions#76314, productionAspect#76315, salesAspect#76316, procurementAspect#76317, productGroup#76318], false
(1075) Repartition
Arguments: 25, true
(1076) Join
Arguments: LeftOuter, (product#76253 = internalUUID#76308)
(1077) Project
Arguments: [product#76253, plant#76254, orderDateTime#76255, productPlant#76278, timezonecode#76305, systemId#76307, internalUUID#76308, id#76309, displayId#76310, name#76311, baseUnitOfMeasure#76312, unitOfMeasures#76313, unitOfMeasureConversions#76314, productionAspect#76315, salesAspect#76316, procurementAspect#76317, productGroup#76318, filter(unitOfMeasureConversions#76314, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#76278.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#76278.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76312.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76312.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76322]
(1078) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76322.quantityNumerator), true, [quantityNumerator#76323]
(1079) Project
Arguments: [product#76253, plant#76254, orderDateTime#76255, productPlant#76278, timezonecode#76305, systemId#76307, internalUUID#76308, id#76309, displayId#76310, name#76311, baseUnitOfMeasure#76312, unitOfMeasures#76313, unitOfMeasureConversions#76314, productionAspect#76315, salesAspect#76316, procurementAspect#76317, productGroup#76318, filteredUnitOfMeasureConversions#76322, quantityNumerator#76323]
(1080) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76322.quantityDenominator), true, [quantityDenominator#76325]
(1081) Project
Arguments: [product#76253, plant#76254, orderDateTime#76255, productPlant#76278, timezonecode#76305, systemId#76307, internalUUID#76308, id#76309, displayId#76310, name#76311, baseUnitOfMeasure#76312, unitOfMeasures#76313, unitOfMeasureConversions#76314, productionAspect#76315, salesAspect#76316, procurementAspect#76317, productGroup#76318, filteredUnitOfMeasureConversions#76322, quantityNumerator#76323, quantityDenominator#76325]
(1082) Project
Arguments: [product#76253, plant#76254, orderDateTime#76255, productPlant#76278, timezonecode#76305, systemId#76307, internalUUID#76308, id#76309, displayId#76310, name#76311, baseUnitOfMeasure#76312, unitOfMeasures#76313, unitOfMeasureConversions#76314, productionAspect#76315, salesAspect#76316, procurementAspect#76317, productGroup#76318, filteredUnitOfMeasureConversions#76322, quantityNumerator#76323, quantityDenominator#76325, (cast(quantityNumerator#76323 as double) / cast(quantityDenominator#76325 as double)) AS outboundUnit#76331]
(1083) Project
Arguments: [product#76253, plant#76254, orderDateTime#76255, productPlant#76278, timezonecode#76305, systemId#76307, internalUUID#76308, id#76309, displayId#76310, name#76311, baseUnitOfMeasure#76312, unitOfMeasures#76313, unitOfMeasureConversions#76314, productionAspect#76315, salesAspect#76316, procurementAspect#76317, productGroup#76318, filteredUnitOfMeasureConversions#76322, quantityNumerator#76323, quantityDenominator#76325, CASE WHEN (isnull(outboundUnit#76331) OR (outboundUnit#76331 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76331 END AS outboundUnit#76333]
(1084) Project
Arguments: [product#76253, plant#76254, orderDateTime#76255, productPlant#76278, timezonecode#76305, outboundUnit#76333]
(1085) Join
Arguments: Inner, ((plantUuid#76245 = plant#76254) AND (productUuid#76247 = product#76253))
(1086) Filter
Arguments: (calculationDateTime#76228 <= orderDateTime#76255)
(1087) Project
Arguments: [plantUuid#76245 AS plant#76336, productUuid#76247 AS product#76337, storageLocId#76248, calculationDateTime#76228, quantity#76250]
(1088) Aggregate
Arguments: [plant#76336, product#76337, storageLocId#76248], [plant#76336, product#76337, storageLocId#76248, max(calculationDateTime#76228) AS max_calc_datetime#76339]
(1089) Join
Arguments: Inner, ((((plant#76103 <=> plant#76336) AND (product#76104 <=> product#76337)) AND (storageLocId#76000 <=> storageLocId#76248)) AND (calculationDateTime#75979 <=> max_calc_datetime#76339))
(1090) Project
Arguments: [plant#76103, product#76104, storageLocId#76000, calculationDateTime#75979, quantity#76002]
(1091) Aggregate
Arguments: [product#76104, plant#76103], [product#76104, plant#76103, sum(quantity#76002) AS quantitySum#76352, min(calculationDateTime#75979) AS minCalculationDateTime#76353]
(1092) Project
Arguments: [product#76104, plant#76103, quantitySum#76352, minCalculationDateTime#76353, round(quantitySum#76352, 0) AS roundedQuantitySum#76355]
(1093) Join
Arguments: LeftOuter, ((plant#75736 = plant#76103) AND (product#75735 = product#76104))
(1094) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, outboundUnit#75843, roundedQuantitySum#76355, minCalculationDateTime#76353]
(1095) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, outboundUnit#75843, roundedQuantitySum#76355, minCalculationDateTime#76353, CASE WHEN isnotnull(minCalculationDateTime#76353) THEN minCalculationDateTime#76353 ELSE orderDateTime#75737 END AS stockDatetime#76369]
(1096) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, outboundUnit#75843, roundedQuantitySum#76355, minCalculationDateTime#76353, stockDatetime#76369, CASE WHEN isnotnull(roundedQuantitySum#76355) THEN array(roundedQuantitySum#76355) ELSE array(0.0) END AS stockBatchQuantities#76370]
(1097) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, outboundUnit#75843, roundedQuantitySum#76355, minCalculationDateTime#76353, stockDatetime#76369, stockBatchQuantities#76370, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#76372]
(1098) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, outboundUnit#75843, roundedQuantitySum#76355, stockDatetime#76369, stockBatchQuantities#76370, stockBatchShelfLifeEndDatetimes#76372]
(1099) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, outboundUnit#75843, stockDatetime#76369, stockBatchQuantities#76370, stockBatchShelfLifeEndDatetimes#76372]
(1100) LogicalRelation
Arguments: parquet, [product#76385, plant#76386, orderDateTime#76387, planningStartDateTime#76388], false
(1101) RepartitionByExpression
Arguments: [product#76385, plant#76386], 25
(1102) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387]
(1103) LogicalRelation
Arguments: parquet, [systemId#76389, internalUUID#76390, plant#76391, product#76392, blockedForReplenishmentStartingFrom#76393, productionAspect#76394, salesPlant#76395, listing#76396], false
(1104) Repartition
Arguments: 25, true
(1105) Project
Arguments: [systemId#76389, internalUUID#76390, plant#76391, product#76392, blockedForReplenishmentStartingFrom#76393, productionAspect#76394, salesPlant#76395, listing#76396, struct(systemId, systemId#76389, internalUUID, internalUUID#76390, plant, plant#76391, product, product#76392, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76393, productionAspect, productionAspect#76394, salesPlant, salesPlant#76395, listing, listing#76396) AS productPlant#76397]
(1106) Project
Arguments: [productPlant#76397]
(1107) Join
Arguments: LeftOuter, ((product#76385 <=> productPlant#76397.product.internalRefUUID) AND (plant#76386 <=> productPlant#76397.plant.internalRefUUID))
(1108) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397]
(1109) SubqueryAlias
Arguments: wl
(1110) LogicalRelation
Arguments: parquet, [systemId#76398, internalUUID#76399, id#76400, displayId#76401, name#76402, category#76403, companyCode#76404, address#76405, mainDistributionChain#76406, mainPurchasingOrganization#76407, validPurchasingOrganizations#76408, productGroup#76409], false
(1111) Repartition
Arguments: 25, true
(1112) Project
Arguments: [internalUUID#76399, address#76405.timeZone.code AS timezonecode#76410]
(1113) Join
Arguments: LeftOuter, (plant#76386 <=> internalUUID#76399)
(1114) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, internalUUID#76399, CASE WHEN isnotnull(timezonecode#76410) THEN timezonecode#76410 ELSE UTC END AS timezonecode#76413]
(1115) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413]
(1116) LogicalRelation
Arguments: parquet, [systemId#76414, internalUUID#76415, id#76416, displayId#76417, name#76418, baseUnitOfMeasure#76419, unitOfMeasures#76420, unitOfMeasureConversions#76421, productionAspect#76422, salesAspect#76423, procurementAspect#76424, productGroup#76425], false
(1117) Repartition
Arguments: 25, true
(1118) Join
Arguments: LeftOuter, (product#76385 = internalUUID#76415)
(1119) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, systemId#76414, internalUUID#76415, id#76416, displayId#76417, name#76418, baseUnitOfMeasure#76419, unitOfMeasures#76420, unitOfMeasureConversions#76421, productionAspect#76422, salesAspect#76423, procurementAspect#76424, productGroup#76425, filter(unitOfMeasureConversions#76421, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#76397.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#76397.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76419.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76419.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76428]
(1120) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76428.quantityNumerator), true, [quantityNumerator#76429]
(1121) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, systemId#76414, internalUUID#76415, id#76416, displayId#76417, name#76418, baseUnitOfMeasure#76419, unitOfMeasures#76420, unitOfMeasureConversions#76421, productionAspect#76422, salesAspect#76423, procurementAspect#76424, productGroup#76425, filteredUnitOfMeasureConversions#76428, quantityNumerator#76429]
(1122) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76428.quantityDenominator), true, [quantityDenominator#76431]
(1123) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, systemId#76414, internalUUID#76415, id#76416, displayId#76417, name#76418, baseUnitOfMeasure#76419, unitOfMeasures#76420, unitOfMeasureConversions#76421, productionAspect#76422, salesAspect#76423, procurementAspect#76424, productGroup#76425, filteredUnitOfMeasureConversions#76428, quantityNumerator#76429, quantityDenominator#76431]
(1124) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, systemId#76414, internalUUID#76415, id#76416, displayId#76417, name#76418, baseUnitOfMeasure#76419, unitOfMeasures#76420, unitOfMeasureConversions#76421, productionAspect#76422, salesAspect#76423, procurementAspect#76424, productGroup#76425, filteredUnitOfMeasureConversions#76428, quantityNumerator#76429, quantityDenominator#76431, (cast(quantityNumerator#76429 as double) / cast(quantityDenominator#76431 as double)) AS outboundUnit#76460]
(1125) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, systemId#76414, internalUUID#76415, id#76416, displayId#76417, name#76418, baseUnitOfMeasure#76419, unitOfMeasures#76420, unitOfMeasureConversions#76421, productionAspect#76422, salesAspect#76423, procurementAspect#76424, productGroup#76425, filteredUnitOfMeasureConversions#76428, quantityNumerator#76429, quantityDenominator#76431, CASE WHEN (isnull(outboundUnit#76460) OR (outboundUnit#76460 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76460 END AS outboundUnit#76463]
(1126) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463]
(1127) LogicalRelation
Arguments: parquet, [systemId#76472, internalUUID#76473, product#76474, plant#76475, calculationDateTime#76476, stockQuantities#76477], false
(1128) Repartition
Arguments: 25, true
(1129) LogicalRelation
Arguments: parquet, [marketUnit#76478, description#76479, articleHierarchy#76480, defaultCurrency#76481, responsibilities#76482, replenishmentTypes#76483, distributionCenters#76484, assignedArticleHierarchyNodes#76485, minOrderQtySetting#76486, listingCheck#76487, odsSelection#76488, demandProfiles#76489, constraintProfiles#76490, optimizationProfiles#76491, orderGroupSplitProfiles#76492, supplierMinimumProfiles#76493, multipleRestrictionProfiles#76494, preferredUomSource#76495, handlingOfUnfulfilledDemands#76496, negligibleQuantitiesThreshold#76497, eventtype#76498, minOrderQtySettingInternal#76499], false
(1130) Repartition
Arguments: 25, true
(1131) Filter
Arguments: (marketUnit#76478 <=> Daily_grocery)
(1132) Project
Arguments: [marketUnit#76478, description#76479, articleHierarchy#76480, defaultCurrency#76481, responsibilities#76482, replenishmentTypes#76483, distributionCenters#76484, assignedArticleHierarchyNodes#76485, minOrderQtySetting#76486, listingCheck#76487, odsSelection#76488, demandProfiles#76489, constraintProfiles#76490, optimizationProfiles#76491, orderGroupSplitProfiles#76492, supplierMinimumProfiles#76493, multipleRestrictionProfiles#76494, preferredUomSource#76495, handlingOfUnfulfilledDemands#76496, negligibleQuantitiesThreshold#76497, eventtype#76498, minOrderQtySettingInternal#76499]
(1133) Project
Arguments: [distributionCenters#76484]
(1134) Generate
Arguments: explode(distributionCenters#76484), false, [distributionCenters#76509]
(1135) Project
Arguments: [distributionCenters#76509]
(1136) Generate
Arguments: explode(distributionCenters#76509.storageLocations), false, [storageLocations#76515]
(1137) Project
Arguments: [distributionCenters#76509.id AS plantId#76523, distributionCenters#76509.internalRefUUID AS plantUuid#76524, storageLocations#76515]
(1138) Project
Arguments: [plantId#76523, plantUuid#76524, storageLocations#76515.id AS storageLocId#76525, storageLocations#76515.internalRefUUID AS storageLocUuid#76526]
(1139) LogicalRelation
Arguments: parquet, [product#76528, plant#76529, orderDateTime#76530, planningStartDateTime#76531], false
(1140) RepartitionByExpression
Arguments: [product#76528, plant#76529], 25
(1141) Project
Arguments: [product#76528, plant#76529, orderDateTime#76530]
(1142) LogicalRelation
Arguments: parquet, [systemId#76532, internalUUID#76533, plant#76534, product#76535, blockedForReplenishmentStartingFrom#76536, productionAspect#76537, salesPlant#76538, listing#76539], false
(1143) Repartition
Arguments: 25, true
(1144) Project
Arguments: [systemId#76532, internalUUID#76533, plant#76534, product#76535, blockedForReplenishmentStartingFrom#76536, productionAspect#76537, salesPlant#76538, listing#76539, struct(systemId, systemId#76532, internalUUID, internalUUID#76533, plant, plant#76534, product, product#76535, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76536, productionAspect, productionAspect#76537, salesPlant, salesPlant#76538, listing, listing#76539) AS productPlant#76541]
(1145) Project
Arguments: [productPlant#76541]
(1146) Join
Arguments: LeftOuter, ((product#76528 <=> productPlant#76541.product.internalRefUUID) AND (plant#76529 <=> productPlant#76541.plant.internalRefUUID))
(1147) Project
Arguments: [product#76528, plant#76529, orderDateTime#76530, productPlant#76541]
(1148) SubqueryAlias
Arguments: wl
(1149) LogicalRelation
Arguments: parquet, [systemId#76554, internalUUID#76555, id#76556, displayId#76557, name#76558, category#76559, companyCode#76560, address#76561, mainDistributionChain#76562, mainPurchasingOrganization#76563, validPurchasingOrganizations#76564, productGroup#76565], false
(1150) Repartition
Arguments: 25, true
(1151) Project
Arguments: [internalUUID#76555, address#76561.timeZone.code AS timezonecode#76566]
(1152) Join
Arguments: LeftOuter, (plant#76529 <=> internalUUID#76555)
(1153) Project
Arguments: [product#76528, plant#76529, orderDateTime#76530, productPlant#76541, internalUUID#76555, CASE WHEN isnotnull(timezonecode#76566) THEN timezonecode#76566 ELSE UTC END AS timezonecode#76567]
(1154) Project
Arguments: [product#76528, plant#76529, orderDateTime#76530, productPlant#76541, timezonecode#76567]
(1155) LogicalRelation
Arguments: parquet, [systemId#76568, internalUUID#76569, id#76570, displayId#76571, name#76572, baseUnitOfMeasure#76573, unitOfMeasures#76574, unitOfMeasureConversions#76575, productionAspect#76576, salesAspect#76577, procurementAspect#76578, productGroup#76579], false
(1156) Repartition
Arguments: 25, true
(1157) Join
Arguments: LeftOuter, (product#76528 = internalUUID#76569)
(1158) Project
Arguments: [product#76528, plant#76529, orderDateTime#76530, productPlant#76541, timezonecode#76567, systemId#76568, internalUUID#76569, id#76570, displayId#76571, name#76572, baseUnitOfMeasure#76573, unitOfMeasures#76574, unitOfMeasureConversions#76575, productionAspect#76576, salesAspect#76577, procurementAspect#76578, productGroup#76579, filter(unitOfMeasureConversions#76575, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#76541.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#76541.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76573.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76573.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76581]
(1159) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76581.quantityNumerator), true, [quantityNumerator#76583]
(1160) Project
Arguments: [product#76528, plant#76529, orderDateTime#76530, productPlant#76541, timezonecode#76567, systemId#76568, internalUUID#76569, id#76570, displayId#76571, name#76572, baseUnitOfMeasure#76573, unitOfMeasures#76574, unitOfMeasureConversions#76575, productionAspect#76576, salesAspect#76577, procurementAspect#76578, productGroup#76579, filteredUnitOfMeasureConversions#76581, quantityNumerator#76583]
(1161) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76581.quantityDenominator), true, [quantityDenominator#76585]
(1162) Project
Arguments: [product#76528, plant#76529, orderDateTime#76530, productPlant#76541, timezonecode#76567, systemId#76568, internalUUID#76569, id#76570, displayId#76571, name#76572, baseUnitOfMeasure#76573, unitOfMeasures#76574, unitOfMeasureConversions#76575, productionAspect#76576, salesAspect#76577, procurementAspect#76578, productGroup#76579, filteredUnitOfMeasureConversions#76581, quantityNumerator#76583, quantityDenominator#76585]
(1163) Project
Arguments: [product#76528, plant#76529, orderDateTime#76530, productPlant#76541, timezonecode#76567, systemId#76568, internalUUID#76569, id#76570, displayId#76571, name#76572, baseUnitOfMeasure#76573, unitOfMeasures#76574, unitOfMeasureConversions#76575, productionAspect#76576, salesAspect#76577, procurementAspect#76578, productGroup#76579, filteredUnitOfMeasureConversions#76581, quantityNumerator#76583, quantityDenominator#76585, (cast(quantityNumerator#76583 as double) / cast(quantityDenominator#76585 as double)) AS outboundUnit#76587]
(1164) Project
Arguments: [product#76528, plant#76529, orderDateTime#76530, productPlant#76541, timezonecode#76567, systemId#76568, internalUUID#76569, id#76570, displayId#76571, name#76572, baseUnitOfMeasure#76573, unitOfMeasures#76574, unitOfMeasureConversions#76575, productionAspect#76576, salesAspect#76577, procurementAspect#76578, productGroup#76579, filteredUnitOfMeasureConversions#76581, quantityNumerator#76583, quantityDenominator#76585, CASE WHEN (isnull(outboundUnit#76587) OR (outboundUnit#76587 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76587 END AS outboundUnit#76588]
(1165) Project
Arguments: [product#76528, plant#76529, orderDateTime#76530, productPlant#76541, timezonecode#76567, outboundUnit#76588]
(1166) Project
Arguments: [plant#76529]
(1167) Deduplicate
Arguments: [plant#76529]
(1168) Join
Arguments: Inner, (plantUuid#76524 = plant#76529)
(1169) Project
Arguments: [plantId#76523, plantUuid#76524, storageLocId#76525, storageLocUuid#76526]
(1170) Join
Arguments: Inner, (plant#76475.internalRefUUID <=> plantUuid#76524)
(1171) Generate
Arguments: explode(filter(stockQuantities#76477, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#76526) AND (lambda x#69269.storageLocation.Id = storageLocId#76525)), lambda x#69269, false))), false, [stockQuantity#76590]
(1172) Project
Arguments: [systemId#76472, internalUUID#76473, product#76474, plant#76475, calculationDateTime#76476, stockQuantities#76477, plantId#76523, plantUuid#76524, storageLocId#76525, storageLocUuid#76526, stockQuantity#76590]
(1173) Aggregate
Arguments: [plantUuid#76524, internalUUID#76473, plant#76475, product#76474, systemId#76472], [plantUuid#76524, internalUUID#76473, plant#76475, product#76474, systemId#76472, first(calculationDateTime#76476, false) AS calculationDateTime#76592, collect_list(stockQuantity#76590, 0, 0) AS stockQuantities#76593]
(1174) Project
Arguments: [systemId#76472, internalUUID#76473, product#76474, plant#76475, calculationDateTime#76592, stockQuantities#76593]
(1175) Generate
Arguments: explode(stockQuantities#76593), false, [stockQuantity#76594]
(1176) Project
Arguments: [systemId#76472, internalUUID#76473, product#76474, plant#76475, calculationDateTime#76592, stockQuantities#76593, stockQuantity#76594]
(1177) Project
Arguments: [plant#76475.id AS plant#76619, plant#76475.internalRefUUID AS plantUuid#76620, product#76474.id AS product#76621, product#76474.internalRefUUID AS productUuid#76622, calculationDateTime#76592, stockQuantity#76594.storagelocation.id AS storageLocId#76623, stockQuantity#76594.storagelocation.internalRefUUID AS storageLocUuid#76624, stockQuantity#76594.quantity.measure AS quantity#76625, stockQuantity#76594.specialStockIndicator.code AS specialStockIndicator#76626, stockQuantity#76594.stockType.code AS stockType#76627]
(1178) Filter
Arguments: ((specialStockIndicator#76626 = ) AND (stockType#76627 = 01))
(1179) LogicalRelation
Arguments: parquet, [product#76629, plant#76630, orderDateTime#76631, planningStartDateTime#76632], false
(1180) RepartitionByExpression
Arguments: [product#76629, plant#76630], 25
(1181) Project
Arguments: [product#76629, plant#76630, orderDateTime#76631]
(1182) LogicalRelation
Arguments: parquet, [systemId#76633, internalUUID#76634, plant#76635, product#76636, blockedForReplenishmentStartingFrom#76637, productionAspect#76638, salesPlant#76639, listing#76640], false
(1183) Repartition
Arguments: 25, true
(1184) Project
Arguments: [systemId#76633, internalUUID#76634, plant#76635, product#76636, blockedForReplenishmentStartingFrom#76637, productionAspect#76638, salesPlant#76639, listing#76640, struct(systemId, systemId#76633, internalUUID, internalUUID#76634, plant, plant#76635, product, product#76636, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76637, productionAspect, productionAspect#76638, salesPlant, salesPlant#76639, listing, listing#76640) AS productPlant#76654]
(1185) Project
Arguments: [productPlant#76654]
(1186) Join
Arguments: LeftOuter, ((product#76629 <=> productPlant#76654.product.internalRefUUID) AND (plant#76630 <=> productPlant#76654.plant.internalRefUUID))
(1187) Project
Arguments: [product#76629, plant#76630, orderDateTime#76631, productPlant#76654]
(1188) SubqueryAlias
Arguments: wl
(1189) LogicalRelation
Arguments: parquet, [systemId#76656, internalUUID#76657, id#76658, displayId#76659, name#76660, category#76661, companyCode#76662, address#76663, mainDistributionChain#76664, mainPurchasingOrganization#76665, validPurchasingOrganizations#76666, productGroup#76667], false
(1190) Repartition
Arguments: 25, true
(1191) Project
Arguments: [internalUUID#76657, address#76663.timeZone.code AS timezonecode#76680]
(1192) Join
Arguments: LeftOuter, (plant#76630 <=> internalUUID#76657)
(1193) Project
Arguments: [product#76629, plant#76630, orderDateTime#76631, productPlant#76654, internalUUID#76657, CASE WHEN isnotnull(timezonecode#76680) THEN timezonecode#76680 ELSE UTC END AS timezonecode#76681]
(1194) Project
Arguments: [product#76629, plant#76630, orderDateTime#76631, productPlant#76654, timezonecode#76681]
(1195) LogicalRelation
Arguments: parquet, [systemId#76682, internalUUID#76683, id#76684, displayId#76685, name#76686, baseUnitOfMeasure#76687, unitOfMeasures#76688, unitOfMeasureConversions#76689, productionAspect#76690, salesAspect#76691, procurementAspect#76692, productGroup#76693], false
(1196) Repartition
Arguments: 25, true
(1197) Join
Arguments: LeftOuter, (product#76629 = internalUUID#76683)
(1198) Project
Arguments: [product#76629, plant#76630, orderDateTime#76631, productPlant#76654, timezonecode#76681, systemId#76682, internalUUID#76683, id#76684, displayId#76685, name#76686, baseUnitOfMeasure#76687, unitOfMeasures#76688, unitOfMeasureConversions#76689, productionAspect#76690, salesAspect#76691, procurementAspect#76692, productGroup#76693, filter(unitOfMeasureConversions#76689, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#76654.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#76654.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76687.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76687.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76697]
(1199) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76697.quantityNumerator), true, [quantityNumerator#76698]
(1200) Project
Arguments: [product#76629, plant#76630, orderDateTime#76631, productPlant#76654, timezonecode#76681, systemId#76682, internalUUID#76683, id#76684, displayId#76685, name#76686, baseUnitOfMeasure#76687, unitOfMeasures#76688, unitOfMeasureConversions#76689, productionAspect#76690, salesAspect#76691, procurementAspect#76692, productGroup#76693, filteredUnitOfMeasureConversions#76697, quantityNumerator#76698]
(1201) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76697.quantityDenominator), true, [quantityDenominator#76700]
(1202) Project
Arguments: [product#76629, plant#76630, orderDateTime#76631, productPlant#76654, timezonecode#76681, systemId#76682, internalUUID#76683, id#76684, displayId#76685, name#76686, baseUnitOfMeasure#76687, unitOfMeasures#76688, unitOfMeasureConversions#76689, productionAspect#76690, salesAspect#76691, procurementAspect#76692, productGroup#76693, filteredUnitOfMeasureConversions#76697, quantityNumerator#76698, quantityDenominator#76700]
(1203) Project
Arguments: [product#76629, plant#76630, orderDateTime#76631, productPlant#76654, timezonecode#76681, systemId#76682, internalUUID#76683, id#76684, displayId#76685, name#76686, baseUnitOfMeasure#76687, unitOfMeasures#76688, unitOfMeasureConversions#76689, productionAspect#76690, salesAspect#76691, procurementAspect#76692, productGroup#76693, filteredUnitOfMeasureConversions#76697, quantityNumerator#76698, quantityDenominator#76700, (cast(quantityNumerator#76698 as double) / cast(quantityDenominator#76700 as double)) AS outboundUnit#76701]
(1204) Project
Arguments: [product#76629, plant#76630, orderDateTime#76631, productPlant#76654, timezonecode#76681, systemId#76682, internalUUID#76683, id#76684, displayId#76685, name#76686, baseUnitOfMeasure#76687, unitOfMeasures#76688, unitOfMeasureConversions#76689, productionAspect#76690, salesAspect#76691, procurementAspect#76692, productGroup#76693, filteredUnitOfMeasureConversions#76697, quantityNumerator#76698, quantityDenominator#76700, CASE WHEN (isnull(outboundUnit#76701) OR (outboundUnit#76701 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76701 END AS outboundUnit#76702]
(1205) Project
Arguments: [product#76629, plant#76630, orderDateTime#76631, productPlant#76654, timezonecode#76681, outboundUnit#76702]
(1206) Join
Arguments: Inner, ((plantUuid#76620 = plant#76630) AND (productUuid#76622 = product#76629))
(1207) Filter
Arguments: (calculationDateTime#76592 <= orderDateTime#76631)
(1208) Project
Arguments: [plantUuid#76620 AS plant#76703, productUuid#76622 AS product#76704, storageLocId#76623, calculationDateTime#76592, quantity#76625]
(1209) LogicalRelation
Arguments: parquet, [systemId#76705, internalUUID#76706, product#76707, plant#76708, calculationDateTime#76709, stockQuantities#76710], false
(1210) Repartition
Arguments: 25, true
(1211) LogicalRelation
Arguments: parquet, [marketUnit#76711, description#76712, articleHierarchy#76713, defaultCurrency#76714, responsibilities#76715, replenishmentTypes#76716, distributionCenters#76717, assignedArticleHierarchyNodes#76718, minOrderQtySetting#76719, listingCheck#76720, odsSelection#76721, demandProfiles#76722, constraintProfiles#76723, optimizationProfiles#76724, orderGroupSplitProfiles#76725, supplierMinimumProfiles#76726, multipleRestrictionProfiles#76727, preferredUomSource#76728, handlingOfUnfulfilledDemands#76729, negligibleQuantitiesThreshold#76730, eventtype#76731, minOrderQtySettingInternal#76732], false
(1212) Repartition
Arguments: 25, true
(1213) Filter
Arguments: (marketUnit#76711 <=> Daily_grocery)
(1214) Project
Arguments: [marketUnit#76711, description#76712, articleHierarchy#76713, defaultCurrency#76714, responsibilities#76715, replenishmentTypes#76716, distributionCenters#76717, assignedArticleHierarchyNodes#76718, minOrderQtySetting#76719, listingCheck#76720, odsSelection#76721, demandProfiles#76722, constraintProfiles#76723, optimizationProfiles#76724, orderGroupSplitProfiles#76725, supplierMinimumProfiles#76726, multipleRestrictionProfiles#76727, preferredUomSource#76728, handlingOfUnfulfilledDemands#76729, negligibleQuantitiesThreshold#76730, eventtype#76731, minOrderQtySettingInternal#76732]
(1215) Project
Arguments: [distributionCenters#76717]
(1216) Generate
Arguments: explode(distributionCenters#76717), false, [distributionCenters#76733]
(1217) Project
Arguments: [distributionCenters#76733]
(1218) Generate
Arguments: explode(distributionCenters#76733.storageLocations), false, [storageLocations#76734]
(1219) Project
Arguments: [distributionCenters#76733.id AS plantId#76735, distributionCenters#76733.internalRefUUID AS plantUuid#76736, storageLocations#76734]
(1220) Project
Arguments: [plantId#76735, plantUuid#76736, storageLocations#76734.id AS storageLocId#76737, storageLocations#76734.internalRefUUID AS storageLocUuid#76738]
(1221) LogicalRelation
Arguments: parquet, [product#76739, plant#76740, orderDateTime#76741, planningStartDateTime#76742], false
(1222) RepartitionByExpression
Arguments: [product#76739, plant#76740], 25
(1223) Project
Arguments: [product#76739, plant#76740, orderDateTime#76741]
(1224) LogicalRelation
Arguments: parquet, [systemId#76743, internalUUID#76744, plant#76745, product#76746, blockedForReplenishmentStartingFrom#76747, productionAspect#76748, salesPlant#76749, listing#76750], false
(1225) Repartition
Arguments: 25, true
(1226) Project
Arguments: [systemId#76743, internalUUID#76744, plant#76745, product#76746, blockedForReplenishmentStartingFrom#76747, productionAspect#76748, salesPlant#76749, listing#76750, struct(systemId, systemId#76743, internalUUID, internalUUID#76744, plant, plant#76745, product, product#76746, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76747, productionAspect, productionAspect#76748, salesPlant, salesPlant#76749, listing, listing#76750) AS productPlant#76752]
(1227) Project
Arguments: [productPlant#76752]
(1228) Join
Arguments: LeftOuter, ((product#76739 <=> productPlant#76752.product.internalRefUUID) AND (plant#76740 <=> productPlant#76752.plant.internalRefUUID))
(1229) Project
Arguments: [product#76739, plant#76740, orderDateTime#76741, productPlant#76752]
(1230) SubqueryAlias
Arguments: wl
(1231) LogicalRelation
Arguments: parquet, [systemId#76753, internalUUID#76754, id#76755, displayId#76756, name#76757, category#76758, companyCode#76759, address#76760, mainDistributionChain#76761, mainPurchasingOrganization#76762, validPurchasingOrganizations#76763, productGroup#76764], false
(1232) Repartition
Arguments: 25, true
(1233) Project
Arguments: [internalUUID#76754, address#76760.timeZone.code AS timezonecode#76767]
(1234) Join
Arguments: LeftOuter, (plant#76740 <=> internalUUID#76754)
(1235) Project
Arguments: [product#76739, plant#76740, orderDateTime#76741, productPlant#76752, internalUUID#76754, CASE WHEN isnotnull(timezonecode#76767) THEN timezonecode#76767 ELSE UTC END AS timezonecode#76796]
(1236) Project
Arguments: [product#76739, plant#76740, orderDateTime#76741, productPlant#76752, timezonecode#76796]
(1237) LogicalRelation
Arguments: parquet, [systemId#76797, internalUUID#76798, id#76799, displayId#76800, name#76801, baseUnitOfMeasure#76802, unitOfMeasures#76803, unitOfMeasureConversions#76804, productionAspect#76805, salesAspect#76806, procurementAspect#76807, productGroup#76808], false
(1238) Repartition
Arguments: 25, true
(1239) Join
Arguments: LeftOuter, (product#76739 = internalUUID#76798)
(1240) Project
Arguments: [product#76739, plant#76740, orderDateTime#76741, productPlant#76752, timezonecode#76796, systemId#76797, internalUUID#76798, id#76799, displayId#76800, name#76801, baseUnitOfMeasure#76802, unitOfMeasures#76803, unitOfMeasureConversions#76804, productionAspect#76805, salesAspect#76806, procurementAspect#76807, productGroup#76808, filter(unitOfMeasureConversions#76804, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#76752.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#76752.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76802.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76802.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76819]
(1241) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76819.quantityNumerator), true, [quantityNumerator#76828]
(1242) Project
Arguments: [product#76739, plant#76740, orderDateTime#76741, productPlant#76752, timezonecode#76796, systemId#76797, internalUUID#76798, id#76799, displayId#76800, name#76801, baseUnitOfMeasure#76802, unitOfMeasures#76803, unitOfMeasureConversions#76804, productionAspect#76805, salesAspect#76806, procurementAspect#76807, productGroup#76808, filteredUnitOfMeasureConversions#76819, quantityNumerator#76828]
(1243) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76819.quantityDenominator), true, [quantityDenominator#76830]
(1244) Project
Arguments: [product#76739, plant#76740, orderDateTime#76741, productPlant#76752, timezonecode#76796, systemId#76797, internalUUID#76798, id#76799, displayId#76800, name#76801, baseUnitOfMeasure#76802, unitOfMeasures#76803, unitOfMeasureConversions#76804, productionAspect#76805, salesAspect#76806, procurementAspect#76807, productGroup#76808, filteredUnitOfMeasureConversions#76819, quantityNumerator#76828, quantityDenominator#76830]
(1245) Project
Arguments: [product#76739, plant#76740, orderDateTime#76741, productPlant#76752, timezonecode#76796, systemId#76797, internalUUID#76798, id#76799, displayId#76800, name#76801, baseUnitOfMeasure#76802, unitOfMeasures#76803, unitOfMeasureConversions#76804, productionAspect#76805, salesAspect#76806, procurementAspect#76807, productGroup#76808, filteredUnitOfMeasureConversions#76819, quantityNumerator#76828, quantityDenominator#76830, (cast(quantityNumerator#76828 as double) / cast(quantityDenominator#76830 as double)) AS outboundUnit#76857]
(1246) Project
Arguments: [product#76739, plant#76740, orderDateTime#76741, productPlant#76752, timezonecode#76796, systemId#76797, internalUUID#76798, id#76799, displayId#76800, name#76801, baseUnitOfMeasure#76802, unitOfMeasures#76803, unitOfMeasureConversions#76804, productionAspect#76805, salesAspect#76806, procurementAspect#76807, productGroup#76808, filteredUnitOfMeasureConversions#76819, quantityNumerator#76828, quantityDenominator#76830, CASE WHEN (isnull(outboundUnit#76857) OR (outboundUnit#76857 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76857 END AS outboundUnit#76858]
(1247) Project
Arguments: [product#76739, plant#76740, orderDateTime#76741, productPlant#76752, timezonecode#76796, outboundUnit#76858]
(1248) Project
Arguments: [plant#76740]
(1249) Deduplicate
Arguments: [plant#76740]
(1250) Join
Arguments: Inner, (plantUuid#76736 = plant#76740)
(1251) Project
Arguments: [plantId#76735, plantUuid#76736, storageLocId#76737, storageLocUuid#76738]
(1252) Join
Arguments: Inner, (plant#76708.internalRefUUID <=> plantUuid#76736)
(1253) Generate
Arguments: explode(filter(stockQuantities#76710, lambdafunction(((lambda x#69269.storageLocation.internalRefUuid = storageLocUuid#76738) AND (lambda x#69269.storageLocation.Id = storageLocId#76737)), lambda x#69269, false))), false, [stockQuantity#76862]
(1254) Project
Arguments: [systemId#76705, internalUUID#76706, product#76707, plant#76708, calculationDateTime#76709, stockQuantities#76710, plantId#76735, plantUuid#76736, storageLocId#76737, storageLocUuid#76738, stockQuantity#76862]
(1255) Aggregate
Arguments: [plantUuid#76736, internalUUID#76706, plant#76708, product#76707, systemId#76705], [plantUuid#76736, internalUUID#76706, plant#76708, product#76707, systemId#76705, first(calculationDateTime#76709, false) AS calculationDateTime#76865, collect_list(stockQuantity#76862, 0, 0) AS stockQuantities#76866]
(1256) Project
Arguments: [systemId#76705, internalUUID#76706, product#76707, plant#76708, calculationDateTime#76865, stockQuantities#76866]
(1257) Generate
Arguments: explode(stockQuantities#76866), false, [stockQuantity#76867]
(1258) Project
Arguments: [systemId#76705, internalUUID#76706, product#76707, plant#76708, calculationDateTime#76865, stockQuantities#76866, stockQuantity#76867]
(1259) Project
Arguments: [plant#76708.id AS plant#76868, plant#76708.internalRefUUID AS plantUuid#76869, product#76707.id AS product#76870, product#76707.internalRefUUID AS productUuid#76871, calculationDateTime#76865, stockQuantity#76867.storagelocation.id AS storageLocId#76872, stockQuantity#76867.storagelocation.internalRefUUID AS storageLocUuid#76873, stockQuantity#76867.quantity.measure AS quantity#76874, stockQuantity#76867.specialStockIndicator.code AS specialStockIndicator#76875, stockQuantity#76867.stockType.code AS stockType#76876]
(1260) Filter
Arguments: ((specialStockIndicator#76875 = ) AND (stockType#76876 = 01))
(1261) LogicalRelation
Arguments: parquet, [product#76877, plant#76878, orderDateTime#76879, planningStartDateTime#76880], false
(1262) RepartitionByExpression
Arguments: [product#76877, plant#76878], 25
(1263) Project
Arguments: [product#76877, plant#76878, orderDateTime#76879]
(1264) LogicalRelation
Arguments: parquet, [systemId#76882, internalUUID#76883, plant#76884, product#76885, blockedForReplenishmentStartingFrom#76886, productionAspect#76887, salesPlant#76888, listing#76889], false
(1265) Repartition
Arguments: 25, true
(1266) Project
Arguments: [systemId#76882, internalUUID#76883, plant#76884, product#76885, blockedForReplenishmentStartingFrom#76886, productionAspect#76887, salesPlant#76888, listing#76889, struct(systemId, systemId#76882, internalUUID, internalUUID#76883, plant, plant#76884, product, product#76885, blockedForReplenishmentStartingFrom, blockedForReplenishmentStartingFrom#76886, productionAspect, productionAspect#76887, salesPlant, salesPlant#76888, listing, listing#76889) AS productPlant#76892]
(1267) Project
Arguments: [productPlant#76892]
(1268) Join
Arguments: LeftOuter, ((product#76877 <=> productPlant#76892.product.internalRefUUID) AND (plant#76878 <=> productPlant#76892.plant.internalRefUUID))
(1269) Project
Arguments: [product#76877, plant#76878, orderDateTime#76879, productPlant#76892]
(1270) SubqueryAlias
Arguments: wl
(1271) LogicalRelation
Arguments: parquet, [systemId#76894, internalUUID#76895, id#76896, displayId#76897, name#76898, category#76899, companyCode#76900, address#76901, mainDistributionChain#76902, mainPurchasingOrganization#76903, validPurchasingOrganizations#76904, productGroup#76905], false
(1272) Repartition
Arguments: 25, true
(1273) Project
Arguments: [internalUUID#76895, address#76901.timeZone.code AS timezonecode#76915]
(1274) Join
Arguments: LeftOuter, (plant#76878 <=> internalUUID#76895)
(1275) Project
Arguments: [product#76877, plant#76878, orderDateTime#76879, productPlant#76892, internalUUID#76895, CASE WHEN isnotnull(timezonecode#76915) THEN timezonecode#76915 ELSE UTC END AS timezonecode#76928]
(1276) Project
Arguments: [product#76877, plant#76878, orderDateTime#76879, productPlant#76892, timezonecode#76928]
(1277) LogicalRelation
Arguments: parquet, [systemId#76930, internalUUID#76931, id#76932, displayId#76933, name#76934, baseUnitOfMeasure#76935, unitOfMeasures#76936, unitOfMeasureConversions#76937, productionAspect#76938, salesAspect#76939, procurementAspect#76940, productGroup#76941], false
(1278) Repartition
Arguments: 25, true
(1279) Join
Arguments: LeftOuter, (product#76877 = internalUUID#76931)
(1280) Project
Arguments: [product#76877, plant#76878, orderDateTime#76879, productPlant#76892, timezonecode#76928, systemId#76930, internalUUID#76931, id#76932, displayId#76933, name#76934, baseUnitOfMeasure#76935, unitOfMeasures#76936, unitOfMeasureConversions#76937, productionAspect#76938, salesAspect#76939, procurementAspect#76940, productGroup#76941, filter(unitOfMeasureConversions#76937, lambdafunction((((lambda u#69109.measurementUnit1.code = productPlant#76892.productionAspect.productMovementPlants.unitOfIssue.code) AND (lambda u#69109.measurementUnit1.internalRefUUID = productPlant#76892.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID)) AND ((lambda u#69109.measurementUnit2.code = baseUnitOfMeasure#76935.code) AND (lambda u#69109.measurementUnit2.internalRefUUID = baseUnitOfMeasure#76935.internalRefUUID))), lambda u#69109, false)) AS filteredUnitOfMeasureConversions#76955]
(1281) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76955.quantityNumerator), true, [quantityNumerator#76956]
(1282) Project
Arguments: [product#76877, plant#76878, orderDateTime#76879, productPlant#76892, timezonecode#76928, systemId#76930, internalUUID#76931, id#76932, displayId#76933, name#76934, baseUnitOfMeasure#76935, unitOfMeasures#76936, unitOfMeasureConversions#76937, productionAspect#76938, salesAspect#76939, procurementAspect#76940, productGroup#76941, filteredUnitOfMeasureConversions#76955, quantityNumerator#76956]
(1283) Generate
Arguments: explode(filteredUnitOfMeasureConversions#76955.quantityDenominator), true, [quantityDenominator#76970]
(1284) Project
Arguments: [product#76877, plant#76878, orderDateTime#76879, productPlant#76892, timezonecode#76928, systemId#76930, internalUUID#76931, id#76932, displayId#76933, name#76934, baseUnitOfMeasure#76935, unitOfMeasures#76936, unitOfMeasureConversions#76937, productionAspect#76938, salesAspect#76939, procurementAspect#76940, productGroup#76941, filteredUnitOfMeasureConversions#76955, quantityNumerator#76956, quantityDenominator#76970]
(1285) Project
Arguments: [product#76877, plant#76878, orderDateTime#76879, productPlant#76892, timezonecode#76928, systemId#76930, internalUUID#76931, id#76932, displayId#76933, name#76934, baseUnitOfMeasure#76935, unitOfMeasures#76936, unitOfMeasureConversions#76937, productionAspect#76938, salesAspect#76939, procurementAspect#76940, productGroup#76941, filteredUnitOfMeasureConversions#76955, quantityNumerator#76956, quantityDenominator#76970, (cast(quantityNumerator#76956 as double) / cast(quantityDenominator#76970 as double)) AS outboundUnit#76971]
(1286) Project
Arguments: [product#76877, plant#76878, orderDateTime#76879, productPlant#76892, timezonecode#76928, systemId#76930, internalUUID#76931, id#76932, displayId#76933, name#76934, baseUnitOfMeasure#76935, unitOfMeasures#76936, unitOfMeasureConversions#76937, productionAspect#76938, salesAspect#76939, procurementAspect#76940, productGroup#76941, filteredUnitOfMeasureConversions#76955, quantityNumerator#76956, quantityDenominator#76970, CASE WHEN (isnull(outboundUnit#76971) OR (outboundUnit#76971 <= cast(0 as double))) THEN 1.0 ELSE outboundUnit#76971 END AS outboundUnit#76973]
(1287) Project
Arguments: [product#76877, plant#76878, orderDateTime#76879, productPlant#76892, timezonecode#76928, outboundUnit#76973]
(1288) Join
Arguments: Inner, ((plantUuid#76869 = plant#76878) AND (productUuid#76871 = product#76877))
(1289) Filter
Arguments: (calculationDateTime#76865 <= orderDateTime#76879)
(1290) Project
Arguments: [plantUuid#76869 AS plant#76976, productUuid#76871 AS product#76977, storageLocId#76872, calculationDateTime#76865, quantity#76874]
(1291) Aggregate
Arguments: [plant#76976, product#76977, storageLocId#76872], [plant#76976, product#76977, storageLocId#76872, max(calculationDateTime#76865) AS max_calc_datetime#76979]
(1292) Join
Arguments: Inner, ((((plant#76703 <=> plant#76976) AND (product#76704 <=> product#76977)) AND (storageLocId#76623 <=> storageLocId#76872)) AND (calculationDateTime#76592 <=> max_calc_datetime#76979))
(1293) Project
Arguments: [plant#76703, product#76704, storageLocId#76623, calculationDateTime#76592, quantity#76625]
(1294) Aggregate
Arguments: [product#76704, plant#76703], [product#76704, plant#76703, sum(quantity#76625) AS quantitySum#76981, min(calculationDateTime#76592) AS minCalculationDateTime#76982]
(1295) Project
Arguments: [product#76704, plant#76703, quantitySum#76981, minCalculationDateTime#76982, round(quantitySum#76981, 0) AS roundedQuantitySum#76983]
(1296) Join
Arguments: LeftOuter, ((plant#76386 = plant#76703) AND (product#76385 = product#76704))
(1297) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, roundedQuantitySum#76983, minCalculationDateTime#76982]
(1298) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, roundedQuantitySum#76983, minCalculationDateTime#76982, CASE WHEN isnotnull(minCalculationDateTime#76982) THEN minCalculationDateTime#76982 ELSE orderDateTime#76387 END AS stockDatetime#76987]
(1299) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, roundedQuantitySum#76983, minCalculationDateTime#76982, stockDatetime#76987, CASE WHEN isnotnull(roundedQuantitySum#76983) THEN array(roundedQuantitySum#76983) ELSE array(0.0) END AS stockBatchQuantities#76988]
(1300) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, roundedQuantitySum#76983, minCalculationDateTime#76982, stockDatetime#76987, stockBatchQuantities#76988, array(2199-01-01 00:00:00) AS stockBatchShelfLifeEndDatetimes#76989]
(1301) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, roundedQuantitySum#76983, stockDatetime#76987, stockBatchQuantities#76988, stockBatchShelfLifeEndDatetimes#76989]
(1302) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, stockDatetime#76987, stockBatchQuantities#76988, stockBatchShelfLifeEndDatetimes#76989]
(1303) LogicalRelation
Arguments: parquet, [product#76992, plant#76993, demandChannel#76994, demandStream#76995, considerVariance#76996, demandTimeBuckets#76997, demandPointInTimeStart#76998, demandPointInTimeEnd#76999, demandPointInTime#77000], false
(1304) Join
Arguments: LeftOuter, ((product#76385 = product#76992) AND (plant#76386 = plant#76993))
(1305) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, stockDatetime#76987, stockBatchQuantities#76988, stockBatchShelfLifeEndDatetimes#76989, demandChannel#76994, demandStream#76995, considerVariance#76996, demandTimeBuckets#76997, demandPointInTimeStart#76998, demandPointInTimeEnd#76999, demandPointInTime#77000, product#76992, plant#76993]
(1306) Project
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, stockDatetime#76987, stockBatchQuantities#76988, stockBatchShelfLifeEndDatetimes#76989, demandChannel#76994, demandStream#76995, considerVariance#76996, demandTimeBuckets#76997, demandPointInTimeStart#76998, demandPointInTimeEnd#76999, demandPointInTime#77000, CASE WHEN isnotnull(product#76992) THEN struct(demandChannel, demandChannel#76994, demandStream, demandStream#76995, considerVariance, considerVariance#76996, demandTimeBuckets, demandTimeBuckets#76997, demandPointInTimeStart, demandPointInTimeStart#76998, demandPointInTimeEnd, demandPointInTimeEnd#76999, demandPointInTime, demandPointInTime#77000) 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#77004]
(1307) Aggregate
Arguments: [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, stockDatetime#76987, stockBatchQuantities#76988, stockBatchShelfLifeEndDatetimes#76989], [product#76385, plant#76386, orderDateTime#76387, productPlant#76397, timezonecode#76413, outboundUnit#76463, stockDatetime#76987, stockBatchQuantities#76988, stockBatchShelfLifeEndDatetimes#76989, collect_list(rawDemands#77004, 0, 0) AS rawDemands#77015]
(1308) DeserializeToObject
Arguments: createexternalrow(invoke(product#76385.toString()), invoke(plant#76386.toString()), static_invoke(DateTimeUtils.toJavaTimestamp(orderDateTime#76387)), if (isnull(productPlant#76397)) null else createexternalrow(invoke(productPlant#76397.systemId.toString()), invoke(productPlant#76397.internalUUID.toString()), if (isnull(productPlant#76397.plant)) null else createexternalrow(invoke(productPlant#76397.plant.internalRefUUID.toString()), invoke(productPlant#76397.plant.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), if (isnull(productPlant#76397.product)) null else createexternalrow(invoke(productPlant#76397.product.internalRefUUID.toString()), invoke(productPlant#76397.product.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(DateTimeUtils.toJavaDate(productPlant#76397.blockedForReplenishmentStartingFrom)), if (isnull(productPlant#76397.productionAspect)) null else createexternalrow(if (isnull(productPlant#76397.productionAspect.productMovementPlants)) null else createexternalrow(if (isnull(productPlant#76397.productionAspect.productMovementPlants.unitOfIssue)) null else createexternalrow(invoke(productPlant#76397.productionAspect.productMovementPlants.unitOfIssue.internalRefUUID.toString()), invoke(productPlant#76397.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#76397.productionAspect.productPlanningPlants)) null else createexternalrow(if (isnull(productPlant#76397.productionAspect.productPlanningPlants.mrpType)) null else createexternalrow(invoke(productPlant#76397.productionAspect.productPlanningPlants.mrpType.internalRefUUID.toString()), invoke(productPlant#76397.productionAspect.productPlanningPlants.mrpType.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#76397.productionAspect.productPlanningPlants.abcIndicator)) null else createexternalrow(invoke(productPlant#76397.productionAspect.productPlanningPlants.abcIndicator.internalRefUUID.toString()), invoke(productPlant#76397.productionAspect.productPlanningPlants.abcIndicator.code.toString()), StructField(internalRefUUID,StringType,true), StructField(code,StringType,true)), if (isnull(productPlant#76397.productionAspect.productPlanningPlants.mrpController)) null else createexternalrow(invoke(productPlant#76397.productionAspect.productPlanningPlants.mrpController.internalRefUUID.toString()), invoke(productPlant#76397.productionAspect.productPlanningPlants.mrpController.id.toString()), StructField(internalRefUUID,StringType,true), StructField(id,StringType,true)), static_invoke(java.lang.Double.valueOf(productPlant#76397.productionAspect.productPlanningPlants.minimumLotSize)), static_invoke(java.lang.Double.valueOf(productPlant#76397.productionAspect.productPlanningPlants.minimumSafetyStock)), if (isnull(productPlant#76397.productionAspect.productPlanningPlants.logisticalRoundingProfile)) null else createexternalrow(invoke(productPlant#76397.productionAspect.productPlanningPlants.logisticalRoundingProfile.internalRefUUID.toString()), invoke(productPlant#76397.productionAspect.productPlanningPlants.logisticalRoundingProfile.logisticalRoundingProfile.toString()), StructField(internalRefUUID,StringType,true), StructField(logisticalRoundingProfile,StringType,true)), if (isnull(productPlant#76397.productionAspect.productPlanningPlants.sourceOfSupplyCategory)) null else createexternalrow(invoke(productPlant#76397.productionAspect.productPlanningPlants.sourceOfSupplyCategory.internalRefUUID.toString()), invoke(productPlant#76397.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#76397.salesPlant)) null else createexternalrow(if (isnull(productPlant#76397.salesPlant.loadingGroup)) null else createexternalrow(invoke(productPlant#76397.salesPlant.loadingGroup.internalRefUUID.toString()), invoke(productPlant#76397.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, 9983), if (isnull(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983).validFrom)), static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983).validTo)), static_invoke(java.lang.Boolean.valueOf(lambdavariable(MapObject, StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true), true, 9983).isListed)), StructField(validFrom,TimestampType,true), StructField(validTo,TimestampType,true), StructField(isListed,BooleanType,true)), productPlant#76397.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#76413.toString()), static_invoke(java.lang.Double.valueOf(outboundUnit#76463)), static_invoke(DateTimeUtils.toJavaTimestamp(stockDatetime#76987)), mapobjects(lambdavariable(MapObject, DoubleType, true, 9984), static_invoke(java.lang.Double.valueOf(cast(lambdavariable(MapObject, DoubleType, true, 9984) as double))), stockBatchQuantities#76988, Some(class scala.collection.mutable.ArraySeq)), mapobjects(lambdavariable(MapObject, TimestampType, false, 9985), assertnotnull(static_invoke(DateTimeUtils.toJavaTimestamp(cast(lambdavariable(MapObject, TimestampType, false, 9985) as timestamp)))), stockBatchShelfLifeEndDatetimes#76989, 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, 9986), 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, 9986))) 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, 9986).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, 9986).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, 9986).considerVariance)), mapobjects(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987), if (isnull(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987).demandStartDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandStartDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9987).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, 9986).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, 9986).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, 9986).demandPointInTimeEnd)), mapobjects(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988), if (isnull(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988))) null else createexternalrow(static_invoke(DateTimeUtils.toJavaTimestamp(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988).demandDateTime)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988).demandQuantity)), static_invoke(java.lang.Double.valueOf(lambdavariable(MapObject, StructField(demandDateTime,TimestampType,true), StructField(demandQuantity,DoubleType,true), StructField(demandVariance,DoubleType,true), true, 9988).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, 9986).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#77015, 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#69963: org.apache.spark.sql.Row
(1309) MapElements
Arguments: com.sap.s4hana.eureka.business.crporderquantitykpiservice.core.business.datasnapshot.DemandTransformatorImpl$$Lambda/0x00000008024b0d88@783ec352, 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#69968: 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#77018, 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#77019, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(2))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9974), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9974), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9975), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9975), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9976), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9976), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9977), assertnotnull(static_invoke(UTF8String.fromString(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9977), StringType, ObjectType(class java.lang.String))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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, 9978), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9978), IntegerType, ObjectType(class java.lang.Integer)).intValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9973), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandValues,ArrayType(DoubleType,false),true), StructField(demandVariances,ArrayType(DoubleType,true),true), StructField(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#77020, if (invoke(assertnotnull(input[0, org.apache.spark.sql.Row, true]).isNullAt(3))) null else mapobjects(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), assertnotnull(if (isnull(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9980), assertnotnull(static_invoke(DateTimeUtils.fromJavaTimestamp(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9980), TimestampType, ObjectType(class java.sql.Timestamp))))), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9981), assertnotnull(invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9981), DoubleType, ObjectType(class java.lang.Double)).doubleValue())), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9982), invoke(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9982), DoubleType, ObjectType(class java.lang.Double)).doubleValue()), validateexternaltype(getexternalrowfield(validateexternaltype(lambdavariable(MapObject, ObjectType(class java.lang.Object), true, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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, 9979), StructField(demandChannel,StringType,true), StructField(demandStream,StringType,true), StructField(considerVariance,BooleanType,true), StructField(demandDatetimes,ArrayType(TimestampType,false),true), StructField(demandValues,ArrayType(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#77021]
(1311) Join
Arguments: LeftOuter, ((plant#77019 <=> plant#75736) AND (product#77018 <=> product#75735))
(1312) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, outboundUnit#75843, stockDatetime#76369, stockBatchQuantities#76370, stockBatchShelfLifeEndDatetimes#76372, plant#77019, dayBucketDemands#77020, pointInTimeDemands#77021]
(1313) Project
Arguments: [product#75735, plant#75736, orderDateTime#75737, productPlant#75750, timezonecode#75772, outboundUnit#75843, stockDatetime#76369, stockBatchQuantities#76370, stockBatchShelfLifeEndDatetimes#76372, dayBucketDemands#77020, pointInTimeDemands#77021]
(1314) LogicalRelation
Arguments: parquet, [systemId#77022, internalUUID#77023, id#77024, displayId#77025, supplier#77026, type#77027, status#77028, isMarkedForDeletion#77029, items#77030], false
(1315) Repartition
Arguments: 25, true
(1316) Generate
Arguments: explode(items#77030), false, [item#77031]
(1317) Project
Arguments: [id#77024, internalUUID#77023, isMarkedForDeletion#77029, supplier#77026.internalRefUUID AS supplierUuid#77032, item#77031]
(1318) Filter
Arguments: (((NOT isMarkedForDeletion#77029 AND NOT item#77031.deletionIndicator) AND NOT item#77031.completeIndicator) AND NOT item#77031.returnIndicator)
(1319) Project
Arguments: [id#77024, internalUUID#77023, supplierUuid#77032, item#77031.plant.internalRefUUID AS plant#77037, item#77031.product.internalRefUUID AS product#77038, item#77031.plant.id AS externalPlantId#77039, item#77031.product.id AS externalProductId#77040, item#77031.storageLocation.internalRefUUID AS storageLocUuid#77041, item#77031.quantityUnit.code AS quantityUom#77042, item#77031.quantityUnit.internalRefUUID AS quantityUomUuid#77043, item#77031.quantityNumerator AS quantityNumerator#77044, item#77031.quantityDenominator AS quantityDenominator#77045, item#77031.scheduleLines AS scheduleLines#77046, item#77031.confirmations AS confirmations#77047]
(1320) Join
Arguments: Inner, ((product#75735 <=> product#77038) AND (plant#75736 <=> supplierUuid#77032))
(1321) Project
Arguments: [id#77024, internalUUID#77023, supplierUuid#77032, plant#77037, product#77038, externalPlantId#77039, externalProductId#77040, storageLocUuid#77041, quantityUom#77042, quantityUomUuid#77043, quantityNumerator#77044, quantityDenominator#77045, scheduleLines#77046, confirmations#77047, stockDatetime#76369, plant#75736]
(1322) Project
Arguments: [id#77024, internalUUID#77023, supplierUuid#77032, product#77038, externalPlantId#77039, externalProductId#77040, storageLocUuid#77041, quantityUom#77042, quantityUomUuid#77043, quantityNumerator#77044, quantityDenominator#77045, scheduleLines#77046, confirmations#77047, stockDatetime#76369, plant#75736]
(1323) Project
Arguments: [id#77024, internalUUID#77023, supplierUuid#77032, product#77038, externalPlantId#77039, externalProductId#77040, storageLocUuid#77041, quantityUom#77042, quantityUomUuid#77043, quantityNumerator#77044, quantityDenominator#77045, scheduleLines#77046, confirmations#77047, stockDatetime#76369, plant#75736, filter(transform(filter(transform(scheduleLines#77046, lambdafunction(struct(openQty, (greatest((lambda x_20#75652.quantity - coalesce(lambda x_20#75652.deliveredQuantity, 0.0)), 0.0) * -1.0), availabilityDatetime, coalesce(lambda x_20#75652.productAvailabilityDateTime, lambda x_20#75652.deliveryAt)), lambda x_20#75652, false)), lambdafunction((lambda x_22#75655.availabilityDatetime < stockDatetime#76369), lambda x_22#75655, false)), lambdafunction(struct(documentId, id#77024, documentUuid, internalUUID#77023, openQty, lambda x_23#75657.openQty, openQtyInBaseUnit, ((lambda x_23#75657.openQty * quantityNumerator#77044) / quantityDenominator#77045), qtyUom, quantityUom#77042, qtyUomUuid, quantityUomUuid#77043, availabilityDatetime, lambda x_23#75657.availabilityDatetime, shelfLifeEndDatetime, 2199-01-01 00:00:00), lambda x_23#75657, false)), lambdafunction(NOT (lambda x_25#75659.openQty = 0.0), lambda x_25#75659, false)) AS openGoodsMovements#75651]
(1324) Aggregate
Arguments: [product#77038, plant#75736], [product#77038, plant#75736, flatten(collect_list(openGoodsMovements#75651, 0, 0)) AS openGoodsMovements#75677]
(1325) Filter
Arguments: (array_size(openGoodsMovements#75677) > 0)
(1326) Union
Arguments: false, false
(1327) Aggregate
Arguments: [product#70773, plant#70770], [product#70773, plant#70770, flatten(collect_list(openGoodsMovements#75050, 0, 0)) AS openGoodsMovements#77170]
(1328) Join
Arguments: LeftOuter, ((product#69019 = product#70773) AND (plant#69020 = plant#70770))
(1329) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovements#77170]
(1330) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, coalesce(openGoodsMovements#77170.openQtyInBaseUnit, cast(array() as array<double>)) AS openGoodsMovementQuantities#78608, coalesce(openGoodsMovements#77170.availabilityDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementAvailabilityDatetimes#78609, coalesce(openGoodsMovements#77170.shelfLifeEndDatetime, cast(array() as array<timestamp>)) AS openGoodsMovementShelfLifeEndDatetimes#78610]
(1331) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, 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#78818]
(1332) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, configuration#78818, array(ListingPeriod) AS timeDependentSettingsName#79105]
(1333) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, configuration#78818, timeDependentSettingsName#79105, array(1900-01-01 00:00:00) AS timeDependentSettingsStartDatetime#79106]
(1334) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, configuration#78818, timeDependentSettingsName#79105, timeDependentSettingsStartDatetime#79106, array(2199-01-01 00:00:00) AS timeDependentSettingsEndDatetime#79139]
(1335) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, configuration#78818, timeDependentSettingsName#79105, timeDependentSettingsStartDatetime#79106, timeDependentSettingsEndDatetime#79139, array(1.0) AS timeDependentSettingsValue#79225]
(1336) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, configuration#78818, concat(coalesce(timeDependentSettingsName#79105, cast(array() as array<string>)), CASE WHEN isnotnull(productPlant#69044.productionAspect.productPlanningPlants.minimumSafetyStock) THEN array(MinStock) ELSE cast(array() as array<string>) END) AS timeDependentSettingsName#79226, timeDependentSettingsStartDatetime#79106, timeDependentSettingsEndDatetime#79139, timeDependentSettingsValue#79225]
(1337) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, configuration#78818, timeDependentSettingsName#79226, concat(coalesce(timeDependentSettingsStartDatetime#79106, cast(array() as array<timestamp>)), CASE WHEN isnotnull(productPlant#69044.productionAspect.productPlanningPlants.minimumSafetyStock) THEN array(1900-01-01 00:00:00) ELSE cast(array() as array<timestamp>) END) AS timeDependentSettingsStartDatetime#79228, timeDependentSettingsEndDatetime#79139, timeDependentSettingsValue#79225]
(1338) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, configuration#78818, timeDependentSettingsName#79226, timeDependentSettingsStartDatetime#79228, concat(coalesce(timeDependentSettingsEndDatetime#79139, cast(array() as array<timestamp>)), CASE WHEN isnotnull(productPlant#69044.productionAspect.productPlanningPlants.minimumSafetyStock) THEN array(2199-01-01 00:00:00) ELSE cast(array() as array<timestamp>) END) AS timeDependentSettingsEndDatetime#79260, timeDependentSettingsValue#79225]
(1339) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, productPlant#69044, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, configuration#78818, timeDependentSettingsName#79226, timeDependentSettingsStartDatetime#79228, timeDependentSettingsEndDatetime#79260, concat(coalesce(timeDependentSettingsValue#79225, cast(array() as array<double>)), CASE WHEN isnotnull(productPlant#69044.productionAspect.productPlanningPlants.minimumSafetyStock) THEN array(cast(productPlant#69044.productionAspect.productPlanningPlants.minimumSafetyStock as double)) ELSE cast(array() as array<double>) END) AS timeDependentSettingsValue#79262]
(1340) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, timezonecode#69079, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, configuration#78818, timeDependentSettingsName#79226, timeDependentSettingsStartDatetime#79228, timeDependentSettingsEndDatetime#79260, timeDependentSettingsValue#79262]
(1341) Project
Arguments: [product#69019, plant#69020, orderDateTime#69021, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, configuration#78818, timeDependentSettingsName#79226, timeDependentSettingsStartDatetime#79228, timeDependentSettingsEndDatetime#79260, timeDependentSettingsValue#79262]
(1342) Project
Arguments: [product#69019, plant#69020, outboundUnit#69134, stockDatetime#69868, stockBatchQuantities#69869, stockBatchShelfLifeEndDatetimes#69871, dayBucketDemands#69975, pointInTimeDemands#69976, openGoodsMovementQuantities#78608, openGoodsMovementAvailabilityDatetimes#78609, openGoodsMovementShelfLifeEndDatetimes#78610, configuration#78818, timeDependentSettingsName#79226, timeDependentSettingsStartDatetime#79228, timeDependentSettingsEndDatetime#79260, timeDependentSettingsValue#79262]